initrd和initramfs 解析


这个两个都是在内核启动之后的boot加载的临时文件系统,一般制作的内核很多的驱动并没有编译进去,如:硬盘相关驱动等,

由于rootfs存储在硬盘中,没有这些驱动,则无法加载真正的rootfs(rootfs有驱动程序)。真正的rootfs自然包含所有的驱动。

所以为了解决先有鸡,还是先有蛋的问题。引入initrd或是initramfs机制。



一如何制作initrd,

ubuntu/debian: mkinitramfs  moduleslib(make modules_install 之后的生成的目录,一般问版本号) -o myinitrd.img

fedora/radhet: mkinitrd  moduleslib(make modules_install 之后的生成的目录,一般问版本号) -o myinitrd.img

例:

my@ubuntu3:~$ ls /lib/modules
3.13.0-24-generic
my@ubuntu3:~$ mkinitramfs 3.13.0-24-generic -o myinitrd.img
my@ubuntu3: ls

 myinitrd.img  ....

二如何查看当前系统的initrd的内容

在当前的系统中有:/boot/initrd.img-***generic

在可以通过 file /boot/initrd.img-***generic

mkdir -p ~/test

cp /boot/initrd.img-***generic   ~/test/initrd.gz (把文件后缀给为.gz。因为initrd本质是一个gzip压缩包)

cd ~/test

gzip -d initrd.gz (解压)

cpio -i < initrd  (还原)

ls

bin  conf  etc  init  lib  sbin  scripts  usr

其中init是一个脚本,在加载initrd之后,找到这个init的脚本,首先然后执行它。

你也可以修改initrd里面的文件然后再,制作一个initrd。方法如下:通过下面命令

find . | cpio --quiet -H newc -o | gzip -9 -n > /boot/imagefile.img


参考文献:

http://linux.koolsolutions.com/2009/11/12/initramfs-ramfs-tmpfs-compressed-image/





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值