ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

小米平板4刷Droidian:移动Debian日用配置与踩坑

小米平板4刷Droidian:移动Debian日用配置与踩坑 小米平板4这台机器放到现在看骁龙660加4GB内存跑Android已经有点喘但把它改造成一台纯Linux的轻办公加终端设备反倒挺合适。我把它刷成了Droidian——一个基于Debian、通过Halium层复用Android驱动的移动Linux发行版断断续续用了一段时间从最早能开机就算成功到后来能摊在桌上天天用中间补的配置比刷机本身多得多。刷机只花了一个晚上让它变得顺手却花了我差不多两周。这篇就聊聊这些让小米平板4上的Debian真正进入日常使用状态的设置涉及中文字体与输入法、屏幕缩放、休眠与虚拟内存、静态IP和DNS、以及一堆文档里不会写的小细节。适合已经刷进去但觉得能用不好用的人也适合还在犹豫要不要折腾的。基础命令我不会逐条解释但每个改动背后的原因我会讲清楚你照着改之前至少知道自己在动什么。1. 先划清楚边界小米平板4跑Droidian到底能干什么动手之前最怕的就是期待错位。很多人刷完第一反应是怎么这么卡其实不是系统的问题是把它当Android平板用了。它的定位更像一台带触屏的瘦客户端加终端机而不是刷视频、打游戏的娱乐设备。1.1 骁龙660在Debian下的真实性能画像骁龙660是8核Kryo 2604大核2.2GHz加4小核1.8GHzAdreno 512的GPU。这个配置跑GNOME那种重桌面确实会拖但跑Phosh、Plasma Mobile或者干脆一个平铺窗口管理器sway、i3就很舒服。真正吃性能的不是桌面本身而是浏览器里的现代网页——一个带大量脚本的页面能把4GB内存吃到只剩几百兆然后系统开始疯狂换页。所以后面第6节讲zram、第8节讲浏览器选型本质上都是在跟这4GB内存较劲。存储方面32GB版本刷完系统后留给根分区的空间相当紧张/usr加上各种依赖很容易吃掉七八个G。我的建议是刷机时如果镜像允许调整分区尽量把根分区给足已经刷完的就得靠第3节的清理策略过日子了。1.2 Droidian、postmarketOS、Ubuntu Touch三条路的取舍这三个是绕不开的选项。Ubuntu Touch的界面完成度最高、触摸体验最成熟但它基于自己的打包体系你想apt install一个Debian仓库里的包会很难受对喜欢折腾命令行的人不太友好。postmarketOS是Alpine底子musl libc包体积小、启动快但很多预编译的二进制尤其是闭源工具跑不了得自己编。Droidian的最大优势就是它就是Debian。apt、dpkg、systemd、你熟悉的那套东西全在任何一个在x86 Debian上能跑的开源软件理论上都能搬过来——这也是我最后选它的核心原因。代价是它的移动化适配层Phosh那一套成熟度不如Ubuntu Touch很多交互细节要自己补。1.3 刷机前必须接受的三件事第一数据全清。解锁bootloader会触发强制恢复出厂先备份。第二某些硬件可能永远不完美摄像头、指纹、部分传感器在这类移植项目里经常是能用但效果一般或者干脆没有我基本放弃了用它拍照。第三滚动更新的发行版意味着某次apt upgrade之后可能就起不来了所以第3节会专门讲怎么把关键包锁住。2. 刷入链路从解锁到第一次进桌面刷机流程网上教程很多我只讲几个真正容易翻车的节点以及为什么这么选。2.1 bootloader解锁与recovery的选择逻辑小米的设备需要在官方解锁工具里申请解锁权限绑定账号后等待期结束才能解锁这一步没有捷径。解锁完成后第二件事是刷一个能用的recovery——通常用TWRP的适配版本。为什么必须换recovery因为Droidian的分区布局和Android不一样需要在recovery里做格式化、刷入boot和rootfs镜像原厂recovery根本不给这个入口。这里有个细节刷recovery之前先确认你下载的版本对应的是小米平板4而不是4 Plus两者分区和屏幕尺寸都不同混刷大概率卡在第一屏。名字相近的机型是新手最容易搞错的地方。2.2 镜像写入、分区与首次开机卡死的高频原因大致流程是解锁、刷recovery、格式化data、刷入boot镜像、把rootfs镜像推到设备里再刷入。首次开机卡住无非几个原因——boot和rootfs版本不匹配一个大版本对应一个boot别混用、data分区没格式化干净、或者镜像传输过程中断导致写入不完整。注意每一次刷boot之前先确认手头有能救回来的原厂固件包。Droidian刷砖通常不是硬砖但要恢复得有原厂镜像临时去下载容易手忙脚乱。2.3 装完先别急着配置先确认硬件自检进桌面后第一件事不是装软件是挨个确认硬件屏幕触摸、WiFi、蓝牙、音频输出、充电、音量键和电源键。在终端里跑几个命令很快就能看明白# 看WiFi设备是否被识别 ip link show # 看音频设备 pactl list short sinks # 看电池状态 cat /sys/class/power_supply/battery/capacity电池那行如果读不到说明电源管理节点没适配好后面第6节讲的休眠设置就要格外小心。先摸清家底再动手改配置能省掉一半改完不知道哪里坏了的排查时间。3. 软件源与包管理Droidian的apt和普通Debian不是一回事Droidian的/etc/apt/sources.list里通常混着好几类源Debian官方的arm64源、Droidian自己的适配层源、以及可能的Halium相关源。这种结构决定了你不能像在PC上那样无脑全量升级。3.1 源列表结构与优先级大致长这样deb https://deb.debian.org/debian bookworm main contrib non-free deb https://repository.droidian.org/droidian bookworm mainDroidian的适配包比如halium、libhybris、以及各种硬件配置包优先级必须高于Debian官方源否则同一个包名会被官方版本覆盖掉硬件就废了。稳妥的做法是写一份/etc/apt/preferences.d/droidian把适配层源的Pin值拉到1000以上让它永远赢。Package: * Pin: origin repository.droidian.org Pin-Priority: 1001如果没有这份Pin某次apt upgrade之后你会发现WiFi或者音频突然没了原因就是适配层的包被官方版本顶掉了。3.2 内核和驱动包的版本锁这是我在Droidian上付出代价最大的一课。Linux内核和硬件适配包boot镜像对应的那几个在一次滚动升级后如果新内核和你设备树的适配对不上结果就是黑屏或者卡在启动logo。要锁住它们# 先查出当前内核包名 dpkg -l | grep linux-image # 锁住 sudo apt-mark hold linux-image-xxx linux-headers-xxx我把内核、halium相关包、以及音频和显示的配置包全部hold住了。想升级的时候手动unhold升完确认没问题再锁回去。麻烦是麻烦但比每次开机赌运气强。3.3 空间紧张时的包清理策略32GB版本尤其要精打细算。几条常用命令sudo apt autoremove --purge sudo apt clean # 看看到底谁占地方 du -sh /var/cache/apt/archives sudo journalctl --vacuum-size200M最后那条很容易被忽略——systemd的日志长期不清理能吃掉好几个G尤其是系统反复报错的时候。我把它设成上限200M根分区立刻多出一块空间。4. 中文环境字体、输入法与终端乱码平板不能打中文等于废了一半这一节是我补得最久的。4.1 locale与时区先确认localesudo dpkg-reconfigure locales # 选上 zh_CN.UTF-8 sudo timedatectl set-timezone Asia/Shanghailocale不对的话后面各种终端程序显示中文都可能出问题。时区设错的表现是系统时间差8小时这会直接影响apt的证书校验和日志时间戳别小看。4.2 中文字体选择与渲染默认装完往往只有Noto Sans CJK的基础字重小字号下屏幕上会发虚。我的组合是Noto CJK加思源系的衬线字体sudo apt install fonts-noto-cjk fonts-noto-cjk-extra fonts-wqy-zenhei在手机上Linux系统字体渲染默认偏瘦如果看着发虚写一份fontconfig规则把hinting开启、抗锯齿设成灰度模式比换字体见效快。触屏上看字我个人更偏好略粗一点的字体可以减少眼睛的疲劳感。4.3 fcitx5开机自启在Phosh下的正确接法这是热词里被反复问到的点。Phosh是Wayland会话~/.xprofile那套东西是失效的必须在Wayland会话层面注入环境变量。正确做法是写一份环境配置# ~/.config/environment.d/fcitx.conf GTK_IM_MODULEfcitx QT_IM_MODULEfcitx XMODIFIERSimfcitx然后做个autostart# ~/.config/autostart/fcitx5.desktop [Desktop Entry] TypeApplication Execfcitx5 -d NameFcitx5environment.d这个目录是关键Phosh和很多Wayland合成器在登录时会读它。我第一次只写了autostart结果fcitx进程起来了但所有程序都不认它折腾了半天才发现是环境变量没进会话。4.4 解压中文文件名乱码的三种处理从Windows或老压缩包拿到的zip解出来文件名经常是一堆问号。原因是压缩包用了GBK编码。三种解法# 方案一unzip指定编码 unzip -O CP936 xxx.zip # 方案二用7z转换更可靠 7z x -mcp936 xxx.zip # 方案三解完了再批量改名 convmv -f gbk -t utf-8 -r --notest ./dir第一种最省事但-O参数不是所有发行版的unzip都支持第二种最稳我一般优先用它。第三种适合已经解完懒得重来的场景。5. 8寸屏的桌面适配缩放、旋转和虚拟键盘小米平板4是8英寸1920x1200像素密度大约283 PPI。这个密度拿来显示桌面默认的1x缩放字小到能看瞎眼。5.1 缩放与字体DPIPhosh下最直接的调整是改缩放因子# Phosh/GTK应用的缩放 gsettings set org.gnome.desktop.interface text-scaling-factor 1.4 gsettings set org.gnome.desktop.interface scaling-factor 2如果Phosh自带的缩放选项不生效可以改环境变量# ~/.config/environment.d/scale.conf GDK_SCALE2 QT_SCALE_FACTOR2实测1.5到2之间比较舒服2稍微大了点但触摸目标够用。这里有个常见误区光调text-scaling-factor只会放大文字按钮和图标不会跟着变触摸点击还是很难点中。要一起调scaling-factor。5.2 自动旋转与方向锁定自动旋转靠的是iio-sensor-proxy这一层systemctl status iio-sensor-proxy # 没有就装上 sudo apt install iio-sensor-proxy如果传感器没适配好屏幕会一直横着不动这时候要么自己写udev规则要么就接受手动旋转。在Phosh的通知栏下拉里有旋转锁定开关配合外接键盘用的时候把它锁死在横向会舒服很多——打字的时候屏幕突然转过去是很难受的。5.3 虚拟键盘和物理键盘的切换触摸屏上用的是Squeekboard这类虚拟键盘。它有个不太好的习惯即使你插了蓝牙键盘它还是会自己弹出来挡住半个屏幕。Phosh里可以通过gsettings把「有物理键盘时自动收起」打开或者在Squeekboard里设成手动模式。桌上配一个蓝牙键盘加鼠标这台平板立刻从看文档的设备变成能写东西的设备这是我实际使用中最明显的一次体验跃迁。5.4 桌面环境选型Phosh最贴合触摸但定制性一般。Plasma Mobile功能更全内存占用也更高。如果这台机器主要用来敲终端、连远程装个sway或者i3加个状态栏内存能省下一大块速度肉眼可见地快。我给自己的定位是能触屏操作的终端机所以留在了Phosh但把动画全关了。6. 电源与内存把能待机改成能干活移动Linux的电源管理是最容易出玄学问题的地方也是体验好坏的分水岭。6.1 挂起为什么在平板上经常翻车Android手机的挂起机制是深度定制的很多设备在移植到Linux后挂起时WiFi会断、唤醒后时钟跳、甚至直接醒不过来。原因通常是内核的电源域和固件没完全对齐。我的策略很直接不追求深度挂起改成息屏不挂起用屏幕关闭来省电。6.2 关掉自动休眠的几种层次先看清默认行为systemctl status sleep.target suspend.target三种关法按力度递增# 一、只改logind的闲置行为 sudo nano /etc/systemd/logind.conf # IdleActionignore # HandleLidSwitchignore # 二、直接屏蔽挂起目标 sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target # 三、桌面层再兜底一层 gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type nothing gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type nothing我的做法是第二种加第三种。只改gsettings的最大问题是如果桌面组件崩了重启它可能自己恢复默认然后你某天放在桌上回来发现它睡死了。mask是系统级的更可靠。代价是待机耗电会明显上升一晚上大概掉10%到20%取决于WiFi状态。对我来说这个交换值。提示如果你的机器挂起后唤醒一切正常那就别学我保持默认更省电。这部分的取舍完全取决于你自己设备的适配状况。6.3 zram与虚拟内存配置4GB内存加滚动的浏览器不配zram基本没法用。zram是在内存里开一块压缩的交换区比写到存储上快得多同时又不磨损闪存sudo apt install zram-tools # /etc/default/zramswap ALGOzstd PERCENT50 PRIORITY100zstd的压缩比和速度平衡最好。分配50%的内存给zram实际能多出七八百兆可用空间开十几个终端标签加一个浏览器也不会卡死。如果你更相信传统swap文件可以在存储上开一个2G的swapfile但读写速度差很多而且闪存寿命是个考虑。我的建议是zram必开swapfile按需。6.4 发热与降频长时间编译或者开大网页机身右下角会明显发烫。可以换个governorsudo apt install cpufrequtils # 查可用governor cpufreq-info # 切成省电模式 sudo cpufreq-set -g powersavepowersave模式下日常使用完全够只有编译的时候我才切回ondemand。这台机器没有主动散热温度上来以后会自动降频与其让它被动降不如主动限一下反而更稳。7. 网络静态IP、DNS和无线断流的排查网络问题排起来最烦因为表现往往是时好时坏这一节讲的是我在Droidian上实际踩过的几类。7.1 NetworkManager下的静态IP配置Droidian默认用NetworkManager管网络。图形界面在Phosh里不太完善命令行反而更直接nmcli connection show nmcli con mod 你的WiFi名 ipv4.method manual \ ipv4.addresses 192.168.1.50/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns 223.5.5.5,119.29.29.29 nmcli con down 你的WiFi名 nmcli con up 你的WiFi名这里最容易出错的不是命令本身而是地址冲突。静态IP一定要选在路由器的DHCP池之外比如DHCP池是100到200你就用50。我有一次随手设了个150结果和手机抢地址两台设备轮流掉线排查了半小时才想到是这回事。7.2 DNS解析失败的常见原因热词里linux中配置dns出现的问题是个高频词典型表现是能ping通IP但打不开网页。大概率是/etc/resolv.conf被覆盖了。systemd-resolved和NetworkManager都会去写这个文件谁后写谁赢。先看它是软链还是实体文件ls -l /etc/resolv.conf resolvectl status如果是软链到/run/systemd/resolve/stub-resolv.conf那改DNS要在NetworkManager或者resolvectl层面改直接编辑resolv.conf会被冲掉。这个坑我踩过不止一次每次都是改了没用然后忘了是被覆盖又重新改一遍。7.3 无线省电导致的间歇断流表现为用着用着突然卡一下过几秒又好了或者息屏一会儿再打开发现WiFi断了。这是无线网卡的省电模式在起作用# 查当前状态 iw dev wlan0 get power_save # 关掉省电 sudo iw dev wlan0 set power_save off想永久生效就写个NetworkManager的dispatcher脚本每次连上WiFi自动执行。关掉省电后续航会稍微差一点但下载大文件和远程连接的时候稳太多了这个交换我觉得值得。8. 日用软件清单从浏览器到文件共享配置调完了最后的问题就是拿它干什么。8.1 轻量浏览器怎么选Chrome和Firefox在这台机器上都偏重尤其标签一多就开始换页。我试过几款轻量的Falkon基于QtWebEngine启动快但生态一般GNOME WebEpiphany跟Phosh的触摸体验配合最好缺点是兼容性偶有问题。Firefox装上ublock之后把硬件加速关掉反而是实际用下来最稳的——内存占用高但不炸。选浏览器的核心判断标准是你的常用网站能不能正常打开广告拦截一定要装在这台机器上它不是可选项是必需品少加载一个广告脚本就能省出几十兆内存。8.2 办公、笔记与阅读LibreOffice在这上面能跑但打开大文档会慢我一般只用Writer看轻量文档。真正高频的是纯文本和Markdown笔记Vim或者Obsidian都能用。PDF阅读推荐zathura轻到几乎没有存在感翻页流畅。这些软件的共同点是——不需要GPU加速不需要大量内存正好是这台设备的强项。8.3 终端工具链既然是Debian开发工具一应俱全sudo apt install git python3 python3-pip build-essentialDocker在arm64上也能装但资源占用不低跑一两个容器还行多了就吃紧。Go和Node这类语言环境装完记得把缓存目录挪到存储分区~/go/pkg和npm的缓存很快就能吃掉几个G。8.4 用Samba在平板和电脑间传文件这是让我日常用起来最爽的一块。热词里samba无法登陆也是高频问题多半是配置里的用户权限没对上。最小可用配置大致是这样[share] path /home/你的用户名/share browseable yes read only no valid users 你的用户名关键是valid users要写系统里真实存在的用户名而且这个用户必须先用smbpasswd -a设一个Samba独立密码。很多人卡在账号密码都对但就是登不上原因就是只改了系统密码没设Samba自己的密码库。配置完重启服务电脑上就能直接映射这个目录传文件比各种网盘绕一圈快多了。9. 踩坑清单几个文档里查不到的细节9.1 免密登录与ssh-agent不少人是拿平板当跳板连别的机器那SSH免密就很有用ssh-keygen -t ed25519 ssh-copy-id userhost但如果你的密钥设了passphrase每次登录都要输一遍在触屏上尤其烦。这时候用ssh-agenteval $(ssh-agent) ssh-add ~/.ssh/id_ed25519想开机自动加载就装keychain在shell的profile里调一次。至于sudo免密可以在/etc/sudoers.d/下建个文件写用户名 ALL(ALL) NOPASSWD: ALL但触屏设备上我建议别这么干——误触的几率比PC高留一道密码反而更安全。9.2 外接键盘鼠标与OTG通过USB-C的OTG转接可以接有线键鼠或者直接上蓝牙。实测蓝牙键盘的延迟在打字场景下完全可接受但要注意连接后虚拟键盘不自动收的问题前面5.3节说过。鼠标接上之后整个桌面体验会完全不一样右键菜单、拖拽窗口都正常了很多在纯触摸下别扭的操作突然就通了。9.3 我个人的几点经验两三周折腾下来如果只能给三条建议我会说第一把关键包锁住这是保命线第二zram一定要配4GB内存没它寸步难行第三别追求功能齐全想清楚这台设备在你手里负责什么角色然后把其他功能全砍掉。我最后留下的就只有浏览器、终端、文本编辑和SSH其他的都卸载了机器反而越用越顺。它不会变成一台iPad但作为一台带触屏的Linux终端它已经足够让我愿意每天开机。后续如果你想继续压榨可以研究一下怎么把开机自启的服务精简掉以及给Phosh换个更轻的合成器这两个方向都能再挤出一点性能。
返回列表