linux虚根怎么切换到真根,用busybox制作微Linux及详解过程中可能出现的问题

5、用_instll先创建initrd

我们用_instll先创建initrd,但是我们在创建initrd的时候我们先给它一个临时目录/tmp/busybox。

f6a83523f41c2589d3d08d5ce67d323f.png

这里我们打算使用红帽提供的内核,但这个内核不支持ext3【提示:内核不支持ext3,就意味着它没法访问真正的根文件系统】,这里的initrd主要存在目的就是为内核提供所需要依赖访问根文件系统所需要的模块了。我们要借助initrd来装载ext3这个模块了。我们在/busybox/lib/modules装载两个模块。

037a7f54fb9ba85ec8aca887fa2f8619.png

下来我们就要提供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下。

3e96374ec5fd5421873a8586d7c38c5b.png

我们在/busybox/mnt/创建sysroot。

b91c12d9b1fa8f74eef9cc622ff18e86.png

我们还需要手动创建设备文件,分别是dev/console和dev/null【建议:使用手动创建】

c367ed87924afd69af1b44042ae6d92d.png

这时候我们就可以将此目录做成initrd了。我们看一下大小是不是很小呀!

f6bf68cfa123e294a28bfe0b420c561c.png0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值