nfsroot
Technologie dynamického ramdisku, zavedená v září 2019 posunula disklessovou infrastrukturu na zcela jinou úroveň, protože umožnila zjednodušit konfiguraci zavaděče[1] a soustředit konfiguraci veškeré disklessové infrastruktury[2] do jednoho adresáře verzovaného přes git.
Princip
Sestavení dynamického ramdisku, který předá zavaděč spolu s jádrem přes PXE při zavádění po síti, musí obsahovat jen to, co je nezbytné pro nahození sítě.
Součástí instalačního balíku initramfs-tools je skript nfs, který je poněkud zastaralý. Proto používáme jeho upravenou verzi, která umožňuje ladění disklessového systému on-the-fly. Kterou stačí umístit do adresáře /etc/initramfs-tools/scripts
– během sestavení ramdisku mají soubory z adresáře /etc/initramfs-tools
přednost před defaultními soubory, které můžete najít v adresáři /usr/share/initramfs-tools/
Dále je potřeba skript nfsroot, který se spouští ve fázi top, ale jen pokud se systém zavádí před NFS!
/etc /initramfs-tools /conf.d /hooks enable-wireless <-- hook pro zahrnutí modulů a aplikací potřebných pro Wi-Fi cachefs <-- OBSOLETE hook pro zahrnutí modulů a aplikace mcachefs crypto <-- klíčový hook pro utility s nimiž pracuje autonomní Half-Diskless nfs4 <-- hook pro zahrnutí modulů pro NFSv4 omit <-- hook pro vyřazení nadbytečných modulů initramfs.conf /scripts /nfs-top enable_wireless <-- skript pro nahazování Wi-Fi nfsroot <-- hlavní skript pro stažení konfigurace z TFTP nfs <-- upravený skript pro zavedení systému přes NFS wpa_supplicant.conf <-- konfigurace pro Wi-Fi
/conf/conf.d/nfsroot <-- konfigurační soubor, který stáhl nfsroot /scripts _sdileno <-- soubor sdílených funkcí, který stáhl skript _functions functions <-- soubor sdílených funkcí, který přetáhl skript _functions /init-bottom ORDER udev /init-top ORDER all_generic_ide blacklist keymap udev local /local-bottom ORDER ntfs_3g /local-premount ORDER btrfs ntfs_3g resume nfs <-- upravený soubor /nfs-bottom ORDER crypto <-- skript, který stáhl nfsroot jako 4. overlay <-- skript, který stáhl nfsroot jako 5. /nfs-premount ORDER _functions <-- skript, který stáhl nfsroot jako 1. debug <-- skript, který stáhl nfsroot jako 2. findswap <-- skript, který stáhl nfsroot jako 3. /nfs-top ORDER enable_wireless <-- 1. nfsroot <-- 2.
Původně se totiž předával seznam vrstev a další proměnné prostřednictvím parametrů jádra. K těm se dá velice snadno dostat výpisem obsahu souboru /proc/cmdline
, ale pokud došlo k nějaké chybě při zápisu, skončil systém ve stavu, který vyřešil jen manuální restart přímo na místě.
Dynamický ramdisk pracuje s konfigurací, kterou si stahuje buď na základě předaného parametru name=
, nebo konfigurace sítě z DHCP, přidělené na základě MAC adresy. V případě, že se v konfiguraci objeví nějaká chyba, např. překlep v URL vrstvy sdílené před NFS, přeskočí neplatnou položku a pokračuje dál v zavádění.
Dynamický ramdisk vyřešil také otázku zavaděčů, protože se pracuje se stejnou konfigurací bez ohledu na to, který zavaděč a jakým způsobem jádro spustil. Nezáleží tedy na tom, je-li jádro zavedeno přes Legacy či UEFI PXE, nebo ho zavedl lokálně instalovaný Grub.
Díky tomu se administrace všech strojů disklessové infrastruktury soustředila do jediného místa a několika málo konfiguračních souborů. Většina strojů si vystačí s generickou konfigurací. Jenom stroje, které tvoří specifickou součást disklessové infrastruktury mají konfiguraci vlastní.
Také úprava konfigurace systému je velice snadná. Vše se řeší přes vrstvy. Základní vrstva, ve které jsou systémové soubory a distribuční software je u všech strojů stejná. A konfigurace se mění pouze tím, že se nad ní použije jiná vrstva.
Např. rozdílné metody ověřování řeší dvě velice tenké vrstvy, které obsahují pouze konfigurační soubory. Prostřednictvím vrstvy isolate lze velice elegantním způsobem získat stroj ideální ke zkouškám, kde je dostupný veškerý software ale přístup do sítě omezen jen na vyhrazené stroje.
Dynamický ramdisk také umožnil vytvořit technologii autonomního Half-Disklessu. [3]
Princip
Základní skript dynamického ramdisku, který stahuje konfiguraci stroje z TFTP serveru. Používá se od září 2019. Obsahuje čtyři základní funkce:
- tftp_download
- Pomocná funkce pro stažení konfiguračního souboru
- script_download
- Pomocná funkce pro stažení dalších skriptů
- get_script
- Stahuje skripty
- find_nfsroot
- Stahuje konfiguraci
Od nasazení tohoto skriptu není nutné aby byly skripty spouštěné v dalších fázích zavádění (findswap, overlay, crypto, aj.) součástí komprimovaného ramdisku.
Netýká se to skriptu enable_wireles, nezbytného pro nahození sítě, který se spouští (stejně jako tenhle skript ve fázi nfs-top! |
Verze
MD5SUM | Velikost kB | Datum vytvoření | |
---|---|---|---|
2f7de9c79c2d55a6abd01536ac1bac1f | 2320 | 2019-09-07 | první verze (bullseye) |
6bd8069b4436e5187e00c1bd604af0c9 | 2349 | 2021-01-26 | druhá, vývojová verze původního skriptu, kterou (ne)servíruje DHCP, rozšířená o podporu pro stahování skriptů z různých TFTP lokací |
bf448e064d383fadf1f5664cfef76d70 | 2497 | 2021-01-26 | třetí produkční verze (bullseye) |
658068280627daebb75ad5511ffded4e | 2503 | úno 12 2021-02-12 | čtvrtá, produkční verze (bookworm) s upravenou podmínkou |
- ↑ Více v kapitole Zavádění bezdiskových strojů.
- ↑ Viz – Přehled vývoje infrastruktury pro diskless Debian na katedře DCE.
- ↑ Aleš Kapica (*1969) Jak jsem se dostal k vývoji disklessové infrastruktury – dokončení:
- Aleš Kapica (*1969), psáno 7. až 9. ledna 2024