让 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。第二大障碍每次重启系统都回复只读状态。经过全网搜索,未发现其他有效的解决方案,故特作此文记录,以备日后查询。

相关推荐
A小辣椒2 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒6 小时前
TShark:基础知识
linux
AlfredZhao8 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux