Portál AbcLinuxu, 5. května 2025 15:20
s GPT na HP je to opravdu potreba?Je to HP z 2013, takže nejspíš GPT ještě neumí, a měl jsem divné problémy i na ještě starších počítačích (ale tehdy jsem to ještě neoddebugoval přesně k této příčině, tak nevím). Když jsem tam měl MBR bez nastavené bootable partition, tak to nefungovalo, nastavením se to opravilo.
Je to HP z 2013, takže nejspíš GPT ještě neumíMám HP ProBook z roku 2012, a UEFI boot z GPT vie. Ale bolo to treba prepnúť vo Firmware (UEFI, BIOS, jedno ako to voláme).
kam si tu svoji cast nacpe misto do MBRA co je teda v MBR? Nebo jak to legacy bootuje? Myslel jsem, že legacy vezme MBR a spustí ho, tak stage1 musí být tam (a to je jedna z věcí, co se dělá při grub-install).
grub-mkimage(1)
). To děláme většinou pokud chceme podepsat tento soubor (a to včetně konfigurace, modulů, třeba i jádra) apod. Běžnější přístup je do tohoto spustitelného souboru dát GRUB bez modulů nebo jen s minimem modulů a konfigurace a GRUB si moduly a konfiguraci musí získat z disku (v běžícím systému běžně /boot/grub
).
GRUB s klasickým BIOSem funguje tak, že BIOS nakopíruje prvních 512 bajtů disku (tzv. MBR, tedy master boot record – to nesouvisí s dělením disku, u GRUBu se tomu říká boot.img
) do RAM a skočí na jejich začátek. Ty nakopírují (asi pomocí BIOSových přerušení, opravdu netuším, protože jsem se o tuhle část nemusel nikdy moc zajímat) další úsek disku do RAM a spustí ho. Tento úsek je dlouhý maximálně 32 kiB a je to obdoba toho EFI spustitelného souboru: můžete si tam přibalit konfiguraci, moduly a další, ale je velmi obtížné se do těch 32K vejít. Potom se většinou pokračuje načtením konfigurace a modulů, teď už ze souborového systému, jehož obladač je součástí těchto 32K dat. Při bootování s dosovskou tabulkou jde o část disku hned za MBR.
Spousta lidí se chybně domnívá, že s EFI musí používat GPT a s BIOSem musí používat dosovskou tabulku oddílů. Ve skutečnosti to vypadá tak, že klasický BIOS se vůbec nezajímá o rozdělení disku. Pouze přečte první sektor a pokud končí 55AAhex, spustí ho. Pokud ne, hledá na dalších discích. EFI se o rozdělení disku naopak opravdu zajímá, ale nemělo by mít problémy s dosovskou tabulkou, pokud tam má svůj oddíl s příslušně nastaveným typem. Potom tu máme možnost mít na jednom disku GPT a nezávislou dosovskou tabulku zároveň, ale o to se tu nebudu moc zajímat.
Pokud chceme bootovat s klasickým BIOSem z GPT, není to problém. GPT první sektor disku rezervuje jako „Protective MBR“. To můžeme vyplnit nulami nebo například tam vytvořit dosovskou tabulku. Vzhledem k tomu, že BIOSu je použití GPT úplně jedno a zkouší bootovat i z takového disku, může tam být nainstalován GRUB. Rozdíl je v tom, že nemůžeme v tomto případě uložit těch 32 kiB kódu hned za MBR, protože v tomto místě má data GPT. Proto vytvoříme nový oddíl (aby software, který pracuje s GPT o těch datech věděl) a do něj uložíme image GRUBu. Bootování dál pokračuje stejně jako u dosovské tabulky.
Boot pomocí: BIOS ┌──────┐ ┌─────────────────┐ │ BIOS │ → │ MBR (1. sektor) │ ─ ─ ─ ─ ─ ─┐ └──────┘ └─────────────────┘ čte přímo „boot.img“ │ z disku ┌─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─┘ ↓ ┌──────────────┐ ┌───────────────────┐ ┌───────┐ │ oněch 32 kiB │ → │ další moduly z FS │ → │ jádro │ └──────────────┘ └─── (volitelné) ───┘ └───────┘ EFI ┌─────┐ ┌──────────────────────┐ │ EFI │ → │ EFI executable GRUBu │ ─┐ └─────┘ └──────────────────────┘ ┌─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─┘ ↓ ┌───────────────────┐ ┌───────┐ │ další moduly z FS │ → │ jádro │ └─── (volitelné) ───┘ └───────┘
GRUB s klasickým BIOSem funguje tak, že BIOS nakopíruje prvních 512 bajtů disku (tzv. MBR, tedy master boot record – to nesouvisí s dělením disku, u GRUBu se tomu říká boot.img) do RAM a skočí na jejich začátek.se přesně snažím říct a tohle
Spousta lidí se chybně domnívá, že s EFI musí používat GPT a s BIOSem musí používat dosovskou tabulku oddílů.jsem psal v #9 (Já mám tuším normálně MBR rozdělení a bootuju z toho i UEFI. („MBR rozdělením“ jsem myslel DOS label nebo jak se tomu správně říká))
Ty nakopírují (asi pomocí BIOSových přerušení, opravdu netuším, protože jsem se o tuhle část nemusel nikdy moc zajímat) další úsek disku do RAM a spustí ho.Ještě to umí „blocklists“, což se použije, pokud se to tam nevejde, ale nikdy mi to nefungovalo (a GRUB píše že to nemusí fungovat, tipuju že to má stejné problémy jako LILO, tj. že se to rozbije když soubor někdo přesune).
Tento úsek je dlouhý maximálně 32 kiBNení, to bývalo na starých discích (např. cfdisk z Ubuntu 12.04 a starší), kde první oddíl začínal na 63. sektoru. Dneska se začíná na megabajtu. A GRUB na těchto starých discích měl problémy, že se tam nevešel když jsi potřeboval víc modulů, třeba pro RAID.
Ve skutečnosti to vypadá tak, že klasický BIOS se vůbec nezajímá o rozdělení disku. Pouze přečte první sektor a pokud končí 55AAhex, spustí ho.Bohužel ne, jsou BIOSy (třeba ten EliteBug o kterém píšu výše), co se snaží načíst partition table a najít bootable flag.
Není, to bývalo na starých discích (např. cfdisk z Ubuntu 12.04 a starší), kde první oddíl začínal na 63. sektoru. Dneska se začíná na megabajtu. A GRUB na těchto starých discích měl problémy, že se tam nevešel když jsi potřeboval víc modulů, třeba pro RAID.
grub-mkimage
nebo jiný nástroj si mně někdy postěžoval, že je image moc velký a nevytvoří ho. Nevím, jak je na tom GRUB teď.
Zkusil jsem to, píše:
grub-mkimage: error: core image is too big (0xae240 > 0x78000).Takže limit je kolem ½ megabajtu. Nevím, proč si pamatuji 32K (možná starší verze, možná něco jiného).
Bohužel ne, jsou BIOSy (třeba ten EliteBug o kterém píšu výše), co se snaží načíst partition table a najít bootable flag.Ano, to jsem opomenul. Tohle je dost nepříjemné.
ok, beru zpet => pri Legacy boot z "Disku s GPT" je take opravdu boot.img v MBR, rozdil oproti "Disku s MSDOS" je jen v tom ze core.img je v tom bios_grub oddilu misto v prazdnem miste mezi MBR a 1oddil...kam si tu svoji cast nacpe misto do MBRA co je teda v MBR? Nebo jak to legacy bootuje? Myslel jsem, že legacy vezme MBR a spustí ho, tak stage1 musí být tam (a to je jedna z věcí, co se dělá při grub-install).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.