在 Android 手機上跑 Ubuntu
這個 Linux on Android 專案的目的是將 Ubuntu 等 Linux 的版本 Port 到 Android 的手機上,作者是 zacthespack,目前作者正在上傳最新的 12.04 版本,所以這次我先使用了作者提供的最後一個版本 (V5) 來做測試,上圖是實際在我的 SGS2 上跑出來的畫面。
環境介紹
一、首先你需要有一台已經 root 的手機,Android Kernel 必須要有 loop device 的支援。至於怎麼做我想網路上文章很多,高手很多我就不多寫,去 XDA 論壇 找找看應該都找得到。
二、手機先至 Market 下載兩個 App:Android Terminal Emulator 和 android-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/ 並不是手機的外接記憶卡]
四、兩個 zip 檔解開會得到兩個檔案:ubuntu.sh 和 ubuntu.img,手機開 USB 偵錯模式接上電腦,上傳到 /sdcard/ubuntu/ 的位置裡面。
五、開 Terminal,按照底下輸入:
# su
# cd /sdcard/ubuntu/
# sh ubuntu.sh
執行了之後,第一個是設定 X Window 解析度的選項,好像是會自動偵測,按 Enter 就好,再來是選桌面環境,LXDE 或是 Gnome,如果執行成功就會 chroot 一個環境,有開 VNC Server 以及 SSH Server。
六、再來,不要關閉 Terminal 的視窗,關掉的話等於剛剛開的 VNC Server 也關了,切換到桌面,點 VNC Client 的 APP,我們要用 VNC Clinet 連剛剛建立起來的 VNC Server。埠號是 5900,位址是 localhost,密碼則是 ubuntu。[你也可以從電腦用 VNC Client 連進你手機的 IP]
最後補上一張跑 Gnome 桌面的截圖:
補充說明
作者有寫一個 App,下載的連結都在那個 App 裡面,也有安裝及使用說明,可以至 Market 下載:Ubuntu Installer,或者參考底下幾個網址。
我在安装时,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]:
Now enter the screen size you want in pixels (e.g. 800x480), followed by [ENTER]:
回覆刪除按 Enter 繼續
接下来的动作我都有,直到show root@localhost:/#
回覆刪除但是用VNC连接时会产生error:“VNC connection failed! localhost/127.0.0.1:5900-Connection refused”
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
這兩個是錯誤訊息。
mount:Device or resource busy??怎麼會這樣??
回覆刪除Re: 吳柏翰 <3108878729696901084>
回覆刪除我有遇過,但我忘記那時是怎麼處理的,先重開試試看。
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
那個問題解決了我遇到另一個問題
回覆刪除mv:cannot stat`/root/.vnc/gxstartup':NO such file or directory
我知道這篇文章已過很久了,但我最近在嘗試裝Ubuntu到手機上,我在輸入
回覆刪除sh ubuntu.sh時,模擬終端機給我的回覆是需要加su,但我在一開始時有su了,
之後我家了su ,變成 su sh ubuntu.sh,但他回應我說這個黨找不到,可是我用電腦看,明明就有這個檔的存在,我是有在外接的SD card上新增一個ubuntu的資料夾,我把img、sh等檔案都放在那個 料夾裡。