在VMware上制作一个简单的Linux(2)

创建我们的dev设备文件conlolenull

mknod dev/console c 5 1

mknod dev/null c 1 3

我为了能够真正的驱动我们的根文件系统,因此我们需要让initrd.gz有能够驱动根分区的ext3模块,因此我们需要复制ext3的模块到/mnt/boot/lib/modules目录下。

modinfo ext3 查看ext3文件系统所以来的库文件都有哪些

在VMware上制作一个简单的Linux

modinfo jbd 查看jbd是否依赖其他的模块

在VMware上制作一个简单的Linux

把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执行权限

至此我们看到的内容是:

在VMware上制作一个简单的Linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/20003.html