六祖慧能 圆寂的寺庙:6.5 使用initramfs
来源:百度文库 编辑:中财网 时间:2024/04/29 08:00:49
6.5 使用initramfs
initramfs是用来执行早期用户空间程序所采用的一种新机制(在Linux 2.6的内核中使用),它与前面描述的initrd在概念上较为相似,其作用也很相似,即在挂载真正的根文件系统之前加载必要的设备驱动程序。然而,二者在某些方面还是有显著区别的。
initrd和initramfs的具体执行细节有着显著的区别。例如,initramfs要在调用do_basic_setup() 之前加载,它会在硬件设备的驱动程序加载之前加载其固件程序。如果要了解更具体的内容,可以参阅最新的相关Linux内核文档,详见.../Documentation/filesystems/ ramfs-rootfs-initramfs.txt。
从实用角度看,initramfs更易使用。initramfs是一种cpio格式的档案文件,而initrd是一种gzipped格式的系统映像文件,二者这种简单的区别就使得initramfs更容易使用。当用户编译链接Linux内核映像的时候,initramfs会被集成到Linux内核源代码中并且被自动编译,此外,对initramfs做出改变要比构建和加载一个新的initrd映像更容易一些。代码清单6-13显示了Linux内核下.../usr目录的内容,就是在这里编译链接了initramfs映像,代码清单6-13所示的内容为Linux内核编译链接之后的结果。
代码清单6-13 内核initramfs映像的编译链接目录
- $ ls -l
- total 56
- -rw-rw-r-- 1 chris chris 834 Mar 25 11:13 built-in.o
- -rwxrwxr-x 1 chris chris 11512 Mar 25 11:13 gen_init_cpio
- -rw-rw-r-- 1 chris chris 10587 Oct 27 2005 gen_init_cpio.c
- -rw-rw-r-- 1 chris chris 512 Mar 25 11:13 initramfs_data.cpio
- -rw-rw-r-- 1 chris chris 133 Mar 25 11:13 initramfs_data.cpio.gz
- -rw-rw-r-- 1 chris chris 786 Mar 25 11:13 initramfs_data.o
- -rw-rw-r-- 1 chris chris 1024 Oct 27 2005 initramfs_data.S
- -rw-rw-r-- 1 chris chris 113 Mar 25 11:13 initramfs_list
- -rw-rw-r-- 1 chris chris 1619 Oct 27 2005 Kconfig
- -rw-rw-r-- 1 chris chris 2048 Oct 27 2005 Makefile
该目录下的initramfs_list文件包含了要在initramfs档案中添加的文件列表,对于最新内核版本所默认添加的内容如下所示:
- dir /dev 0755 0 0
- nod /dev/console 0600 0 0 c 5 1
- dir /root 0700 0 0
这是一个小型的目录结构,包含了/root和/dev目录以及表示控制台的一个独立设备节点。添加这些文件可以用来构建用户自己的initramfs,用户也可以通过使用内核配置工具来指定创建initramfs的源文件。在内核配置工具中启用INITRAMFS_SOURCE选项并且使它指向用户的开发平台,内核编译链接系统就将使用这些文件作为用户initramfs映像的源文件。
这个编译链接目录生成的最后一个用来构建initramfs映像的文件是initramfs_ data_cpio.gz,它是一个包含了用户所指定文件(不论是通过initramfs_list指定还是通过选择内核编译工具的INITRAMFS_SOURCE选项来指定)的压缩档案文件,该档案文件将被链接到最后的内核映像之中。这也是使用initramfs的另一个优势所在,即不需要在引导时加载一个单独的initrd映像。