linux deploy的作用是什么

linux deploy用于在Android設(shè)備上部署Linux環(huán)境,其原理大概是在Android的Linux層跑一個(gè)chroot或者proot容器,然后再在容器中運(yùn)行我們準(zhǔn)備好的另外一個(gè)Linux系統(tǒng)。必須獲取手機(jī)Root權(quán)限后才能使用Linux Deploy。

Linux Deploy是一款可以在Android設(shè)備上部署Linux環(huán)境的應(yīng)用,其原理大概是在Android的Linux層跑一個(gè)chroot或者proot容器,然后再在容器中運(yùn)行我們準(zhǔn)備好的另外一個(gè)Linux系統(tǒng)。值得注意的是,這與我們熟知的虛擬機(jī)技術(shù)不同,新的Linux系統(tǒng)將和Android系統(tǒng)平行運(yùn)行(非專業(yè)解釋不要深究)。

在使用Linux Deploy之前,我們需要獲取手機(jī)的Root權(quán)限(必須),獲取Root權(quán)限后,由于原機(jī)自帶的Linux命令集不完整,我們需要安裝Busybox來擴(kuò)充Linux命令集(不安裝也可以)

Linux Deploy需要在谷歌商店安裝,其他安卓應(yīng)用商店沒有,以下提到的軟件都只能在谷歌商店安裝

linux deploy的作用是什么

安裝完成后,我們將使用Linux Deploy在Android設(shè)備上部署Ubuntu系統(tǒng):

  點(diǎn)擊界面最右下方的”下載”圖標(biāo)進(jìn)入配置文件的設(shè)置界面進(jìn)行如下設(shè)置(我也不知道開發(fā)者為什么會(huì)用這么一個(gè)”下載”圖標(biāo)作為配置文件設(shè)置界面的圖標(biāo)):

  Containerization method:”chroot”

  發(fā)行版:”Ubuntu”

  架構(gòu):保持默認(rèn)值

  發(fā)行版版本:”yakkety”(即Ubuntu 16.10)

  源地址:http://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/(這里我們采用默認(rèn)方式部署,即在軟件源中下載Linux組件和必要的軟件包的方式部署,因?yàn)槟J(rèn)源速度不佳,為了不下載一天一夜,我們這里使用的是清華大學(xué)的開源鏡像源,如果你采用Repository方式部署(之后的文章會(huì)講到),這里的”源地址”應(yīng)該填寫Repository文件(后綴為tgz/tar.gz)文件的本地或遠(yuǎn)程路徑)

  安裝類型:這一選項(xiàng)的話有兩種建議,”目錄”和”文件”,如果對(duì)Linux不太熟悉并且/data分區(qū)剩余空間≥2g的話,建議使用”目錄”的安裝方式,如果對(duì)Linux比較熟悉或者/data分區(qū)剩余空間

  安裝路徑:”安裝路徑”選擇”目錄”時(shí),這個(gè)選項(xiàng)將定義系統(tǒng)安裝在哪個(gè)路徑中,默認(rèn)路徑為${ENV_DIR}/rootfs/linux,即安裝在/data/user/0/ru.meefik.linuxdeploy/env/rootfs/linux目錄下。”安裝類型”選擇”文件”時(shí),這個(gè)選項(xiàng)將定義Linux系統(tǒng)安裝在哪個(gè)鏡像文件中,默認(rèn)值為外置存儲(chǔ)/linux.img。

  鏡像大小(MB)(安裝類型”選擇”文件”時(shí)可用):這個(gè)選項(xiàng)將定義系統(tǒng)所在鏡像文件的大小。系統(tǒng)安裝之前將在安裝目錄創(chuàng)建一個(gè)大小為設(shè)置的鏡像大小的空文件用來存放系統(tǒng)文件和數(shù)據(jù)(相當(dāng)于新Linux系統(tǒng)的總磁盤空間)。建議不要用默認(rèn)值,填寫2048m足夠了。

  文件系統(tǒng)(安裝類型”選擇”文件”時(shí)可用):選擇”自動(dòng)”。

  用戶名:這個(gè)選項(xiàng)為登錄系統(tǒng)時(shí)的用戶名,默認(rèn)為”android”,可以隨意更改。

  用戶密碼:這個(gè)選項(xiàng)為Ubuntu系統(tǒng)中用戶的密碼,可以根據(jù)自己的習(xí)慣填寫。

  Privileged Users:保持默認(rèn)值

  DNS服務(wù)器:可以保持默認(rèn)值,也可自定義填寫DNS服務(wù)器地址(如114.114.114.114等)

  本地化:建議保持默認(rèn)值POSIX,如果有其他需求,比如需要讓ssh返回結(jié)果為中文或者讓圖形界面的顯示語言為中文時(shí),選擇”zh_CN.UTF8″

  INIT/MOUNTS項(xiàng):若有需求時(shí)可以設(shè)置,無需求可以忽略。

  允許SSH服務(wù)器啟動(dòng):打開此選項(xiàng)

  SSH設(shè)置:保持默認(rèn)

  允許圖形界面啟動(dòng):若有需求可以設(shè)置,這里暫時(shí)不打開這個(gè)選項(xiàng)(之后的文章將會(huì)為大家介紹如何部署圖形界面)。

