1. 先把这台设备的底子摸清楚
小米平板4 是 2018 年的产品,代号 clover,骁龙 660,8 英寸 1920×1200 的 IPS 屏,内存有 3GB/4GB/6GB 几个版本,存储 32GB 起步,电池 6000mAh,Type-C 接口,没有耳机孔。屏幕对角 8 英寸、分辨率对角线约 2264 像素,算下来 PPI 大概 283,这个细腻程度对一台"能塞进外套口袋的 Debian 终端"来说完全够用。我在上面跑 Droidian 之后,最大的感受不是性能有多强,而是这台 2018 年的老平板,居然真的能当一个随身 Linux 开发终端用。
Droidian 跟你在安卓上装 Termux 再 proot 一个 Debian 完全是两码事。proot-distro 那套是在安卓用户空间里做系统调用重定向,本质上还是安卓在管事,性能和权限都受限;Droidian 是把真正的 Debian 用户空间跑在设备内核上,用户空间是货真价实的 Debian arm64,apt 装的是 Debian 官方仓库打包的软件,桌面环境是 Phosh,显示服务是 Wayland,合成器是 phoc,底层则通过 Halium 和 libhybris 去调用安卓侧的内核驱动。理解这个分层结构特别重要,因为它决定了后面所有设置思路和 PC 上的 Debian 不一样。
先说清楚这套系统的四层结构,后面调任何东西都绕不开它。最底层是设备厂商的 Linux 内核,也就是安卓那一套内核加上 Halium 补丁,驱动模块全都来自这里;往上一层是 libhybris 桥接层,它让上层能直接调用安卓的 HAL 库,触摸、音频、摄像头、GPU 都靠它;再往上是 Debian 的整个用户空间,systemd、apt、NetworkManager、GNOME 技术栈都在这一层;最上面就是 Phosh 这个移动端 Shell。所以你会遇到一个很奇怪的现象:明明是 Debian,但内核版本号看着像是安卓的,而且/sys下面一堆节点的行为跟 PC 完全不同。
为什么不建议照搬 PC 端的 Debian 使用习惯,原因也很实在。内存最多 6GB、常见是 4GB,GNOME 全家桶一把梭直接给你 OOM;机身没有风扇,骁龙 660 长时间编译会明显降频,我编译一个小型 C 项目就能摸到温热的背板;存储是 eMMC,随机读写比 SSD 差一大截,一旦你装了 Docker 和 Waydroid 镜像,开机和启动应用的速度会肉眼可见地变慢。把这几点记住了,后面所有的取舍都会变得顺理成章——比如为什么我推荐 foot 而不是 gnome-terminal,为什么 swap 优先用 zram 而不是 swapfile,这些选择都不是凭喜好。
折腾之前有几件事必须做。第一,确认底包版本,Halium 对 vendor 和 firmware 的版本是有要求的,底包不对会出现触摸失灵、WiFi 扫不到、音频无声这类玄学问题,而且很难查;第二,用 TWRP 把 boot、dtbo、vendor、persist 这几个分区备份出来,尤其是 persist,里面存着传感器校准和 IMEI 相关的数据,刷丢了很麻烦;第三,备份文件一定要拷到电脑上,别只留在平板上——平板一旦进不了系统,留在平板里的备份等于没有。很多人拿 Clonezilla 那套 PC 全盘镜像的思路往平板上套,其实在移动设备上更靠谱的是分区级备份,用dd if=/dev/block/by-name/boot of=/sdcard/boot.img之类的命令把关键分区单独抠出来,配合 TWRP 的备份功能双保险。
1.1 硬件能承受的边界在哪
动手前先给自己划个心理预期线。骁龙 660 是 4 核 A73 加 4 核 A53 的架构,8 个核心调度策略偏保守,跑轻量桌面完全没问题,跑大型 IDE 就有点勉强。我实测下来,VS Code 这类 Electron 应用在 4GB 版本上启动要十几秒,内存占用能顶到 1.5GB 以上,开两个窗口就开始换页。相比之下,用终端加 Vim 或者 Neovim,再配个 foot 终端,整个系统响应非常跟手,打字延迟几乎感觉不到。
网络部分也值得单独说一句。WiFi 用的是安卓侧固件,在 Droidian 下表现和安卓里差不多,但有个坑是它默认开了省电模式,息屏几分钟后连着的 SSH 会话会被掐断。这个问题一度让我以为是自己网络的问题,排查了半天才发现是 NetworkManager 的 wifi.powersave 在作祟,后面会详细讲怎么改。
1.2 选择这套方案而不是其他路子的理由
市面上把平板变成 Linux 设备的路子其实有好几条,我简单对比一下我为什么最终选了 Droidian。第一条是 proot 方案,优点是安装简单、不刷机、风险低,缺点是性能损耗明显、没法和外设做深度交互、systemd 跑不起来;第二条是直接用 Debian 官方 arm64 镜像,看起来很正统,但根本没有对应设备的驱动,屏幕点不亮;第三条就是 Droidian 这类 Halium 移植方案,用户空间是原生 Debian,同时借用 Android 内核的驱动生态,是目前在消费级平板上体验最接近"正经 Linux 笔记本"的路径。
代价当然也有。摄像头基本别想,通话和短信视具体移植状态而定,GPS 定位也时好时坏。但如果你只是想把它当一台带触摸屏的 Linux 上网本——写代码、看文档、SSH 连着服务器、偶尔看个视频——那它的完成度足以支撑日常。
2. 让它看着舒服:显示缩放、字体与深色模式
刚装完 Droidian 第一眼的感觉往往是"字怎么这么小"。原因很简单,Phosh 是照着手机屏幕尺寸设计的,默认缩放按手机逻辑像素来,而 1920×1200 的分辨率摊在 8 英寸上,桌面元素就天然偏小。这一节讲怎么把它调到一个长时间盯着不累的状态。
2.1 缩放和 DPI 的几种调法
最直接的是改文本缩放系数:
gsettings set org.gnome.desktop.interface text-scaling-factor 1.25这个值的范围一般取 1.0 到 1.5,我个人的甜点是 1.25,再大就会出现按钮文字换行、对话框被撑破的情况。要注意这个设置只影响文本大小,图标和控件尺寸不会跟着变,所以调完之后可能出现"字变大但按钮还是小小一个"的割裂感。
如果想让整体界面元素一起变大,得动合成器层面。phoc 支持运行时改缩放,通过 wlr-randr 之类的工具可以查看当前输出:
wlr-randr输出的信息里会列出当前 output 的名字和可用模式。Wayland 下整数缩放是 1x 和 2x,2x 在 1920×1200 上意味着逻辑分辨率只剩 960×600,字是大了但可用空间太小,不太实用。折中方案是保持 1x,靠 text-scaling-factor 加 GTK 的字体设置来凑,同时把一些常用应用的字体单独调大。
对于 Qt 应用,还得额外设置环境变量,否则它们会无视 GTK 的设置。在~/.config/environment.d/下新建一个 conf 文件,把变量写进去,重新登录后生效:
QT_SCALE_FACTOR=1.25 QT_FONT_DPI=120 GDK_DPI_SCALE=1注意:environment.d 里的变量只对 systemd 用户会话启动的进程生效,如果你是从终端手动拉起某个应用测试,得先在当前 shell 里 export 一遍,否则会误以为设置没生效。
还有一点容易踩坑,GDK_SCALE和GDK_DPI_SCALE是两回事。前者管的是整体倍数缩放,后者是给字体做额外补偿,两个都用容易叠加出离谱的效果。我的建议是只调 text-scaling-factor,其他的先别碰,等确实遇到具体应用显示不对再去针对性处理。
2.2 中文字体缺失和渲染优化
Droidian 的默认镜像里不一定预装中文字体,开机第一件事如果看到满屏方块,别慌,就是字体没装。补上:
sudo apt install fonts-noto-cjk fonts-wqy-zenhei fonts-wqy-microhei sudo fc-cache -fvNoto CJK 是全家桶,字重齐全,缺点是包体积大,差不多 200MB 往上;文泉驿的两个字体体积小很多,日常够用,缺点是字形偏老。我一般是两个都装,Noto 当主力,文泉驿兜底。装完记得跑fc-cache -fv刷新缓存,不然新字体不一定立刻被识别。
装完字体之后还有个渲染风格的问题。默认的字体渲染在中文上容易显得发虚或者发糊,可以通过/etc/fonts/local.conf做一轮统一配置。核心的几个方向是打开 hinting、选择合适的 hintstyle、开启 subpixel 抗锯齿。小米平板4 的屏幕是标准 RGB 排列,所以 subpixel 方向选 rgb 是安全的。字体渲染这种东西主观性很强,我给不出唯一正确答案,你可以先抄一份能用的配置,然后微调到自己看着顺眼。
另外要提醒的是,别一口气装几十个中文字体。字体越多,fontconfig 匹配越慢,应用启动会有肉眼可见的延迟,尤其是 GTK 应用。我吃过这个亏,装了一堆开源中文字体之后,Gedit 冷启动从一秒多变到三四秒,删掉一部分之后立刻恢复。
2.3 深色模式与长时间阅读
Phosh 支持跟随 GNOME 的色彩方案,命令行切换就是一条命令:
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'想要跟随日出日落自动切换,Phosh 这边没有现成的开关,得靠 gammastep 或者 redshift 这类工具。Wayland 下推荐 gammastep,它能通过 Wayland 后端直接调整色温:
sudo apt install gammastep gammastep -O 40004000K 对我来说是晚上看文档比较舒服的值,白天可以设 5500K 或者直接关掉。这里有个小细节,gammastep 在 Wayland 下如果检测不到显示器会自动退出,需要在配置里显式指定。
提示:深色模式并不是所有应用都完美适配,有些老应用会出现深色背景配深色文字、看不清内容的情况。遇到这种应用,与其折腾主题,不如直接在应用自己的设置里单独关掉深色。
3. 中文输入:fcitx5 在 Phosh 下的正确姿势
输入法是移动 Linux 设备上最容易翻车的环节,没有之一。因为 Phosh 自带一套屏幕键盘,fcitx5 又是另一套输入框架,两者会争抢输入焦点,表现就是候选词不出现、光标乱跳、或者打字打到一半突然切换了。这一节把我踩过的坑都摊开讲。
3.1 输入法框架怎么选
Linux 上主流的输入法框架有两个,ibus 和 fcitx5。GNOME 生态传统上更亲 ibus,但 ibus 的中文体验在移动设备上确实一般,尤其拼音的候选排序和云词库支持都不如 fcitx5 系列。fcitx5 在 Debian 仓库里打包很完整,arm64 支持也没问题,所以我一直用 fcitx5。
中文输入方案上,我推荐两种搭配:一种是 fcitx5 加 fcitx5-chinese-addons,走 libpinyin 引擎,开箱即用、词库够大、上手成本低;另一种是 fcitx5 加 fcitx5-rime,走 Rime 引擎,可定制性极强,但需要自己配方案和词库。如果你只是想能顺畅打中文,选前者;如果你对输入体验有洁癖,比如想自定义词库、想要更好的长句预测,那就上 Rime,但做好花一个下午调配置的准备。
安装命令:
sudo apt install fcitx5 fcitx5-chinese-addons \ fcitx5-frontend-gtk3 fcitx5-frontend-gtk4 \ fcitx5-frontend-qt5 fcitx5-config-qt几个 frontend 包别省,它们决定了不同 GUI 框架的应用能不能正常调起输入法。GTK3 覆盖了大部分老应用,GTK4 覆盖 GNOME 新的原生应用,Qt5 覆盖各类 Qt 程序。
3.2 自启动和输入法环境变量
输入法要在会话启动时就加载,最标准的方式是写一个 autostart 条目。新建~/.config/autostart/fcitx5.desktop,内容照抄系统里其他 autostart 条目的格式,把 Exec 指向 fcitx5 就行。这个方式比塞进 shell 的 rc 文件靠谱得多,因为它跟着图形会话走,不会在 SSH 登录时也去拉一个输入法进程。
环境变量是另一个必调项。Wayland 会话下要告诉各个工具包去用 fcitx:
GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitx把这些写进~/.config/environment.d/fcitx.conf。写完之后注销重登,用env | grep IM_MODULE验证一下有没有生效。这一步不做的话,典型症状是终端里能打中文,浏览器里打不出来,或者反过来。
3.3 屏幕键盘抢焦点和候选框定位
Phosh 的屏幕键盘是靠 GNOME 的无障碍接口拉起来的,一旦它和 fcitx5 同时激活,就会互相打断。解决办法是关掉系统的屏幕键盘:
gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled false关掉之后,输入完全交给 fcitx5,配合它的虚拟键盘插件就能满足触摸输入需求。
候选框位置不对是 Wayland 下的经典问题。根子在于 Wayland 原生的 text-input 协议和传统 X11 的输入法协议不兼容,GTK 应用在 Wayland 下走的是 text-input-v3,fcitx5 要 5.0.20 以上版本才支持这条路。如果你遇到候选框永远出现在屏幕左下角,说明协议没对上,可以试两个方向:一是升级 fcitx5 到较新版本;二是强制某些应用走 XWayland,通过环境变量GDK_BACKEND=x11让它回到老协议上。后者是权宜之计,但确实能解决燃眉之急。
实操心得:调输入法的时候,强烈建议开一个终端在旁边跑
fcitx5 --verbose 5看日志,输入焦点切换、前端加载、引擎切换都会打出来,比盲猜快十倍。我最初花了两个小时瞎试,看了日志之后五分钟定位问题。
4. 网络与包管理:源、DNS、静态 IP 一次配明白
网络和软件源这两块,是决定这台设备好不好用的地基。配得顺,后面装什么都是两条命令的事;配得别扭,每天都要跟它较劲。
4.1 apt 源怎么换才不出事
Droidian 的软件源分两类:一类是它自己的仓库,提供适配层、内核、Phosh 相关组件;另一类是 Debian 官方仓库,提供绝大部分常规软件。新版 Droidian 用的是 deb822 格式,也就是.sources后缀的文件,位置在/etc/apt/sources.list.d/下。
换源的原则很简单:Droidian 自己的仓库别乱换,官方推荐的地址是经过验证的,换成第三方镜像很容易出现版本错配,轻则某个组件升级失败,重则桌面起不来;Debian 官方仓库可以换国内镜像,速度快很多。以清华镜像为例,把 debian.sources 里的deb.debian.org替换成mirrors.tuna.tsinghua.edu.cn即可,其他字段保持不动。
换完执行一次:
sudo apt update如果看到 GPG 报错,说明签名密钥不匹配,这时候别硬来加--allow-unauthenticated,那样等于把安全校验关掉了,正确做法是去检查镜像地址是不是写错了、架构字段(Architectures: arm64)有没有漏。
apt 的常用操作我列一张表,方便随时对照:
| 操作目的 | 命令 |
|---|---|
| 刷新索引 | sudo apt update |
| 列出可升级包 | apt list --upgradable |
| 查看包来源和版本 | apt-cache policy 包名 |
| 查看包详情 | apt show 包名 |
| 查文件属于哪个包 | dpkg -S /path/to/file |
| 查某个包装了哪些文件 | dpkg -L 包名 |
| 清理下载缓存 | sudo apt clean |
| 清理无用依赖 | sudo apt autoremove |
有一个坑必须说:平板存储紧张,很多人习惯性跑apt full-upgrade,把 Droidian 适配层里被锁定的版本也一起升上去,结果就是显示异常、触摸失效这类问题。正确做法是升级前先apt list --upgradable看一眼有哪些包要动,看到 droidian- 开头的包要格外谨慎,能不动就不动。
4.2 静态 IP 和 DNS 那些弯路
用 nmcli 配静态地址是最省事的,以有线连接为例:
nmcli con mod "Wired connection 1" ipv4.addresses 192.168.1.50/24 nmcli con mod "Wired connection 1" ipv4.gateway 192.168.1.1 nmcli con mod "Wired connection 1" ipv4.dns "223.5.5.5 119.29.29.29" nmcli con mod "Wired connection 1" ipv4.method manual nmcli con up "Wired connection 1"这里有几个细节容易忽略。第一,ipv4.dns的多个地址用空格分隔且要加引号,写成逗号会被当成一个域名解析失败。第二,改完必须con up一次,配置才会真正下发给内核。第三,如果你之前是 DHCP,切到 manual 之后一定要把 gateway 和 dns 都补全,只写 address 会导致能连上但上不了网。
DNS 这块还有个更隐蔽的坑:Debian 上用 systemd-resolved 管理解析,直接改/etc/resolv.conf在重启后会被覆盖回去,很多人改完当时能用,一重启就废,还以为是 NetworkManager 有 bug。正确做法有两种,要么用resolvectl dns 接口名 223.5.5.5下发,要么直接禁用 resolved 让 NetworkManager 接管:
sudo systemctl disable --now systemd-resolved sudo rm /etc/resolv.conf sudo ln -s /run/NetworkManager/resolv.conf /etc/resolv.conf我个人偏好后者,逻辑单一,出问题好排查。
4.3 WiFi 掉线和省电模式
前面提到的 WiFi 息屏断连,根子在电源管理。查看和修改:
nmcli con show "你的WiFi名" | grep powersave nmcli con mod "你的WiFi名" wifi.powersave 2值2表示禁用省电,3是启用。禁用之后功耗会略高一点,但 SSH 会话和后台下载不会再莫名断开。对一台插着充电器当终端用的平板来说,这点功耗完全值得。
局域网内共享文件也会用到 Samba。常见的"能连上但登录失败"多半是两件事:一是 Samba 的用户库和系统用户库是分开的,必须用smbpasswd -a 用户名单独设一次密码;二是新版 Samba 默认禁用了老的 SMB1 协议,如果客户端很老就得在配置里显式放开,但放开意味着安全性下降,能升级客户端就升级。
5. 续航与内存:休眠、zram 和后台瘦身
这一节是让平板从"能跑"变成"好用"的关键。默认配置下,Droidian 在小米平板4 上的待机和内存表现都不算理想,需要手动调一轮。
5.1 休眠策略:什么时候该禁,什么时候该留
Droidian 在 clover 上的 suspend 表现,不同版本差异挺大。有的版本 suspend 后能正常唤醒,有的唤醒黑屏、有的直接重启,还有的唤醒之后 WiFi 要重连。判断当前状态最直接的办法是手动触发一次再唤醒,看系统日志里有没有报错。
如果你的设备 suspend 有问题,最省心的方案是彻底关掉自动休眠,只保留熄屏。命令是:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target这条命令会把休眠相关的 target 全部屏蔽掉,系统再也不会自己睡过去。代价是待机功耗高一些,屏幕关闭状态下大概每小时掉几个百分点,但换来的是随叫随到、不用等唤醒。我把它当固定插电的桌面终端用时就是这么干的。
如果你确实需要休眠省电,那就保留,但要检查/sys/power/state里到底支持哪些状态,只写freeze就是浅睡眠,写mem才是真正的挂起到内存。误把freeze当mem用,会得到"看起来睡了其实没睡"的错觉。
熄屏时间单独调:
gsettings set org.gnome.desktop.session idle-delay 300300 是秒数,五分钟。这个值看你使用习惯,看文档的时候嫌频繁可以拉到 600 甚至更长。
注意事项:mask 掉 sleep.target 之后,有些依赖它做电源事件的脚本会失效,比如某些自动锁屏逻辑。如果你启用了自动锁屏,改完之后记得测一遍,别到时候发现屏幕根本不锁。
5.2 zram 还是 swapfile
4GB 内存的版本一定要配 zram,这是提升体感最明显的一步。zram 的本质是在内存里划一块压缩过的交换空间,数据压缩后占用物理内存,读写速度接近内存,还不伤存储。启用方式取决于系统装的是哪套工具,Droidian 上比较常见的是 systemd 自带的 zram 生成器,配置文件在/etc/systemd/zram-generator.conf:
[zram0] zram-size = ram / 2 compression-algorithm = zstd含义是划出物理内存一半大小的 zram,压缩算法用 zstd,压缩率和速度平衡得比较好。写完之后:
sudo systemctl daemon-reload sudo systemctl start systemd-zram-setup@zram0.service用swapon --show确认一下有没有生效。
swapfile 也能用,但我不太建议在 eMMC 上频繁读写。它的优势是容量可以给得更大,比如 2GB、4GB,适合跑那种内存峰值很高但短暂的任务。如果非要用,放在 fstab 里:
sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile关于vm.swappiness,这里有个反直觉的点:如果你用的是 zram,swappiness 调高反而更划算,因为换出去的数据是被压缩的,压缩比通常能到 2:1 甚至 3:1,等于变相扩大了内存;如果用的是 eMMC 上的 swapfile,那 swappiness 就该压低,减少对存储的磨损。很多网上抄来的"swappiness 一定设成 10"的说法,是在没区分这两种场景的情况下给出的,直接照抄反而亏。
5.3 后台服务该关就关
精简后台是最直接的省电手段。先看看当前有哪些服务是开机自启的:
systemctl list-unit-files --state=enabled然后按需关掉。用不到的蓝牙、ModemManager(如果不用蜂窝网络)、avahi-daemon、cups 打印服务,都可以直接 disable。关之前确认一下它没有被别的东西依赖,systemctl list-dependencies能查依赖关系。
sudo systemctl disable --now bluetooth.service sudo systemctl disable --now ModemManager.service sudo systemctl disable --now cups.service关掉这些之后,空载内存能省下几百兆,对 3GB 和 4GB 版本是实打实的提升。但要提醒一句,关掉 avahi 之后局域网里的.local域名解析会失效,如果你依赖 mDNS 找设备,那就留着。
6. 日常软件怎么挑:浏览器、工具链与容器
软件选型在移动设备上比在 PC 上敏感得多,因为每一个选择都直接体现在内存和续航上。这一节按用途分门别类讲。
6.1 浏览器:轻量和兼容的取舍
浏览器是最吃资源的日常应用,选型上一定要务实。我把几个选项列出来对比:
| 浏览器 | 内存占用 | 兼容性 | 适合场景 |
|---|---|---|---|
| Firefox ESR | 较高,开多标签明显吃紧 | 最好 | 需要完整网页功能 |
| Epiphany | 低 | 一般,部分站点会崩 | 看文档、查资料 |
| Chromium | 高 | 好 | 需要特定扩展或调试 |
| Falkon | 中低 | 中等 | 日常轻量浏览 |
我的实际用法是两个都装:平时用 Epiphany 看文档、查 API,遇到必须用完整功能的站点再切 Firefox。Firefox 在 6GB 版本上开五六个标签还算从容,4GB 上就要控制了,开十几个标签一定会触发大量换页,切换标签会有明显卡顿。
有个小技巧能明显改善体验:给 Firefox 关掉一些不必要的后台功能,比如遥测、预加载、平滑滚动,再把 content process 数量限制在 2 个。这些设置在新版 Firefox 里通过about:config调,比默认配置省不少内存。
6.2 终端和开发工具链
终端我首推 foot。它是专门为 Wayland 写的,启动快、渲染快、内存占用小,字体渲染质量也到位。gnome-terminal 不是不能用,但它是 GNOME 全家桶的一环,会拉起来一堆依赖,在平板这种资源受限的环境里不太划算。
sudo apt install foot开发工具按需装。Go 语言在 Debian 源里的版本通常比官方最新版老,如果要装新版,从官网下 arm64 的 tarball 解压到/usr/local/go就行,路径加进 PATH 即可。Python 和 Node 这种用源里的包最省事,除非你有明确的版本要求,否则不建议折腾第三方源,容易把依赖搞乱。
版本控制方面,命令行 git 肯定要装。如果习惯图形界面,RabbitVCS 是个老牌选择,它给 nautilus 提供右键菜单,集成 Git 和 SVN。装的时候注意它依赖 python3-nautilus,装完要重启文件管理器才会出现菜单项。平板上用图形化版本控制其实挺别扭,屏幕小、右键操作也不如鼠标精准,我个人还是回到命令行加 tig 看历史。
6.3 解压乱码:一个每年都要踩一次的坑
从中文 Windows 打包过来的 zip,在 Linux 上解压经常是乱码。原因是 zip 格式没有明确规定文件名编码,Windows 用了 GBK,Linux 默认按 UTF-8 读。解决办法有好几种:
# 方式一:7z 指定代码页 7z x -mcp=GBK 压缩包.zip # 方式二:unzip 支持 -O 参数(部分版本需要打补丁) unzip -O GBK 压缩包.zip # 方式三:先解压再用 convmv 批量改 convmv -f gbk -t utf-8 -r --notest 目录名我一般用第二种,最省事。如果系统里的 unzip 不支持 -O,那就装 p7zip-full 或者新版 7zip,用第一种。这里提醒一下,convmv那一步务必先加--notest前先不加跑一次预览,确认它要改的文件名都对,别一把改错一堆。
6.4 Waydroid:需要安卓应用时怎么办
有些应用没有 Linux 版本,比如国内的某些即时通讯和办公软件。这时候 Waydroid 是个挺优雅的方案,它基于 LXC 容器和 binder 机制,直接复用设备内核跑一个安卓系统镜像,性能比传统模拟器好很多。
sudo apt install waydroid sudo waydroid init初始化会下载系统镜像,体积不小,注意 eMMC 空间。Halium 内核一般已经带 binder 支持,如果启动失败提示 binder 相关错误,先确认内核有没有挂载 binderfs。
它也有几个实实在在的坑。第一,网络是 NAT 模式,容器里的安卓访问不到主机上的服务,反过来主机访问容器需要通过转发端口;第二,GPU 是共享的,在某些组合下会出现画面撕裂或者渲染异常;第三,容器本身占内存,4GB 版本上开着 Waydroid 再加浏览器,基本就到极限了。
实操心得:Waydroid 的系统镜像和用户数据放在
/var/lib/waydroid下,这个目录会越长越大。如果你不常用,定期清理可以省出不少空间;如果常用,建议把它迁到外置存储上,eMMC 的空间真的经不起折腾。
6.5 Docker 和其他容器方案
Docker 在 Droidian 上能跑,安装方式和普通 Debian 一样:
sudo apt install docker.io sudo usermod -aG docker $USER sudo systemctl enable --now docker注意两点。一是拉镜像要选对架构,arm64 的镜像标签通常带-arm64或者用多架构清单自动匹配,如果拉下来的镜像起不来,先确认架构对不对;二是 Docker 的存储目录在/var/lib/docker,eMMC 上跑容器会让整体 IO 变慢,尤其是在编译镜像的时候。如果只是需要轻量隔离,podman 的 rootless 模式可能更合适,不用常驻守护进程,占用也小一些。
至于 ROS2 这类没有进 Debian 官方仓库的软件,在 arm64 平板上的选择不多,要么自己编译,要么用第三方提供的源。自己编译的话,建议先看看内存,ROS2 完整编译在 4GB 设备上大概率会 OOM,用-j2限制并行度,再配合 zram 才有戏。
6.6 桌面环境替换的可能性
如果你把平板当带屏幕的小笔记本用,接上键盘鼠标,Phosh 那套手机交互逻辑反而碍事。这时候可以考虑换一个 Wayland 平铺合成器,比如 niri。它的滚动式平铺布局在小屏幕上特别高效,键盘操作也很顺手。
但换了之后 Phosh 那套东西——屏幕键盘、移动端通知、通话界面——就都没了,等于放弃了"平板"这个形态。我的建议是别急着换,先把 Phosh 用熟,等你确认真的是把平板当笔记本用、从来不碰触摸屏了,再考虑替换。真要换的话,用单独的会话文件启动,跟 Phosh 并存,登录界面选哪个,这样随时能切回来。
AWTK 这类嵌入式 GUI 框架,如果你是在做嵌入式开发,想在平板上验证界面效果,交叉编译出 arm64 二进制丢上去跑就行,它不依赖完整的桌面环境。
7. 免密登录、备份与故障速查
最后这一节是我用下来觉得最有价值的部分,都是些文档里不会写、但实际天天要用的东西。
7.1 SSH 免密登录和 passphrase 处理
把平板当终端用,免密登录服务器是刚需。生成密钥:
ssh-keygen -t ed25519 -C "tablet" ssh-copy-id user@你的服务器如果生成时设了 passphrase,每次登录都会提示Enter passphrase for key,输一次还行,输十次就烦了。解决办法是用 ssh-agent 把密钥缓存到内存里:
eval $(ssh-agent) ssh-add ~/.ssh/id_ed25519或者在~/.ssh/config里加上AddKeysToAgent yes,登录时输一次之后就自动缓存。更省事的做法是把 agent 设置成跟随会话启动,在 autostart 里加一条,这样开机输一次密码,整个会话期间都不用再输。
免密登录还有一个方向是平板本身的登录免密,也就是开机自动进桌面。Phosh 用的显示管理器配置一般在/etc/greetd/附近,具体文件名随版本不同有差异。不过要提醒的是,自动登录意味着任何拿到设备的人都能直接进系统,平板上如果你存了敏感数据,最好还是留一道密码,或者至少给磁盘加密。
7.2 系统备份的现实做法
前面提过备份的重要性,这里补一下具体怎么做。TWRP 的备份是最直接的,选 boot、dtbo、vendor、persist 这几个分区,备到外置存储或者通过 OTG 写到 U 盘上。系统能进的情况下,也可以用 dd 命令单独抠分区:
sudo dd if=/dev/block/by-name/boot of=/sdcard/boot.img bs=4M这里的关键是选对 bs 参数,4M 是个比较平衡的值,太小了慢,太大了有的设备吞吐反而下降。备完一定要校验,对比一下文件大小和分区大小是否一致,或者算个哈希。
另外一种思路是把系统跑起来之后,用 rsync 定期同步/home目录到另一台机器:
rsync -avz --delete ~/ user@服务器:/backup/tablet-home/这样即使平板彻底挂了,至少个人数据和配置还在。系统本身可以重刷,个人的 dotfiles、代码、笔记丢了才是真的麻烦。
7.3 常见故障速查表
下面这张表是我自己用下来的问题集合,遇到对应症状可以直接定位:
| 症状 | 可能原因 | 处理方向 |
|---|---|---|
| 满屏方块 | 缺中文字体 | 装 fonts-noto-cjk 并刷新缓存 |
| 输入法候选框位置错乱 | Wayland text-input 协议版本不匹配 | 升级 fcitx5 或强制应用走 XWayland |
| 息屏后 SSH 断开 | WiFi 省电模式 | 设置 wifi.powersave 为 2 |
| 重启后 DNS 设置丢失 | systemd-resolved 覆盖 resolv.conf | 禁用 resolved 或改用 resolvectl |
| apt 报 GPG 错误 | 镜像地址或架构字段有误 | 检查 sources 文件,别用 allow-unauthenticated |
| 换页频繁、系统卡顿 | 内存不足且无 zram | 配置 zram-generator 并调 swappiness |
| 休眠后无法唤醒 | suspend 适配不完善 | mask 掉 sleep.target,只用熄屏 |
| 解压 zip 文件名乱码 | 编码不匹配 | 7z 指定 CP=GBK 或 unzip -O GBK |
| Samba 登录失败 | 独立用户库或协议版本 | smbpasswd 设密码、检查 SMB 版本 |
| Waydroid 启动失败 | binder 或空间不足 | 检查 binderfs 挂载和磁盘剩余空间 |
| Docker 镜像起不来 | 架构不匹配 | 确认拉的是 arm64 镜像 |
| 系统更新后显示异常 | 适配层包被一起升级 | 升级前先看 upgradable 列表 |
排查这类问题的通用思路是先看日志。Droidian 上主要看三处:journalctl -b看本次启动的系统日志,journalctl --user看用户会话日志,应用自己的日志一般在~/.cache或者~/.local/share下。看到不认识的报错,先把关键词丢进搜索里,多半有人遇到过。
最后分享一个我自己的习惯:每次做系统层面的修改之前,先记一条笔记,写清楚改了什么文件、原本是什么值。因为移动设备上的问题往往不是当场出现的,可能一周后突然某个功能不好用,那时候你能回想起来"哦我当时是不是动过那个配置"的概率很低,有笔记就好办多了。
这台小米平板4 陪我用了挺长时间,从最开始各种折腾到现在每天稳定使用,中间踩的坑基本都写在上面的表格里了。它当然比不上一台正经的笔记本,键盘屏幕都是外接的,性能也只够轻量开发,但胜在随手就能拿起来,电池能撑一整天,SSH 连上服务器就是完整的开发环境。如果你手里也有一台闲置的老平板,不妨试试,刷之前把该备份的备好,剩下的就是慢慢调,调到顺手为止。