在 Droidspaces 容器中安装 Niri

980 字
5 分钟
在 Droidspaces 容器中安装 Niri

写写写
写写写

是的事实上这篇文档以及这整个后端的开发都在这个后端为 Anland 的 Niri 中完成。已基本可以日用。

Celvra
/
ANiri
Waiting for api.github.com...
00K
0K
0K
Waiting...

安装 Droidspaces 和 Anland#

下载 DroidspacesAnland。要下载 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 权限。

全部设置完成后,启动容器。


容器内的设置#

基础准备#

  1. 初始化 pacman 密钥
Terminal window
pacman-key --init
pacman-key --populate archlinuxarm

(可选)更新镜像源

在中国大陆,应用更新可能很慢,所以需要添加镜像源。编辑 /etc/pacman.d/mirrorlist,添加以下

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

保存退出。

  1. 更新系统

运行

Terminal window
pacman -Syu
  1. 添加你的语言

编辑 /etc/pacman.conf,修改 NoExtract 行。在 POSIX 后添加

Terminal window
!usr/share/*locales/zh_CN

以简体中文为例。随后,编辑 /etc/locale.gen,添加你的语言。

随后重新安装 glibc。

Terminal window
pacman -S glibc
  1. 创建新用户 (记得修改 mingxi 为自己的名字)
Terminal window
useradd -m -G wheel -s /bin/bash mingxi

给予 gpu 访问权限

Terminal window
usermod -aG droidspaces-gpu mingxi

修改密码

Terminal window
passwd mingxi

添加 sudo 权限

Terminal window
EDITOR=nano visudo

推荐使用 NOPASSWD,不然 Agent 无法使用 sudo 并且安装过程也会繁琐。

  1. logout 当前 root 用户,进入新账户

安装 niri 所需要的依赖:

Terminal window
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

安装字体

Terminal window
sudo pacman -S ttf-dejavu ttf-liberation noto-fonts noto-fonts-cjk

安装额外包

Terminal window
sudo pacman -S fish noctalia kitty

配置 aniri#

https://github.com/lfdevs/mesa-for-android-container/releases 下载 26.2.0-devel-20260709 archlinux 包

解压文件

Terminal window
mkdir mesa-install && cd mesa-install
mv ../mesa.tar . && tar -xvf mesa.tar

临时关闭签名检查:

Terminal window
sudo sed -i 's/^SigLevel.*/SigLevel = Never/' /etc/pacman.conf
sudo pacman -U *.pkg.tar.xz
sudo sed -i 's/^SigLevel.*/SigLevel = Required DatabaseOptional/' /etc/pacman.conf

随后,在本仓库 Releases 页下载二进制文件,以及 我的配置文件,并下载至一个合适的持久位置。

这里本文下载至了 /niri/niri。

Terminal window
sudo chmod +x /niri/niri
mkdir -p ~/.config/niri
mv config.kdl ~/.config/niri/config.kdl

移动 config.kdl 至 dotfile 位置

为使用 kgsl 驱动,需在环境变量中指定。写入 ~/.bashrc:

Terminal window
cat >> ~/.bashrc << 'EOF'
export MESA_LOADER_DRIVER_OVERRIDE=kgsl
export GALLIUM_DRIVER=kgsl
export FD_FORCE_KGSL=1
export ANLAND=1
export ANLAND_SOCKET=/run/display.sock
export ANLAND_DRM_DEVICE=/dev/dri/renderD128
EOF
source ~/.bashrc

验证驱动:

Terminal window
eglinfo -p surfaceless

应输出 EGL driver name: kgsl

接下来,解决运行时问题。

Terminal window
sudo mkdir -p /run/user/1000
sudo chown mingxi:mingxi /run/user/1000
sudo chmod 700 /run/user/1000

设置为 Systemd 服务:

创建 /etc/systemd/system/niri.service :

[Unit]
Description=Niri Anland
After=network.target
[Service]
Type=simple
User=mingxi
Group=mingxi
Environment="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/1000
ExecStartPre=/bin/chmod 700 /run/user/1000
ExecStart=/niri/niri
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target

重载并启用:

Terminal window
sudo systemctl daemon-reload
sudo systemctl enable --now niri

验证#

打开 Anland,即可看到崭新的 Niri 环境。连接键盘和鼠标体验最佳。

记得启用 Anland 的无障碍,否则 Niri 的 Super 键会被安卓宿主机使用。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

在 Droidspaces 容器中安装 Niri
https://x0.fan/posts/install-niri-on-anland/
作者
殘月
发布于
2026-08-17
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
殘月
Ruster | 前后端开发者 | Android 开发者
公告
主播上学去了,无法维护博客。还有动态不知道为什么出了点问题,会重复很多次,,请大家忽略。
分类
标签
最新动态
站点统计
文章
9
分类
2
标签
26
总字数
13,766
运行时长
0
最后活动
0 天前
站点信息
构建平台
Vercel
博客版本
Firefly v6.15.0
文章许可
CC BY-NC-SA 4.0