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 ja grub-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

  • Ymmärrän, tähän viittasin kohdassa 3: " Ketju latautuu itse ". Löysin tämän menetelmän etsittäessä, mutta vastasin itseäni, kun ' haluan ketjuttaa toisen .efi, joka osoittaa omaansa grub.cfg. Olen ' m katsellen grub-mkimage kanssa multiboot tai chainloader mutta toistaiseksi en ole pystynyt ' luomaan toimivia toissijaisia .efi tai core.img.

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.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *