# 【最近实战】在小米平板7S Pro上通过Termux部署XFCE桌面环境并实现开机自启
## 背景
我有一台小米平板7S Pro,分辨率3200×2136,想把它变成一个轻量级的Linux工作站。之前尝试过VNC方案,但连接不稳定,而且每次容器退出后VNC进程就会挂掉。这次我决定换用Termux:X11方案,配合VirGL硬件加速,直接在平板上运行XFCE桌面环境。
整个操作都是通过Wisdom SSH连接到Termux进行的,AI助手帮我执行命令、排查问题,省去了大量手动输入的时间。
## 目标
在小米平板7S Pro上实现:
1. 安装Termux:X11作为显示服务器
2. 安装VirGL渲染器实现硬件加速
3. 在proot-distro Ubuntu容器中运行XFCE桌面
4. 配置开机自启,打开Termux自动进入桌面
## 步骤
### 第一步:清理旧的VNC方案
之前我尝试过TightVNC方案,但遇到了几个问题:VNC进程在容器退出后就会终止,proot容器和Termux共享网络栈导致端口映射混乱,而且TightVNC对XDamage、XFixes等扩展支持不好,桌面体验很差。
我让AI助手先清理掉VNC相关的脚本和配置:
```
rm -f ~/start-vnc.sh ~/.bashrc
```
然后在容器内杀掉VNC进程并清理锁文件:
```
proot-distro login ubuntu -- bash -c "kill \$(pgrep Xtightvnc) 2>/dev/null; rm -f /tmp/.X1-lock /tmp/.X11-unix/X1; sed -i '/start-vnc/d' /root/.bashrc"
```
### 第二步:安装Termux:X11和VirGL
Termux:X11是专门为Termux设计的X11服务器,相比VNC方案,它不需要端口映射,性能更好,而且支持硬件加速。
安装x11-repo和termux-x11-nightly:
```
pkg install -y x11-repo
pkg install -y termux-x11-nightly
```
安装过程很顺利,Termux:X11的版本是1.03.01-5。
### 第三步:编写启动脚本
我提供了一个完整的启动脚本,AI助手帮我保存到`~/start_desktop.sh`。这个脚本做了以下几件事:
1. 杀掉可能残留的进程
2. 后台启动VirGL渲染器(`virglrenderer-android`)
3. 后台启动Termux:X11服务(`termux-x11`)
4. 等待2秒让服务启动
5. 进入Ubuntu容器,设置环境变量`DISPLAY=:0`、`GALLIUM_DRIVER=virpipe`、`MESA_GL_VERSION_OVERRIDE=3.2`
6. 启动XFCE桌面
脚本内容如下:
```bash
#!/data/data/com.termux/files/usr/bin/bash
pkill -f virglrenderer-android 2>/dev/null
pkill -f termux-x11 2>/dev/null
echo "启动 VirGL 渲染服务..."
virglrenderer-android &
VIRGL_PID=$!
echo "启动 Termux:X11 服务..."
termux-x11 &
X11_PID=$!
sleep 2
echo "进入 Ubuntu 容器启动 XFCE..."
proot-distro login ubuntu --shared-tmp -- bash -c "
export DISPLAY=:0
export GALLIUM_DRIVER=virpipe
export MESA_GL_VERSION_OVERRIDE=3.2
pkill -f startxfce4 2>/dev/null
startxfce4 &
wait
"
kill $VIRGL_PID $X11_PID 2>/dev/null
```
关键点:`--shared-tmp`参数让容器共享Termux的`/tmp`目录,这样Termux:X11的socket文件才能被容器访问到。
### 第四步:配置开机自启
Termux没有systemd,但可以通过`.bashrc`实现自动启动。AI助手帮我创建了`.bashrc`文件:
```bash
# 自动启动桌面环境(VirGL + Termux:X11 + XFCE)
~/start_desktop.sh
```
同时获取了唤醒锁,防止Android系统杀掉Termux进程:
```
termux-wake-lock
```
### 第五步:Android系统设置
这一步需要手动操作,AI助手提醒我:
1. 在Android系统设置 → 应用 → Termux → 电池 → 设置为"无限制"(关闭电池优化)
2. 从酷安或Google Play下载安装Termux:X11应用
3. 打开Termux,脚本会自动启动桌面
## 验证
启动后,打开Termux:X11应用,应该就能看到XFCE桌面了。如果遇到黑屏或连接失败,可以检查:
- VirGL是否正常启动:`ps aux | grep virgl`
- Termux:X11是否在监听:`ps aux | grep termux-x11`
- 容器内DISPLAY变量是否正确:`echo $DISPLAY`(应该输出`:0`)
## 扩展思考
这次从VNC切换到Termux:X11,核心区别在于:
| 方案 | 原理 | 性能 | 稳定性 |
|------|------|------|--------|
| TightVNC | VNC协议,需要端口映射 | 一般,软件渲染 | 差,进程易挂 |
| Termux:X11 | 本地X11 socket通信 | 好,支持VirGL硬件加速 | 好,与Termux同生命周期 |
VirGL的加入让3D加速成为可能,虽然MESA_GL_VERSION_OVERRIDE=3.2只是软件层面的版本声明,但配合virpipe驱动,至少能让一些轻量级图形应用跑起来。
后续还可以在桌面里安装VS Code、浏览器等常用软件,真正把平板变成一个便携工作站。借助Wisdom SSH的AI辅助功能,这些安装和配置过程都可以通过自然语言指令完成,不需要手动敲大量命令。