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.
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í.
Postup
- Root read-only v
/etc/fstab– u kořenového i dalších oddílů příznakro:
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.
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.
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 naro. - Cokoli, co má přežít restart, musí ležet na read-only části – tmpfs se při každém startu vyprázdní.