2013-10-23 69 views
4

我想在Qemu上开发Linux内核开发。我想修改一些内核文件作为我的项目的一部分。我只能在网上找到linux发行版的ISO文件,我认为我们不能编辑。任何人都可以请指出我在这个正确的方向?使用Qemu进行Linux内核开发?

回答

1

从kernel.org下载Linux内核源代码,然后修改,配置和构建你的内核。在建立之后,你会得到一个通常位于arch/x86/boot/bzImage的内核映像(如果你的arch是x86的话,看看arch的适当位置),这就是你在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内存,使用4个CPU。

+0

嗨!非常感谢答案。我试图按照以下链接中的步骤在我的系统上安装忙碌框:[link](http://blog-junstrix.rhcloud.com/2013/01/23/compiling-linux-kernel-and-running-on -qemu /)但我得到这个错误'mount:mount point rootfs is not a directory'当我试图运行这个命令'sudo mount -o loop ramdisk.img rootfs'时。请让我知道如何继续? –

+0

这是一个不同的东西,并在该教程显示如何作为init的一部分运行程序。你不一定需要在某个目录下挂载rootfs,如果你使用busybox,你会从那里得到_install目录,你可以创建rootfs。 –

+0

Hi rakib!非常感谢!有效! :) –

0

如果你想修改linux内核,你可以从https://www.kernel.org/下载内核源码。修改代码后在Linux系统上安装。

+0

嗨感谢您的回答,但我感兴趣的内核离线更改然后在qemu上运行修改后的版本,然后我想看看这些修改是否反映在Qemu中。但是在我通过Qemu运行内核之后,它只是加载内核,我无法进一步做任何事情。如果您需要更多信息,请告诉我。 –

+0

请不要在SO中使用签名和标语(http://meta.stackexchange.com/questions/5029/are-taglines-signatures-disallowed)。 – KBart

0

我推荐的最好方法就是给你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文件,该文件在写入时复制,并且比从源码获取内核并编译它快。

0

Buildroot里面抢救

Buildroot是一组脚本生成与根文件系统映像比10MiB小微小的发行版。

它从源代码下载所有内容并编译它,因此修补软件包是微不足道的。没有与BR2_GLOBAL_PATCH_DIRhttps://buildroot.org/downloads/manual/manual.html#customize-patches

支持的修补机制生成的图像是如此的渺小,变得可以理解了整个用户空间的设置,这将使其更容易专注于内核。

我创造了这个设置来自动东西尽可能:https://github.com/cirosantilli/linux-kernel-module-cheat

这种设置也为ARM的伟大工程:How to use QEMU for learning ARM Linux kernel development?