Start Linux Leave Linux a while Back to Linux
分类: LINUX
2016-12-04 21:04:52
制作一个文件系统 initrd.gz 给X86使用。
硬件环境:Intel X64_64Bit N3825/3845
编译器:GCC
内核:Kernel 3.16.39
1.在 下载Busybox,我的版本是busybox-1.25.0.tar.bz2
2. 解压 busybox
tar jxvf busybox-1.19.3.tar.bz2
cd busybox-1.19.3
make menuconfig //跟配置Linux是一样的
这里特别注意,在Busybox Settings --> Build Options 里务必选上“Build BusyBox as a static binary (no shared libs)”表示把Busybox编译成静态库!
其他保持默认值,然后保存
make
make install
就会生成_install文件夹
3. 新建一个 initrd 目录,将 _install 目录下的所有文件都复制到 initrd 这个目录下。
a. mkdir initrd
b. cp ../busybox-1.25.0/_install/* initrd -arf
c. mkdir proc sys sysroot etc dev var tmp
4. 创建console和null设备文件
cd dev
mknod console c 5 1
mknod null c 1 3
5. 创建/etc/fstab文件:
cd etc
vim fstab,输入以下内容:
# device mount-point type options dump fsck
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
注:fstab 如果未执行,则 /proc /sys 目录下无任何文件
6. 创建 etc/init.d/rcS脚本文件:
cd etc
mkdir init.d
cd init.d
vim rcS,输入以下内容:
#!/bin/sh
/bin/mount –n –t ramfs ramfs /var
/bin/mkdir /var/tmp
/bin/mkdir /var/modules
/bin/mkdir /var/run
/bin/mkdir /var/log
/bin/mkdir -p /dev/pts //telnet服务需要
/bin/mkdir -p /dev/shm //telnet服务需要
#echo /sbin/mdev > /proc/sys/kernel/hotplug //USB自动挂载需要
/sbin/mdev -s //启动mdev在/dev下自动创建设备文件节点
/bin/mount -a
--------------------------------
chmod +x rcS 这步不要忘记!
注:/sbin/mdev 如果未执行,则 /dev目录下无任何文件
创建inittab文件:
cd etc
vim inittab,输入以下内容:
#/etc/initab
::sysinit:/etc/init.d/rcS
console::respawn:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount –a -r
7. _install/initrd 目录下
rm linuxrc
输入如下命令:
ln -sv bin/busybox init (如下图)
8. busybox 显示用户名及路径 -----[\u@\h\W]\# busybox 在制作根文件系统的处理方法
首先我们需要修改buxybox中配置,添加如下两个选项:
Busybox Settings
--->
Busybox Library
Tuning --->
[*] Username
completion
[*] Fancy shell
prompts
创建/etc/hostname添加如下内容(我们的主机名):
Happy
修改init.d/rcS添加如下内容(导入主机名配置文件):
/bin/hostname –F
/etc/hostname
修改根文件系统中/etc/profile文件添加如下内容:
HOSTNAM=`/bin/hostname`
PS1=`[\u@\h: $PWD]\#
`
export PS1
HOSTNAME
创建/etc/passwd添加如下内容:
root:x:0:0:root:/root:/bin/sh
这个时候我们重新启动我们的开发板会发现命令行提示符已经是我们想要的那种现实了:
[root@Happy:/etc] #
9. 最后,我们把_install目录做成我们的根文件系统:
输入如下命令:
find . | cpio --quiet -H newc -o | gzip -9 -n > ../initrd.gz
最后把生成的initrd.gz复制到/boot下
sudo cp initrd.gz /boot