在Thinux中修改系统

Image

我们的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升级过程中断导致系统故障——我们的更新系统能够妥善处理突然断电等异常情况。