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 instruksjonene på denne siden, men likevel lære deg syntaksen til grub.cfg og metoden for å spesifisere en partisjon i filen fra denne siden, og konfigurer GRUB med UEFI støtte ved å bruke instruksjonene gitt 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 kan hvert bygg, enten LFS eller en kommersiell distro, 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.

Å la /boot være på nåværende LFS partisjon vil også virke, men konfigurasjonen for flere systemer er mer vanskelig.

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 oppstartsbehandler 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 Kapittel 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 part_gpt
insmod ext2
set root=(hd0,2)

menuentry "GNU/Linux, Linux 6.10.5-lfs-12.2-systemd" {
        linux   /boot/vmlinuz-6.10.5-lfs-12.2-systemd root=/dev/sda2 ro
}
EOF

insmod kommandoer laster inn GRUB moduler navngitt part_gpt og ext2. Til tross for navngivningen, støtter ext2 faktisk ext2, ext3, og ext4 filsystemer. grub-install kommandoen har bygd inn noen moduler inn i hoveddelen av GRUB bildet (installert i MBR- eller GRUB BIOS-partisjonen) for å få tilgang til de andre modulene (i /boot/grub/i386-pc) uten et kylling-eller-egg-problem, så med en typisk konfigurasjon er disse to modulene allerede innebygd og de to insmod kommandoer vil ikke gjøre noe. Men de gjør ingen skade uansett, og det kan være nødvendig med noen sjeldne konfigurasjoner.

[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 for filsystemet der kjernen er installert>, og erstatt root=/dev/sda2 med root=PARTUUID=<UUID for 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>, i /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.