linux deploy的作用是什么

  設(shè)置完成后,按返回鍵返回到應(yīng)用主界面,按下菜單鍵,選擇”安裝”開始Linux系統(tǒng)的安裝,安裝過程中需要一直保持網(wǎng)絡(luò)連接(建議在WIFI下安裝,大概需要幾百兆流量)。

  當(dāng)看到終端輸出”>>>deploy”時(shí),代表安裝已開始:

linux deploy的作用是什么

  當(dāng)看到終端輸出”

linux deploy的作用是什么

  點(diǎn)擊主界面下方的”啟動(dòng)”按鈕可以啟動(dòng)新安裝的系統(tǒng),點(diǎn)擊”停止”可以停止系統(tǒng)。

linux deploy的作用是什么

  至此,系統(tǒng)部署部分描述完畢。

  部署完畢后,我們需要用到lJuiceSSH/ConnectBot之類的SSH工具來登錄系統(tǒng)(這里以JuiceSSH為例)。

  成功啟動(dòng)系統(tǒng)后我們打開JuiceSSH,依次點(diǎn)擊 “連接” – 右下角”+”按鈕 進(jìn)入新建連接界面:

  昵稱:可隨意填寫,我們以”Localhost – Android”為例   類型:SSH   地址:127.0.0.1

linux deploy的作用是什么

  認(rèn)證:選擇”新建”跳轉(zhuǎn)到”新建認(rèn)證”界面:   昵稱:同樣可以隨意填寫,我們同樣以”Localhost – Android”為例   用戶名:填寫”配置文件設(shè)置”界面的”用戶名”,默認(rèn)為android   密碼:填寫”配置文件設(shè)置”界面的設(shè)置的”用戶密碼”

linux deploy的作用是什么

  點(diǎn)擊右上角的”√”圖標(biāo)保存并返回到”新建連接”界面,再次點(diǎn)擊”√”圖標(biāo)保存,在”連接列表”中點(diǎn)擊剛剛新建的這個(gè)項(xiàng)目連接到我們剛剛部署好的系統(tǒng),連接成功后界面如下:

linux deploy的作用是什么

  因?yàn)槲覀兪峭ㄟ^普通用戶android登陸系統(tǒng)的,接下來我們需要設(shè)置超級(jí)用戶(root)的密碼并且以超級(jí)用戶的身份登陸系統(tǒng):

  在終端中鍵入:

sudo passwd root

  終端將會(huì)提示用戶輸入root用戶的密碼并且再次輸入一次以確認(rèn)(輸入密碼時(shí)密碼將不可見,連*都不會(huì)顯示),設(shè)置完畢后,在終端鍵入命令su并輸入剛剛設(shè)置好的root用戶密碼即可切換到root用戶。

  文件的管理:   如果你是通過”目錄”方式部署的Linux系統(tǒng),那么你可以直接使用R.E.管理器訪問/data/user/0/ru.meefik.linuxdeploy/env/rootfs/linux即可管理新系統(tǒng)中的文件,如果你是通過”文件”方式部署的Linux系統(tǒng),管理文件等操作就得依靠SFTP了(當(dāng)然使用SSH方式也沒問題,但是還是覺得SFTP更方便些)。當(dāng)我們使用普通用戶身份登錄SFTP時(shí),由于權(quán)限原因,我們無權(quán)操作大多數(shù)文件。所以我們需要以超級(jí)用戶身份登錄SFTP。但默認(rèn)配置是不允許root用戶登錄SSH和SFTP的,所以我們需要進(jìn)行如下設(shè)置:

  在Linux Deploy中啟動(dòng)部署好的系統(tǒng),以android用戶登錄到SSH,在終端中執(zhí)行:

