怎樣才能把你閑置的手機(jī)利用起來呢?不妨試著給它安裝一個(gè) Linux 系統(tǒng)來玩玩。本文將教大家如何使用 Linux Deploy 在 Android 手機(jī)上部署 Linux 系統(tǒng)。
我的博客原文:使用 Linux Deploy 在手機(jī)上部署 Linux 系統(tǒng)
此文的微信公眾號文章版(精簡版):點(diǎn)擊前往
這篇文章主要內(nèi)容的更新時(shí)間是2019年9月7日,其中的一些內(nèi)容可能已經(jīng)過時(shí)。如果遇到問題,可以發(fā)郵件聯(lián)系我一起探討。
首先來看一下 Linux Deploy 的官方介紹(翻譯):
此應(yīng)用程序是開源軟件,用于快速輕松地將 GNU/Linux 操作系統(tǒng)(OS)安裝在你的 Android 設(shè)備上。
Linux Deploy 通過以下四種方式來安裝 Linux 系統(tǒng)的發(fā)行版:鏡像文件安裝或目錄安裝或分區(qū)安裝或 RAM 安裝。新安裝的系統(tǒng)的應(yīng)用程序在 chroot 環(huán)境中運(yùn)行,并與 Android 平臺共同工作。在設(shè)備上進(jìn)行的所有更改都是可逆的,即應(yīng)用程序和組件都可以被完全刪除。發(fā)行版的安裝時(shí)通過互聯(lián)網(wǎng)從官方鏡像在線下載文件來完成的。使用超級用戶權(quán)限(root)可以更好地運(yùn)行這個(gè)程序。
程序支持多語言界面。你可以管理安裝操作系統(tǒng)的過程,安裝完成后,你可以通過用戶界面來啟動和停止新系統(tǒng)服務(wù)(并且支持運(yùn)行腳本)。安裝過程以文本方式實(shí)時(shí)顯示在主程序的界面上。程序?qū)诎惭b系統(tǒng)的過程中調(diào)整環(huán)境,包括基本系統(tǒng)、SSH 服務(wù)器、VNC 服務(wù)器和桌面環(huán)境。程序還可以管理 SSH 和 VNC 設(shè)置。
安裝新的操作系統(tǒng)大約需要 15 分鐘。建議的磁盤映像文件最小大小為 1024 MB(使用 LXDE 桌面)或 512 MB (不安裝桌面環(huán)境)。當(dāng)你在使用 FAT32 文件系統(tǒng)的閃存卡上安裝 Linux 時(shí),鏡像大小不應(yīng)超過 4095 MB!初始設(shè)置后 SSH 和 VNC 的密碼是自動生成的??梢酝ㄟ^程序設(shè)置或標(biāo)準(zhǔn) OS 工具修改密碼。
該應(yīng)用程序可以在 Google Play 和 GitHub 中下載。
準(zhǔn)備
在開始安裝之前,需要準(zhǔn)備以下的東西:
- 一臺已擁有 root 權(quán)限的 ARM 架構(gòu) Andriod 設(shè)備
- Linux Deploy
- Busy Box
- SSH 工具
- VNC Viewer(非必須)
下載 Linux Deploy 并安裝至想部署 Linux 的設(shè)備中。SSH 工具用作控制 Linux 系統(tǒng),可以安裝在你 想部署 Linux 的設(shè)備中 ,也可以安裝在其它設(shè)備上,Windows 端推薦使用 Xshell,Android 端推薦使用 JuiceSSH,iOS 段推薦 Termius。如果你安裝的 Linux 是帶桌面環(huán)境并且圖形子系統(tǒng)是 VNC 的話,則需額外下載 VNC Viewer。
安裝必要軟件
將 Linux Deploy 和 Busy Box 安裝至你想要部署 Linux 的手機(jī)中,給予兩個(gè)軟件的超級用戶權(quán)限,并運(yùn)行 Busy Box。大部分 Busy Box 的界面如下圖所示:

為了避免奇奇怪怪的錯(cuò)誤,建議在安裝之前將 Busy Box 的安裝位置修改為 /system/xbin,然后點(diǎn)擊 Install,等待幾秒鐘后 Busy Box 將會安裝至手機(jī)當(dāng)中。安裝成功時(shí)界面如下圖所示:

安裝完 Busy Box 之后,就可以配置 Linux Deploy 的屬性了。
配置 Linux Deploy
打開 Linux Deploy,可以看到如下界面:

首先點(diǎn)擊左上角的菜單圖標(biāo),進(jìn)入設(shè)置頁面,修改環(huán)境的 PATH 變量為 Busy Box 的安裝目錄(/system/xbin)。

接著返回至上一層的主界面,點(diǎn)擊右下角位于“停止”右邊的配置屬性圖標(biāo),進(jìn)入配置屬性界面。在這個(gè)界面有眾多選項(xiàng),每一個(gè)選項(xiàng)都有著各自的作用,選項(xiàng)調(diào)不好的話很有可能會安裝失敗。接下來詳細(xì)地介紹每一個(gè)選項(xiàng)并且建議要怎么選擇才會比較好。

容器類型
- chroot
- proot
選擇 chroot。
發(fā)行版 GNU/Linux
- Alpine
- Arch
- CentOS
- Debian
- Fedora
- Kail
- Slackware
- Ubuntu
- Rootfs.tar
隨便選擇一個(gè),建議 Ubuntu,因?yàn)楸疚牡乃羞x項(xiàng)或命令都是建立在選擇了 Ubuntu 的發(fā)行版的基礎(chǔ)上的。
架構(gòu)
- armel
- armhf
- arm64
- i386
- amd64
選擇合適你設(shè)備的 CPU 架構(gòu)。
選擇發(fā)行版 GNU/Linux 版本(假如選擇了 Ubuntu)
- precise
- trusty
- xenial
- bionic
建議 xenial,軟件會比較多
源地址
- http://ports.ubuntu.com/ (官方源)
- https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ (清華大學(xué)源)
- http://mirrors.ustc.edu.cn/ubuntu-ports/ (中國科學(xué)技術(shù)大學(xué)源)
從上方三個(gè)選項(xiàng)中選擇一個(gè)粘貼進(jìn)去,建議選擇下面那兩個(gè)。當(dāng)然如果有其它源也可以用自己找到的源。
安裝類型
- 鏡像文件
- 目錄
- 分區(qū)
- RAM
- 自定義
一般是選擇鏡像文件或者目錄安裝。
鏡像文件安裝是把整個(gè) Linux 系統(tǒng)安裝在一個(gè)鏡像文件里面。鏡像文件的大小在安裝的時(shí)候已經(jīng)是固定好了的,后期無法修改,由于鏡像文件的特性,它會根據(jù)設(shè)置的鏡像大小固定地占用手機(jī)儲存空間,即使整個(gè) Linux 系統(tǒng)大小并沒有到達(dá)設(shè)置的鏡像大小。如果遇到 Linux 儲存空間不足的情況需要掛載手機(jī)儲存。以進(jìn)行存放文件。訪問 Linux 系統(tǒng)里面的文件也需要使用 sftp 訪問,有點(diǎn)不方便。但是鏡像文件安裝的好處在于安裝的成功率很高,一般都能安裝成功。
如果使用鏡像文件安裝:
- 安裝路徑:生成和存放鏡像文件的路徑,一般默認(rèn)就好,如有特殊需要更換位置可以自定義路徑。
- 鏡像大小(單位: MB):決定了鏡像文件的大小,相當(dāng)于決定 Linux 系統(tǒng)的硬盤空間。有條件的話建議設(shè)置得越大越好,建議最低 2 GB。
- 文件系統(tǒng):建議選擇 ext4。
目錄安裝是將 Linux 系統(tǒng)安裝至手機(jī)儲存空間的某一個(gè)文件夾中。使用目錄安裝可以直接使用 Android 系統(tǒng)直接讀取 Linux 系統(tǒng)的文件。而且目錄安裝 Linux 系統(tǒng)的儲存空間上限就是手機(jī)儲存空間的上限。
如果使用目錄安裝,安裝路徑可以是默認(rèn),也可以是自定義目錄。
用戶名
根據(jù)自己喜好自定義用戶名。這是 SSH 登錄的時(shí)候要用到的用戶名。也可以不修改保持默認(rèn)。
用戶密碼
根據(jù)自己喜好自定義用戶密碼。這是 SSH 登錄的時(shí)候要用到的用戶密碼。也可以不修改保持默認(rèn)。
特權(quán)用戶
根據(jù)自己喜好自定義特權(quán)用戶名。一般默認(rèn)即可。
本地化
安裝的 Linux 系統(tǒng)所使用的語言??梢阅J(rèn)。如果需要簡體中文,選擇 zh_CN.UTF-8。
DNS
默認(rèn)自動即可
Network trigger
無需修改
初始化
保持默認(rèn),不勾選。
掛載
如需 Linux 訪問 Android 上的文件,可以打開這個(gè)選項(xiàng)。
掛載點(diǎn)列表
點(diǎn)進(jìn)去后繼續(xù)點(diǎn)右上角的加號。對話框中 Source 填寫你想讓 Linux 訪問的文件夾的地址。Target 填寫掛載至 Linux 的一個(gè)目錄。
Source 可以填寫手機(jī)內(nèi)部儲存的目錄。Target 可以填寫 Linux 的 /mnt 文件夾里面。
將手機(jī)的內(nèi)部儲存掛載至 Linux,一般 Source 填寫 /storage/emulated/0,Target 填寫 /mnt/adcard。這樣就可以在 Linux 的 /mnt/sdcard 文件夾里訪問到手機(jī)內(nèi)部儲存了。
SSH
啟用。
SSH 設(shè)置
保持默認(rèn)。
聲音服務(wù)
根據(jù)情況自定義是否啟用。
音頻設(shè)置
根據(jù)情況自定義設(shè)置。
圖形界面
根據(jù)情況自定義是否啟用。
圖形子系統(tǒng)
- VNC
- X11
- Framebuffer
如需使用圖形界面,建議選擇 VNC,配置很方便。
圖形界面設(shè)置(僅針對使用 VNC 的情況)
- 顯示:保持默認(rèn)。
- 顏色深度(bits):顏色深度越深,色彩越豐富??筛鶕?jù)喜好自定義。
- DPI:每英寸點(diǎn)數(shù)。數(shù)值越大,用戶界面放大倍數(shù)越大。
- 寬度:屏幕寬度。根據(jù)需求進(jìn)行設(shè)置。
- 高度:屏幕高度。根據(jù)需求進(jìn)行設(shè)置。
- VNC 選項(xiàng):保持默認(rèn)即可。
桌面環(huán)境
選擇一個(gè)喜歡的桌面環(huán)境??梢栽诰W(wǎng)上搜索,再根據(jù)截圖選擇自己喜歡的風(fēng)格。不過一般都是精簡版的桌面,其實(shí)都不怎么好看。
根據(jù)以上給出的建議,屬性配置就基本完成了。我的手機(jī)是小米2,系統(tǒng)為 Android 6.0,配置情況如下:
- 容器類型: chroot
- 發(fā)行版 GNU/Linux: Ubuntu
- 架構(gòu): armhf
- 發(fā)行版 GNU/Linux 版本: xenial
- 源地址: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/
- 安裝類型: 目錄
- 安裝路徑: /data/linux
- 用戶名: ymefg
- 用戶密碼: 123456
- 特權(quán)用戶: andriod
- 本地化: zh_CN.UTF-8
- DNS: 自動
- 初始化: 不啟用
- 掛載: 不啟用
- SSH: 啟用
- SSH 設(shè)置: 默認(rèn)不修改
- 聲音服務(wù): 不啟用
- 圖形界面: 不啟用
當(dāng)然我的配置并不是最適合你的配置,比如說如需掛載 Android 系統(tǒng)上的資源時(shí)就可以根據(jù)上面所給出的建議來啟用掛載,同樣的需要圖形界面的話也可以根據(jù)上面給出的建議來配置桌面環(huán)境。
部署 Linux
在經(jīng)過繁瑣的前期準(zhǔn)備之后,終于可以部署 Linux 系統(tǒng)了。返回 Linux Deploy 的主界面,點(diǎn)擊右上角的三個(gè)點(diǎn)小菜單圖標(biāo),再選擇“安裝”選項(xiàng),這時(shí)主界面中間的文本顯示框就會不斷地有消息彈出來,Linux 系統(tǒng)的安裝就已經(jīng)開始了。

在安裝的過程中手機(jī)會聯(lián)網(wǎng)從之前設(shè)置的源地址中下載各種文件,安裝速度受手機(jī)性能和網(wǎng)速的影響,但是一般會在半個(gè)小時(shí)之內(nèi)安裝完畢。如果安裝過程中出現(xiàn)了錯(cuò)誤,請根據(jù)下文的錯(cuò)誤列表中尋找你出現(xiàn)的錯(cuò)誤并根據(jù)所提供的解決辦法來操作。

當(dāng)文本提示框不再有新消息彈出且最后一行顯示 >>>deploy 時(shí),則說明安裝完成。(不論成功或失敗,都會顯示這個(gè)字樣)

如果安裝過程不出現(xiàn)失敗的話,就可以啟動新安裝的 Linux 系統(tǒng)了。只需要在主界面點(diǎn)擊左下角的啟動按鈕就能啟動新安裝的 Linux 系統(tǒng)。如果一切正常,點(diǎn)擊啟動后將會出現(xiàn)以下類似的文本:

其中如果沒有“fail”字樣并且有顯示 :: Starting extra/ssh ... done</code>` 的話就說明 Linux 系統(tǒng)安裝成功并且 SSH 服務(wù)成功啟動了。
如果顯示帶有“fail”字樣或者全部信息都是“skip”的話,很有可能是安裝失敗了,這時(shí)需根據(jù)文末的安裝失敗情況解決辦法來操作。
至此,Linux 系統(tǒng)已部署完成。
使用
使用新安裝的 Linux 系統(tǒng)很簡單,它不是虛擬機(jī),是獨(dú)立于安卓系統(tǒng)之外運(yùn)行的。操作它就跟操作正常的 Linux 系統(tǒng)一模一樣。
局域網(wǎng)的 SSH 連接
以 Windows 端 SSH 客戶端 Xshell 通過局域網(wǎng) SSH 連接至新安裝的 Linux 系統(tǒng)為例。
前提:
- Windows 端已安裝 Xshell 軟件
- Windows 端和運(yùn)行 Linux 的設(shè)備處在同一個(gè)局域網(wǎng)下(例如連接同一個(gè) Wi-Fi)
首先打開 Xshell,將會彈出一個(gè)對話框,在對話框中點(diǎn)擊“新建”按鈕。如果沒有彈出,在上方的菜單中點(diǎn)擊“文件”選項(xiàng),再點(diǎn)擊“新建”。

在新建會話的屬性設(shè)置中,找到“主機(jī)”這一欄,將運(yùn)行 Linux 設(shè)備的局域網(wǎng) IP 地址填寫上去。IP 地址有很多查看方法,最簡單的就是直接在 Linux Deploy 上查看 IP 地址。Linux Deploy 的標(biāo)題欄中顯示的就是該設(shè)備的局域網(wǎng) IP 地址,照著它來填進(jìn)去就可以了。

然后在新建會話屬性設(shè)置左邊的列表中,選擇“用戶身份驗(yàn)證”選項(xiàng),在“用戶名”和“密碼”選項(xiàng)中填寫在 Linux Deploy 中設(shè)置的用戶名和密碼。

設(shè)置完用戶名和密碼后點(diǎn)擊“確定”按鈕,然后在會話選擇窗口中選中剛剛新建的會話,點(diǎn)擊“連接”按鈕。

這時(shí)可以看到,已經(jīng)成功地連接到了新安裝的 Linux 系統(tǒng)。

本機(jī)運(yùn)行 JuiceSSH 的本地連接
以 Android 端 SSH 客戶端 JuiceSSH 通過本地 SSH 連接至新安裝的 Linux 系統(tǒng)為例。
前提:
- Android 端已安裝 JuiceSSH 軟件
- 運(yùn)行 Linux 系統(tǒng)和運(yùn)行 JuiceSSH 的是同一個(gè)設(shè)備
首先打開 JuiceSSH,在主界面中點(diǎn)擊“連接”選項(xiàng),再在新界面中點(diǎn)擊右下角的“+”浮動按鈕。在彈出來的新建連接的設(shè)置界面中,地址欄填寫“127.0.0.1”,認(rèn)證選擇“新建”

在新建認(rèn)證的界面,根據(jù) Linux Deploy 的設(shè)置填寫之前所設(shè)置的用戶名和密碼。填寫完畢后點(diǎn)擊右上角的完成按鈕完成新建認(rèn)證的設(shè)置,再點(diǎn)擊一下右上角的完成按鈕完成新建連接的設(shè)置。

這時(shí)可以看到,剛剛新建的連接已經(jīng)出現(xiàn)在連接列表當(dāng)中了,點(diǎn)擊一下即可連接。

連接成功后將如下圖所示:

當(dāng)然,以上所示例的連接方式并不是說一定要按照上面所說的那樣只有根據(jù)以上方法才會連接成功。并不是說 JuiceSSH 只能本地連接,處在同一個(gè)局域網(wǎng)下的其它 Android 設(shè)備也是可以安裝 JuiceSSH 通過局域網(wǎng)來連接至 Linux 系統(tǒng)中;也不是說 Windows 系統(tǒng)只能用 Xshell 來連接 Linux 系統(tǒng),Windows 系統(tǒng)上還有著許多各有特點(diǎn)的 SSH 客戶端。這里的 JuiceSSH 和 Xshell 只是為了照顧到每一個(gè)讀者,舉個(gè)兩個(gè)例子而已。
VNC 連接
如果你的 Linux 系統(tǒng)安裝了桌面環(huán)境并且啟動了 VNC 服務(wù)的話,也可以通過 VNC 連接至 Linux,相當(dāng)于遠(yuǎn)程桌面連接了。這里以 Windows 的 VNC Viewer 為例,通過 VNC 連接至 Linux 系統(tǒng),Android 和 iOS 端的連接大同小異。
前提:
- 安裝 VNC Viewer
- 運(yùn)行 VNC Viewer 的設(shè)備和運(yùn)行 Linux 系統(tǒng)的設(shè)備處在同一個(gè)局域網(wǎng)下或是同一個(gè)設(shè)備。
首先打開 VNC Viewer,點(diǎn)擊菜單上的“File”,再選擇“New connection...”。

在彈出來的 Properties 窗口中,VNC Server 框填寫運(yùn)行 Linux 的設(shè)備在局域網(wǎng)中的 IP 地址(如果你用同樣的設(shè)備來運(yùn)行 Linux 和 VNC Viewer 的話,VNC Server 填寫 127.0.0.1)。設(shè)置完成之后再點(diǎn)擊“OK”按鈕

這時(shí)可以看到,新建的主機(jī)就已經(jīng)顯示在 VNC Viewer 的主界面中了,雙擊它連接將會彈出認(rèn)證界面,在“Password”框中填寫之前所設(shè)置的用戶密碼,再點(diǎn)擊“OK”按鈕,即可連接成功。


為了連接的效果更好,可以在 Linux Deploy 的 VNC 設(shè)置界面中更改參數(shù),如分辨率和 DPI。
訪問以鏡像文件安裝的 Linux 上的文件資源
如果在部署 Linux 的時(shí)候使用鏡像文件的安裝方式安裝的話,Linux 系統(tǒng)所有的文件都整合為一個(gè)鏡像文件儲存在設(shè)備的存儲空間里,文件管理器無法直接訪問 Linux 上的文件資源。
這時(shí)可以通過一些文件管理器的云連接功能來管理 Linux 上的文件。這里以 Android 端的 Solid Explorer 為例。(Windows 端有著眾多 FTP 軟件,隨便找找都有了)
首先打開 Solid Explorer,點(diǎn)擊右下角的浮動按鈕,選擇“新建云連接”

點(diǎn)擊“新建云連接”后,將會彈出云連接的設(shè)置界面,可根據(jù)以下提示進(jìn)行設(shè)置。
連接類型
選擇“SFTP”。
服務(wù)器詳細(xì)信息
- 遠(yuǎn)程主機(jī)名:填寫運(yùn)行 Linux 系統(tǒng)的設(shè)備的局域網(wǎng) IP(本機(jī)填寫 127.0.0.1)。
- 端口:22
- 路徑:(留空)
- 顯示名稱:(自定義)
驗(yàn)證
選擇“用戶名和密碼”。
登錄
填寫在 Linux Deploy 里所設(shè)置的用戶名和密碼。
設(shè)置高級選項(xiàng)?
選擇“否”。
隨后一直點(diǎn)擊下一步最后點(diǎn)擊連接即可大功告成。連接成功后,可在 Solid Explorer 的側(cè)欄中查看新建的連接。這樣就可以訪問以鏡像文件安裝的 Linux 系統(tǒng)上的文件了。
一些 Linux Deploy 的額外設(shè)置
讓 Linux 保持運(yùn)行
為防止連接不穩(wěn)定出現(xiàn)斷開連接的情況,可以在 Linux Deploy 的設(shè)置中將屏幕常亮、鎖定 Wi-Fi 以及 CPU 喚醒的選項(xiàng)打開。雖說會增加耗電但連接穩(wěn)定性大大提高。
安裝中文字體
第一次安裝圖形界面可能會出現(xiàn)中文亂碼的情況,可以安裝中文字體來解決。打開終端運(yùn)行以下命令等待執(zhí)行完畢后重啟即完成安裝中文字體。
apt-get install language-pack-zh-hansttf-wqy-zhenhei
Ubuntu 方向鍵亂碼
輸入以下命令來切換到 /bin/bash,其中 <username> 替換為用戶名。重新連接即可解決問題。
sudo chsh -s /bin/bash <username>
常見安裝錯(cuò)誤
此處列舉了一些安裝錯(cuò)誤的情況以及解決辦法,根據(jù)解決辦法來操作并不一定會成功,但說不定就真的解決問題了呢。
目錄安裝時(shí)顯示 Extcracting adduser... 后停止安裝
圖示:

原因: Linux Deploy 無權(quán)限在設(shè)定的目錄安裝 Linux.
- 解決方案1: 在開發(fā)者選項(xiàng)里開啟“強(qiáng)制將允許將應(yīng)用寫入外部存儲設(shè)備”選項(xiàng)。
- 解決方案2: 更改安裝目錄,例如修改為
/data/linux
鏡像安裝時(shí)生成鏡像文件時(shí)卡住
- 可能的原因1: 鏡像文件過大
- 可能的原因2: 設(shè)備儲存空間不足
- 解決方案1: 屬性里修改鏡像文件的大小
- 解決方案2: 清理設(shè)備的存儲空間
顯示 W: Couldn't download package... 后停止安裝
- 原因1: 設(shè)備網(wǎng)絡(luò)不好
- 原因2: 源服務(wù)器網(wǎng)絡(luò)不好
- 原因3: 要下載的東西被神秘的防火墻擋住了
- 解決方案1: 升級你設(shè)備的網(wǎng)絡(luò)
- 解決方案2: 更換軟件源
- 結(jié)局方案3: 繞過防火墻
顯示 Requires superuser privileges (root)
原因:Linux Deploy 未取得 root 權(quán)限。
解決方案:允許 Linux Deploy 訪問超級用戶權(quán)限。
題外話
出于嚴(yán)謹(jǐn)性考慮,本文的許多內(nèi)容都使用了較為正式的詞語,閱讀起來可能會有些許不便。例如“Android 設(shè)備”明明可以換成更通俗的安卓手機(jī),但考慮到安卓平板也能使用 Linux Deploy,所以這里使用的是“Android 設(shè)備”,再例如“Windows”明明可以說成是電腦,同樣的,電腦不一定使用的都是 Windows 系統(tǒng),它可以是 macOS,也可以是 Linux,甚至有可能是 Android。還請大家多多包涵。