主要观点:可以编译内核镜像并加载自己的 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 仓库获取预编译的内核镜像。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。