初始化 RAM 文件系统(Initramfs)

主要观点:可以编译内核镜像并加载自己的 initramfs,介绍了创建 initramfs 的相关步骤及工具,包括编译gen_init_cpio工具、创建 hello world 初始化程序init、构建基本的 initramfs 描述并生成initramfs.cpio归档,还提到用 Qemu 测试 initramfs 以及可在 ubuntu 仓库获取预编译的内核镜像。
关键信息

  • gen_init_cpio.c文件可在内核仓库获取并编译。
  • 可创建包含各种文件和目录描述的 initramfs 描述,如根目录、常见目录、设备等,并将编译好的init程序包含其中。
  • qemu-system-${HOSTTYPE}命令结合内核镜像和 initramfs 进行测试,可添加参数如console=ttyS0等。
    重要细节
  • gen_init_cpio.c编译命令为wget -O gen_init_cpio.c 'https://raw.githubusercontent.com/torvalds/linux/v6.7/usr/gen_init_cpio.c'; gcc -o gen_init_cpio gen_init_cpio.c
  • 创建 hello world 初始化程序的命令为printf '%s\n' '#include <stdio.h>' '#include <unistd.h>' 'int main() { printf("Hello world!\n"); sleep(999999999); }' | gcc -fpic -static -xc - -o init
  • 构建基本 initramfs 描述的代码段中包含各种文件和目录的创建及链接设置。
  • 在 Qemu 测试时可根据实际情况选择合适的HOSTTYPE,并可从 ubuntu 仓库获取预编译的内核镜像。
阅读 14
0 条评论