创建我们的dev设备文件conlole和null
mknod dev/console c 5 1
mknod dev/null c 1 3
我为了能够真正的驱动我们的根文件系统,因此我们需要让initrd.gz有能够驱动根分区的ext3模块,因此我们需要复制ext3的模块到/mnt/boot/lib/modules目录下。
modinfo ext3 查看ext3文件系统所以来的库文件都有哪些
modinfo jbd 查看jbd是否依赖其他的模块
把ext3和jbd的模块都放在对应的/mnt/lib/modules/目录下
cp /lib/modules/2.6.18-308.el5/kernel/fs/ext3/ext3.ko /mnt/lib/modules/
cp /lib/modules/2.6.18-308.el5/kernel/fs/jbd/jbd.ko /mnt/lib/modules/
接下来是要编辑init的脚本文件,init关系到我们能否把initrd的root转换成真正的root,关系到能否驱动我们真正的root文件系统,关系到能够装载我们已经安装的ext3和jbd模块,因此init脚本非常的重要,也是initrd.gz的核心。
vim /mnt/boot/init 创建init脚本
#!/bin/sh
mount -t proc proc /proc 挂载小root上的proc到/proc,其文件系统为proc
mount -t sysfs sysfs /sys 挂载小root上的sysfs到/sysfs,其文件系统为sysfs
insmod /lib/modules/jbd.ko 装载jbd模块
insmod /lib/modules/ext3.ko 装载ext3模块
mdev -s 这是busybox提供的功能之一,用于探测dev下的所有设备文件和内核映射文件proc
mount -t ext3 /dev/hda2 /mnt/sysroot 挂载root到/mnt/sysroot下
exec switch_root /mnt/sysroot /sbin/init 完成从小root到真正的root的转换
chmod +x init 给init执行权限
至此我们看到的内容是: