在Android上部署可用的Phira Linux Build
架构不一致警告!
由于绝大部分 Android/嵌入式设备采用 ARM64(AArch64) 架构,而部分桌面 Linux 环境则使用 x86_64(AMD64) 架构,因此在 Android 设备上构建得到的程序、依赖库以及工具链不一定能够直接用于目标设备。如果你的目标平台与当前构建环境架构不同,请特别注意交叉编译问题。
容器环境!
由于本教程面向无需 Root 权限的 Android 设备,因此 UserLAnd 中运行的 Linux 并不是传统意义上的完整虚拟机,而是通过 PRoot 等机制提供的用户态 Linux 环境。因此,系统初始化通常不是由
systemd完成的,systemctl等依赖真正系统初始化系统的命令通常无法正常工作。不要按照普通 Debian 实体机的方式配置 systemd 服务。
仍有其他方法!
除了 UserLAnd 之外,也可以使用 Termux 搭建构建环境。Termux 本身提供了 Android 上的类 Unix 用户空间,并且可以通过proot-distro等工具运行 Debian、Ubuntu、Arch Linux 等发行版。对于熟悉命令行环境的用户而言,Termux 通常更加灵活;而 UserLAnd 则更适合希望直接使用完整 Linux 发行版环境的用户。
本章节讲述如何使用 UserLAnd 在 Android 设备上建立一个轻量级 Debian GNU/Linux 环境,并使用该环境进行便携式构建。
考虑到部分开发者可能没有可用于构建项目的计算机,或者现有计算机性能不足以运行较新的开发环境,因此特写本章。
# 下载 & 安装
UserLAnd 是一个可以在 Android 设备上运行 Linux 发行版的应用。
目前可以通过以下渠道获取:
- Google Play
- F-Droid
- UserLAnd 官方 GitHub 仓库
安装完成后直接启动应用即可。
注意:
UserLAnd 的发行版文件通常需要从网络下载。如果下载速度较慢,请耐心等待。
# 初始化配置
首次启动 UserLAnd 时,应用可能需要从网络获取 Linux 发行版列表以及相关文件。
打开应用后,进入 “文件系统” 页面,点击右上角的 “+” 创建新的文件系统。
选择:
1
发行版:Debian
文件系统名称可以自由填写,例如:
1
phira-debian
用户名可以自行设置,例如:
1
starmoe
用户名通常只能使用英文字符,并建议使用小写字母。
密码可以自行设置。
如果后续需要使用 VNC,还需要设置 VNC 密码。根据 UserLAnd 的要求设置为符合其长度限制的密码即可。
完成后点击右上角的保存按钮。
# 建立会话
UserLAnd 通常可以通过不同的方式提供 Linux 会话,例如:
- SSH
- VNC
- XSDL
本教程只需要命令行环境,因此使用 SSH 即可。
操作步骤:
- 转到 “会话” 页面。
- 点击右上角的 “+”。
- 创建新的会话。
- 会话名称可以随意填写。
- 文件系统选择刚刚创建的 Debian。
- 服务类型选择:
1
SSH
- 点击右上角的保存按钮。
- 点击刚刚创建的会话。
第一次启动时,UserLAnd 会下载并初始化 Debian 所需的文件。
由于相关文件可能需要从 GitHub 等网络服务下载,因此第一次启动可能需要较长时间。
请耐心等待。
# 配置软件源
注意:Debian 软件源格式已经发生变化
较新的 Debian 版本逐渐采用 DEB822 格式的软件源配置文件,例如:
1 /etc/apt/sources.list.d/debian.sources因此,不建议继续依赖旧教程中直接覆盖
/etc/apt/sources.list的方法。如果你的 Debian 版本仍然使用传统
sources.list,则旧方法仍然可以工作。
进入 Debian 后,首先更新软件包索引:
1
sudo apt update
随后建议进行一次基础升级:
1
sudo apt upgrade
如果希望一次完成:
1
sudo apt update && sudo apt upgrade
# 使用 USTC 软件源
如果位于中国大陆,可以考虑使用中国科学技术大学镜像。
对于仍然使用传统 sources.list 的 Debian,可以执行:
1
2sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo apt update
也可以手动编辑软件源。
安装编辑器:
1
sudo apt install nano -y
然后:
1
sudo nano /etc/apt/sources.list
根据当前 Debian 版本填写对应的软件源。
例如:
1
2deb https://mirrors.ustc.edu.cn/debian stable main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free non-free-firmware
如果需要安全更新,还应配置对应的 Debian Security 仓库。
重要:
不建议盲目复制网上的旧
sources.list。Debian 的发行版代号和软件源结构会随着版本变化。对于新版本 Debian,建议优先检查:
1 cat /etc/os-release以及:
1 ls /etc/apt/sources.list.d/再根据当前 Debian 版本配置软件源。
# 配置系统语言
安装 locales:
1
sudo apt install locales
然后运行:
1
sudo dpkg-reconfigure locales
此时会出现类似以下界面:
1
2
3
4(Enter the items or ranges you want to select,
separated by spaces.)
请选择需要生成的区域设置(locale)。
根据自己的需求选择需要生成的 Locale。
例如,如果希望使用简体中文 UTF-8,可以选择:
1
zh_CN.UTF-8
如果还需要英文环境,可以同时生成:
1
en_US.UTF-8
完成后选择默认 Locale。
也可以通过命令确认当前 Locale:
1
locale
如果希望将系统默认语言设置为中文,例如:
1
sudo update-locale LANG=zh_CN.UTF-8
重新进入会话后,可以通过:
1
locale
确认配置是否生效。
# 完成
至此,你已经拥有了一个可以在 Android 设备上运行的轻量级 Debian GNU/Linux 用户空间。
可以检查系统:
1
cat /etc/os-release
检查 CPU 架构:
1
uname -m
例如:
1
aarch64
则表示当前环境运行在 ARM64/AArch64 架构上。
随后即可继续安装 Phira 构建所需要的编译器、Rust、Git 以及其他依赖,并进行项目构建。
特别提醒:
UserLAnd 中的 Debian 并不是虚拟机。
1
2
3
4
5 Android
└── Linux Kernel
└── PRoot
└── Debian 用户空间
└── Phira 构建环境因此它与直接在 x86_64 PC 上安装 Debian 所得到的环境并不完全相同。
如果构建过程中遇到权限、挂载、
systemd、网络或架构相关问题,应首先考虑 PRoot/Android 环境带来的限制。