网络知识 娱乐 在安卓手机上运行Linux系统——linuxdeploy的安装和使用

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

文章目录

  • 1. linuxdeploy介绍
  • 2. linuxdeploy的安装
  • 3. linux系统的连接
    • 3.1 使用ssh连接linux系统
    • 3.2 使用终端模拟器连接linux系统
  • 4. Linux系统访问手机储存的方法
  • 5. 备份和恢复
    • 5.1备份
    • 5.2 恢复
  • 6. 镜像文件扩容的方法
  • 7. 相关问题
    • 7.1 是否需要安装busybox
    • 7.2 安装过程中出现failed getting release file http://
    • 7.3 安装过程中出现Couldn't download dists/xenial/main/binary-armhf/Packages
    • 7.4 安装过程中出现W:Failture trying to run:dpkg --force-depends -install /var/cache/apt/archives/xxx
    • 7.5 导入备份文件时出现importing rootfs from tar.gz archive fail
    • 7.6 启动时出现Starting extra/ssh failed
    • 7.7 恢复备份的rootfs文件,用户名和登录密码是什么
  • 参考
  • 源地址列表
  • 相关下载

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

1. linuxdeploy介绍

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

  • 引导程序:Alpine、Arch、CentOS、Debian、Fedora、Kali、Slackware、Ubuntu、Docker或rootfs.tar
  • 安装类型:映像文件、目录、磁盘分区、RAM
  • 支持的文件系统:ext2、ext3、ext4
  • 支持的架构:arm、arm64、x86、x86_64、仿真模式(arm~x86)
  • 控制接口:CLI、SSH、VNC、X11、帧缓冲
  • 桌面环境:XTerm、LXDE、Xfce、MATE、其他(手动配置)
  • 支持的语言:多语言界面

linux系统在chroot环境下与安卓系统一起运行。
有了linuxdeploy,你可以将安卓的手机利用起来,组建一个小型的linux服务器,linux主机。

2. linuxdeploy的安装

下载安装linuxdeploy:地址
我下载的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:地址
打开connectbot,点击右下角加号建立新的连接
在这里插入图片描述
如果是本机连接只需要填写android@127.0.0.1,如果是远程连接,填写android@192.168.1.101,android和192.168.1.101分别是linux系统的用户名和手机的ip地址(显示在linuxdeploy主界面上方的地址),点击右上角加号保存
在这里插入图片描述

点击刚刚建立的连接
在这里插入图片描述
点击确认
在这里插入图片描述

输入linux系统用户的密码
在这里插入图片描述

成功连接到linux系统,可以用命令行进行操作了
在这里插入图片描述

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

此方法适用于linux没有安装ssh服务的情况
下载安卓终端模拟器:地址
打开终端模拟器,输入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

安装完成后的/data/user/0/ru.meefik.linuxdeploy/bin/busybox目录下已经集成了busybox,在linuxdeploy的调试信息中PATH=/system/xbin:/data/user/0/ru.meefik.linuxdeploy/bin:/data/user/0/ru.meefik.linuxdeploy/bin:/sbin:/system/sbin:/system/bin:/system/xbin:/vendor/bin:/vendor/xbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin chroot /data/local/mnt /debootstrap/debootstrap
包含了/data/user/0/ru.meefik.linuxdeploy/bin/busybox目录,因此不额外安装busybox,linuxdeploy也可以使用busybox命令。我使用的小米miui6系统中没有安装busybox也能够成功安装并运行linux系统。而安装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 导入备份文件时出现importing rootfs from tar.gz archive fail

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

7.6 启动时出现Starting extra/ssh failed

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

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

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

参考

meefik/linuxdeploy
关于linuxdeploy的高级应用,如何实现开机自启以及手机的自动充电控制功能
请参考我的另一篇文章:linuxdeploy自动化配置

源地址列表

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

支持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

相关下载

linuxdeploy-2.1.0-237.apk
busybox-1.29.2-38.apk
ConnectBot-git-v1.9.0.apk
jackpal.androidterm_70.apk