Podroid 简单体验 - Android 上无需 root 运行 Alpine Linux 虚拟机容器环境

✨ 文章分享了使用 Podroid 在 Android 上免 Root 运行 Alpine Linux 的体验:优点是部署门槛极低且功能完整,但缺乏 pKVM 硬件加速的旧设备在纯软件模拟下性能损耗较明显。

Podroid 是一款在 Android 上运行真正的 Linux 系统的应用,包含 Podman、Docker、LXC 和 Linux 桌面环境,无需 root 权限,也无需自定义 Recovery。
它在应用内通过 KVM 启动了一个 Alpine Linux 虚拟机,并搭载了定制的 Linux 7.1.5 内核。
https://github.com/ExTV/Podroidhttps://extv.github.io/Podroid/guide/

之前也曾分享过:

https://tg.okhk.net/posts/9276

刚好手头上有台旧手机,刚好安装体验下。下载 Release 中的 apk 安装运行,根据安装引导,完成配置启动。点击打开终端后在右上角启用服务器模式,可以让手机黑屏从而节省电量消耗。

此时得到 SSH 连接信息如下,默认的密码是 podroid。

  Host podroid
  HostName 192.168.31.9
  Port 9922
  User root

在其他设备上 SSH 连上 Alpine 虚拟机:

替换镜像源

sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

配置时区

apk add tzdata
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" > /etc/timezone
创建具有等效 sudo 权限的普通用户(感觉没啥必要,反正是玩具环境):
adduser -G wheel app

Alpine 虚拟机使用 OpenRC 作为其初始化系统(PID 1 为 BusyBox init;OpenRC 用于管理服务树):

# 列出所有服务及其运行状态
rc-status

# 启动、停止、重启或检查某个服务的状态
rc-service dropbear start
rc-service docker stop
rc-service podroid-x11 restart
rc-service podroid-x11 status

# 将已安装的服务设置为开机自启(添加至 'default' 运行级别)
rc-update add crond default

# 取消服务的开机自启(例如禁用 Docker 以节省内存)
rc-update del docker default
# 新增端口转发(Android 设备 - Alpine 虚拟机)
podroid-forward add 8888 80 tcp
# 临时端口转发
podroid-forward 8888 80
# 查看端口转发
podroid-forward list
# 移动端口转发
podroid-forward remove 8888 tcp
# 清空端口转发
podroid-forward clean

简单跑了几个容器体验了下,镜像解压都很慢,QEMU/KVM 模拟性能损失不小(也可能手机太老了),毕竟软件 CPU 模拟的 KVM,不是 Pixel 及其他搭载 pKVM 的设备。

https://extv.github.io/Podroid/guide/backends.html

也就能挂个 Clash Traffic Monitor ,看下🪜 (启动了 94 秒,感人