Grub er en avanceret boot loader som tilmed er meget pålidelig, eksempelvis kan det nævnes at Grub kan læse en Linux kernel direkte fra en FAT – MINIX – FFS – EXT2 – EXT3 eller en REISERFS partition.
Grub har en speciel interaktiv ”konsol mode” der tillader dig at ”efter indlæse” en kernel og vælge en boot partition, denne finesse er af stor betydning
hvis det skulle ske at du har konfigureret din Grubmenu forkert, med den fornødne viden vil du alligevel være i stand til at boote dit system
Denne vejledning er lavet således at du først kan fremstille en diskette og lege lidt med den, hvis den leg gør at du får lyst til at bruge GRUB som standard bootloader på dit operativsystem jamen så er det jo bare godt
Hvis du ikke i forvejen har GRUB installeret på din computer er det nødvendigt at du downloader, compiler og installerer GRUB her skal du være opmærksom
på at hvis du f.eks. i Red Hat eller Mandrake vælger LILO som default bootloader så er GRUB sandsynligvis installeret, den er blot ikke aktiveret.
Nu har websider det jo med at gå ned og genopstå under andet navn men i skrivende stund kan du downloade GRUB fra ftp://alpha.gnu.org/gnu/grub/
For at det vil virke efter denne anvisning er der vigtigt at du placerer GRUB i /tmp her mener jeg altså den pakkede fil
Du udpakker, compiler og installerer GRUB med følgende kommandoer
# cd /tmp
# tar xzvf /path/to/archive/here/grub-0.5.96.1.tar.gz
# cd grub-0.5.96.1
# ./configure --prefix=/usr
# make
# make install
Hvis du ikke har fået nogle fejlmeldinger burde GRUB nu være installeret
 

Som tidligere nævnt starter vi med at fremstille en bootdiskette, den fremstilles således. Sæt en blank diskette i diskette-drevet og i din terminal skriver du
mke2fs /dev/fd0 -> klik Enter
Du vil nu se at der bliver oprettet ext2 filsystem på din diskette, når det er sket mounter du disketten med kommandoen
mount /dev/fd0 /mountpoint/floppy -> klik Enter  (Mountpoint kan være forskelligt)
Opret mappen boot på din diskette med kommandoen mkdir /mnt/floppy/boot
Opret mappen grub på din diskette med kommandoen mkdir /mnt/floppy/boot/grub
 

Det er ikke alle distroer der har grub placeret i /usr/share der er nødvendigt at du selv undersøger det for at angive den rigtige sti, men i eksemplet forudsætter vi at grub er placeret i /usr/share

Så skal stage1 kopieres til din diskette det gøres med kommandoen

cp /usr/share/grub/i386-pc/stage1 /mnt/floppy/boot/grub

derefter skal stage2 kopieres til din diskette det gøres med kommandoen

cp /usr/share/grub/i386-pc/stage2 /mnt/floppy/boot/grub
Hvis du er ved at finde det uoverskueligt kan du herunder se de kommandoer du skal bruge
 
# mkdir /mnt/floppy/boot 
# mkdir /mnt/floppy/boot/grub 
# cp /usr/share/grub/i386-pc/stage1 /mnt/floppy/boot/grub 
# cp /usr/share/grub/i386-pc/stage2 /mnt/floppy/boot/grub
 

Så er vi ved at være klar til at færdiggøre din diskette, du er sikkert stadig logget ind som root og din diskette sidder i drevet, du åbner din terminal
og skriver grub Det medfører forhåbentlig at du får en hilsen der ser  således ud

GRUB  version 0.5.96.1  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename. ]

grub>
Nu fuldender du linien så der står grub> root (fd0) -> Enter
Nu fuldender du linien så der står grub> setup (fd0) -> klik Enter
Nu fuldender du linien så der står grub> quit -> klik Enter

Så er din diskette klar til at boote et system men det skal kun forstås på den måde at det giver dig mulighed for at boote individuelt hvis dit system er gået ned,
i det her tilfælde er årsagen den at du skal øve dig på grub men det er helt konkret det der menes da jeg tidligere skrev
 
 
Grub har en speciel interaktiv ”konsol mode” der tillader dig at ”efter indlæse” en kernel og vælge en boot partition
Denne finesse er af stor betydning hvis det skulle ske at du har konfigureret din Grubmenu forkert, med den fornødne viden vil du alligevel være
i stand til at boote dit system
For  at lette forståelsen vil vi lige gennemgå de kommandoer du brugte for at installere grub på din diskette
kommandoen root (fd0)
fortæller grub hvor den skal søge efter hjælpefilerne stage 1 og stage 2, du husker sikkert at du for kort tid siden kopierede disse filer med kommandoerne
cp /usr/share/grub/i386-pc/stage1 /mnt/floppy/boot/grub
cp /usr/share/grub/i386-pc/stage2 /mnt/floppy/boot/grub

