CONFIG_INITRAMFS_SOURCE 是一个内核配置选项,它指定了初始 RAM 磁盘(initrd)或初始 RAM 文件系统(initramfs)文件的位置,该文件将被 Linux 内核在启动过程中使用。值 "./usr/rootfs.cpio.lzma" 表示源文件位于当前目录中,具体是一个名为 rootfs.cpio.lzma 的压缩 cpio 归档文件。
在现代 Linux 系统中,使用 initramfs 已成为常见做法。这是一个临时根文件系统,内核启动后立即使用它,但在挂载实际根文件系统之前。这允许执行几个重要的任务:
设备初始化: initramfs 可以包含初始化硬件设备所需的驱动程序和模块,这些硬件设备对于挂载实际根文件系统是必需的。例如,如果根文件系统位于 LVM 卷、软件 RAID 阵列上,或者是一个需要特定驱动程序模块的文件系统,那么这些模块可以包含在 initramfs 中。
根文件系统挂载: 一旦必要的设备初始化完成,initramfs 就可以用来挂载实际的根文件系统。这可能涉及切换到不同的文件系统类型(例如,从 ext3 切换到 ext4)、使用不同的块设备(如 SSD 而不是 HDD),或者访问网络文件系统(NFS)。
引导加载器和内核交接: 如果系统使用的是存储在内核主要搜索路径之外的引导加载器(如独立分区或 GUID 分区表(GPT)上的 GRUB),initramfs 可能需要包括定位并加载适当引导加载器的代码,并将控制权传递给它。这对于基于 EFI 的系统尤其重要。
系统配置和用户空间过渡: 在挂载了根文件系统之后,initramfs 可以启动所需的过程,从而过渡到完整的多用户环境。这通常涉及从根文件系统启动第一个进程(“init”或“systemd”系统管理器),然后接管启动过程。
在提供的配置字符串的上下文中,这意味着:
开发人员或系统管理员已经自己创建了一个 initramfs 图像,或者正在使用预先制作的一个。
他们将此图像放置在他们构建自定义 Linux 内核的源树的根目录下。
此图像已使用 Lempel-Ziv-Markov 链算法(LZMA)压缩方法进行了压缩,这种方法以其提供高压缩比和合理的处理时间为特点。
在编译具有此类配置的内核时,确保相对于内核的构建目录的 rootfs.cpio.lzma 文件路径正确,且该文件本身在编译时存在;否则,内核不会包括 initramfs,启动过程可能会失败。