sudo apt-get install -y vim ? ? ? ?#安裝vim編輯器

  當(dāng)然啦,使用系統(tǒng)自帶的vi編輯器也是可以的,如果你對(duì)vi編輯器比較熟悉也可以使用vi編輯器編輯文件。vim編輯器安裝完成后我們繼續(xù)在終端執(zhí)行:

vim /etc/ssh/sshd_config ? ? ? ?#使用vim編輯器打開/etc/ssh/sshd_config這個(gè)文件

  打開文件后,鍵入i進(jìn)入編輯模式,點(diǎn)擊終端任意空白位置可以彈出特殊鍵鍵盤,使用上下光標(biāo)滾動(dòng)瀏覽文件,在文件的#Authentication部分找到PermitRootLogin這一項(xiàng),將其改為yes,改動(dòng)完成后點(diǎn)擊特殊鍵鍵盤中的”ESC”鍵退出編輯模式,鍵盤鍵入:wq!保存并強(qiáng)制退出文件完成對(duì)文件的編輯操作。

linux deploy的作用是什么

  打開Linux Deploy,停止后再啟動(dòng)Linux系統(tǒng)。打開”Turbo客戶端” – 側(cè)邊欄 – 創(chuàng)建一個(gè)新賬戶 – SFTP 來新建一個(gè)SFTP連接(部分文件管理器,比如ES文件瀏覽器(ESFileExplorer),SE文件管理器(SolidExplorer)也帶有SFTP功能,如果不想安裝TurboFTP的話,可以用它們來代替):

linux deploy的作用是什么

  其中:

  用戶名為:root   密碼為剛剛設(shè)置好的root用戶的密碼   主機(jī)名為:127.0.0.1

  其他項(xiàng)保持默認(rèn),點(diǎn)擊右上角的”保存”圖標(biāo)保存配置,在側(cè)邊欄的連接列表中我們將以root用戶連接到SFTP并管理文件:

linux deploy的作用是什么

  當(dāng)然,修改完sshd_config文件,停止并啟動(dòng)Linux系統(tǒng)后,你也可以直接以root用戶連接到SSH了。 ? ?   介紹完安裝,介紹一下卸載吧~你可以通過以下方法完全卸載Linux Deploy:

  1.如果你使用”目錄”的方式部署的Linux系統(tǒng),那么在Linux Deploy內(nèi)”停止”Linux系統(tǒng),接著直接卸載Linux Deploy并重啟手機(jī)即可完全卸載;   2.如果你使用”文件(鏡像)”方式部署的Linux系統(tǒng),你需要先”停止”Linux系統(tǒng),然后刪除放置在內(nèi)置存儲(chǔ)下的鏡像文件,鏡像文件路徑就是上文在部署Linux系統(tǒng)之前提到的”安裝路徑”這一項(xiàng),如果此項(xiàng)未經(jīng)修改,則鏡像路徑為外置存儲(chǔ)/linux.img,接著卸載Linux Deploy并重啟手機(jī)即可完全卸載。

安裝圖形環(huán)境

修改以下配置項(xiàng):

  INIT:   打勾:啟用自定義腳本執(zhí)行   (INIT的其他配置保持不變)

  圖形界面:

  打勾:允許圖形界面啟動(dòng)

  圖形子系統(tǒng):VNC

  圖形化界面設(shè)定:保持默認(rèn)配置

  桌面環(huán)境:按需選擇,這里選擇的是LXDE 

linux deploy的作用是什么
linux deploy的作用是什么
linux deploy的作用是什么

  配置完畢后,回到主界面,按下”菜單鍵”,選擇”配置”讓我們剛才的的設(shè)置生效:

