在 Android 手機上跑 Ubuntu

Screenshot_2012-02-19-11-18-19

這個 Linux on Android 專案的目的是將 Ubuntu 等 Linux 的版本 Port 到 Android 的手機上,作者是 zacthespack,目前作者正在上傳最新的 12.04 版本,所以這次我先使用了作者提供的最後一個版本 (V5) 來做測試,上圖是實際在我的 SGS2 上跑出來的畫面。

環境介紹

一、首先你需要有一台已經 root 的手機,Android Kernel 必須要有 loop device 的支援。至於怎麼做我想網路上文章很多,高手很多我就不多寫,去 XDA 論壇 找找看應該都找得到。

二、手機先至 Market 下載兩個 App:Android Terminal Emulatorandroid-vnc-viewer。這兩支是等下要跑 Ubuntu 用得到的程式,Terminal 是用來執行指令的,vnc 是用來連 local 的 X Server 跑 Ubuntu 視窗給跑出來。

三、至 Linux on Android 專案的下載頁面下載壓縮檔,用電腦下載下來解壓縮之後再傳到手機上 (比較建議這麼做,因為那個 Ubuntu 的映像壓縮檔案有 1.5GB,解壓縮後至少有 3.5 GB,這些動作讓電腦做就好。

下載兩個框起來的檔案-ubuntuV5-script.zip 和 ubuntuV5-image.zip,如果你的手機 /sdcard/ 的空間不夠 3.5GB 那麼大的話,你可以抓另一個 ubuntuV5-sm-image.zip。[注意,這裡指的 /sdcard/ 並不是手機的外接記憶卡]

Linux on Android Download Page

四、兩個 zip 檔解開會得到兩個檔案:ubuntu.sh 和 ubuntu.img,手機開 USB 偵錯模式接上電腦,上傳到 /sdcard/ubuntu/ 的位置裡面。

Screenshot_2012-02-19-15-40-23

五、開 Terminal,按照底下輸入:

# su
# cd /sdcard/ubuntu/
# sh ubuntu.sh

Screenshot_2012-02-19-17-22-54

執行了之後,第一個是設定 X Window 解析度的選項,好像是會自動偵測,按 Enter 就好,再來是選桌面環境,LXDE 或是 Gnome,如果執行成功就會 chroot 一個環境,有開 VNC Server 以及 SSH Server。

Screenshot_2012-02-19-17-20-41

六、再來,不要關閉 Terminal 的視窗,關掉的話等於剛剛開的 VNC Server 也關了,切換到桌面,點 VNC Client 的 APP,我們要用 VNC Clinet 連剛剛建立起來的 VNC Server。埠號是 5900,位址是 localhost,密碼則是 ubuntu。[你也可以從電腦用 VNC Client 連進你手機的 IP]

Screenshot_2012-02-19-16-32-39

最後補上一張跑 Gnome 桌面的截圖:

Screenshot_2012-02-19-17-19-08

補充說明

作者有寫一個 App,下載的連結都在那個 App 裡面,也有安裝及使用說明,可以至 Market 下載:Ubuntu Installer,或者參考底下幾個網址。

留言

  1. 我在安装时,show出如下信息,而且,后面也连不上,我怀疑是这边的问题,不知道是不是这样?
    $ export PATH=/data/local/bin:$PATH
    $ su
    # cd sdcard/ubuntu
    # sh ubuntu.sh
    mkdir: can't create directory '/data/local/mnt': File exists
    Loop device exists
    mount: mounting /dev/block/loop255 on /data/local/mnt failed: Device or resource busy
    mount: mounting /sdcard/external_sd on /data/local/mnt/external_sd failed: No such file or directory
    net.ipv4.ip_forward = 1
    Ubuntu is configured with SSH and VNC servers that can be accessed from the IP:
    eth0: ip 192.168.1.103 mask 255.255.255.0 flags [up broadcast running multicast]

    Now enter the screen size you want in pixels (e.g. 800x480), followed by [ENTER]:

    回覆刪除
  2. Now enter the screen size you want in pixels (e.g. 800x480), followed by [ENTER]:

    按 Enter 繼續

    回覆刪除
  3. 接下来的动作我都有,直到show root@localhost:/#
    但是用VNC连接时会产生error:“VNC connection failed! localhost/127.0.0.1:5900-Connection refused”

    回覆刪除
  4. mount: mounting /dev/block/loop255 on /data/local/mnt failed: Device or resource busy
    mount: mounting /sdcard/external_sd on /data/local/mnt/external_sd failed: No such file or directory

    這兩個是錯誤訊息。

    回覆刪除
  5. mount:Device or resource busy??怎麼會這樣??

    回覆刪除
  6. Re: 吳柏翰 <3108878729696901084>
    我有遇過,但我忘記那時是怎麼處理的,先重開試試看。

    回覆刪除
  7. Re: 吳柏翰 <3108878729696901084>
    這篇可以參考,http://archlinuxarm.org/forum/viewtopic.php?t=1361

    It is possible /dev/loop1 is already in use.

    If that is the case you will need to create a different loop back device.

    loop1 is actually supposed to be 7 1. loop0 - loop7 are 7 0 - 7 7

    mknod /dev/loop7 b 7 7

    回覆刪除
  8. 那個問題解決了我遇到另一個問題
    mv:cannot stat`/root/.vnc/gxstartup':NO such file or directory

    回覆刪除
  9. 我知道這篇文章已過很久了,但我最近在嘗試裝Ubuntu到手機上,我在輸入
    sh ubuntu.sh時,模擬終端機給我的回覆是需要加su,但我在一開始時有su了,
    之後我家了su ,變成 su sh ubuntu.sh,但他回應我說這個黨找不到,可是我用電腦看,明明就有這個檔的存在,我是有在外接的SD card上新增一個ubuntu的資料夾,我把img、sh等檔案都放在那個 料夾裡。

    回覆刪除

張貼留言

回應不用錢,請多多益善!懶得寫字按個讚也是相當感謝!

這個網誌中的熱門文章

有點誇張的準專業機.Minolta Alpha 7 (Dynax 7、Maxxum 7).2000

在 Excel 裡轉換 Unixtime 格式

Lightroom.製作並匯出 Preset