Apportare Modifiche in Thinux

Image

La nostra gamma di prodotti Neo e Micro viene fornita con il nostro sistema operativo Thinux Embedded Linux preinstallato.

Thinux è basato su Ubuntu Linux. Al momento della stesura di questo articolo, è basato su Ubuntu 20.04.4 LTS in Micro 5 e Ubuntu 22.04.1 in Micro 6. Tuttavia, ci sono alcune differenze significative tra Ubuntu e Thinux. Una è che includiamo driver specifici per il nostro hardware, che non sono disponibili nei repository upstream. Includiamo anche servizi di sistema che proteggono l'hardware da danni. Questo potrebbe sembrare strano a chi è abituato a usare PC con un BIOS. I processori prodotti da Intel e AMD di solito sono abbastanza bravi nell'autopreservazione – riducono la velocità e spengono alcuni core quando sono vicini al surriscaldamento. Nel peggiore dei casi, collaborano con il BIOS per spegnere bruscamente il computer piuttosto che farlo bruciare. Questo livello di protezione non è ancora disponibile con i processori ARM. Il bootloader uboot utilizzato con i sistemi ARM non rimane in memoria una volta trasferito il controllo a Linux, e quindi non funziona in background per proteggere i componenti hardware da danni termici o di altro tipo.

Ecco perché, quando i clienti ci contattano per disabilitare o sostituire Thinux sui nostri prodotti basati su ARM, dobbiamo informarli che ciò comporterebbe l'annullamento della garanzia dell'hardware. Questa politica è in linea con quanto fanno i produttori di telefoni cellulari basati su Android, quando li contatti per sbloccare i bootloader. Devi chiamarci o scriverci per ottenere la password di root del sistema, e dobbiamo segnare il tuo dispositivo come fuori garanzia prima di darti la password, se il tuo dispositivo è basato su ARM.

La modifica principale tra Thinux e Ubuntu è che il file system root di Thinux è montato in sola lettura. Ciò significa che non puoi usare apt e altri comandi per apportare modifiche al sistema operativo. Se hai la password di root, puoi apportare modifiche a /etc e /var. Anche quando l'utente non ha la password di root, i processi che vengono eseguiti con privilegi di root apportano modifiche a /etc e /var. Queste modifiche in realtà non sono memorizzate nella partizione /, ma nella partizione /overlay. Puoi leggere di più sul filesystem overlay su kernel.org.

Per apportare modifiche a /, devi prima rimontare il filesystem / in modalità di lettura-scrittura. Ecco i comandi che devi eseguire su un terminale:

su - # inserisci la password di root
umount -l /etc
umount -l /var
mount -o rw,remount /

Ora puoi apportare modifiche a /. Dopo aver finito il tuo lavoro, puoi riavviare il sistema per riportare il filesystem root in modalità ro.

Supponiamo che tu non voglia più utilizzare la funzionalità di root in sola lettura di Thinux. Per disattivarla permanentemente, dovrai apportare alcune modifiche a /etc/fstab. Innanzitutto, esegui lo lazy umount di /etc come ti abbiamo mostrato nel segmento di codice precedente. Il tuo tipico file /etc/fstab sarà simile a questo:

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

Modificalo in modo che appaia così:

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

Quindi, perché utilizziamo un filesystem root in sola lettura? Più del 99% dei nostri clienti non ha bisogno di installare nuovo software sui propri computer. Utilizzano i loro computer come thin client o cloud computer – il che significa che utilizzano principalmente il client RDP o il browser web per lavorare. Il software preinstallato come LibreOffice è sufficiente per portare a termine il loro lavoro. Ora, invece di aggiornare i loro computer usando apt, che aggiorna singoli pacchetti, siamo in grado di aggiornare l'intero file system root in un colpo solo, come un blob binario. Questo è simile a come altri sistemi operativi embedded come Android o iOS si aggiornano (tranne che loro hanno app; noi no). Questo ci permette di testare gli aggiornamenti che rilasciamo in modo molto approfondito sul nostro hardware, prima del rilascio, e di garantire che tutti i cambiamenti e le applicazioni rinnovate nell'aggiornamento funzionino bene insieme. Siamo anche in grado di impedire che i computer degli utenti diventino disfunzionali perché un aggiornamento apt o dpkg è stato interrotto a metà – il nostro sistema di aggiornamento è in grado di gestire con garbo spegnimenti improvvisi.