体验了目前已知的三种在Android上安装linux的方法:Linux Deploy、Termux、Aidlux。
- Linux Deploy需要root使用具有一定门槛,系统安装方便,功能扩展性更强,可以使用低位端口号、管理手机硬件等。
- Termux无需root、使用方便、即开即用、默认没有图形界面、具有较强扩展性。Termux安装的gcc其实clang,不过似乎也可以通过一些方法安装gcc。
- Aidlux无需root、使用简单、默认具有图像界面,但是安装体积较大,且对系统版本和设备的性能有一定要求。
Linux Deploy
Linux Deploy需要使用ROOT权限,使用Magisk可以获取并管理ROOT权限。使用方法可以参考下面其中一篇内容:
Linux Deploy的使用也比较简单,打开软件后主界面写着简单的使用引导。首先点击右下角配置安装选项(下图左侧),如发行版、安装类型、用户名、密码、是否启用ssh等,具体各项说明可参考Linux Deploy 指南。注意配置安装选项时一定要启用ssh,否则可能在安装好后无法连接系统。配置完成后点击右上角菜单中的安装,待安装完成后再点击下方的启动按钮即可通过ssh连接已安装的系统。
自动启动服务
右下角打开设置,勾选初始化启用,SSH连接到linux,新建/etc/rc.local目录,在其中添加启动脚本,启动脚本需要至少包含以下内容
case "$1" in
start)
# 系统启动过程中执行的命令
;;
stop)
# 系统关闭过程中执行的命令
;;
esac
#! /bin/bash
### BEGIN INIT INFO
# Description: Run Foo service
### END INIT INFO
USER=android
BASE_DIR=/home/android/program/alist
echo $0
start_with_nohup(){
echo "Start Alist Server..."
cd $BASE_DIR
su ${USER} -c 'nohup ./alist server > /dev/null 2>&1 &'
echo "Start Alist Server ok"
}
start_with_screen(){
echo "Start Alist Server..."
#sudo -u ${USER} /bin/bash -c 'cd $HOME/program/alist && screen -dmS alist ./alist server'
cd $BASE_DIR
# sudo -u ${USER} /bin/bash -c 'screen -dmS alist ./alist server'
sudo -u ${USER} screen -dmS alist ./alist server
echo "Start Alist Server ok"
}
case "$1" in
start)
start_with_nohup
#start_with_screen
;;
stop)
echo "Stopping Alist Server..."
#sudo -u ${USER} bash -c 'pkill -ef "dmS alist ./alist server"'
sudo -u ${USER} pkill -ef "alist server"
sleep 2
;;
*)
echo "Usage: /etc/init.d/foo {start|stop}"
exit 1
;;
esac
exit 0
断网
使用linux deploy的chroot方案安装了debian之后出现这个问题的原因主要是安卓的doze mode,在termux下键入su 进入类似adb shell的模式,然后使用dumpsys deviceidle disable禁用这个锁屏之后的睡眠模式。
解决安卓linux dploy下非root用户的进程在锁屏几分钟之后断网的问题–禁用doze mode。 开机自动挂载Linux Deploy中的Linux容器并开启adbd网络调试 | Torrk’s Blog
Termux
Termux是一个Android终端模拟器和Linux环境APP,其不需要root即可实现在Android上使用Linux环境。Termux自身具有最新化的Linux基础系统环境,而且可以使用包管理器(pkg/apt)来安装其他软件,如openssh实现通过ssh方法Termux。
通过ssh连接Termux
在Termux按以下安装、启动ssh服务,即可在另一台设备上通过ssh登陆Termux,Termux中ssh server默认使用的端口是8022.
# 安装OpenSSH
pkg install openssh
# 启动SSH Server
sshd
# 获取用户名
whoami
# 获取IP
ifconfig
#设置密码
passwd
连接ssh
ssh user@ip -p 8022
通过PRoot可以实现在Termux内安装其他各种发行版本的Linux系统,同时Termux提供proot-distro工具可以方便快捷的安装Arch、Debian、Alpine等多种Linux系统。
在Terminal内安装ArchLinx
- 使用pkg安装proot-distro
pkg install proot-distro
-
查看proot-distro支持的Linux系统列表
-
安装archlinux
-
进入archlinux
在使用proot-distro install
安装系统时如遇到CANNOT LINK EXECUTABLE "curl": library "libssl.so.1.1" not found
,可尝试使用pkg update更新程序。
Aidlux
Aidlux是阿里开发的智能物联网开发平台,通过它可以在Android手机上使用Linux,该软件不需要Root,在各家应用商店均可直接下载安装。当前1.2.1内置的是一个完整的Debian 10,可以开箱即用,同时还自带图形界面,界面应该是以web方式实现的,其中文件管理器的后台是filebrowser,一个web文件管理器。
在aidlux中点击Cloud_ip会启动web远程桌面,通过其中提供的地址可以在浏览器中使用aidlux。
- Termux和Linux Deploy的性能测试 - 知乎
- android - What are the differences between Termux, PRoot, Userland, Linux Deploy, AnLinux and Alpine? - Super User
- GitHub - meefik/linuxdeploy: Install and run GNU/Linux on Android
- 极致安卓之—Termux安装完整版Linux - 知乎
- 小米10 MIUI 12 Magisk root教程(无需刷REC) - 知乎
- PRoot - Termux Wiki
- Linux Deploy 指南