GNU/Linux >> Znalost Linux >  >> Linux

Je Grub nejlepším řešením bootloadingu? Existuje snadnější alternativa?

S GRUB2 mám dost špatné zkušenosti . Mohl bych říct (a řekl jsem) některé ošklivé věci o jeho návrhu a procesu vývoje. Zvláště se mi nelíbí jeho prostředky aktualizace:z jakéhokoli důvodu musí poloautomaticky aktualizovat několik skriptů – jeden nepřímo prostřednictvím druhého v řetězci – pro každou aktualizaci jádra – nebo mnoho dalších menších (a zdánlivě nesouvisejících) změny konfigurace.

To je v přímém kontrastu s předchozími zkušenostmi, které jsem měl s LILO – ke kterému vážně uvažuji o návratu – jelikož jsem s ním nikdy neměl problémy a jeho konfigurace byla celkem jednoduchá. Za prvé, jak si to pamatuji, stačilo mi aktualizovat (nebo spíše se to vždy aktualizovalo) jeden, jednoduše spravovaný konfigurační textový soubor pro každou aktualizaci jádra.

Jak tedy LILO funguje na moderním hardwaru s dnešními jádry? Jak GRUB? Jak fungují ostatní bootloadery? Musím splnit nějaké předpoklady, nebo je to jen o napsání konfiguračního souboru a spuštění lilo velení, jak na to rád vzpomínám za starých časů? Aktualizuje aktualizace balíčku jádra (Debian/Ubuntu) LILO jako u GRUB2?

Přijatá odpověď:

ELILO

Správa zavaděčů EFI pro Linux:pomocí ELILO

Je pro mě opravdu těžké rozhodnout, kterou část toho zkopírovat a vložit, protože je to všechno opravdu dobré, takže vás prosím, abyste si to přečetli.

Rod Smith

Vytvořil a spravuje oba gdisk a rEFInd .

Ale než to uděláte, rád bych se k tomu trochu vyjádřil. Výše uvedený odkaz ELILO je na jednu z mnoha stránek o zavádění UEFI, které najdete na rodsbooks.com od Roda Smithe. Je dokonalým technickým spisovatelem, a pokud jste někdy googlili téma spouštění UEFI a nakonec jste si nepřečetli něco jeho, bylo to pravděpodobně proto, že jste přeskočili několik nejlepších výsledků.

Linux UEFI boot

V zásadě může být linuxové jádro přímo spouštěno firmwarem.

Ve výše uvedeném odkazu zmiňuje EFI stub loader linuxového jádra – to je to, co byste podle mého názoru měli používat, protože umožňuje linuxové jádro volat přímo samotným firmwarem. Bez ohledu na to, co děláte něco je spouštěn firmwarem – a zní to, jako by něco bylo grub . Pokud firmware může přímo nahrát vaše jádro operačního systému, k čemu je dobrý bootloader? Firmware UEFI připojí oddíl GPT ve formátu FAT s příznakem esp tabulkou oddílů a spustí cestu, kterou tam uložil jako spouštěcí proměnnou UEFI v integrovaném paměťovém modulu flash. Takže jedna věc, kterou můžete udělat, je umístit linuxové jádro na tento oddíl FAT a uložit jeho cestu do této spouštěcí proměnné. Najednou je jádro své vlastní bootloader.

Bootloadery

Na systémech UEFI jsou bootloadery redundantní – včetně ELILO.

Problém, který měly zavaděče vyřešit, bylo, že systémy BIOS čtou pouze v prvním sektoru bootu označený oddíl a spustit jej. S jádrem o velikosti 512 bajtů je trochu obtížné udělat něco smysluplného, ​​takže běžnou věcí bylo napsat malý nástroj, který by mohl připojit souborový systém, kam jste uchovali aktuální jádro a zřetězené jej načíst.

Související:určit shell ve skriptu za běhu?

Ve skutečnosti bylo 512 bajtů často málo ani pro bootloadery. grub , například se ve skutečnosti řetězově zatíží dříve, než vůbec zřetězí vaše jádro, protože zaklíní jeho druhou fázi v prázdném prostoru mezi zaváděcím sektorem a prvním sektorem vašeho souborového systému. Je to trochu špinavý hack – ale fungovalo to.

