2013年1月27日 星期日

小筆電安裝Android x86 教學

Android x86這個計畫項目是將 Google Android 作業系統移植至 x86 平台的開放源碼計劃,計畫的主持人黃志偉(Chih-Wei Huang)可以說是另一個台灣之光。

x86版本的Android特別適合用在x86小筆電與平板電腦等。本計劃自 2009 年六月開始,已進行將近三年的時間。採用 Apache License 2.0 授權。Android 4.0 (ICS)是第一個同時適用平板與手機的Android開放平台,特別是為平板所打造的Holographic UI,為許多x86平板與小筆電帶來新的生命。(節錄自 http://android-day.com/presentation/android-x86-4-0-porting)


 自從2011年底開始,Android x86 項目開始有了突飛猛進的進展,主要的原因是:

  • 原先態度冷淡的CPU大廠們,感覺到了Android平台的魅力以及ARM架構處理器所帶來的威脅,所以紛紛表態支持Android開源項目,實際上,就是希望x86平台可以更Smooth的執行利用Android原始碼重新編譯過的x86項目。
  • Android的系統,本身有了重大的進步,平板與手機可以共用同一版本的系統,這意味著移植到各方面較接近平板電腦的小筆電,能夠更順利。
  • Android-x86計畫參與者的努力不懈。


我們可以由以下兩篇報導,了解到現今CPU大廠對於Android平台的態度。

總之,現在安裝Android在Notebook/Netbook上,只要主要的硬體設備能夠驅動,絕對會有令人驚喜的感覺。一直以來對家人淘汰掉的Msi U100小筆電無論跑Windows系列、Mac OSX、或是Ubuntu,都感到系統運作的很吃力的我來說,成功的把U100 裝上Android系統,的確讓人有耳目一新的感覺。


安裝的過程其實不難,就是手續比較多一點點。

實際安裝前我們要先準備幾樣東西:
  1. 1G或2G隨身碟一隻,太大的空間其實用不到。
  2. UNetbootin,功能是要把下載來的ISO轉為可開機的隨身碟。
  3. Android-x86-4.0-RC2 ISO
  4. 小筆電一台
下載ISO檔案時要注意,目前只要依照型號下載RC2這個版本就好,雖然目前所支援的特定型號不多,如果沒有合適的,可以試試看 eeepc、thinkpad、或是ASUS Laptops這幾個版本。

例如:我的Msi U100逐一測試到RC2 的thinkpad 能夠完美的驅動幾乎所有的硬體(除了有線網路),我就選擇了這個版本。安裝前的測試方式,在後面會說明。

安裝步驟如下:
  1. 插上隨身碟,格式化成FAT32
  2. 執行UNetbootin,選擇ISO映像檔,並指向到下載好的Android x86 ISO檔。然後選擇隨身碟的磁碟機代號,按確定,就可以製作可用來開機測試或安裝的隨身碟。
  3. 製作好開機隨身碟以後,我們就可以把隨身碟,安插在小筆電上,開機,選擇USB隨身碟開機(開機後到BIOS或是由BootMenu中指定為USB HDD開機)
  4. 因為還不確定所下載的ISO對於自己小筆電的支援性好不好,所以我們先不安裝系統,取而代之的,我們先選擇 Run Android without Installation
  5. 實際利用隨身碟開機到系統中,測試看看這個版本的硬體支援如何,最主要要考量的是:無線網路、顯示解析度、滑鼠、WebCam、觸控板(可否控制到左右滑動)
  6. 若下載的ISO檔,並沒有辦法合乎需求,可以重新下載另一個ISO(還是4.0 RC2),重新格式化或刪除隨身碟上的資料後,再用UNetbootin再製作一次開機隨身碟,再次測試,直到找到滿意的ISO檔。
  7. 找到滿意的ISO檔案後,開機時,就可以選擇Install Android to harddisk,真正的把系統裝起來。
  8. 安裝的過程,必須在Choose Partioion的地方建立兩個分割區,第一個sda1是用來放系統的,第二個sda2是用來當作sdcard裝置的。兩個都要格式化(設定)成 type 83的 ext3格式,而且sda1要設定為bootable,最後要記得write。(http://kalug.linux.org.tw/~lloyd/LLoyd_Hand_Book/book/cfdisk-howto.html
  9. 格式化好兩個分割區就可以選擇sda1進行安裝,是否要安裝GRUB開機管理程式,選YES
  10. 是否要建立一個可以讀寫的/system資料夾也要選擇YES。
  11. 安裝完成,重新開機。
重新開機後,就進入到了初始設定的歡迎畫面,簡單設定一下後,就可以看到桌面了。但我們還有兩個最重要的問題要解決。

  • SD卡問題:RC2版本之前,Android都是利用掛載一個2G的磁碟image檔案來充當sdcard,但是RC2之後,其實是利用sda1下的的一個目錄來當作sdcard的空間,實際測試,大約只有1/3的app可以被這樣蒙混過去XD,所以我們必須要利用我們在安裝過程中創的另一個sda2分割區來當作sdcard空間。方式是:重新開機,在GRUB選單中選第二個項目(Debug),開機後,提示符號結尾為#,代表擁有root最高權限,cd / 到最上層目錄,再cd 到mnt目錄下的GRUB中,vi menu.lst ,編輯 list檔,先按 i 進入insert 模式,在正常開機那段的Kernel行結尾加上 SDCARD=/dev/sda2,修改好以後,按下esc 再輸入:wq  存檔離開,然後就可以重開機了。




  • 第二個問題就是NDK的問題,Android其實是允許app開發者利用c++撰寫自己的native code,但這些code 是編譯成arm處理器能接受的格式,我們必須要在x86的架構下加上可以轉譯arm 指令給x86 cpu 執行的函式庫

    我們必須要從 Buildroid下載以及複製三組檔案到我們的系統中
    • Download libhoudini.so and copy it to /system/lib/
    • Download libdvm_houdini.so and copy it to /system/lib/
    • Download the arm libs, extract the downloaded archive and copy the files to/system/lib/arm/

      以上下載複製的動作可以使用兩個方式進行,在pc上下載好存在隨身碟上(開機的那隻就可以),然後插上小筆電,利用app當中的 file manager瀏覽 /mnt/USB/your_arm_lib_path  來複製到指定的位置。

      或是直接使用android x86來下載並複製到指定的位置去

      特別一提的是,android的play store 有個 ES檔案管理器,功能強大,可以幫助我們複製貼上搬動檔案、編輯檔案。
    • 最後還要檢查一下/system/build.prop 檔案的內容,是否能找到 ro.product.cpu.abi2=armeabi
      沒有的話也必須自己加上這一行。

至此,所有相關的修改與設定都應該完成。檢查看看內建瀏覽器可不可以下載檔案,如果不行,代表SDCARD我們所做的設定沒有生效,需要再次檢查。檢查看看 Angry Bird Rio 可不可以跑,不能跑的話代表arm translator沒有生效。