initrd.img的疑问
这几天在为编译内核做准备,initrd.img总有一些问题:
引用:
1.什么是 Initrd
initrd 的英文含义是 boot loader initialized RAM disk,就是由 boot loader 初始化的内存盘。在 linux内核启动前, boot loader 会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的 initrd 文件系统。在 boot loader 配置了 initrd 的情况下,内核启动被分成了两个阶段,第一阶段先执行 initrd 文件系统中的"某个文件",完成加载驱动模块等任务,第二阶段才会执行真正的根文件系统中的 /sbin/init 进程。这里提到的"某个文件",Linux2.6 内核会同以前版本内核的不同,所以这里暂时使用了"某个文件"这个称呼,后面会详细讲到。第一阶段启动的目的是为第二阶段的启动扫清一切障爱,最主要的是 加载根文件系统存储介质的驱动模块。我们知道根文件系统可以存储在包括IDE、SCSI、USB在内的多种介质上,如果将这些设备的驱动都编译进内核,可 以想象内核会多么庞大、臃肿。
Linux2.6 内核对 Initrd 的处理流程
linux2.6 内核支持两种格式的 initrd,一种是 linux2.4 内核那种传统格式的文件系统镜像-image-initrd,它的制作方法同 Linux2.4 内核的 initrd 一样,其核心文件就是 /linuxrc.另外一种格式的 initrd 是 cpio 格式的,这种格式的 initrd 从 linux2.5 起开始引入,使用 cpio 工具生成,其核心文件不再是 /linuxrc,而是 /init,本文将这种 initrd 称为 cpio-initrd.尽管 linux2.6 内核对 cpio-initrd和 image-initrd 这两种格式的 initrd 均支持,但对其处理流程有着显著的区别。
debianer:/boot# file initrd.img-2.6.*
initrd.img-2.6.15-1-686: gzip compressed data, from Unix, last modified: Fri Jul 21 14:03:39 2006, max compression
initrd.img-2.6.8-2-386: Linux Compressed ROM File System data, little endian size 4317184 version #2 sorted_dirs CRC 0xb3f624b6, edition 0, 2472 blocks, 309 files
主要问题:两个文件属性的不同是不是由于initrd.img的建立方法不同?
我做了一个小实验:
debianer:/tmp# mkinitrd -o /tmp/initrd.img 2.6.15-1-686
//自己mkinitrd一个initrd.img
debianer:/tmp# ls -la /tmp/initrd.img
-rw-r--r-- 1 root root 5197824 2006-07-27 19:12 /tmp/initrd.img
debianer:/tmp# file initrd.img
initrd.img: Linux Compressed ROM File System data, little endian size 5197824 version #2 sorted_dirs CRC 0xf403344f, edition 0, 2961 blocks, 346 files
这样建立的initrd.img的属性和原来的不同:
debianer:/tmp# file /boot/initrd.img-2.6.15-1-686
/boot/initrd.img-2.6.15-1-686: gzip compressed data, from Unix, last modified: Fri Jul 21 14:03:39 2006, max compression
是不是说mkinitrd命令建立的initrd镜象属性都是这样的?
如果编译内核,自己建立initrd.img时,如果选择cpio 格式的?
编译时最后make install命令是不是自动建立了initrd.img?
如果建立了,那是什么格式的呢?
image-initrd ? cpio-initrd?
谢谢了
附件: 您所在的用户组无法下载或查看附件