使用Android作為Guest系統跑在Qemu中
1、首先進行qemu-system-arm的編譯
./configure --cross-prefix=arm-linux-gnueabi- \--enable-kvm \--enable-fdt \--target-list=arm-softmmu \--static
當然,首先要確定你的系統裡面有相關的交叉編譯的工具。zlib之類的。其次,這樣編譯出來的qemu-system-arm是無法顯示圖形化介面的。圖形化介面的顯示需要依賴於SDL函數庫。
編譯Configure的時候qemu會顯示出相關選項讓你--enable-sdl但是,我在編譯的時候一直都是顯示 cann't find sdl。 Google之,大家都是說要一個libsdl1.2-dev,注意這個是Debian/Ubuntu下的要求。但是我的已經是有了這個庫的。。。莫名其妙的就是無法開啟這個配置。
2、將編譯好的qemu-system-arm拷貝到nfsroot/root下面
3、根據
https://wiki.linaro.org/Platform/Android/AndroidOnFastModels
準備所需要的Android的kernel、以及檔案系統。當然,最後是一個已經做好的啟動盤mmc.bin
這個Android是linaro已經最佳化了的,當然。。你可以自己去repo原始碼然後編譯
4、啟動Host系統。telnet之,僅僅是為了可以複製粘貼命令~=,=
5、將產生的mmc.bin以及解壓的boot檔案夾中的
Initrd和zImagewithDT cp到/srv/nfsroot/root下
6、啟動Guest系統
./qemu-system-arm \-enable-kvm \-kernel zImagewithDT \-sd mmc.bin \-initrd boot/Initrd \-m 512 -M vexpress-a15 -cpu cortex-a15 -nographic \-append "console=ttyAMA0 mem=512M init=/init"
等。很長時間。真的很長。。。然後出現root@android,就是進去了。不過。。很卡很卡很卡很卡很卡。
此時host是一個kernel, Guest是Android~~~~~
最後的最後,一點心得
一開始的時候沒有加上-initrd選項,qemu一直報錯,無法識別mmc.bin的檔案系統類型。
這個是很正常的。我把mmc.bin掛載了之後看過,裡面一共有四個分區,boot的檔案系統是VFat的其他是ext4的,能識別就怪了。。。。
查看了linaro-media-create的製作指令碼,他本來就沒有mkfs的。實際上就把它做出來的東西當成一個光碟片使用就好了。
問題
求有沒有大牛可以指導如何弄出介面來 =。=