我想在 Qemu 上进行 linux 内核开发。作为项目的一部分,我想修改一些内核文件。我只能在线找到我认为我们无法编辑的 linux 发行版的 ISO 文件。有人可以请我指出正确的方向吗?
4 回答
Buildroot 进行救援
Buildroot是一组脚本,可生成具有小于 10MiB 的 rootfs 映像的微型发行版。
它从源代码下载所有内容并进行编译,因此修补软件包很简单。https://buildroot.org/downloads/manual/manual.html#customize-patches有一个受支持的修补机制BR2_GLOBAL_PATCH_DIR
生成的图像非常小,以至于可以理解整个用户空间设置,这将更容易专注于内核。
我已经创建了这个设置来尽可能地自动化事情:https ://github.com/cirosantilli/linux-kernel-module-cheat
此设置也适用于 ARM:如何使用 QEMU 学习 ARM Linux 内核开发?
从 kernel.org 下载 Linux 内核源代码,然后修改、配置、构建您的内核。构建后,您将获得通常位于 arch/x86/boot/bzImage 的内核映像(如果您的架构是 x86,请查看您的架构的适当位置),这是您在 Qemu 上测试修改后的内核所需要的。您还需要一个rootfs(使用busybox)才能正确运行它。使用 qemu 的 '-kernel' 参数来传递 bzImage。一个例子:
`qemu-system-x86_64 -m 1024 -smp 4 -kernel arch/x86/boot/bzImage -initrd initramfs.gz -append "rdinit=/ root=/dev/ram`
它告诉 qemu 使用 1024 个 ram,使用 4 个 cpu。
我向您推荐的最好方法是 ubuntu-vm-builder。
sudo ubuntu-vm-builder qemu precise --arch 'amd64' --mem '1024' --rootsize '4096' --swapsize '1024' --kernel-flavour 'generic' --hostname 'ubuntu' --components 'main' --name 'Srikanth' --user 'ubuntu' --pass 'ubuntu' --bridge 'br0' --libvirt 'qemu:///system'
然后在 qemu 中运行它。
这将构建一个 qcow2 文件,该文件是写入时复制的,并且比从源代码获取内核并编译它要快。
如果要修改 linux 内核,可以从 https://www.kernel.org/下载内核源 。修改代码后安装在Linux系统上。