歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

在Qemu的beagleboard上運行Android

如之前的文章提到的,現在我們已經可以在Ubuntun上通過qemu模擬beagleboard了,進一步可以測試的是在這個qemu的beagleboard上運行Android。

相關閱讀:

【Ubuntu】測試Qemu上的beagleboard http://www.linuxidc.com/Linux/2012-05/60650.htm
在Ubuntu上通過Qemu模擬beagleboard http://www.linuxidc.com/Linux/2012-05/60651.htm

主要工作是制作一個qemu-system-arm可以識別的模擬sd卡文件。

在上一篇文章中我們已經分析了 linaro-media-create所創建的img文件,當時也考慮了可以將創建的img文件loop回到/dev/loopx上,然後修改這個img文件,讓它包含啟動Android需要的文件。不過整個過程比較麻煩。

在網上看了一下,發現Linaro項目中就有一個linaro-anroid-media-create工具可以用於創建Android的模擬sd卡,測試一下發現之前安裝qemu-system的時候已經安裝了linaro-anroid-media-create 工具,使用方式如下:

linaro-anroid-media-create --dev $BOARD --image-file ./myandroid.img --boot boot.tar.bz2 --system system.tar.bz2 --userdata userdata.tar.bz2

對應BeagleBoard的命令就是:

linaro-anroid-media-create --dev beagle --image-file ./myandroid.img --boot boot.tar.bz2 --system system.tar.bz2 --userdata userdata.tar.bz2

剩下的問題就是找的BeagleBoard對應的boot.tar.bz2 , system.tar.bz2 , userdata.tar.bz2這三個文件了。

這三個文件在Linaro項目網站上可以下載,鏈接如下:http://releases.linaro.org/platform/linaro-n/android/11.09/beaglexm/

下載了以上三個文件,然後執行linaro-anroid-media-create命令生成myandroid.img文件,再通過以下命令通過qemu-system-arm啟動這個系統

sudo qemu-system-arm -M beaglexm -m 512 -sd ./myandroid.img -clock unix -serial stdio

然後就可以看到qemu啟動,本來滿心歡喜地等待Android的啟動,沒想到系統啟動過程出錯,跑到booting the kernel的時候報如下錯誤:

Uncompressing Linux... done, booting the kernel.
omap2_inth_read: Bad register 0x00000020

看錯誤的話MLO和u-boot.bin都沒有問題,應該是linux kernel有問題,於是將myandroid.img文件的第一個分區loop回來,命令如下:

sudo mount -o loop,offset=$[63*512] ./myandroid.img ./mountpoint

然後刪除了uImage文件,拷貝了一個之前為BeagleBoard編譯Android的時候做好的uImage文件,再次啟動。

這次啟動成功了,看到了Android小機器人,adb也啟動了,不過後面的界面就跑不起來了。查看了一下錯誤,可能是qemu上的模擬BeagleBoard沒辦法模擬HDMI的原因。於是沒有細究,畢竟咱不是用這個來調試Android上的應用的,需要調試Android應用的話就直接用Android SDK上的模擬器了,有意思的是Android SDK上的Android模擬器其實也是基於qemu模擬器的。

下面是運行截圖:

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved