2013-10-23 70 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?