您的位置:首页 > 其它

initrd和initramfs 解析

2016-01-23 11:17 387 查看
这个两个都是在内核启动之后的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

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

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

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

mkdir -p ~/initest

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

cd ~/initest

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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: