在Thinux中修改系统

我们的Neo和Micro系列产品均预装了Thinux嵌入式Linux操作系统。
Thinux基于Ubuntu Linux构建。截至本文撰写时,Micro 5基于Ubuntu 20.04.4 LTS,Micro 6基于Ubuntu 22.04.1。然而,Ubuntu与Thinux之间存在若干显著差异。其一是我们包含了针对自身硬件的专用驱动程序,这些驱动程序在上游软件仓库中并不提供。我们还内置了保护硬件免受损害的系统服务。对于习惯使用带BIOS的PC用户而言,这可能显得有些陌生。英特尔和AMD生产的处理器通常具备良好的自我保护能力——当接近过热时,它们会降低运行速度并关闭部分核心。在最坏情况下,它们会与BIOS协同工作,直接切断计算机电源而非烧毁硬件。而ARM处理器目前尚未具备同等级别的保护机制。ARM系统使用的uboot引导加载程序在将控制权移交Linux后便不再驻留内存,因此无法在后台运行以保护硬件组件免受热损伤或其他损害。
正因如此,当客户联系我们要求禁用或更换基于ARM产品的Thinux系统时,我们必须告知这将导致硬件保修失效。此项政策与基于Android的智能手机制造商处理引导加载程序解锁请求的条款一致。若您的设备基于ARM架构,必须通过电话或书面形式联系我们获取系统root密码,且在提供密码前,我们必须将您的设备标记为保修失效状态。
Thinux与Ubuntu之间的主要区别在于Thinux的根文件系统以只读模式挂载。这意味着您无法使用apt等命令修改操作系统。若您拥有root密码,可以对/etc和/var目录进行修改。即使用户没有root密码,以root权限运行的进程仍会修改/etc和/var。这些变更实际上并非存储在/分区,而是保存在/overlay分区。您可以在kernel.org上查阅关于覆盖文件系统的更多说明。
如需修改根目录/,必须先将/文件系统以读写模式重新挂载。请在终端中执行以下命令:
su -(请输入root密码)umount -l /etcumount -l /varmount -o rw,remount /
现在您可以对/进行修改。完成操作后,重启系统即可使根文件系统恢复读写模式。
假设您希望永久禁用Thinux的只读根文件系统特性,需要对/etc/fstab进行如下修改。首先按前述代码段所示延迟卸载/etc。典型的/etc/fstab文件内容如下:
proc /proc proc defaults 0 0
LABEL=thinux / ext4 defaults,ro,noatime 0 1
LABEL=data /overlay data defaults,noatime 0 2
mount_over /etc over defaults,x-systemd.requires-mounts-for=/overlay 0 0
mount_over /var over defaults,x-systemd.requires-mounts-for=/overlay 0 0
mount_over /home over defaults,x-systemd.requires-mounts-for=/overlay 0 0
mount_over /tmp over defaults,x-systemd.requires-mounts-for=/overlay 0 0
/overlay/swapfile swap swap pri=-1,x-systemd.requires-mounts-for=/overlay 0 0
将其修改为:
proc /proc proc defaults 0 0
LABEL=thinux / ext4 defaults,rw,noatime 0 1
LABEL=data /overlay data defaults,noatime 0 2
#mount_over /etc over defaults,x-systemd.requires-mounts-for=/overlay 0 0
#mount_over /var over defaults,x-systemd.requires-mounts-for=/overlay 0 0
mount_over /home over defaults,x-systemd.requires-mounts-for=/overlay 0 0
mount_over /tmp over defaults,x-systemd.requires-mounts-for=/overlay 0 0
/overlay/swapfile swap swap pri=-1,x-systemd.requires-mounts-for=/overlay 0 0
为何采用只读根文件系统?因为我们超过99%的客户无需在计算机上安装新软件。他们将设备用作瘦客户端或云计算机——这意味着主要通过RDP客户端或网页浏览器完成工作。预装的LibreOffice等软件已足够满足需求。相较于使用apt逐个更新软件包的方式,我们现在能够像处理二进制数据块一样一次性升级整个根文件系统。这类似于Android或iOS等嵌入式操作系统的更新机制(区别在于它们包含应用商店,而我们不提供)。该机制使我们能够在发布更新前,在自有硬件上进行全面测试,确保更新中的所有变更和刷新应用程序能完美协同工作。同时还能避免因apt或dpkg升级过程中断导致系统故障——我们的更新系统能够妥善处理突然断电等异常情况。