Terminologia: ESP = minun FAT32 EFI -osioni.
Haluan:
- Pyydä itsenäistä GRUB-asennusta ESP: hen, joka ketju lataa toisen GRUB-käynnistyslataimen distro-juuritiedostojärjestelmääni (
/
). Minulla on tällä hetkellä useita distroja ilman GRUB-asennusta osioihini. Kukin on asennettu kokonaan omaan ext4/
. Haluan, että heillä kaikilla on oma toissijainen käynnistyslatain. - Hyväksyttävää on myös se, että ensisijainen ESP GRUB käynnistyy uudelleen / lataa käyttöjärjestelmän grub.cfg: llä. Itse tehokkaasti ketjujen lataaminen.
Mitä olen kokeillut:
- Löytyneisiin esimerkkeihin kuuluu GRUB-perinnön käynnistäminen GRUB2: sta ja päinvastoin, mutta ne eivät ”t” käytä UEFI- ja .efi-tiedostoja. GNU GRUB -dokumentaatiossa ei edes mainita UEFI: tä, ja Arch / Ubuntu / Gentoo-wikit tarjoavat vain vähäiset tiedot perusasennuksen (ei-ketjulataus) määrittämiseksi.
Toistaiseksi:
- Olen asentanut GRUB: n ESP: hen käyttämällä
grub-install
jagrub-mkconfig
.Test-käynnistys toimii. Tämä tarkoittaa, että/boot/grub
-kansioni on tyhjä, ja ESP: tä ei tarvitse asentaa käynnistyksen aikana / sen jälkeen. - I ”ve yritti asentaa toisen grub-kanavan
/boot/efi/
ja/boot/grub/
, mutta EFI-osaa ei asennettu,grub-install
valittaa, että kohde ei ole EFI-osio. Mutta koska minulla on jo asennettuna ensisijainen GRUB, sillä ei pitäisi olla väliä, että toissijainen GRUB on ext4-juurihakemistossa oikein? Grub osaa lukea ext4: ää. Yritin myös vaihtoehtoa--force
.
Joten näyttää siltä, että minun on löydettävä jokin tapa vakuuttaa asentaja siitä, että on hyvä asentaa grubx64.efi
kohtaan /boot/EFI
…
Jos joku on utelias ensisijaisen GRUB: n asentamiseen, kyse oli vain oikeiden vaihtoehtojen käyttämisestä grub-install
-palvelussa kunnioitus ESP: hen.
Vastaa
On toinenkin tapa: voit luoda valikkokohdan, joka kehottaa GRUB: a lataamaan toisen toissijainen grub.cfg, kuten yksi toisesta Linux-jakelusta.
Aloitin esimerkiksi Gentoo Linuxilla, josta asensin GRUB2: n MBR: ään (kone on liian vanha EFI: lle).
Asensin sitten NixOSin, jonka määritin luomaan grub.cfg: n sen omaan / boot (erillään Gentoon / boot ), mutta ilman GRUB: n asentamista.
Selventämiseksi grub-install
suoritettiin Gentoolta, mutta ei NixOS: sta.
Seuraavaksi, jotta voin käynnistää NixOS: n, lisäsin tämän Gentoon /etc/grub.d/40_custom iin:
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the "exec tail" line above. menuentry "NixOS" --class gnu-linux --class gnu --class os $menuentry_id_option "nixos-0aca58bc-8fdb-4a07-aa2f-56406bcf19b7" { set root="hd0,msdos4" configfile /nixos/root/boot/grub/grub.cfg }
Avain on rivi configfile /nixos/root/boot/grub/grub.cfg
. Se kertoo GRUB: lle ladata toisen grub.cfg-tiedoston. Suoritin sitten muutokset soveltamaan Gentoolta grub-mkconfig
.
Kun käynnistän ja valitsen NixOS , koko GRUB-käyttöliittymä päivittyy heijastavat NixOS grub.cfg, josta voin käynnistää käyttöjärjestelmän. Toisin kuin ketjun lataus, tässä kokoonpanossa käytetään yhtä GRUB-asennusta; se käyttää yksinkertaisesti toista kokoonpanoa.
Kommentit
vastaus
Olen oppinut, kuinka .efi
jokaisessa /
”minun. Toissijaisen GRUB-ketjulataimen viittaaminen ensisijaisesta kokoonpanosta on yksinkertaista:
menuentry "GRUB chainloader" { #Load grub on partition 7 of a gpt formatted drive. #It will reference its own modules and config. chainloader (hd0,gpt7)/path/to/bootloader/on/myOS/core.efi }
Tämän toissijaisen .efi
luominen grub-mkimage
koska grub-install
ei antanut minun kirjoittaa muuhun kuin FAT-tiedostojärjestelmään. Syntaksi on erittäin nirso ja se ei anna virheitä jos käytät väärää polkua, tarkista argumentit huolellisesti:
grub-mkimage -o /path/to/mounted/targetOS/efidir/core.efi --format=x86_64-efi "--prefix=(hd0,gpt7)/boot/grub" ext2 part_gpt
Yritin jättää GPT- tai ext2-tiedostojärjestelmämoduulit pois, mutta se ei toiminut kaksi moduulia olivat ehdoton vähimmäisvaatimus järjestelmälleni (ext2 toimii ext2 / 3/4: lle).
Etuliitekansio on paikka, josta toissijainen käynnistyslatain etsii moduuliensa kansiota ja määritystiedostoa. loi /boot/grub/
kullekin käyttöjärjestelmälle, joka sisältää x86_64-efi/
-kansion (kopioitu /usr/lib/grub)
ja grub.cfg
Voin muokata grub-mkconfig
-toimintoa, kun käyttöjärjestelmän testaus on poistettu käytöstä (tai vain manuaalisesti muokkaa sitä).
Asensin alun perin jokaisen käyttöjärjestelmän ilman GRUBia. Tämän menetelmän avulla sain asentaa toissijaiset GRUB-käynnistyslataimet kaikkiin käyttöjärjestelmiin käyttäen ensimmäistä käyttöjärjestelmää tai LiveCD: tä GRUB: n kanssa. Voin muuttaa kunkin käyttöjärjestelmän käynnistyskokoonpanoa itsenäisesti, ilman saastumisriskiä, koska ESP: tä ei koskaan asenneta.
Kommentit
- Entä jos haluat käyttää UUID: tä (hd0, gpt7) sijaan? Kuinka grub-mkimage-komentorivi näyttäisi siinä tapauksessa?
Vastaa
Yritän tehdä samanlainen asia i386-pc-grubille ja core.img-tiedoston ketjulataimelle ei toiminut, mikä antaa virheen: virheellinen allekirjoitus
Mutta olin oppinut, että grub core.img-tiedosto on yhteensopiva monikäynnistyksen kanssa, joten pystyin käynnistämään core.img: n:
multiboot (hd0,7)/core.img boot
ja saamaan uuden grub: n, sen moduulit ja alkuasetukset onnistuneesti.
Oletan, että ketjunlatauskomentosi epäonnistuu efillä muussa kuin efi-grubissa, joten tämä vika voidaan havaita ja palauttaa multibootiksi core.img: llä ennen käynnistyskomentoa.
.efi
, joka osoittaa omaansa grub.cfg. Olen ' m katsellengrub-mkimage
kanssamultiboot
taichainloader
mutta toistaiseksi en ole pystynyt ' luomaan toimivia toissijaisia.efi
taicore.img
.