Portál AbcLinuxu, 6. května 2025 06:17
Řešení dotazu:
2048s az 4095s - 1 oddil, velikost 1MiB, pridat priznak "bios_grub" 4096s az XXXMiB - 2 oddil, EFI, priznak "boot" a "esp"a nainstalovat pak gruby oba (variace kde neni potreba uvadet --target zalezi od toho kterej z vylucujicich se primarnich metabaliku mas, zda grub-pc ci grub-efi)
# pro Legacy grub-install --target=i386-pc /dev/sdX # pro UEFI grub-install --target=x86_64-efi /dev/sdX
Ono to půjde na nový (větší) disk, takže v prostoru problém nebude.Tak v tom případě vůbec netuším, co řešíš, myslel jsem, že jde o in-place konverzi. Vytvoříš na novém disku nové oddíly (jak velké? mně žere dohromady 100 MB nějaké HP SystemDiags které se bojím smazat + kopie aktuálního a upgradovaného BIOSu; GRUB samotný je malý, defaultně má asi 2 MB a když si uděláš vlastní image jen s potřebnými moduly, tak ~300 kB), zkopíruješ, upravíš fstab a hotovo, ne?
Nebude problém, když budu kopírovat oddíly z MBR do GPT?Nebude, ale já vždycky vytvořím nový filesystém a kopíruju soubory rsyncem (
--inplace --numeric-ids -avzhP
a možná ještě -HXS
).
Je dobré použít i parametr --exclude (sekce "Full system backup").
# rsync -aAXHv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /path/to/backup
Plus tedy i ty tvoje parametry. O těch se tam níže také píše.
sudo mount --bind / /mnt/zdroj sudo rsync ${parametry} /mnt/zdroj /mnt/cil
Jaká statická zařízení? V Live se pak podívám.
0xef
) a tam nainstalovat GRUB (grub-install --target=x86_64-efi --efi-dir=/efi …
, kde do /efi
je přimountován zmíněný EFI partition).
Doporučuji zůstat při MBR a jenom zajistit bootování z EFI system partition, pokud Vás MBR neomezuje (např. max. velikostí disku).
Pokud přecházíte na GPT z důvodu pořízení nového disku, tak je cesta jednoduchá: rozdělit disk, překopírovat data a nastavit GRUB (nebo jiný zavaděč).
grub> set root="(hd0,gpt2) grub> set prefix=(hd0,gpt2)/boot/grub grub> insmod normal grub> normalPo naběhnutí update-grub se provede bez chyby, ale po restartu skončím zase v grub shellu. Zkoušel jsem celý grub odebrat a znovu nainstalovat, ale se stejným výsledkem. Koukal jsem i do grub.cfg v EFI oddílu, ale i tam to vypadá správně.
search.fs správné-uuid root set prefix=($root)'/boot/grub' configfile $prefix/grub.cfgNějaké nápady? Já už jsem zacyklen ...
BootCurrent: 0000 Timeout: 1 seconds BootOrder: 0000,0001 Boot0000* devuan HD(1,GPT,f8ac0ac2-eb05-49cb-8ec4-fb30ef59a77f,0x800,0x200000)/File(\EFI\devuan\shimx64.efi) Boot0001* Hard Drive BBS(HD,,0x0)..GO..NO.........K.I.N.G.S.T.O.N. .S.A.2.0.0.0.M.8.2.5.0.G....................A.......................................&.hI}k5.....6..Gd-.;.A..MQ..L.5.0.0.2.6.B.7.6.8.4.9.7.D.6.B.3........BO
shimx64.efiAha, tak to ale musíš mít zaplý SecureBoot. Tímto příkazem bys měl ověřit zda ho máš enabled:
mokutil --sb-state
efibootmgr -v
jsou dvě verze efi a to:
Boot0000* Fedora HD(2,GPT,...)/File(\EFI\FEDORA\GRUBX64.EFI)
...
Boot0003* Fedora HD(2,GPT,...)/File(\EFI\FEDORA\SHIM.EFI)
A nejsem si teď jistý jestli se SHIM.EFI mohlo použít i když SecureBoot byl vyplý.
BootCurrent: 0000 Timeout: 1 seconds BootOrder: 0000,0001 Boot0000* devuan HD(1,GPT,f8ac0ac2-eb05-49cb-8ec4-fb30ef59a77f,0x800,0x200000)/File(\EFI\devuan\shimx64.efi) Boot0001* Hard Drive BBS(HD,,0x0)..GO..NO........u.K.I.N.G.S.T.O.N. .S.U.V.4.0.0.S.3.7.2.4.0.G....................A.................................>..Gd-.;.A..MQ..L.0.5.2.0.B.6.2.7.B.6.4.0.B.A.2.4. . . . ........BO..NO.........K.I.N.G.S.T.O.N. .S.A.2.0.0.0.M.8.2.5.0.G....................A.......................................&.hI}k5.....6..Gd-.;.A..MQ..L.5.0.0.2.6.B.7.6.8.4.9.7.D.6.B.3........BO
BootCurrent: 0002 Timeout: 1 seconds BootOrder: 0002,0000,0001 Boot0000* devuan HD(1,GPT,f8ac0ac2-eb05-49cb-8ec4-fb30ef59a77f,0x800,0x200000)/File(\EFI\DEVUAN\GRUBX64.EFI) Boot0001* Hard Drive BBS(HD,,0x0)..GO..NO.........K.I.N.G.S.T.O.N. .S.A.2.0.0.0.M.8.2.5.0.G....................A.......................................&.hI}k5.....6..Gd-.;.A..MQ..L.5.0.0.2.6.B.7.6.8.4.9.7.D.6.B.3........BO Boot0002* UEFI OS HD(1,GPT,f8ac0ac2-eb05-49cb-8ec4-fb30ef59a77f,0x800,0x200000)/File(\EFI\BOOT\BOOTX64.EFI)..BO
search.fs správné-uuid root set prefix=($root)'/boot/grub' configfile $prefix/grub.cfgmísto tamtoho, tak to proběhne OK?
Domnívám se, že starý grub by se z gpt nespustil a to ani do grub shellu.Spustil, pokud se při vytváření GPT nepoškodila stage1.5 (která je nainstalovaná za 1. sektorem, a kdysi se vešla do 31.5KiB když člověk neměl moc modulů.
Chyba je v tom, že grubová část na efi z nějakého důvodu automaticky nespustí tu část v boot na ext4Takže když při startu podržíš F11 (nebo co se u tebe mačká pro vstup do UEFI Boot Menu), tam vybereš "UEFI: tvůj OS", dáš enter, tak pak ti to hned skočí do grub shellu?
Já je přežil a žádné pomlaskávání nenastaloTak, že by to u tebe bylo podle pořekadla, že starého psa novým kouskům nenaučíš?
IMO příspěvek #22 je jediný důvod, proč dneska přecházet na EFI bootNemožnost bootovat legacy určitě není jediný důvod. Někdo chce SecureBoot nebo Sicherboot. To bez EFI neuděláš.
pytlíkovat od nadstavby k nadstavběKdyž si to hezky namaluješ (v příloze), tak u UEFI je o jeden krok méně - chybí Bootloader.
O bezpecnosti radsi nemluvit, protoze neexistujeMluvíš o MBR nebo EFI? Ty nedůvěřuješ SecureBoot a Sicherbootu? Je nějaká alternativa SecureBootu/Sicherbootu na MBR?
BTW: Bejvaly casy, kdy se i ten grub (lilo pochopitelne taktez) do MBR vesel celej, ze?Ne, nebejvaly. Vešla se tam stage1. Zbytek se nainstaloval do volného místa před první partition. Tohle „grub se najednou nevejde“ je způsobeno tím, že staré cfdisky (a asi i další nástroje) vyráběly 1. partition na sektoru 63, takže pro stage1.5 bylo jenom 31.5KiB místa. Takže když pak lidi začli do stage1.5 image strkat podporu pro RW ext4 a degradovaný RAID5 a další věci, tak to přestalo chodit. A nové cfdisky už zarovnávají partition na celé megabajty, takže se stage1.5 vejde.
[…] takže pro stage1.5 bylo jenom 31.5KiB místa. […]Tuším, že GRUB 2 dokonce odmítne vytvořit image pro BIOSy, pokud tuto velikost přesahuje.
Správa EFI souborů se mi zdá jednodušší.Pro správu EFI souborů jsem si musel napsat nástroj, protože distribuční nepočítá s tím, že bych chtěl mít zavaděč na víc než jednom disku. Ano, mám tak přemrštěné požadavky, že chci, aby systém nabootoval, i když odejde ten správný disk. Narozdíl od toho grub pro legacy boot má zápis zavaděče na disky dle seznamu a nebylo potřeba dělat nic dalšího, než ho nechat nainstalovat distribučním nástrojem na správu balíků Ergo: správa EFI souborů není jednodušší
(co má co vůbec zapisovat nějaké certifikáty při vypnutém secure bootu?)Za to přece nemůže UEFI. Když jsi mu dal příkaz na zapsání certifikátů, tak se zapsaly. Příkaz
efibootmgr
(s patřičnou volbou) ti taky zapíše do EFI Boot Manageru. Když intaluješ Windows tak si tam zase zapíše licenční klíč. Počítač musí poslouchat a když přikážeš, aby zapisoval, tak zapíše.
Počítač musí poslouchat a když přikážeš, aby zapisoval, tak zapíše.Jak který… Zrovna u EFI jsem se setkal s tím, že po několikátém nabootování takto zapsané informace zmízely. Zlatý BIOS, kde stačilo jen mít na disku magické číslo (0x55aa) a často i bez nutnosti jakékoliv další konfigurace to bootovalo.
po několikátém nabootování takto zapsané informace zmízely.Dneska aby člověk zálohoval i EFI partišnu
BTW: Normalne se chovajici HW ma bydefault nejaky poradi bootu, a pokud je z ceho nastartovat, tak nastartuje. Jediny co se ti tudiz muze stat je to, ze nastartuje neco jinyho nez bys chtel.Např. moje desktopová deska od ASUSu by default nebootuje, tedy, abych byl přesnější, bootuje jen z removable¹ médií. A navíc pokud odpojíte pevný disk (i pokud na něm není EFI partišna), nastavení pořadí i s disky zmizí a oživit to můžete jen z EFI shellu nebo jiného nástroje, který máte na removable disku. Hardware, který bootuje s EFI rozumně mi připadá jako poměrně vzácně se vyskytující věc. Některé počítače jsou vyloženě podivné. Např.:
(je to tablet)EFI na tabletu jsem ještě neřešil, to muselo být zajímavé dobrodružství
update-grub
.
Nemáte na disku více oddílů s daty GRUBu (jako např. jeden na EFI oddílu a druhé na systémovém/bootovacím)?
Dle prvního <pre>
to vypadá, že jste v emergency GRUB shellu (nebo jak se to jmenuje – prostě ten, který si nenačídá moduly z disku). V tom případě by mělo stačit přeinstalovat binárku GRUBU na EFI oddílu: grub-install --target=x86_64-efi --efi-dir=… --boot-dir=…
, protože si GRUb hledá data jinde než by měl.
(Doporučuji mít EFI i boot adresář stejné, tj. instalaci GRUBU přímo na EFI oddílu. Můžete potom vyměnit systémový oddíl bez nutnosti reinstalace GRUBu.)
Jako „poslední“ možnost by mohlo jít použít grub-mkimage
ručně a přibalit do obrazu GRUBu early config soubor, nebo ramdisk. To je spolehlivé řešení, ale ne zrovna nejjednodušší na pochopení. S EFI jsem to ještě nedělal. grub-mkimage
je program, který vygeneruje binárku GRUBu, což by v případě EFI targetu měl být spustitelný soubor (u BIOSu z toho vyjde blob, který musíte umístit na daný offset na disku (pokud se nepletu, tak začátkem na 2. sektor)).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.