让 Ubuntu Touch 20.04 的系统分区可写入

近日,我尝试把Ubuntu Touch装入手机,以便取代x86服务器(家用时噪音太大)。刷机过程很顺利,电脑下载UBports Installer 汉化版,一路按提示操作即可,比刷安卓简单多了。

按网上现有教程,换了国内镜像源,更新了apt,装好nginx、Alist、AdGuard Home、AList等软件后,发现每次重启手机后,新装的这些软件的服务均未启动。ssh或者adb shell登陆上去后,手动启动各个服务又恢复正常。经过若干天排查后,终于找出问题原因。

原来是system分区为只读,导致开机时systemd试图启动这些服务时报错。而我sshadb登陆后又总是习惯先执行sudo mount -o remount,rw /,以可读写权限重新挂载system分区,所以才一直没找到造成问题的真正原因,浪费了好几天。

经多方查找,官方曾经提供解除只读的方法,sudo touch /userdata/.writable_image,实测发现对Ubuntu 20.4失效。后来在/etc/fatab文件中第一行发现/dev/root / rootfs defaults,ro 0 0,尝试将ro改为rw,重启后发现被复原。

在官方论坛找到一篇帖子证实了/etc/fatab确实会在系统启动时被覆盖。fstab getting overwritten?

绞尽脑汁在官方git库中各种搜索后,在<boot 分区>/ramdisk/scripts/halium 找到一行shell脚本: echo "/dev/root / rootfs defaults,ro 0 0" >>$FSTAB

最终解决方案为:

  • 打开刷机时用的电脑
  • 找到%APPDATA%\Roaming\ubports\lavender\Ubuntu Touch\boot-xxxxxxx.tar.xz并解压出boot.img
  • 解包boot.img,将其中/ramdisk/scripts/halium里第320行左右,找到echo "/dev/root / rootfs defaults,ro 0 0" >>$FSTAB,将其中的ro改为rw,保存后重新打包
  • 手机重启到fastboot模式(重启前按住音量-不放,直到完全黑屏只亮背光)(注意,刷入Ubuntu Toch会去掉[fastboot的图片](93976f283b08c951af37eaf379f903e0.jpg (800×517)),导致此处黑屏,但功能正常)
  • fastboot重刷boot分区fastboot flash boot /your/path/to/new/boot.img

经过以上处理,Ubuntu Touch系统分区(system)只读的特性被彻底抹除,日常使用体验(只用CLI、不用GUI)与Ubuntu桌面版别无二致。

总结近段日子,发现用手机刷Ubuntu Touch代替x86服务器有两大障碍,一是system分区太小,装不了多少软件。好在网上有linux给磁盘重新分区的教程,帮我把分区扩大为12G。第二大障碍每次重启系统都回复只读状态。经过全网搜索,未发现其他有效的解决方案,故特作此文记录,以备日后查询。

相关推荐
群联云防护小杜16 分钟前
企业级高防CDN选型指南
运维·服务器·人工智能·自动化·ddos
Xam_d_LM1 小时前
【Linux】Ubuntu 20.04 英文系统显示中文字体异常
linux·ubuntu
Johny_Zhao1 小时前
Linux服务器(CentOS/Ubuntu)接口Bond模式详解、配置指南及交换机对应接口的配置示例
linux·网络安全·信息安全·云计算·shell·cisco·huawei·系统运维·华三
chenzfp1 小时前
【运维】统信UOS操作系统aarch64自制OpenSSH 9.6p1 rpm包(含ssh-copy-id命令)修复漏洞
linux·运维·ssh
dessler1 小时前
代理服务器-Squid介绍和应用
linux·运维·nginx
Nightwish51 小时前
Linux随记(十八)
linux·运维·服务器
Hey! Hey!2 小时前
CentOS 7镜像源替换
linux·运维·centos
蠢货爱好者2 小时前
Linux中Shell脚本的常用命令
linux·运维·服务器
一张假钞2 小时前
Linux配置DockerHub镜像源配置
linux·运维·服务器
王道长服务器 | AWS2 小时前
EC2 实例详解:AWS 的云服务器怎么玩?☁️
服务器·云计算·aws