grub leder default efter disse filer på den partition eller disk som du har specificeret som root i dette tilfælde altså (fd0)

kommandoen setup (fd0) bevirkede at du installerede grub på din diskettes MBR (master boot record)

kommandoen grub> quit bevirkede at du afsluttede grub
 
 

Før du kan begynde at bruge grub er der et par ting du skal have styr på. Du skal vide hvilken partition du har installeret din Linux kernel på og du skal vide dit systems rodpartition, endelig skal du være opmærksom på om der skal tilføjes argumenter for andre processer der skal ske under start-up proceduren.
Alle disse oplysninger vil kunne se i din /etc/lilo.conf jeg går ud fra at du har lilo som bootloader på nuværende tidspunkt men hvis du har grub kan du se de samme oplysninger i /boot/grub/menu.lst, du skal ligeledes kende betegnelsen på din initrd som ligeledes ligger i /boot.
Initrd image er et kernel-specifik image der tillader nogle setup funktioner sker før root filsystemet er mountet
 
 

START GRUB

Nu skulle du være klar til den store generalprøve, du har disketten i drevet og din computer er sat til at boote fra floppy så du genstarter computeren

Når disketten er indlæst  vil du se en besked på skærmen der oplyser at stage 1 og stage 2 er indlæst, herefter følger en remse som nedenstående

GRUB  version 0.5.96.1  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename. ]

grub>

