在 Droidspaces 容器中安装 Niri


是的事实上这篇文档以及这整个后端的开发都在这个后端为 Anland 的 Niri 中完成。已基本可以日用。
安装 Droidspaces 和 Anland
下载 Droidspaces 和 Anland。要下载 APK 或 Magisk 模块,需要前往它们的 Releases 页面。
确保你的内核支持 Droidspaces,你可以在 Droidspaces 应用中检查,像这样:
Droidspaces v6.4.5 — Checking system requirements...
[MUST HAVE]These features are required for Droidspaces to work:
[✓] Root privileges [✓] Linux version [✓] PID namespace [✓] Mount namespace [✓] UTS namespace [✓] IPC namespace [✓] pivot_root syscall [✓] /proc filesystem [✓] /sys filesystem [✓] Seccomp support
[RECOMMENDED]These features improve functionality but are not strictly required:
[✓] epoll support [✓] signalfd support [✓] PTY support [✓] devpts support [✓] Loop device [✓] ext4 filesystem [✓] Cgroup v2 support [✓] Cgroup namespace [✓] devtmpfs support
[OPTIONAL]These features are optional and only used for specific functionality:
[✓] IPv6 support [✓] FUSE support [✓] TUN/TAP support [✓] OverlayFS support [✓] Network namespace [✓] Bridge device support [✓] Veth pair support
[HARDENING]These checks are not required for Droidspaces to work, but are recommended for hardened kernels:
[✗] CONFIG_USER_NS disabled Kernel exposes user namespace support, which Droidspaces does not require and hardened kernels should disable
Summary:
[✓] All required features found!
Command executed (exit code: 0)如果输出显示“All required features found!”,则表示你可以正常运行容器。
安装 rootfs
对于本项目,Arch Linux 是最佳选择,因为我不确定其他发行版是否能正常工作。
打开 Droidspaces 应用,在底部栏可以看到“容器”选项卡,点击它。
然后在安装按钮上方有一个云图标按钮,点击它。
找到“Arch Linux - Base”并下载安装。
在容器设置中,只需在 6.4.5 版本中开启 GPU 访问。如果有 Anland 支持开关,也请打开。
设置挂载点 - 将 /data/local/tmp/display_daemon.sock 挂载到容器内的 /run/display.sock。如果 /data/local/tmp/display_daemon.sock 不存在,则需要为 Anland Consumer 授予 root 权限。
全部设置完成后,启动容器。
容器内的设置
基础准备
- 初始化 pacman 密钥
pacman-key --initpacman-key --populate archlinuxarm(可选)更新镜像源
在中国大陆,应用更新可能很慢,所以需要添加镜像源。编辑 /etc/pacman.d/mirrorlist,添加以下
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxarm/$arch/$repo保存退出。
- 更新系统
运行
pacman -Syu- 添加你的语言
编辑 /etc/pacman.conf,修改 NoExtract 行。在 POSIX 后添加
!usr/share/*locales/zh_CN以简体中文为例。随后,编辑 /etc/locale.gen,添加你的语言。
随后重新安装 glibc。
pacman -S glibc- 创建新用户 (记得修改 mingxi 为自己的名字)
useradd -m -G wheel -s /bin/bash mingxi给予 gpu 访问权限
usermod -aG droidspaces-gpu mingxi修改密码
passwd mingxi添加 sudo 权限
EDITOR=nano visudo推荐使用 NOPASSWD,不然 Agent 无法使用 sudo 并且安装过程也会繁琐。
- logout 当前 root 用户,进入新账户
安装 niri 所需要的依赖:
sudo pacman -S libinput pipewire pango glib2 libdisplay-info mesa seatd \ systemd-libs libdrm libxkbcommon libevdev libwacom lua freetype2 fontconfig \ libx11 libxcb libffi pcre2 libgudev pixman libxrender libxext安装字体
sudo pacman -S ttf-dejavu ttf-liberation noto-fonts noto-fonts-cjk安装额外包
sudo pacman -S fish noctalia kitty配置 aniri
从 https://github.com/lfdevs/mesa-for-android-container/releases 下载 26.2.0-devel-20260709 archlinux 包
解压文件
mkdir mesa-install && cd mesa-installmv ../mesa.tar . && tar -xvf mesa.tar临时关闭签名检查:
sudo sed -i 's/^SigLevel.*/SigLevel = Never/' /etc/pacman.confsudo pacman -U *.pkg.tar.xzsudo sed -i 's/^SigLevel.*/SigLevel = Required DatabaseOptional/' /etc/pacman.conf随后,在本仓库 Releases 页下载二进制文件,以及 我的配置文件,并下载至一个合适的持久位置。
这里本文下载至了 /niri/niri。
sudo chmod +x /niri/nirimkdir -p ~/.config/nirimv config.kdl ~/.config/niri/config.kdl移动 config.kdl 至 dotfile 位置
为使用 kgsl 驱动,需在环境变量中指定。写入 ~/.bashrc:
cat >> ~/.bashrc << 'EOF'export MESA_LOADER_DRIVER_OVERRIDE=kgslexport GALLIUM_DRIVER=kgslexport FD_FORCE_KGSL=1export ANLAND=1export ANLAND_SOCKET=/run/display.sockexport ANLAND_DRM_DEVICE=/dev/dri/renderD128EOFsource ~/.bashrc验证驱动:
eglinfo -p surfaceless应输出 EGL driver name: kgsl
接下来,解决运行时问题。
sudo mkdir -p /run/user/1000sudo chown mingxi:mingxi /run/user/1000sudo chmod 700 /run/user/1000设置为 Systemd 服务:
创建 /etc/systemd/system/niri.service :
[Unit]Description=Niri AnlandAfter=network.target
[Service]Type=simpleUser=mingxiGroup=mingxiEnvironment="XDG_RUNTIME_DIR=/run/user/1000"Environment="ANLAND=1"Environment="MESA_LOADER_DRIVER_OVERRIDE=kgsl"Environment="GALLIUM_DRIVER=kgsl"Environment="FD_FORCE_KGSL=1"Environment="ANLAND_SOCKET=/run/display.sock"Environment="ANLAND_DRM_DEVICE=/dev/dri/renderD128"ExecStartPre=/bin/mkdir -p /run/user/1000ExecStartPre=/bin/chmod 700 /run/user/1000ExecStart=/niri/niriRestart=alwaysRestartSec=3
[Install]WantedBy=multi-user.target重载并启用:
sudo systemctl daemon-reloadsudo systemctl enable --now niri验证
打开 Anland,即可看到崭新的 Niri 环境。连接键盘和鼠标体验最佳。
记得启用 Anland 的无障碍,否则 Niri 的 Super 键会被安卓宿主机使用。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
