Read-only root na Raspbianu, který přežije studené vypnutí

návod · linux

Raspberry Pi se systémem na SD kartě má jednu slabinu: studené vypnutí (vytažení ze zásuvky) může poškodit souborový systém uprostřed zápisu. Zařízení pak nenabootuje. Řešením je připojit kořenový i ostatní souborové systémy jen pro čtení a zápisy přesměrovat do paměti.

možná zastaralé Od zveřejnění uplynuly víc než dva roky. Obsah nemusí platit.
01

Princip

Systém při startu připojí root read-only. Vše, co za běhu potřebuje zapisovat (/tmp, /var/log, běhový stav), se přesměruje do tmpfs v paměti, která se při startu vytvoří prázdná. Po vypnutí ze zásuvky tak není co poškodit – na kartě se za běhu nic nemění.

02

Postup

  • Root read-only v /etc/fstab – u kořenového i dalších oddílů příznak ro:
PARTUUID=xxxxxxxx-02  /  ext4  ro,noatime  0  1
  • Zapisovatelné adresáře do tmpfs:
tmpfs  /tmp      tmpfs  nosuid,nodev  0  0
tmpfs  /var/log  tmpfs  nosuid,nodev  0  0
tmpfs  /var/tmp  tmpfs  nosuid,nodev  0  0
  • Vypnout swap a zápisové služby, které by na read-only systému selhaly nebo chtěly na kartu zapisovat (swap, ukládání stavu, pravidelné zápisy logů na disk).
  • Ošetřit části, které zápis očekávají – přesměrovat je na tmpfs symlinkem nebo bind-mountem, aby systém i tak nabootoval a běžel.
03

Master image a hromadné nasazení

Když jeden kus funguje, udělá se z něj předloha:

  • z hotové karty se vytvoří image (bitová kopie);
  • image se rozkopíruje na desítky karet;
  • na každém kusu se doplní jen to, co je pro dané místo specifické – typicky URL, kterou má zařízení zobrazovat.

Nasazení na místě je pak triviální: kartu zasunout, zapnout, nic dalšího neřešit.

04

Na co si dát pozor

  • Aktualizace nebo změna konfigurace vyžaduje dočasné přepnutí root do režimu read-write (mount -o remount,rw /) a po úpravě zpět na ro.
  • Cokoli, co má přežít restart, musí ležet na read-only části – tmpfs se při každém startu vyprázdní.

← zpět na Objevuj