在Thinux中进行更改

![Image](/s/image/making-changes-in-thinux/making-changes-in-thinux.webp)

我们的Neo和Micro系列产品预装了我们的Thinux嵌入式Linux操作系统。

Thinux基于Ubuntu Linux。在撰写本文时,Micro 5上基于Ubuntu 20.04.4 LTS,Micro 6上基于Ubuntu 22.04.1。然而,Thinux在某些重要方面与Ubuntu不同。首先,我们包含了针对我们硬件的特定驱动程序,这些在上游软件仓库中不可用。我们还包含了保护硬件免受损坏的系统服务。对于习惯了带有BIOS的PC的人来说,这可能看起来不寻常。Intel和AMD处理器具有内置的热保护功能:当接近过热时,它们会降低时钟速度并关闭一些核心。在最坏的情况下,处理器和BIOS会突然断电以保护计算机免受损坏。ARM处理器尚未提供这种级别的保护。ARM系统上使用的U-Boot引导加载程序在将控制权移交给Linux后不会留在内存中,因此它不会在后台保护硬件组件免受热损坏或其他损坏。

因此,当客户要求我们在基于ARM的产品上禁用或替换Thinux时,我们会告知他们这将使硬件保修失效。此政策类似于Android手机制造商对解锁引导加载程序的政策。要获取系统root密码,您必须致电或写信给我们。如果您的设备基于ARM,我们必须在给您密码之前将其标记为保修失效。

Thinux与Ubuntu的主要区别在于Thinux以只读方式挂载其根文件系统。因此,您无法使用apt和其他命令对操作系统进行更改。如果您有root密码,您可以更改/etc和/var。以root权限运行的进程也会更改/etc和/var,即使用户没有root密码也是如此。Thinux将这些更改存储在/overlay分区中,而不是/分区中。您可以在kernel.org上阅读有关overlay文件系统的更多信息。

要更改/,您必须首先以读写模式重新挂载/文件系统。在终端中运行以下命令:

su - # enter the root password when prompted
umount -l /etc
umount -l /var
mount -o rw,remount /

现在您可以更改/了。完成后,重新启动系统以将根文件系统恢复为只读(ro)模式。

如果您不再想使用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客户端或Web浏览器中完成。预装的软件(如LibreOffice)足以满足他们的工作需求。我们不是使用apt更新单个软件包,而是一次性将整个根文件系统作为单个二进制镜像进行升级。其他嵌入式操作系统(如Android和iOS)也以类似方式更新(尽管它们有应用程序而Thinux没有)。这使我们能够在发布之前在我们自己的硬件上彻底测试每个更新,并确保更新中的所有更改和更新的应用程序协同工作良好。它还可以防止用户的计算机在apt或dpkg升级中断时变得无法使用,因为我们的更新系统可以安全地处理突然断电的情况。