在Android中安装完整linux环境

Posted by ZX on 29 March 2022

配置 Termux

Termux 是 Android 上的一款带有软件包的终端模拟器,支持Android 7.0+。可在其上运行为 linux-android 平台编译的软件。带有 apt 包管理器,可以安装 clang, openjdk, go, rust, python, npm 等常用开发工具。但由于这不是完整的 linux 环境,而是 android 修改的 linux,所以后续还会配置完整的 linux 环境。

下载安装 Termux

Termux | F-Droid - Free and Open Source Android App Repository

安装后打开如下:

设置访问手机存储权限

$ termux-setup-storage

更换软件源

$ termux-change-repo

弹出如下界面:

使用 ↑ ↓ 切换选项,用空格选中,回车确认即可。其中最后四个为位于中国大陆的软件源,速度较快。

更新系统

$ apt update && apt upgrade

安装 ssh(可选)

$ apt install openssh

此后每次进入 termux 需要手动启动 sshd

$ sshd

使用ifconfig命令可以查看手机的IP地址

使用whoami命令查看用户名(使用 root 登录也可以)

使用passwd命令可以设置密码

默认端口号为 8022

到了这一步,已经配置好了一个基本可用的类 Linux 环境,若想要完成的 Linux 功能或者使用 VSCode 连接手机进行远程开发和调试,需要继续配置。

配置完整 Linux 环境

安装 proot-distro

$ apt install proot-distro

使用 poot-distro list 命令可以查看所有可选的 linux 发行版,这里以 Archlinux 为例。

安装 Arch Linux

$ proot-distro install archlinux

如果下载缓慢或无法下载,可以尝试如下操作使用 github 镜像,再尝试下载

$ cp /data/data/com.termux/files/usr/etc/proot-distro/archlinux.sh /data/data/com.termux/files/usr/etc/proot-distro/archlinux.sh.backup

$ sed -i 's?github.com?github.do/https://github.com?g' /data/data/com.termux/files/usr/etc/proot-distro/archlinux.sh

建议在下载完成后恢复原配置

$ cp /data/data/com.termux/files/usr/etc/proot-distro/archlinux.sh.backup /data/data/com.termux/files/usr/etc/proot-distro/archlinux.sh

进入 Archlinux

$ proot-distro login archlinux 

更换软件源

这里以清华源为例,其他源类似

编辑 /etc/pacman.d/mirrorlist

$ nano /etc/pacman.d/mirrorlist

在文件的最顶端添加:

Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxarm/$arch/$repo

修改后点击CTRL,输入x,再输入y确认保存

更新软件包缓存并更新系统

$ pacman -Syyu

另外这里介绍一下 Archlinux 包管理器 Pacman 的基本用法:

# 搜索包xxx
pacman -Ss xxx 
# 安装包xxx
pacman -S xxx
# 卸载包xxx及其依赖
pacman -Rs xxx
# 系统全面更新
pacman -Syyu

安装 ssh

在这个环境中我还没有找到能使openssh正常工作的方法,故这里使用 dropbear 提供 ssh 服务,安装的时候系统会提示与 openssh 冲突,根据提示按y卸载openssh即可

$ pacman -S dropbear dropbear-scp

然后需要生成一个 key 文件

$ dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key

最后,使用passwd 命令设置密码

启动 ssh

为了不与 termux 宿主冲突,这里使用8222端口

$ dropbear -E -p 8222

每次启动系统都需要手动开启

到这里,就可以使用 VSCode 进行远程开发和调试了。