linux deploy的作用是什么
linux deploy的作用是什么

  配置完畢后,點(diǎn)擊底部的”停止”按鈕停止Linux系統(tǒng),再點(diǎn)擊”啟動(dòng)”按鈕啟動(dòng)Linux系統(tǒng),接著我們登入SSH,在終端中執(zhí)行:

sudo apt-get install ttf-wqy-zenhei ? ?#安裝中文字庫

  中文字庫安裝完畢后,執(zhí)行以下命令啟動(dòng)VNC:

vncserver

  終端會(huì)返回以下結(jié)果:

New ‘X’ desktop is localhost:1 ?Starting applications specified in /home/android/.vnc/xstartup Log file is /home/android/.vnc/localhost:1.log
復(fù)制

  證明vncserver已啟動(dòng)成功。

  (注意,在某些時(shí)候,第一次執(zhí)行vncserver命令時(shí)系統(tǒng)將要求你設(shè)定一個(gè)小于8位數(shù)的VNC密碼,你需要輸入兩次密碼之后提交,VNC密碼設(shè)定完成之后還會(huì)有一個(gè)提示,不用理會(huì),鍵入n提交即可)

進(jìn)入圖形界面:

  接著我們使用VncViewer來連接到我們剛剛部署好的的圖形界面:

  打開VncViewer,點(diǎn)擊右下角的”+”按鈕添加VNC會(huì)話:

  Address:   127.0.0.1:5901   Name:   Localhost – Ubuntu@Xfce

  其中,”Address”項(xiàng)為VNC服務(wù)器所在的地址。由于我們需要連接本機(jī)的VNC服務(wù)器,所以填寫127.0.0.1即可,此外我們還需要在地址后指定VNC端口,因?yàn)閯倓偨K端返回的信息:New ‘X’ desktop is localhost:1指定了此次桌面會(huì)話號(hào)為1,所以端口就為5900+1=5901。如果我們開啟了多個(gè)虛擬桌面,它們的會(huì)話號(hào)為2,3,4…,那么各自的端口即為5902,5903,5904…依次類推。并且,服務(wù)器地址與端口之間需要用英文冒號(hào)隔開。”Name”項(xiàng)為用戶為此VNC會(huì)話指定的地址,我們?yōu)榱藚^(qū)別其他會(huì)話,填寫的是Localhost – Ubuntu@Xfce,實(shí)際上隨便填寫什么都可以。

  這些信息填寫完畢后,點(diǎn)擊”CREATE”按鈕提交:

linux deploy的作用是什么
linux deploy的作用是什么

  確認(rèn)信息無誤后,點(diǎn)擊下面綠色的”CONNECT”按鈕開始連接VNC會(huì)話(如果你之前沒有設(shè)定過VNC密碼,但在連接VNC連接過程中仍然需要你輸入密碼時(shí),那么你可以輸入android用戶的密碼試試):

linux deploy的作用是什么
linux deploy的作用是什么

  好了…圖形界面的部署過程到此為止,剩下的你們自己折騰吧(/doge臉)~

可能遇到的問題:

  1. 當(dāng)你開啟了一個(gè)VNC會(huì)話,停止Linux系統(tǒng)再啟動(dòng)Linux系統(tǒng)后,再次執(zhí)行vncserver命令,系統(tǒng)可能會(huì)報(bào)出以下錯(cuò)誤:

linux deploy的作用是什么

  這時(shí)候,你可以執(zhí)行以下兩條命令:

rm -rf /tmp/.X[1-9]-lock
rm -rf /tmp/.X11-unix/X[1-9]

  執(zhí)行完畢后,再執(zhí)行vncserver,會(huì)話號(hào)就會(huì)被重置為1了。為了防止每次停止再啟動(dòng)Linux系統(tǒng)后帶來的這個(gè)問題,我們可以編輯/etc/rc.local文件,在此文件的exit 0之前插入這兩條命令:

sudo vim /etc/rc.local ? ?#編輯/etc/rc.local

