共计 7128 个字符,预计需要花费 18 分钟才能阅读完成。
本文丸趣 TV 小编为大家详细介绍“linux deploy 的作用是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux deploy 的作用是什么”文章能帮助大家解决疑惑,下面跟着丸趣 TV 小编的思路慢慢深入,一起来学习新知识吧。
linux deploy 用于在 Android 设备上部署 Linux 环境,其原理大概是在 Android 的 Linux 层跑一个 chroot 或者 proot 容器,然后再在容器中运行我们准备好的另外一个 Linux 系统。在使用 Linux Deploy 前,必须需要获取手机的 Root 权限。
Linux Deploy 是一款可以在 Android 设备上部署 Linux 环境的应用,其原理大概是在 Android 的 Linux 层跑一个 chroot 或者 proot 容器,然后再在容器中运行我们准备好的另外一个 Linux 系统。值得注意的是,这与我们熟知的虚拟机技术不同,新的 Linux 系统将和 Android 系统平行运行(非专业解释不要深究)。
在使用 Linux Deploy 之前,我们需要获取手机的 Root 权限(必须),获取 Root 权限后,由于原机自带的 Linux 命令集不完整,我们需要安装 Busybox 来扩充 Linux 命令集(不安装也可以)。
Linux Deploy 需要在谷歌商店安装,其他安卓应用商店没有,以下提到的软件都只能在谷歌商店安装
安装完成后,我们将使用 Linux Deploy 在 Android 设备上部署 Ubuntu 系统:
点击界面最右下方的 下载 图标进入配置文件的设置界面进行如下设置(我也不知道开发者为什么会用这么一个 下载 图标作为配置文件设置界面的图标):
Containerization method: chroot
发行版: Ubuntu
架构: 保持默认值
发行版版本: yakkety (即 Ubuntu 16.10)
源地址:http://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/(这里我们采用默认方式部署,即在软件源中下载 Linux 组件和必要的软件包的方式部署,因为默认源速度不佳,为了不下载一天一夜,我们这里使用的是清华大学的开源镜像源,如果你采用 Repository 方式部署 (之后的文章会讲到),这里的 源地址 应该填写 Repository 文件(后缀为 tgz/tar.gz) 文件的本地或远程路径)
安装类型: 这一选项的话有两种建议,目录 和 文件,如果对 Linux 不太熟悉并且 /data 分区剩余空间≥2g 的话,建议使用 目录 的安装方式,如果对 Linux 比较熟悉或者 /data 分区剩余空间 2g 的话,建议使用 文件 的安装方式。在这里,为了操作方便,使用 目录 的安装方式,但在实际使用中,为了不占用 /data 分区空间,建议大家采用 文件(镜像) 的安装方式。
安装路径: 安装路径 选择 目录 时,这个选项将定义系统安装在哪个路径中,默认路径为 ${ENV_DIR}/rootfs/linux,即安装在 /data/user/0/ru.meefik.linuxdeploy/env/rootfs/linux 目录下。安装类型 选择 文件 时,这个选项将定义 Linux 系统安装在哪个镜像文件中,默认值为外置存储 /linux.img。
镜像大小(MB)(安装类型 选择 文件 时可用): 这个选项将定义系统所在镜像文件的大小。系统安装之前将在安装目录创建一个大小为设置的镜像大小的空文件用来存放系统文件和数据(相当于新 Linux 系统的总磁盘空间)。建议不要用默认值,填写 2048m 足够了。
文件系统(安装类型 选择 文件 时可用): 选择 自动。
用户名: 这个选项为登录系统时的用户名,默认为 android,可以随意更改。
用户密码: 这个选项为 Ubuntu 系统中用户的密码,可以根据自己的习惯填写。
Privileged Users: 保持默认值
DNS 服务器: 可以保持默认值,也可自定义填写 DNS 服务器地址(如 114.114.114.114 等)
本地化: 建议保持默认值 POSIX,如果有其他需求,比如需要让 ssh 返回结果为中文或者让图形界面的显示语言为中文时,选择 zh_CN.UTF8
INIT/MOUNTS 项: 若有需求时可以设置,无需求可以忽略。
允许 SSH 服务器启动: 打开此选项
SSH 设置: 保持默认
允许图形界面启动: 若有需求可以设置,这里暂时不打开这个选项(之后的文章将会为大家介绍如何部署图形界面)。
设置完成后,按返回键返回到应用主界面,按下菜单键,选择 安装 开始 Linux 系统的安装,安装过程中需要一直保持网络连接(建议在 WIFI 下安装,大概需要几百兆流量)。
当看到终端输出 deploy 时,代表安装已开始:
当看到终端输出 deploy 时,代表安装已完成:
点击主界面下方的 启动 按钮可以启动新安装的系统,点击 停止 可以停止系统。
至此,系统部署部分描述完毕。
部署完毕后,我们需要用到 lJuiceSSH/ConnectBot 之类的 SSH 工具来登录系统(这里以 JuiceSSH 为例)。
成功启动系统后我们打开 JuiceSSH,依次点击 连接 – 右下角 + 按钮 进入新建连接界面:
昵称: 可随意填写,我们以 Localhost – Android 为例 类型:SSH 地址:127.0.0.1
认证: 选择 新建 跳转到 新建认证 界面: 昵称: 同样可以随意填写,我们同样以 Localhost – Android 为例 用户名: 填写 配置文件设置 界面的 用户名,默认为 android 密码: 填写 配置文件设置 界面的设置的 用户密码
点击右上角的 √ 图标保存并返回到 新建连接 界面,再次点击 √ 图标保存,在 连接列表 中点击刚刚新建的这个项目连接到我们刚刚部署好的系统,连接成功后界面如下:
因为我们是通过普通用户 android 登陆系统的,接下来我们需要设置超级用户 (root) 的密码并且以超级用户的身份登陆系统:
在终端中键入:
sudo passwd root
终端将会提示用户输入 root 用户的密码并且再次输入一次以确认(输入密码时密码将不可见,连 * 都不会显示),设置完毕后,在终端键入命令 su 并输入刚刚设置好的 root 用户密码即可切换到 root 用户。
文件的管理: 如果你是通过 目录 方式部署的 Linux 系统,那么你可以直接使用 R.E. 管理器访问 /data/user/0/ru.meefik.linuxdeploy/env/rootfs/linux 即可管理新系统中的文件,如果你是通过 文件 方式部署的 Linux 系统,管理文件等操作就得依靠 SFTP 了(当然使用 SSH 方式也没问题,但是还是觉得 SFTP 更方便些)。当我们使用普通用户身份登录 SFTP 时,由于权限原因,我们无权操作大多数文件。所以我们需要以超级用户身份登录 SFTP。但默认配置是不允许 root 用户登录 SSH 和 SFTP 的,所以我们需要进行如下设置:
在 Linux Deploy 中启动部署好的系统,以 android 用户登录到 SSH,在终端中执行:
sudo apt-get install -y vim # 安装 vim 编辑器
当然啦,使用系统自带的 vi 编辑器也是可以的,如果你对 vi 编辑器比较熟悉也可以使用 vi 编辑器编辑文件。vim 编辑器安装完成后我们继续在终端执行:
vim /etc/ssh/sshd_config # 使用 vim 编辑器打开 /etc/ssh/sshd_config 这个文件
打开文件后,键入 i 进入编辑模式,点击终端任意空白位置可以弹出特殊键键盘,使用上下光标滚动浏览文件,在文件的 #Authentication 部分找到 PermitRootLogin 这一项,将其改为 yes,改动完成后点击特殊键键盘中的 ESC 键退出编辑模式,键盘键入:wq! 保存并强制退出文件完成对文件的编辑操作。
打开 Linux Deploy,停止后再启动 Linux 系统。打开 Turbo 客户端 – 侧边栏 – 创建一个新账户 – SFTP 来新建一个 SFTP 连接 (部分文件管理器,比如 ES 文件浏览器(ESFileExplorer),SE 文件管理器(SolidExplorer) 也带有 SFTP 功能,如果不想安装 TurboFTP 的话,可以用它们来代替):
其中:
用户名为:root 密码为刚刚设置好的 root 用户的密码 主机名为:127.0.0.1
其他项保持默认,点击右上角的 保存 图标保存配置,在侧边栏的连接列表中我们将以 root 用户连接到 SFTP 并管理文件:
当然,修改完 sshd_config 文件,停止并启动 Linux 系统后,你也可以直接以 root 用户连接到 SSH 了。 介绍完安装,介绍一下卸载吧~ 你可以通过以下方法完全卸载 Linux Deploy:
1. 如果你使用 目录 的方式部署的 Linux 系统,那么在 Linux Deploy 内 停止 Linux 系统,接着直接卸载 Linux Deploy 并重启手机即可完全卸载; 2. 如果你使用 文件(镜像) 方式部署的 Linux 系统,你需要先 停止 Linux 系统,然后删除放置在内置存储下的镜像文件,镜像文件路径就是上文在部署 Linux 系统之前提到的 安装路径 这一项,如果此项未经修改,则镜像路径为外置存储 /linux.img,接着卸载 Linux Deploy 并重启手机即可完全卸载。
安装图形环境
修改以下配置项:
INIT: 打勾: 启用自定义脚本执行 (INIT 的其他配置保持不变)
图形界面:
打勾: 允许图形界面启动
图形子系统:VNC
图形化界面设定: 保持默认配置
桌面环境: 按需选择,这里选择的是 LXDE
配置完毕后,回到主界面,按下 菜单键,选择 配置 让我们刚才的的设置生效:
配置完毕后,点击底部的 停止 按钮停止 Linux 系统,再点击 启动 按钮启动 Linux 系统,接着我们登入 SSH,在终端中执行:
sudo apt-get install ttf-wqy-zenhei # 安装中文字库
中文字库安装完毕后,执行以下命令启动 VNC:
vncserver
终端会返回以下结果:
New X desktop is localhost:1 Starting applications specified in /home/android/.vnc/xstartup Log file is /home/android/.vnc/localhost:1.log
复制
证明 vncserver 已启动成功。
(注意,在某些时候,第一次执行 vncserver 命令时系统将要求你设定一个小于 8 位数的 VNC 密码,你需要输入两次密码之后提交,VNC 密码设定完成之后还会有一个提示,不用理会,键入 n 提交即可)
进入图形界面:
接着我们使用 VncViewer 来连接到我们刚刚部署好的的图形界面:
打开 VncViewer,点击右下角的 + 按钮添加 VNC 会话:
Address: 127.0.0.1:5901 Name: Localhost – Ubuntu@Xfce
其中,Address 项为 VNC 服务器所在的地址。由于我们需要连接本机的 VNC 服务器,所以填写 127.0.0.1 即可,此外我们还需要在地址后指定 VNC 端口,因为刚刚终端返回的信息:New X desktop is localhost:1 指定了此次桌面会话号为 1,所以端口就为 5900+1=5901。如果我们开启了多个虚拟桌面,它们的会话号为 2,3,4…,那么各自的端口即为 5902,5903,5904… 依次类推。并且,服务器地址与端口之间需要用英文冒号隔开。Name 项为用户为此 VNC 会话指定的地址,我们为了区别其他会话,填写的是 Localhost – Ubuntu@Xfce,实际上随便填写什么都可以。
这些信息填写完毕后,点击 CREATE 按钮提交:
确认信息无误后,点击下面绿色的 CONNECT 按钮开始连接 VNC 会话(如果你之前没有设定过 VNC 密码,但在连接 VNC 连接过程中仍然需要你输入密码时,那么你可以输入 android 用户的密码试试):
好了 … 图形界面的部署过程到此为止,剩下的你们自己折腾吧(/doge 脸)~
可能遇到的问题:
1. 当你开启了一个 VNC 会话,停止 Linux 系统再启动 Linux 系统后,再次执行 vncserver 命令,系统可能会报出以下错误:
这时候,你可以执行以下两条命令:
rm -rf /tmp/.X[1-9]-lock
rm -rf /tmp/.X11-unix/X[1-9]
执行完毕后,再执行 vncserver,会话号就会被重置为 1 了。为了防止每次停止再启动 Linux 系统后带来的这个问题,我们可以编辑 /etc/rc.local 文件,在此文件的 exit 0 之前插入这两条命令:
sudo vim /etc/rc.local # 编辑 /etc/rc.local
编辑完成后,保存即可,进行这步操作后,在启动 Linux 系统后和停止 Linux 系统之前,Linux Deploy 都会替我们执行这两条命令,这样一来之后就不会再报错了~
2. vncserver 默认的分辨率是 1024×768,但市面上的大部分手机屏幕的分辨率都是 720P(1280×720),1080P(1920×1080),甚至 2K(2560×1440),vncserver 默认的 1024×768 分辨率可能会造成 VNC 画面不能填充满屏幕的情况,这时候,我们有必要修改 VNC 分辨率以适应屏幕,经过测试,拿 1080P 屏幕来说,将分辨率设为为 720P 可使 VNC 图像充满屏幕且不影响显示效果。调节方法就是在每次执行 vncserver 命令时在后面加上 -geometry 参数,例如我需要把 VNC 分辨率调为 720P(1280×720),那么在启动 vncserver 时,执行:
vncserver -geometry 1280×720
即可将新开启的 VNC 虚拟会话屏幕分辨率设为 1280×720。值得注意的是,命令中的 1280×720 里的 x 是小写字母 x,而不是数学中的乘号×。
下面是 1280×720 分辨率和 1024×768 分辨率的对比(将 VNC Viewer 画面缩小到最小):
很明显,1080P 屏幕上,将 VNC 分辨率设为 1280×720 可使图像填充满屏幕且视觉效果更佳。
如果你觉得每次启动 vncserver 时输这么一长串命令有点儿麻烦,那么可以编辑~/.bashrc 文件,在下图所示的位置增加一行 alias 定义:
vim ~/.bashrc # 编辑~/.bashrc
alias vncserver= vncserver -geometry 1280×720
复制
之后,每次执行 vncserver 命令后,新开启的 VNC 会话的分辨率都会被设为 1280×720。
升级 ubuntu
会发现 ubuntu 只能安装到 18.04
升级的方法就是安裝 Ubuntu 后再直接升级。
用 VNC 登入桌面後,用終端機安裝更新器
sudo apt install update-manager-core
更新全部套件至最新版
sudo apt update sudo apt upgrade
sudo do-release-upgrade
如果出現 authenticate focal.tar.gz against focal.tar.gz.gpg Authentication failed 錯誤,先安裝 gnupg 並執行以下指令:
sudo apt install gnupg gnupg1 gnupg2
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 871920D1991BC93C
再次执行 sudo do-release-upgrade,输入 y 開始更新系统,按照终端的指示更新。
如果提示 Please Install All Available Updates Before Upgrading
apt clean
apt autoclean
sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade
再次执行 sudo do-release-upgrade,输入 y 開始更新系统,按照终端的指示更新。
不出意外的话,系统正常升级完了。
升级完之后还需要回到 linux deploy 的配置项中把用户名改成 root,密码可以保持不变,原因是升级后,原来的 android 这个用户名就没有 root 权限了
修改用户名之后一定要点 linux deploy 的配置选项重新配置
# 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
读到这里,这篇“linux deploy 的作用是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注丸趣 TV 行业资讯频道。