Når man taler om root i forbindelse med grub menes der den partition der indeholder din Linux kernel, nogle distroer opretter en separat partition som indeholder Linux kernel og boot information i øvrigt, hvis du kører et sådan system så er det den partition der bliver opfattet som root når vi taler grub, og for at det ikke skal være løgn så har grub også den særhed at den begynder med 0 (nul) både når det gælder harddisk og partitioner det er en særhed du bør huske den optræder oftere end man forestiller sig. Men mere om det senere vi vender tilbage til terminalen hvor du fortsætter linien så der står
Grub> root (   -> klik Tabulator
Her løb du sikkert ind i et mindre problem, nemlig at du ikke har fået indlæst dit DK-tastatur så du bliver tvunget til at bruge UK-tastatur indtil din kernel bliver indlæst men det begrænset hvor meget du skal skrive
 
For de meget utålmodige er her ændringer der er på dit tastatur for denne lille øvelse 
(  = ) 
) = shift +
= = tasten med følgende tegn ´`|  brug ikke shift 
/ brug nummertastaturet 
Det er tegn med sat med rødt der angiver hvilket taster du skal bruge for at få DK tegnsætning 
 

 Du vil nu få listet de harddiske der kører på systemet hd0 =(hda) hd1 = (hdb) osv du skal indsætte den harddisk hvor har den partition
der indeholdet den kernel der skal boote computeren, bliv ikke forvirret jeg viser et eksempel senere så bliver det mere overskueligt,
vi forudsætter at du kun har en harddisk

Du vil nu få listet alle partitionerne på (hd0, =(/dev/hda) det kunne se ud som nedenstående
Possible partitions are:
   Partition num: 0,  Filesystem type is ext2fs, partition type 0x83
   Partition num: 1,  Filesystem type unknown, partition type 0x82
   Partition num: 2,  Filesystem type unknown, partition type 0x7
   Partition num: 4,  Filesystem type is reiserfs, partition type 0x83
   Partition num: 5,  Filesystem type is reiserfs, partition type 0x83

Hvis vi gjorde det tanke eksperiment at du i stedet for at taste grub havde tastet fdisk ville Linux om præcis den samme harddisk give disse oplysninger

  /dev/hda1,  Filesystem type is ext2fs, partition type 0x83
  /dev/hda2,  Filesystem type unknown, partition type 0x82
  /dev/hda3,  Filesystem type unknown, partition type 0x7
  /dev/hda5,  Filesystem type is reiserfs, partition type 0x83
  /dev/hda6,  Filesystem type is reiserfs, partition type 0x83

Hvis vi nøjes med at koncentrere os om den sidste partition på ovennævnte harddisk kan du se at Linux betegner den som /dev/hda6 altså den 6. partition
hvorimod grub betegner den som partition num: 5. Hvis du tæller partitionerne vil du se at grub rammer rigtigt
Vi vedtager nu for eksemplets skyld at din Linux kernel er placeret på /dev/hda6

Da jeg begyndte på de sidste noter havde jeg lige skrevet

Grub> root (   -> klik Tabulator    -> hvis du kun har en harddisk -> klik Tabulator indtil du får alle dine partitioner listet
Vi har som tidligere nævnt valgt partition: 5  (/dev/hda6) til at være den partition der indeholder din Linux kernel, så du indsætter et 5 efter kommaet og afslutter parentesen
Din linie skal nu således ud
Grub> root (hd0,5)  -> klik Enter     og der kvitteres med følgende linie

Filesystem type is ***, partition type 0x83   (*** angiver det filsystem grub har fundet på den valgte partition)

Nu er det tid at indlæse din Linux kernel, jeg går ud fra at du har fundet ud af hvad den hedder, ellers er det nu, du kan finde svaret i /boot
 
 
Jeg kører SuSE og jeg ved hvad den hedder så jeg fortsætter den linie der nu er fremme 

Grub> kernel /boot/vmlinuz root=/dev/hda6   -> klik Enter 

Nu skal dit initrd image indlæses,  du fuldender den nye linie så der står 
grub> initrd /boot/initrd -> klik Enter 

Og hvorfor skrev jeg så det ?? det gjorde jeg fordi min kernel hedder vmlinuz den er placeret i /boot som er placeret i roden som er placeret på den 6. partition. Præcis det samme gælder for initrd 
 
 

 
 

Det er vigtigt at du er omhyggelig med at angive den korrekte sti til den partition  hvor din Linux kernel er placeret

Så er det tid at boote, det gøres ved at du skriver boot -> klik Enter har du fulgt anvisningen vil din computer starte.

Nu er det naturligvis ikke holdbart i længden med alt det skriveri men forsøget viser os at har du en diskette med stage1 og stage2
ja så kan du boote en Linux installation, vi iler straks videre med at udvide vores diskette således at den kan boote computeren.
Til det brug er det nødvendig at du opretter en fil så du vælger dit tekstredigerings værktøj og laver en fil som skal hedde menu.lst

Du indsætter disse linier i menu.lst

title linux
kernel /boot/vmlinuz root=/dev/hda6  (du skal stadig være opmærksom på at stien skal passe til dit system)
initrd /boot/initrd

De sidste 2 linier kan du sikkert genkende det var dem du skrev da du bootede  din computer før

Det er en fil som vi skal bygge lidt på efterhånden som tingene skrider frem men her nu skal du skrive præcis det samme som
du gjorde for at boote computeren

Gem filen på computeren  i /boot/grub  og lav samtidig en kopi som du gemmer på /dev/fd0/boot/grub

unmount /mnt/floppy -> klik Enter
Skriv grub
grub> root (fd0) -> klik Enter
grub> quit -> klik Enter
reboot  -> klik Enter

Nu genstarter computeren du må ikke fjerne disketten har du gjort som anvist vil du nu blive præsenteret for en simpel menu der
blot kræver at du klikker Enter

På et tidligere tidspunkt kopierede du stage1 og stage over på din diskette hvor du fandt filerne henne ved jeg ikke men vi forudsatte i
eksemplet at de lå i usr/share/grub/i386-pc/.

Nu skal du kopiere samtlige de filer der hedder noget med stage over på computeren i mappen /boot/grub.

Når det er gjort skal der bygges lidt mere på din /boot/grub/menu.lst med forbehold for at du naturligvis skal indsætte de korrekte stier der passer
til dit system skal den se således ud
 
 
color white/blue black/light-gray 
default 0 
timeout 8 

title linux 
   kernel  /boot/vmlinuz root=/dev/hda3  vga=791 
   initrd  /boot/initrd 

title floppy 
   root (fd0) 
   chainloader +1

 
 

Som du kan se er der blevet tilføjet nogle argumenter (vist med grøn skrift)
Og ligeledes er muligheden for at boote med floppy blevet tilføjet.
Ovenstående menu.lst må siges at være så simpel som muligt den kan boote en partition, derudover giver den mulighed for at boote fra floppy,
vi vil senere tilføje meget mere  men her og nu vil vi installere grub i MBR (master boot record) og så skulle det gerne resultere i at din computer
booter korrekt næste gang du starter. Du installerer grub i MBR med følgende kommandoer

grub  -> klik Enter

grub> ( -> klik Tabulator indtil du får alle dine partitioner listet, indsæt  den partition der indeholder din linux kernel, efter kommaet afslut parentesen -> klik Enter
grub> setup (hd0) -> klik Enter
grub> quit -> klik Enter
fjern disketten og genstart, så skulle det gerne køre

HUSK
 Hvis du ikke  Kan få grub til at køre fra MBR og du ikke kan starte op på LILO som antagelig var din forrige bootloader så boot op på din diskette som vi tidligere har gennemgået når du er startet op kan du geninstallere LILO med kommandoen
 /sbin/lilo -> klik Enter

Det var lidt af en roman det her og de fleste gider sikkert ikke terpe alt det vrøvl så her følger en stærk forenklet version
 
 
Download -> udpak og installer grub 
Opret en diskette med mke2fs -> opret /dev/fd0/boot -> opret /dev/fd0/boot/grub 
Kopier stage1 + stage2 til /dev/fd0/boot/grub 
Skriv grub til din diskettes MBR 
grub> 
Nu fuldender du linien så der står grub> root (fd0) -> Enter 
Nu fuldender du linien så der står grub> setup (fd0) -> klik Enter 
Nu fuldender du linien så der står grub> quit -> klik Enter 
Nu skal du finde ud af på hvilken partition din Linux kernel er placeret 
Genstart på den diskette du lige oprettede 
Angiv stien til den partition der indeholder din Linux kernel 
Indlæs din Linux kernel 
Indlæs din initrd 
Boot din computer 
Hvis ovenstående virker
 
 
Opret en fil, gem den menu.lst på /dev/fd0/boot/grub 
Indsæt de samme linier i /dev/fd0/boot/grub som du skrev for at boote computeren 
Skriv grub til din diskettes MBR 
grub> 
Nu fuldender du linien så der står grub> root (fd0) -> Enter 
Nu fuldender du linien så der står grub> setup (fd0) -> klik Enter 
Nu fuldender du linien så der står grub> quit -> klik Enter 
Genstart nu skulle du kun klikke Enter 
 

Hvis ovenstående virker
 
 
Rediger /dev/fd0/boot/grub/menu.lst til at se således ud 

color white/blue black/light-gray 
default 0 
timeout 8 

title linux 
kernel  /boot/vmlinuz root=/dev/hda3 vga=791 
(skal passé med stien på dit system) 
initrd  /boot/initrd 

title floppy 
root (fd0) 
chainloader +1 

 
 

Hvis du er tilfreds og ønsker at installere grub i MBR således at computeren fremover booter på normal vis gøres det med kommandoen

grub  -> klik Enter

grub> ( -> klik Tabulator indtil du får alle dine partitioner listet, indsæt  den partition der indeholder din linux kernel, efter kommaet afslut parentesen -> klik Enter
grub> setup (hd0) -> klik Enter
grub> quit -> klik Enter
 
 
 

Jeg skrev tidligere at såfremt det blev aktuelt kunne vi senere bygge på /boot/grub/menu.lst det kan f.eks blive aktuelt hvis du installerer flere systemer på din computer og ønsker at vælge under opstart, det fikse ved menu.lst er at du blot kan tilføje de nødvendige oplysninger så virker det, herunder ser du en menu.lst fra virkelighedens verden
 

color white/blue black/light-gray
default 2
timeout 8
 

title SUSE LINUX 9.2
    kernel (hd0,4)/boot/vmlinuz root=/dev/hda5 vga=0x31a selinux=0 splash=silent
    initrd (hd0,4)/boot/initrd
 
title SUSE 8.1
    kernel (hd0,2)/boot/vmlinuz root=/dev/hda3   vga=791
    initrd (hd0,2)/boot/initrd
 

title Windows
    root (hd0,0)
    chainloader +1
 

Den gennemgår vi lige
 
 
color white/blue black/light-gray  -> angiver kuløren på velkomstskærmen  
default 2  ->  angiver det system der starter default, starter ved 0  
timeout 8  ->   angiver I sekunder hvornår default system starter  
 

title SUSE LINUX 9.2   ->  system nr. 0  
    kernel (hd0,4)/boot/vmlinuz root=/dev/hda5 vga=0x31a selinux=0 splash=silent 
    initrd (hd0,4)/boot/initrd 
 
title SUSE 8.1   ->  system nr.1  
    kernel (hd0,2)/boot/vmlinuz root=/dev/hda3   vga=791 
    initrd (hd0,2)/boot/initrd 
 

title Windows   ->  system nr 2  
    root (hd0,0) 
    chainloader +1 
 
 

title Diskette 
    root (fd0) 
    chainloader +1 
 

 
 
 

 

 
 Tilbage
 

 

tilbage