10.4. Bruke GRUB til å sette opp oppstartsprosessen

[Note]

Note

Hvis systemet ditt har UEFI støtte og du ønsker å starte LFS med UEFI, bør du hoppe over denne siden og konfigurere GRUB med UEFI støtte ved å bruke instruksjonene i BLFS siden.

10.4.1. Introduksjon

[Warning]

Warning

Å konfigurere GRUB feil kan gjøre systemet ditt ubrukelig uten en alternativ oppstartsenhet som en CD-ROM eller oppstartbar USB-stasjon. Denne delen er ikke nødvendig for å starte opp LFS systemet. Du kan bare endre din nåværende oppstartslaster, f.eks. Grub-Legacy, GRUB2 eller LILO.

Sørg for at en nødoppstartsdiskett er klar til å redde datamaskinen hvis datamaskinen blir ubrukelig (ikke-oppstartbar). Hvis du ikke allerede har en oppstartsenhet, kan du opprette en. For at prosedyren nedenfor skal fungere, så må du hoppe til BLFS og installere xorriso fra libisoburn pakken.

cd /tmp
grub-mkrescue --output=grub-img.iso
xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso

10.4.2. GRUB navnekonvensjoner

GRUB bruker sin egen navnestruktur for stasjoner og partisjoner i formen (hdn,m), hvor n er harddisknummeret og m er partisjonensnummeret. Harddisknummeret starter fra null, men partisjonsnummeret starter fra en for vanlige partisjoner og fem for utvidede partisjoner. Merk at dette er forskjellig fra tidligere versjoner hvor begge tallene startet fra null. For eksempel partisjon sda1 er (hd0,1) for GRUB og sdb3 er (hd1,3). I motsetning til Linux anser ikke GRUB CD-ROM-stasjoner som harddisker. For eksempel hvis du bruker en CD på hdb og en ekstra harddisk på hdc, vil den andre harddisken fortsatt være (hd1).

10.4.3. Sette opp konfigurasjonen

GRUB fungerer ved å skrive data til det første fysiske sporet til en hardisk. Dette området er ikke en del av noe filsystem. programmene der gir tilgang til GRUB moduler i oppstartspartisjonen. Standardplasseringen er /boot/grub/.

Plasseringen av oppstartspartisjonen er et valg av brukeren som påvirker konfigurasjonen. En anbefaling er å ha en egen liten (foreslått størrelse er 200 MB) partisjon kun for oppstartsinformasjon. På den måten hver bygging, enten LFS eller en kommersiell distro, kan få tilgang til den samme oppstartsfilen og tilgang kan gjøres fra hvilket som helst oppstartssystem. Hvis du velger å gjøre dette må du montere den separate partisjonen, flytte alle filene i nåværende /boot mappen (f.eks linuxkjernen du nettopp bygde i forrige seksjon) til den nye partisjonen. Du må da avmontere partisjonen og montere den på nytt som /boot. Hvis du gjør dette, sørg for å oppdatere /etc/fstab.

Bruk av gjeldende lfs partisjon vil også fungere, men konfigurasjon for flere systemer er vanskeligere.

Bruk informasjonen ovenfor, finn ut hva som er riktig designator for rotpartisjonen (eller oppstartspartisjonen, hvis en separat er brukt). For det følgende eksempelet antas det at rot (eller separat oppstart) partisjon er sda2.

Installer GRUB filene i /boot/grub og sett opp oppstartssporet:

[Warning]

Warning

Følgende kommando vil overskrive gjeldende oppstartslaster. Ikke kjør kommandoen hvis dette ikke er ønsket, for eksempel hvis du bruker en tredjeparts boot manager for å administrere Master Boot Record (MBR).

grub-install /dev/sda
[Note]

Note

Hvis systemet har blitt startet opp med UEFI, grub-install vil prøve å installere filer for x86_64-efi målet, men disse filene er ikke installert i Chapter 8. Hvis dette er tilfelle, legg til --target i386-pc til kommandoen ovenfor.

10.4.4. Opprette GRUB konfigurasjonsfilen

Generer /boot/grub/grub.cfg:

cat > /boot/grub/grub.cfg << "EOF"
# Begin /boot/grub/grub.cfg
set default=0
set timeout=5

insmod ext2
set root=(hd0,2)

menuentry "GNU/Linux, Linux 5.19.2-lfs-11.2" {
        linux   /boot/vmlinuz-5.19.2-lfs-11.2 root=/dev/sda2 ro
}
EOF
[Note]

Note

Fra GRUB sitt perspektiv, kjernefilene er i forhold til partisjonen som brukes. Hvis du brukte en separat /boot-partisjon, fjern /boot fra ovenstående linux linjen. Du må også endre set root linjen for å peke på oppstartspartisjonen.

[Note]

Note

GRUB-betegnelsen for en partisjon kan endres hvis du la til eller fjernet noen disker (inkludert flyttbare disker som USB-enheter). Endringen kan forårsake oppstartsfeil pga grub.cfg refererer til noen gamle betegnelser. Hvis du ønsker å unngå et slikt problem, kan du bruke UUID for partisjon og filsystem i stedet for GRUB betegnelser til å angi en partisjon. Kjør lsblk -o UUID,PARTUUID,PATH,MOUNTPOINT for å vise UUID-ene til filsystemene dine (i UUID kolonnen) og partisjoner (i PARTUUID kolonnen). Bytt deretter ut set root=(hdx,y) med search --set=root --fs-uuid <UUID av filsystemet der kjernen er installert>, og erstatt root=/dev/sda2 med root=PARTUUID=<UUID av partisjonen der LFS er bygget>.

Merk at partisjonens UUID og filsystemets UUID i denne partisjonen er helt annerledes. Noen nettressurser kan instruere deg om å bruke root=UUID=<filesystem UUID> i stedet for root=PARTUUID=<partition UUID>, men å gjøre det vil kreve en initramfs som er utenfor omfanget av LFS.

Navnet på enhetsnoden for en partisjon i /dev kan også endres (mer usannsynlig enn GRUB-betegnelsesendring). Du kan også bytte ut stier til enhetsnoder som /dev/sda1 med PARTUUID=<partition UUID>, in /etc/fstab, for å unngå en potensiell oppstartsfeil i tilfelle enhetens nodenavn er endret.

GRUB er et ekstremt kraftig program og det gir en enorm antall alternativer for oppstart fra et bredt utvalg av enheter, operativ systemer og partisjonstyper. Det er også mange muligheter for tilpasning som grafiske splash-skjermer, avspilling av lyder, museinngang, etc. Detaljer om disse alternativene er utenfor rammen av disse introduksjonene.

[Caution]

Caution

Det er en kommando, grub-mkconfig, som kan skrive en konfigurasjonsfil automatisk. Den bruker et sett med skript i /etc/grub.d/ og vil ødelegge eventuelle tilpasninger du gjør. Disse skriptene er først og fremst designet for distribusjoner uten kilder og anbefales ikke for LFS. Hvis du installerer en kommersiell Linux distribusjon, er det en god sjanse at dette programmet skal kjøres. Sørg for å sikkerhetskopiere grub.cfg filen.