本文主要是介绍linux 启动initramfs,Initramfs 原理和实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Linux系统启动时使用initramfs (initram file system), initramfs可以在启动早期提供一个用户态环境借助它可以完成一些内核在启动阶段不易完成的工作。当然initramfs是可选的Linux中的内核编译选项默认开启initrd。在下面的示例情况中你可能要考虑用initramfs。加载模块比如第三方driver
定制化启动过程 (比如打印welcome message等)
制作一个非常小的rescue shell
任何kernel不能做的但在用户态可以做的 (比如执行某些命令)
一个initramfs至少要包含一个文件文件名为/init。内核将这个文件执行起来的进程作为main init进程(pid 1)。当内核挂载initramfs后文件系统的根分区还没有被mount, 这意味着你不能访问文件系统中的任何文件。如果你需要一个shell必须把shell打包到initramfs中如果你需要一个简单的工具比如ls, 你也必须把它和它依赖的库或者模块打包到initramfs中。总之initramfas是一个完全独立运行的体系。
另外initramfs打包的时候要求打包成压缩的cpio档案。cpio档案可以嵌入到内核image中也可以作为一个独立的文件在启动的过程中被GRUB load。
Linux的initramrd img
在/boot目录下的initrd.img-xxx (Ubuntu)或者initramfs-xxx.img (CentOS) 文件即为Linux用的initramfs文件。我们可以将其解压出来看看其目录结构如下
# ls -l /boot/total 67408-rw-r--r-- 1 root root 1240067 Jul 13 2016 abi-4.4.0-31-gen
这篇关于linux 启动initramfs,Initramfs 原理和实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!