一个想法

我们能不能控制 Linux Kernel 加载的 “第一个状态机”?

  • 计算机系统没有魔法
  • 你能想到的事就能实现

挑战 ChatGPT:

  • 我希望用 QEMU 在给定的 Linux 内核完成初始化后,直接执行我自己编写的、静态链接的 init 二进制文件。我应该怎么做?

我们的真正壁垒

  • 怎样问出好问题
  • 怎样回答问出的问题

启动 Linux

熟悉的 QEMU,稍稍有些不熟悉的命令行选项

  • 再次挑战 ChatGPT:如果我希望用 QEMU 启动我给定的 Linux 内核二进制文件 vmlinuz 和初始内存文件系统 initramfs,应该使用怎样的 QEMU 参数使得 initramfs 中的 /bin/hello 作为第一个执行的程序?
run:
# Run QEMU with the installed kernel and generated initramfs
    qemu-system-x86_64 \
      -serial mon:stdio \
      -kernel build/vmlinuz \
      -initrd build/initramfs.cpio.gz \
      -machine accel=kvm:tcg \
      -append "console=ttyS0 quiet rdinit=$(INIT)"