在安卓手机上运行Linux系统——linuxdeploy的安装和使用

⌚Time: 2021-09-20 22:49:03

👨‍💻Author: Jack Ge

注意:手机需要具有root权限

1. linuxdeploy介绍

linuxdeploy是一个开源软件,可以被快速简单的在你的安卓设备上安装操作系统(OS)GNU/Linux。

Features:

linux系统在chroot环境下与安卓系统一起运行。

有了linuxdeploy,你可以将废旧安卓的手机利用起来,组建一个小型的linux主机。

2. linuxdeploy的安装

下载安装linuxdeploy:https://github.com/meefik/linuxdeploy/tags

我下载的linuxdeploy版本是2.1.0,安装完成后打开,点击右下角设置图标进行配置

发行版选择debian

架构选择armhf

版本选择stretch(Debian 9)

官方源地址在中国国内下载速度慢,改为国内源:http://mirrors.ustc.edu.cn/debian

安装类型选择镜像文件

安装路径可以自己设置,也就是镜像文件的路径

用户名密码可以自己设置

因为之后用ssh连接linux,所以要勾选启用ssh,在安装时会自动安装ssh服务,否则安装完成后就会无法用ssh连接

配置完成返回主界面。点击右上角三个点,点击安装

授权root

开始安装linux系统 >>>deploy

出现<<<deploy说明安装完成

点击停止,再点击启动,运行linux

3. linux系统的连接

连接linux系统有两种方式一种是通过ssh方式连接,另一种是在手机终端中连接

3.1 使用ssh连接linux系统

手机下载安装connectbot:https://github.com/connectbot/connectbot/releases

打开connectbot,点击右下角加号建立新的连接

如果是本机连接只需要填写android@127.0.0.1,如果是远程连接,填写android@192.168.1.101,android和192.168.1.101分别是linux系统的用户名和手机的ip地址(显示在linuxdeploy主界面上方的地址),点击右上角加号保存

点击刚刚建立的连接

点击确认

输入linux系统用户的密码

成功连接到linux系统,可以用命令行进行操作了

3.2 使用终端模拟器连接linux系统

下载安卓终端模拟器:https://f-droid.org/zh_Hans/packages/jackpal.androidterm/

打开终端模拟器,输入su获取权限,授权root

输入以下命令连接linux系统


/data/data/ru.meefik.linuxdeploy/bin/linuxdeploy shell -u android

-u linux系统的用户名

通过终端连接到linux系统

输入exit退出系统

4. Linux系统访问手机储存的方法

linux系统中访问手机内存,需要设置挂载路径

在linux配置界面找到挂载,勾选启用,点击挂载点列表

点击加号新增挂载点,编辑挂载格式为手机储存路径:linux系统路径

编辑好挂载点后,将linux系统重启生效

访问linux挂载点


ls /mnt/sdcard

成功的访问到手机目录

5. 备份和恢复

5.1备份

在linuxdeploy的主界面点击停止,右上角点击三个点,点击导出

选择导出路径

点击ok进行导出

5.2 恢复

linuxdeploy主界面右下角点击设置

发行版选择RootFS

源地址直接选择备份文件的路径

安装类型选择目录

安装路径为默认

用户名和密码可以自行设置

返回主界面,点击右上角三个点,点击安装

恢复完成

6. 镜像文件扩容的方法

随着对linux系统的使用,磁盘空间的占用会越来越大,一开始分配的空间是固定的,所以就会面临磁盘空间不足的问题,这个时候就需要对镜像文件扩容。

安装时镜像文件的大小为2Gb

在linuxdeploy主界面停止运行linux

打开安卓终端模拟器

输入以下命令对镜像文件进行扩容


dd if=/dev/zero bs=1048576 count=1024 >> /sdcard/linux.img

e2fsck -f /sdcard/linux.img

resize2fs /sdcard/linux.img

count=1024 扩容1024Mb

/sdcard/linux.img 镜像文件的路径

重新启动linux,可以看到磁盘空间被扩容到了3Gb

7. 相关问题

7.1 是否需要安装busybox

安装busybox后是否运行的系统可以使用busybox命令?

安装busybox并且在设置中配置好环境变量后,进入linux系统运行busybox的命令wget,得到的结果是没有此命令,也就是说在linux系统中并不能使用busybox安装到安卓系统里的命令工具。

但是从linuxdeploy官方的readme.md文档看当遇到以下问题需要安装busybox解决

因此最好安装busybox,同作者开发的busybox:地址

bosybox的安装方法:

linuxdeploy环境变量配置:点击左上角菜单,点击设置

找到PATH环境变量,设置为/system/xbin,即busybox的安装目录

7.2 安装过程中出现failed getting release file http://

源地址填写错误,检查并且填写正确的源地址

7.3 安装过程中出现Couldn't download dists/xenial/main/binary-armhf/Packages

源地址不支持armhf版本的linux系统,改成支持armhf的源,或者设置linux系统为其他版本如armel

7.4 安装过程中出现W:Failture trying to run:dpkg --force-depends -install /var/cache/apt/archives/xxx

这个问题困扰我很久,我尝试换过源,架构,和linux发行版。更换lindeploy版本,更换busybox版本,但是都不行。最后我怀疑是dpkg无法读取软件包目录导致,于是更改安装类型为镜像文件,得到了解决。之前是用目录:${ENV_DIR}/rootfs/linux的方式安装才会出现此问题。因此解决方法是安装方式改为镜像文件。

7.5 安装过程中 makeing file system ext4 fail

重启手机

7.6 导入备份文件时出现importing rootfs from tar.gz archive fail

备份的roofs文件损坏,换一个rootf文件。使用新版本的lindeploy进行备份和恢复

7.7 启动时出现Starting extra/ssh failed

安装时没有安装ssh服务,参考3.2使用终端模拟器进入linux系统,并且手动安装ssh

7.8 恢复备份的rootfs文件,用户名和登录密码是什么

当从rootfs安装系统时,用户名和密码从系统配置界面中进行设置,使用配置界面新的用户名和密码,而不是系统备份时的用户名和密码

源地址列表

我收集了以下可用的源地址

支持ubuntu armhf版本的源:

http://mirrors.ustc.edu.cn/ubuntu-old-releases/ubuntu(ubuntu的旧版本源)

http://mirrors.ustc.edu.cn/ubuntu-ports

http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports

http://ports.ubuntu.com

支持debian armhf版本的源:

http://mirrors.ustc.edu.cn/debian

https://mirrors.tuna.tsinghua.edu.cn/debian

http://mirrors.aliyun.com/debian

http://ftp.debian.org/debian

http://ftp.cn.debian.org/debian

http://archive.debian.org/debian