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?