>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Kotlin

通过 Droidspaces 在智能手机上运行完整的 Linux systemd

旧款 Android 智能手机通常被改造成家庭服务器、Telegram 机器人或本地测试环境。通常使用 Termux 和 PRoot 或 chroot 来实现。但这些方法存在严重缺陷。PRoot 通过 ptrace 拦截每个系统调用,会拖慢性能。常规 chroot 仅隔离文件系统,进程树和网络仍与主机共享。最重要的是,由于 cgroups、SELinux 和 Android 的 LMK 内存杀手,在 Android 上获得完整的 systemd 作为 PID 1 一直是项艰巨任务。

开发者 ravindu644 的 Droidspaces 项目提供了另一种解决方案。这是一个约 400 KB 的二进制文件,使用 musl libc 构建。它利用标准 Linux 内核命名空间,创建具有真正初始化、图形加速和网络的隔离容器。

Droidspaces 与同类方案的区别

与在 Termux 上运行的重量级 LXC 或 Docker 堆栈不同,Droidspaces 直接与内核交互。它没有外部依赖。如果系统内核支持命名空间,该工具甚至可以在 Android 恢复环境中运行(Recovery 或 Ramdisk)。

让我们将 Droidspaces 与熟悉的工具进行比较:

  • PRoot 中每个系统调用都有延迟。这里容器原生运行。
  • 常规 chroot 在简单的进程查看命令上就会出问题。Droidspaces 提供真正的 PID、MNT、UTS、IPC 和 Cgroup 隔离。
  • Android 的后台进程杀手经常关闭 Termux 及其所有服务。Droidspaces 通过 setsid 从应用会话中分离出来,作为后台守护进程运行。
  • 如果删除 Android 应用,容器中的进程会继续运行,数据不会丢失。

无需手动配置即可实现图形、声音和网络

自 6.x 版本以来,该工具可以自动转发图形和音频。如果需要 XFCE 或其他桌面环境,无需在 Termux 中手动设置环境变量和启动服务器。

启用相应开关后,该工具会自动启动 Termux:X11、VirGL 和 PulseAudio。在容器内部,DISPLAY=:5GALLIUM_DRIVER=virpipe 变量会自动设置。对于高通 Adreno GPU,可使用支持直接 GPU 直通的 Turnip 驱动。

支持四种网络模式:

  • Host(与设备共享网络)
  • NAT(隔离网络,自动检测接口和端口转发)
  • None(完全网络隔离)
  • Gateway(将路由委托给另一个容器,例如 OpenWRT)

管理和代码开发

为 Android 用 Kotlin 创建了便捷的 GUI。它配置挂载点、分配硬件资源、转发端口,并显示 systemd 启动日志。

在桌面 Linux 或通过 SSH 时,设备通过命令行工具管理:

# Проверка готовности ядра
sudo ./droidspaces check

# Запуск контейнера с файлом конфигурации
sudo ./droidspaces start ubuntu --conf /path/to/ubuntu.config

# Вход в консоль запущенного контейнера
sudo ./droidspaces enter ubuntu

如果需要在不冒文件系统损坏风险的情况下测试软件,Volatile 模式非常有用。它使用 OverlayFS,将所有更改存储在 RAM 中,并在停止后立即丢弃。

内核要求和安全细节

没有 root 权限就无法实现。该工具需要 Root(KernelSU、Magisk 或 APatch)和内核版本 3.10 或更高。

在旧内核(3.10–4.19)上,需要处理 Android 的特殊问题。由于 FBE 加密冲突和 VFS 特性,内核有时会冻结。作者提供了 Deadlock Shield 开关和 BPF 过滤器。如果禁用保护,甚至可以在 Droidspaces 内运行 Docker(嵌套容器)。在现代 GKI 内核(5.4+)上,所有功能开箱即用。

重要的安全提示:Droidspaces 是为爱好者创建的,不能作为严格的沙箱运行。容器内具有 root 权限的进程可以访问内核调用,而 --privileged 标志会禁用大多数功能和 seccomp 限制。在个人设备上运行可疑代码绝对不可取。

谁会发现这个项目有用

这个工具会吸引那些将旧平板电脑或智能手机变成本地服务器的人。它便于部署 Docker 容器、家庭 Home Assistant、数据库实例,或通过 GPU 渲染的完整桌面环境。

GitHub releases 中提供了 aarch64、armhf、x86_64、x86 和 riscv64 架构的现成二进制文件。

相关项目