Ubuntu Touch 和 Android 雙系統安裝官方指南
安裝後可實現以下功能
- 一台可以在全功能的 Android 和 Ubuntu 系統之間切換的手機
- Android 系統上:一個 Ubuntu Installer 應用,用來安裝 Ubuntu 系統和切換到 Ubuntu 系統
- Android 系統上:一個 SuperUser 超級用戶管理器,用來為 Ubuntu 安裝器授予許可權
- Ubuntu 系統上:一個 Ubuntu Dual Boot 應用,用來啟動到 Android 系統
- 尚不支持在 Ubuntu 系統下的更新,但可以通過 Android 下的應用程序來進行系統更新
必要條件
安裝雙系統啟動,你需要:
- 一台Nexus 4 手機 (其他 支持的 Nexus 手機 理論上也能安裝,但是現在還沒有經過測試。)
- 手機安裝 Android 4.4.2 或者更高的系統版本 ,基於原廠固件或者 CyanogenMod 和 AOSP 的固件。
- 手機上需要有 2.7GB 剩餘存儲空間 用來安裝Ubuntu。
- 桌面電腦上需要運行 ADB 工具
- 手機應該 解鎖 bootloader 並打開 USB 調試選項。按照安裝步驟1到3來實現。如果你的手機已經解鎖過 bootloader 並且打開了 USB 調試選項了,這一步可以跳過>。
步驟 1 - 桌面電腦設置
為了連接手機並刷機,在電腦桌面上依照以下幾步操作。
設置Touch開發者預覽工具(Touch Developer Preview Tools)的 PPA
這些 PPA 是一個迷你庫,其中包含安裝過程中需要的一些額外軟體。以下描述如何去啟用和使用它。
這些 PPA 的包含工具和依賴庫支持各個 Ubuntu 發行版,包括 12.04, 12.10, 13.04, 13.10 和 14.04等。 將以下的源地址列表加入 /etc/apt/sources.list 文件中來添加 Ubuntu Touch PPA。
在你的機器上按 Ctrl+Alt+T 開啟終端窗口,運行以下命令。
sudo add-apt-repository ppa:phablet-team/tools
在 Ubuntu 12.04系統上,還需要運行以下命令:
sudo add-apt-repository ppa:ubuntu-sdk-team/ppa
然後運行:
sudo apt-get update
sudo apt-get install ubuntu-device-flash
步驟 1.5 - 備份Android(可選)
- 確認開啟開發者模式。點擊 設置 -> 關於手機 -> 版本號 (點擊七次)
- 確認開啟 USB 調試模式。點擊 設置 -> 開發者選項 -> USB 調試
- 在你的電腦上執行(譯註:自然這是在Linux下,如Ubuntu裡面執行的)
$ adb backup -apk -shared -all
這樣就將你的操作系統、應用程序和所有的數據備份為 backup.ab 文件了。以後在重新刷回 android 系統(或root、解鎖等)的時候可以使用 $ adb restore backup.ab 命令恢復你所有的數據。
步驟 2 - 手機解鎖
如果手機已經解鎖,那麼跳過步驟 3。以下幾步將擦除手機上所有的個人數據。
- 關機,同時按住手機的開機鍵+音量上+音量下開機。
- 手機將開機到bootloader界面。
- 使用 USB 數據線將手機和電腦連接。
- 在電腦上按 Ctrl+Alt+T 打開一個終端。 鍵入 sudo fastboot oem unlock 並回車。
- 在手機上,接受解鎖條款。
- 按開手機開機鍵開機。(屏幕上 Start 的箭頭所向)
恢復手機出廠設置
如果解鎖 bootloader 後不斷重啟的話... 可以使用以下方法解決:
- 在重啟的過程中,同時按住 電源鍵+音量上+音量下 使得手機重返 fastboot 模式。
- 在 fastboot 模式下,使用音量鍵選擇到 Recovery 選項後,按下開機鍵選中。
- 在 Recovery 模式下(Android 機器人 背景是個紅色三角) 同時按住音量上鍵和開機鍵進入stock recovery 模式。再次強調,不要按住按鈕不放,只是同時按他們。保證你按了正確的音量按鈕。應該是右邊的音量按鈕的向上鍵。
- 一旦進入 Recovery 模式,恢復出廠設置並清空數據,然後重啟平板,現在應該可以看到歡迎屏幕了。
步驟 3 - 初始化手機指南
按照以下步驟初始化手機
- 如果沒有啟動,啟動手機進 Android 系統
- 啟用手機的 USB 調試模式
- 在冰激凌三明治 (版本 4.0) 上打開 USB 調試(設置 > 系統 > 開發者選項 > USB 調試)
- 在果凍豆 (版本 4.1 和 4.2) 上打開 USB 調試,需要進 設置, 關於 [手機|平板] 菜單且點擊版本號7次才能進入開發者選項。
- 在 4.2.2, (設置 > 關於 > 點擊版本號7次激活開發者選項菜單)
- 在其他版本的 Android 系統中,你通過 設置 > 開發者選項 > USB 調試來啟用 USB 調試模式。您也需要接受手機上的主機密鑰。
- 在工作站中 -> adb kill-server; adb start-server
- 將手機和電腦通過USB數據線連接起來。
- 根據 Android 版本的不同,會彈出一個主機密匙的框,需要確認才能和電腦通信。
- 注意,adb devices 命令不應該顯示為手機 'offline' 。如果顯示手機離線,在超級用戶模式下運行adb(sudo adb kill-server; sudo adb start-server),然後將手機再次連接。
- 在某些情況下,手機仍然顯示為離線,如果USB連接模式為 'MTP' (一些手機或版本的Android的默認模式)的話,就不會彈出主機密匙提示對話框。取消所有的USB連接模式選項的勾選(設置 -> 存儲 -> 菜單 -> USB連接 -> MTP, PTP)也許能解決adb連接問題。
- 記下現有手機鏡像版本號,Android 系統,恢復系統時使用。可以使用 設置 > 關於手機 > 版本號碼 查看版本號。
最新版的 Nexus 10s 開啟開發者模式後並沒有完全啟動。如果是這種情況的話,啟動到 bootloader 後運行 "fastboot -w" 然後進入下一步。
雙系統啟動安裝和更新說明
雙系統新安裝和升級在這部分過程實際上是相同的。
在 Android 系統中安裝 Ubuntu 安裝器
注意:如果手機中有一個以前版本的 Ubuntu 雙啟動,更新前請首先使用 Android 應用程序卸載掉 Ubuntu 系統。推薦保存用戶數據,只卸載掉基本的系統。
- 在電腦上下載雙系統安裝腳本到你的家目錄。http://humpolec.ubuntu.com/latest/dualboot.sh
- 使用 Ctrl+Alt+T 組合鍵打開電腦終端。
- 運行以下命令賦予安裝腳本可執行許可權。
chmod +x dualboot.sh
-
保證你的手機
- 正常啟動進入 Android 用戶界面
- 啟用 USB 調試選項
- 已經解鎖了 bootloader
- 使用 USB 數據線連接手機和電腦
- 在終端里運行以下命令安裝雙系統啟動:
./dualboot.sh
安裝完成後,手機會重啟數次。完成後,系統會啟動到 Android 系統,你可以在手機的應用程序裡面找到雙啟動應用程序 (「Ubuntu Dual Boot」) 。
或者,可以使用安裝腳本的另一個替代方法,可以參考安裝手冊 >。
現在按照以下說明在 Android 下安裝 Ubuntu。
Android 下安裝 Ubuntu
注意:Ubuntu 安裝需要手機上具有2.7GB以上的剩餘內存空間。
- 如果需要,也可以在手機和電腦USB連接狀態下,終端運行以下命令來釋放空間。(接受手機上的授權詢問)
adb shell "su sh rm -rf /cache/*"
- 在手機上,點擊 apps 按鈕打開 app 列表
- 查看列表找到 Ubuntu Dual Boot 圖標並啟動它
- 應用程序啟動後按 Choose channel to install 並選擇一個頻道下載(推薦 utopic 頻道),請確保您勾選了「bootstrap」選項
- 下載完成後需要授權 SU 許可權給應用程序。提示授權的時候,選擇 Grant 按鈕
- 按 Reboot to Ubuntu 按鈕重啟手機進入Ubuntu
- 標準手機重啟過程後會啟動到Android系統中
注意:
- Ubuntu 安裝器支持所有手機平板刷機工具(phablet-flash)支持的頻道
- 選擇了一個 Ubuntu 頻道後,bootstrap 複選框可以讓你選擇清空 Ubuntu 的用戶數據,如果不選中的話,用戶數據將一直保留。第一次安裝的話,選不選是沒什麼區別的
- 選中一個 Ubuntu 頻道後,取消 latest version 複選框後可以選擇一個特定版本號的鏡像,否則,默認安裝最新的鏡像。
- 如果在安裝過程下載鏡像過程中,手機鎖屏或者 Ubuntu 安裝器在後台運行的話,安裝按鈕會變成 Resume install (恢復安裝)。點擊這個按鈕會恢復到超級許可權提示前的狀態。
其他需要注意的
更新到最新的 Ubuntu 鏡像
根據雙啟動的經驗:
- 安裝新版本的 Ubuntu 需要使用 Android 上的雙啟動應用程序
- 下載新版本的 Ubuntu 可以在 Android 或者 Ubuntu 下進行
這實際上意味著可以有兩種不同的方式更新 Ubuntu 鏡像(譯註:此處與前文不一致,究竟是否可在Ubuntu下更新,譯者沒有做過實驗,可能已經支持了。):
- 如果在android系統下,使用雙啟動應用程序更新 Ubuntu ,需要選擇菜單選項中的 "Uninstall Ubuntu" ,然後應用程序會詢問你是否保留 Ubuntu 用戶數據。如果你想保留數據、通訊錄、應用程序、圖片、背景設置等,這些數據將會完整保留。另外,每次新版本的 Ubuntu 發布後,將會收到 Android 通知:
- 對於穩定頻道,應用每2天推送一次更新通知
- 對於推薦頻道,應用每10小時推送一次更新通知
- 如果你使用的是 Ubuntu, 使用系統設置中的標準更新機制下載新版鏡像,但是不要選擇安裝,下載完畢後,重新啟動到 Android 系統中,啟動雙啟動應用程序,程序會恢復更新。完成後,你可以再次切換到 Ubuntu系統中。
要升級 Ubuntu 到最新版本,在 android 下的 Ubuntu 雙啟動應用程序中,卸載 Ubuntu 後,可以按照同樣的安裝步驟去下載新版本的 Ubuntu。
雙系統安裝器參考命令
大多數情況下,不帶參數運行自動模式安裝腳本就足夠了。
dualboot.sh
- 自動模式:監測超級用戶應用程序是否需要安裝,並更新雙系統安裝應用程序。
dualboot.sh full
- 完整模式:安裝超級用戶和雙系統啟動 Android 應用程序
dualboot.sh update
- 更新模式:安裝或者更新 Android 下的雙系統啟動應用程序
dualboot.sh channel $CHANNEL
- 邊載(Sideload)模式:通過指定的 Ubuntu 頻道 ($CHANNEL) 下載最新的鏡像到手機。命令啟動 android 雙系統應用程序並繼續使用邊載文件進行安裝。
dualboot.sh push ubuntu.tar.xz device.tar.xz version.tar.xz
- 邊載推送模式:將下載參數推送給雙系統啟動應用程序,作為參數啟動雙系統安裝器進行安裝。
多個手機同時連到電腦上的時候,腳本還提供指定手機ID 的參數。手機ID為腳本的第一個參數。如果不指定手機ID的話,默認為第一個連接的手機。
dualboot.sh <device-id> channel devel-customized
使用自定義鏡像伺服器
如果你的手機不在官方支持列表中,需要使用第三方移植鏡像伺服器,你可以將自定義鏡像伺服器地址作為參數來使用雙啟動應用程序。這麼辦的話,打開終端,連接手機到電腦,運行以下命令(替換 $CUSTOM_SERVER_URL 為自定義伺服器地址):
adb shell "su sh 'cd /data/data/com.canonical.ubuntu.installer/files/ && echo $CUSTOM_SERVER_URL > custom_server && chmod 777 custom_server'"
下次啟動雙啟動應用程序的時候,默認將使用自定義伺服器地址而不是官方地址了。
異常處理
如果出現問題,安裝雙啟動後無法進入 Android 和 Ubuntu 系統的話,你可以使用原始啟動和恢復鏡像恢復手機到最初狀態。只有 recovery 分區被雙啟動修改了,當然你可以刷回原有的啟動分區。
- 下載手機的 Android 固件到你的PC上。
- 使用快捷鍵 Ctrl+Alt+T 打開終端
- 解壓固件 tar 包並 cd 到其目錄
- 運行以下命令以重啟手機到 bootloader
adb reboot bootloader
- 進入 bootloader 後,運行以下命令刷回啟動分區:
fastboot flash boot boot.img
- 不要退出 bootloader ,運行以下命令刷回 recovery 分區:
fastboot flash recovery recovery.img
- 刷機完畢後,重啟你的手機應該就可以進入 Android 系統了:
fastboot reboot
致謝
雙啟動項目和其他 Ubuntu 項目一樣都是開源的,你可以參與此項目,使得他更加完美!
FAQ
雙啟動如何工作?
基於 Android 的手機有一系列不同用途的分區。這些分區包括 /boot, /recovery, /system 和 /data 等。
- boot 分區是 bootloader 正常啟動的時候載入的。這個分區的啟動鏡像是由一個內核和ramdisk程序組成的。簡而言之,bootloader 解壓啟動鏡像,創建一個內存檔後將鏡像考入,最後使用 初始化進程 啟動內核。
- recovery 分區包含有恢復鏡像,它只是一個不同的啟動鏡像。它也含有一個內核和內存檔程序,但是初始化可執行程序被換成了內存檔中的二進位的 recovery 程序。
- system 分區含有所有的只讀系統文件 (除了內存檔中的)供初始化進程載入。
- data 分區是供系統寫入用戶數據的可讀寫分區。
Ubuntu 以稍微不同的方式使用這些分區
- boot 和 recovery 分區的作用和 Android 中一樣。
- system 鏡像 含有在 LXC 中執行的 Android 部分的程序。
- data 分區下的 /data/ubuntu/ 目錄含有Ubuntu系統
為了保證用戶可以返回 Android 原來的系統,Android 系統的啟動鏡像是不允許修改的,因為原始內核必須保存。所以使用 recovery 分區去啟動Ubuntu
雙啟動可以運行在那個版本的 Android 系統下?
- 普通 Android 或 AOSP 4.4.2 或更高版本。
- CyanogenMod (基於 Android 4.4.2 或更高版本).
雙啟動可以運行在那些手機上?
雙啟動通過測試可以運行在以下手機中:
- Nexus 4
- Nexus 7
- Nexus 10
雙啟動支持那些已發布版本的 Ubuntu?
雙啟動支持的所有手機平板刷機工具(phablet-flash)支持的系統。
Android 和 Ubuntu 如何共享用戶數據分區?
用戶數據分區也放在 Ubuntu 系統鏡像 /data/system.img, 大約有2GB。
Ubuntu swap 文件在用戶數據分區 /data/SWAP.img (大約540MB)。
Ubuntu 的用戶和系統數據也可以在以下目錄找到:
- /data/user-data
- /data/system-data
Android 數據分區的使用方式不變。
安裝雙啟動後是否無法啟動進入 recovery?
安裝雙啟動後,recovery 分區被 Ubuntu 啟動鏡像佔用。這意味著啟動到 recovery 模式下,就啟動了Ubuntu 。
使用 recovery 的功能會在未來發布。不過當卸載掉 Ubuntu 鏡像後,Ubuntu Install 應用會恢復原始的 recovery 分區(普通的 Android 或 CWM)。
如果用雙啟動替換掉 recovery 分區的話,是否還可以更新 Android 系統?
可以,使用雙啟動應用程序中的 "準備更新安卓" 選項。這會將原始 Android recovery 分區恢復,為 Android 系統更新做準備。這顯然會刪除 recovery 分區中安裝的 Ubuntu 系統,但是使用雙系統應用程序可以在 Android 系統更新後很容易重新安裝。
任何情況下,你都可以卸載雙啟動並恢復原始的 recovery 分區。
我可以卸載雙啟動嗎?
可以,使用 Android 版本雙啟動應用程序卸載 Ubuntu 後,原有的 recovery 分區數據會恢復到安裝前的狀態。
卸載 Ubuntu 的同時也會刪除 Ubuntu 系統鏡像和交換文件。如果需要,Ubuntu 用戶數據也可以被刪除。
雙啟動應用程序安裝了一個超級用戶應用,我可以使用一個第三方的超級用戶應用代替它嗎?
當然可以了!提供的 超級用戶 應用只是為了那些沒有安裝它的用戶的。
然而,需要注意一點:項目測試中只測試使用了來自 CyanogenMod 版本或者 dualboot.sh 腳本安裝的超級用戶應用。但是只要你使用和測試中用的類似的應用的話,一般也不會有問題的。
安裝 Ubuntu 中,我是否可以刪除用戶數據後切換頻道?
可以,但是有些東西沒有測試過,所以有些應用也許無法正常工作。這個問題也存在於切換版本的情況。
我能否設置默認啟動 Ubuntu 而將 Android 啟動移動到 recovery 分區?
目前為止交換默認啟動操作系統是不可行的。但是如果有需求的話我們會想辦法支持的。
為什麼使用 recovery 分區啟動 Ubuntu 系統而不是使用一個 Android 和 Ubuntu 結合的鏡像來啟動?
最開始設計雙啟動的時候原則就是不和某個特定版本和類型的 Android 系統捆綁,留給用戶自己選擇的權利。所以就沒有改動 Android 啟動鏡像和內核。
最後我們選擇利用 recovery 分區啟動 Ubuntu,並在需要的時候就恢復到其原始狀態。
我已經安裝了一個 CWM recovery 而且知道如何使用,我可否使用 zip 文件手動刷機?
絕對可以,我們提供的 dualboot.sh 是為了使得安裝應用和 recovery 更容易。如果你想手動安裝recovery 也是可以的。參看 dualboot.sh 腳本的源碼來操作。
為什麼 Ubuntu 安裝器需要使用 recovery 安裝到 system 分區里?
Ubuntu 安裝器需要安裝為 Android (預置的)系統應用。 和用戶安裝在用戶分區的應用不一樣,系統應用始終活動在系統分區中,保證可以獲取第三方軟體可以獲取的的最高的許可權。
其實 Ubuntu 安裝器需要獲取的許可權只有兩個:緩存分區寫入許可權,用來下載 Ubuntu 安裝文件;和電源管理,用來重啟系統。
via: https://wiki.ubuntu.com/Touch/DualBootInstallation
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive