主要观点:可以编译内核镜像并加载自己的 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) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。