linux deploy的作用是什么

  編輯完成后,保存即可,進(jìn)行這步操作后,在啟動(dòng)Linux系統(tǒng)后和停止Linux系統(tǒng)之前,Linux Deploy都會(huì)替我們執(zhí)行這兩條命令,這樣一來之后就不會(huì)再報(bào)錯(cuò)了~

  2. vncserver默認(rèn)的分辨率是1024×768,但市面上的大部分手機(jī)屏幕的分辨率都是720P(1280×720),1080P(1920×1080),甚至2K(2560×1440),vncserver默認(rèn)的1024×768分辨率可能會(huì)造成VNC畫面不能填充滿屏幕的情況,這時(shí)候,我們有必要修改VNC分辨率以適應(yīng)屏幕,經(jīng)過測(cè)試,拿1080P屏幕來說,將分辨率設(shè)為為720P可使VNC圖像充滿屏幕且不影響顯示效果。調(diào)節(jié)方法就是在每次執(zhí)行vncserver命令時(shí)在后面加上-geometry參數(shù),例如我需要把VNC分辨率調(diào)為720P(1280×720),那么在啟動(dòng)vncserver時(shí),執(zhí)行:

vncserver -geometry 1280×720

  即可將新開啟的VNC虛擬會(huì)話屏幕分辨率設(shè)為1280×720。值得注意的是,命令中的1280×720里的x是小寫字母x,而不是數(shù)學(xué)中的乘號(hào)×。

  下面是1280×720分辨率和1024×768分辨率的對(duì)比(將VNC Viewer畫面縮小到最小):

linux deploy的作用是什么
linux deploy的作用是什么

  很明顯,1080P屏幕上,將VNC分辨率設(shè)為1280×720可使圖像填充滿屏幕且視覺效果更佳。

  如果你覺得每次啟動(dòng)vncserver時(shí)輸這么一長(zhǎng)串命令有點(diǎn)兒麻煩,那么可以編輯~/.bashrc文件,在下圖所示的位置增加一行alias定義:

vim ~/.bashrc ? ?#編輯~/.bashrc

alias vncserver=’vncserver -geometry 1280×720′
復(fù)制

linux deploy的作用是什么

  之后,每次執(zhí)行vncserver命令后,新開啟的VNC會(huì)話的分辨率都會(huì)被設(shè)為1280×720。

升級(jí)ubuntu

會(huì)發(fā)現(xiàn)ubuntu只能安裝到18.04

升級(jí)的方法就是安裝Ubuntu后再直接升級(jí)。

用VNC登入桌面後,用終端機(jī)安裝更新器

sudo?apt?install?update-manager-core

更新全部套件至最新版

sudo?apt?update?&&?sudo?apt?upgrade sudo?do-release-upgrade

如果出現(xiàn)authenticate ‘focal.tar.gz’ against ‘focal.tar.gz.gpg’ Authentication failed錯(cuò)誤,先安裝gnupg並執(zhí)行以下指令:

sudo?apt?install?gnupg?gnupg1?gnupg2 sudo?apt-key?adv?--keyserver?keyserver.ubuntu.com?--recv-keys?871920D1991BC93C

再次執(zhí)行sudo do-release-upgrade,輸入y開始更新系統(tǒng),按照終端的指示更新。

如果提示Please Install All Available Updates Before Upgrading

apt?clean? apt?autoclean sudo?apt?update? sudo?apt?upgrade?-y? sudo?apt?dist-upgrade

再次執(zhí)行sudo do-release-upgrade,輸入y開始更新系統(tǒng),按照終端的指示更新。

不出意外的話,系統(tǒng)正常升級(jí)完了。

升級(jí)完之后還需要回到linux deploy的配置項(xiàng)中把用戶名改成root,密碼可以保持不變,原因是升級(jí)后,原來的android這個(gè)用戶名就沒有root權(quán)限了

修改用戶名之后一定要點(diǎn)linux deploy的配置選項(xiàng)重新配置

# 2023.3.8更新 ? 如果你遇到“The required dependency ‘apt (>= 2.0.4)’ is not installed.”需要修改/etc/apt/source.list文件

##?/etc/apt/source.list deb?http://ports.ubuntu.com/?focal?multiverse?main?universe deb-src?http://ports.ubuntu.com/?focal?multiverse?main?universe deb?http://ports.ubuntu.com/?focal-updates?main?universe?multiverse deb-src?http://ports.ubuntu.com/?focal-updates?main?universe?multiverse deb?http://ports.ubuntu.com/?focal-security?main?universe?multiverse deb-src?http://ports.ubuntu.com/?focal-security?main?universe?multiverse

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊7 分享