Bootmanažeři

V zájmu snadné konfigurace však některé přechod mezi může být užitečný.

rEFInd od Roda Smithe se spouští jako aplikace EFI – jedná se o relativně nový koncept. Je to program, který je z disku spouštěn – a který se vrací – firmwarem. Funkce rEFInd vám umožňuje spravovat nabídky spouštění a poté vrátí výběr spouštění do firmwaru provést. Dodává se s ovladači souborového systému UEFI – například můžete použít zavaděč jádra EFI-stub loader na non-FAT oddíl (jako je váš aktuální /boot ). Správa je smrtelně jednoduchá – pokud je něco takového vůbec nutné – a přidává jednoduchost spustitelného systémového jádra k pohodlí konfigurovatelného bootmanageru.

Atomový směr

Jádro nepotřebuje symbolické odkazy – může mount --bind .

Pokud je na vašem / nějaká cesta kde byste měli zakázat symbolické odkazy, je to /boot . Osiřelý symbolický odkaz v /boot není druh problému, který byste kdy měli řešit. Přesto je dostatečně běžnou praxí nastavit propracované směrování v /boot několika distribucemi – i když je to příšerný nápad – za účelem zpracování aktualizací jádra a/nebo více konfigurací jádra.

Toto je problém pro systémy EFI ne nakonfigurován pro načítání ovladačů souborového systému (jako jsou ty, které jsou součástí balíčku rEFInd) protože FAT je celkově docela hloupý souborový systém a nerozumí jim.

Osobně nepoužívám ovladače souborového systému UEFI dodávané s rEFInd, i když většina distribucí obsahuje balíček rEFInd, který lze nainstalovat přes správce balíčků a zapomenout na použití jejich vlastního příšerného symbolického odkazu /boot config a zabalené ovladače souborového systému UEFI společnosti rEFInd.

Moje konfigurace

Kdysi jsem na to napsal sadu pokynů a zveřejnil jsem to sem, ale vypadá to takto:

% grep esp /etc/fstab && 
> ls /esp/EFI

LABEL=ESP          /esp  vfat defaults      0 1
/esp/EFI/arch_root /boot none bind,defaults 0 0 

arch_root/  arch_sqsh/  arch_xbmc/  BOOT/  ipxe/

Takže jsem ty dva řádky vložil do svého /etc/fstab ukazující na složku, kterou hodlám obsahovat /boot nové instalace linuxu a jsem téměř dělal starosti o celou věc. Také musím:

cat /boot/refind_linux.conf 

"Arch" "root=LABEL=data rootflags=subvol=arch_root,rw,ssd,compress-force=lzo,space_cache,relatime"

Kromě instalace refind-efi balíček přes pacman pro první z nich je to vše, co je potřeba k nastavení tolika samostatných instalací/konfigurací, kolik si přeji. Všimněte si, že většinu výše uvedeného řetězce tvoří možnosti připojení specifické pro btrfs specifikované jako parametry jádra. Typičtější /boot/refind_linux.conf bude pravděpodobně vypadat takto:

"Menu Entry" "root=/dev/sda2"

A to je vše.

rodsbooks.com

Pokud stále chcete ELILO, můžete najít pokyny k instalaci na výše uvedeném odkazu. Pokud chcete rEFInd, najdete odkazy na něj v prvním odstavci. V zásadě, pokud chcete provést jakoukoli konfiguraci spouštění UEFI, nejprve si přečtěte rodsbooks.com.

Související:N alternativa k sed, která podporuje unicode?
Linux
  1. Analyzujte linuxové jádro pomocí ftrace

  2. Nejlepší řešení pro archivaci dokumentů?

  3. Nejlepší způsob, jak zkompilovat jádro pro procesor I7?

  1. Proč je cPanel nejlepším řešením pro návrháře webových stránek

  2. Nejlepší webové linuxové servery

  3. Jak zkontrolovat HZ v terminálu?

  1. Linuxové jádro:5 nejlepších inovací

  2. Jaké jsou nejlepší způsoby provádění úloh blízkých real-time úlohám na OS/kernelu, který není v reálném čase?

  3. Nejlepší způsob, jak zabránit zaplnění kořenového systému, když selže připojení?