5、用_instll先创建initrd
我们用_instll先创建initrd,但是我们在创建initrd的时候我们先给它一个临时目录/tmp/busybox。
这里我们打算使用红帽提供的内核,但这个内核不支持ext3【提示:内核不支持ext3,就意味着它没法访问真正的根文件系统】,这里的initrd主要存在目的就是为内核提供所需要依赖访问根文件系统所需要的模块了。我们要借助initrd来装载ext3这个模块了。我们在/busybox/lib/modules装载两个模块。
下来我们就要提供init脚本,因为busybox提供的没有bash,只有sh。进行编辑vim init。编辑完成退出后还需要加入权限(chmod +x init)
#!/bin/sh 【注意:这里一定要写/bin/sh】
#
mount -t proc proc /proc 挂载proc文件系统
mount -t sysfs sysfs /sys 挂载sys文件系统
insmod /lib/modules/jbd.ko 加载模块
insmod /lib/modules/ext3.ko
mdev –s 探测额外硬件【下面有详细解释】
mount -t ext3 /dev/hda2 /mnt/sysroot 挂载根文件系统
exec switch_root /mnt/sysroot /sbin/init 切换虚根到真正的文件系统
有时候我们可能需要系统来探测额外的硬件,并触发这些设备的,红帽给我们提供的是udev,而busybox给我们提供的是mdev,而这个mdev在/tmp/busybox/mnt/sysroot/sbin下。
我们在/busybox/mnt/创建sysroot。
我们还需要手动创建设备文件,分别是dev/console和dev/null【建议:使用手动创建】
这时候我们就可以将此目录做成initrd了。我们看一下大小是不是很小呀!