Skip to Content

Multiboot med Grub2 - en liten handledning

Jag har tidigare skrivit "handledningarna" Multiboot med LILO och Multiboot med GRUB (Legacy).

BAKGRUND
Fr o m version 9.10 av Ubuntu använder det linuxsystemet (och de linuxsystem som baseras på Ubuntu - bl a Linux Mint) starthanteraren Grub2. Även Debian m fl linuxsystem använder Grub2. Grub2 fungerar annorlunda än "gamla" GRUB, som min "gamla" handledning Multiboot med GRUB behandlar. Nya GRUB (Grub2 - the next generation of GRUB) behandlas bl a i Ubuntus Wiki och på Linuxwiki.se (instruktivt). Läs också gärna mitt blogginlägg på Linuxportalen.se (med kommentarer) om GRUB. Det är troligt att Grub2 kommer att ta över helt inom kort i de flesta linuxdistar. Å andra sidan använder "nya" openSUSE 11.4, som släpptes 110310 fortfarande "gamla" GRUB (Legacy). Detsamma gäller för Fedora 15, som också släpptes för några månader sedan.

När jag nyligen införskaffade en ny dator bestämde jag mig för att använda Grub2 som starthanterare på den datorn. Bl a i lärosyfte. Jag tycker fortfarande att "gamla" GRUB är lättare att konfigurera och förstå sig på, men man måste ju hänga med i utvecklingen...

Konfigurering av Grub2
Aktuell dator har en hårddisk på 750 GB. På datorn ska jag ha Windows 7 och fem olika linuxsystem. Två "arbetssystem" - Linux Mint 11/DebEX Mint 11 och Fedora 15/EXTON RHF15 KDE - och tre linuxsystem som kommer att bytas ut ofta beroende på hur mina remasterprojekt fortskrider. Nedan beskriver jag steg för steg hur jag konfigurerade Grub2 på enklast möjliga vis.

1. Datorn levererades med Windows 7 förinstallerat på /dev/sda2 och /dev/sda3. Jag startade omedelbart upp datorn från min DebEX-Mint 11 LiveDVD. Med hjälp av GParted skapade jag sju nya partitioner. Så här visar GParted partitionerna m m nu när jag installerat Mint på /dev/sda7 och Fedora på /dev/sda8.
GParted
Observera SWAP-partitionen om 4 GB på /dev/sda6.

2. Jag började sedan med att installera Mint på /dev/sda7. Samtidigt installerade jag Grub2 i MBR (/dev/sda), såsom installationsprogrammet också föreslog. Därefter startade jag om datorn och kontrollerade att Mint (och Windows 7) kunde startas. Allt fungerade (som väntat) finfint.

3. Sen var det dags för installation av Fedora på /dev/sda8. När det under installationen uppkom fråga om installation av Grub (Legacy) valde jag att installera Grub på /dev/sda8. En sådan installation av Grub påverkar inte den befintliga installationen av Grub2 i MBR. Jag gjorde enbart densamma för att få reda på "startdata" för Fedora. Dessa startdata kunde jag sedan läsa från Mint i filen /mnt/sda8/boot/grub/menu.lst.

4. Sedan startade jag upp Mint på /dev/sda7 igen. Nu var det alltså dags att få till en "multibootdator" med hjälp av Grub2. Så här gjorde jag:
A) Gick till /etc/grub.d och raderade alla filer utom 00_header, 05_debian_theme, 06_mint_theme, 40_custom och README.
B) Redigerade filen /etc/grub.d/40_custom så att den såg ut så här.

#!/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.

### BEGIN /etc/grub.d/40_custom ###

GRUB_TIMEOUT=20

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi
set default="0"
if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function recordfail {
  set recordfail=1
  if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
}

function load_video {
  insmod vbe
  insmod vga
  insmod video_bochs
  insmod video_cirrus
}

insmod part_msdos
insmod ext2
set root='(/dev/sda,msdos7)'
search --no-floppy --fs-uuid --set=root 8c0f67ae-ff59-40a8-94e2-61f42bd2f51d
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
fi
terminal_output gfxterm
insmod part_msdos
insmod ext2
set root='(/dev/sda,msdos7)'
search --no-floppy --fs-uuid --set=root 8c0f67ae-ff59-40a8-94e2-61f42bd2f51d
set locale_dir=($root)/boot/grub/locale
set lang=sv_SE
insmod gettext
if [ "${recordfail}" = 1 ]; then
  set timeout=-1
else
  set timeout=30
fi
### END /etc/grub.d/00_header ###

menuentry "Windows 7 (sda2)" --class windows --class os {
    insmod part_msdos
    insmod ntfs
    set root='(/dev/sda,msdos2)'
    search --no-floppy --fs-uuid --set=root D4AAA52BAAA50B56
    chainloader +1
}

menuentry 'Linux Mint 11 (sda7)' --class linuxmint --class gnu-linux --class gnu --class os {
    recordfail
    set gfxpayload=$linux_gfx_mode
    insmod part_msdos
    insmod ext2
    set root='(/dev/sda,msdos7)'
    search --no-floppy --fs-uuid --set=root 791a2bf3-5055-4213-877b-f4f3082a1d0d
    linux    /boot/vmlinuz-2.6.38-8-generic-pae root=UUID=791a2bf3-5055-4213-877b-f4f3082a1d0d ro   quiet splash vt.handoff=7
    initrd    /boot/initrd.img-2.6.38-8-generic-pae
}

menuentry 'Fedora 15 (sda8)' --class gnu-linux --class gnu --class os {
        recordfail
    set gfxpayload=$linux_gfx_mode
    insmod part_msdos
    insmod ext2
    set root='(/dev/sda,msdos8)'
        search --no-floppy --fs-uuid --set=root 323006c2-457d-49ab-93ba-34c6e74e464b
    linux  /boot/vmlinuz-2.6.38.8-35.fc15.i686 root=UUID=323006c2-457d-49ab-93ba-34c6e74e464b ro rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=sv_SE.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=sv-latin1 rhgb quiet
    initrd /boot/initramfs-2.6.38.8-35.fc15.i686.img
}

menuentry 'KNOPPIX-EXTON 6.7 (sda9)' --class gnu-linux --class gnu --class os {
recordfail
set gfxpayload=$linux_gfx_mode
insmod part_msdos
insmod ext2

set root='(/dev/sda,msdos9)'
search --no-floppy --fs-uuid --set=root 1d4a795d-f8de-45e1-bf0c-3fdc34b0c3bf
linux /boot/vmlinuz-2.6.39.3 root=/dev/sda9 ro
}

menuentry 'EXTON OpSuS 11.4 64-bit (sda10)' --class gnu-linux --class gnu --class os {
recordfail
set gfxpayload=$linux_gfx_mode
insmod part_msdos
insmod ext2
set root='(/dev/sda,msdos10)'
search --no-floppy --fs-uuid --set=root d770bfc1-b7d5-4572-8e06-8388b8d14e46
linux /boot/vmlinuz-2.6.37.6-0.7-default root=/dev/disk/by-id/wwn-0x50000393058888f1-part10

showopts apm=off noresume nosmp maxcpus=0 edd=off powersaved=off

nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe vga=0x317
initrd /boot/initrd-2.6.37.6-0.7-default
}

menuentry 'ArchEX (sda11)' --class gnu-linux --class gnu --class os {
    recordfail
    set gfxpayload=$linux_gfx_mode
    insmod part_msdos
    insmod ext2
    set root='(/dev/sda,msdos11)'
    search --no-floppy --fs-uuid --set=root eeebc826-73c5-4fbe-989d-80c66b48544a
     linux   /boot/vmlinuz-linux root=UUID=eeebc826-73c5-4fbe-989d-80c66b48544a ro
     initrd  /boot/initramfs-linux.img
}


menuentry 'CruxEX (sda12)' --class gnu-linux --class gnu --class os {
recordfail
set gfxpayload=$linux_gfx_mode
insmod part_msdos
insmod ext2
set root='(/dev/sda,msdos12)'
search --no-floppy --fs-uuid --set=root e22e68cd-4812-491a-8886-c319dc710116
linux /boot/vmlinuz-3.0.4-exton root=/dev/sda12 ro
}

### END /etc/grub.d/40_custom ###

####################################################

Vad jag skulle skriva ovan angående start av Fedora (se den feta texten ovan) fick jag alltså redan på genom att titta i filen /mnt/sda8/boot/grub/menu.lst. Så räknar jag med att kunna göra när övriga tre linuxsystem har installerats på datorn. Dessa ska alltså också startas med hjälp av Grub2.

B) Slutligen körde jag kommandot update-grub. Då skapas/ändras filen /boot/grub/grub.cfg (som är den fil Grub2 "beaktar" vid boot). Nyssnämnd fil ska aldrig redigeras manuellt. Redigera istället filen 40_custom, såsom jag visat ovan. Använd alltid gedit (eller ett liknande enkelt skrivprogram) vid redigeringen. Aldrig Word eller liknande.

Grub2 bootsplash m m
En av fördelarna med Grub2 är att du kan ha en snygg högupplöst bild som bootsplash/grub-bild. Bilden kan ha samma storlek som upplösningen på din skärm klarar, t ex. 1366x768. Det duger med en vanlig bild i formaten jpg, png eller tga. Placera bara bilden i /boot/grub och kör kommandot update-grub. Om du får svaret att bilden hittats i /boot/grub kommer det att fungera. Om inte kan du pröva med att redigera filen /etc/default/grub och lägga till raden
GRUB_BACKGROUND=/boot/grub/MinFinaBild.jpg
Kör därefter återigen kommandot update-grub (och starta om datorn).

Ändra texten - typsnitt och storlek - som Grub2 visar vid uppstart
Kör följande kommando:
grub-mkfont --output=/boot/grub/DejaVuSansMono.pf2 --size=24 /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
Redigera sedan filen /etc/default/grub och lägg till nedanstående rad.
GRUB_FONT=/boot/grub/DejaVuSansMono.pf2
Kör kommandot update-grub igen. Efter omstart kommer Grub2-menyn garanterat se bättre ut (beroende bl a på hur din boot-bild ser ut).

Lycka till!

Redigering 110915
Lagt till startdata för ArchEX (Arch Linux) i /etc/grub.d/40_custom

Redigering 110930
Lagt till startdata för CruxEX (Crux Linux) i /etc/grub.d/40_custom


C A Exton

exton



Kommentarer

Grub2 instruktionen

Tack Exton, jag skall spara en kopia av detta på min dator. Jag måste erkänna att jag hitintills helt enkelt gått in och ändrat direkt i grub.cfg.  ;)

Det är alltid bäst att ha en EGEN kopia på sådant man tycker är viktigt.  Se bara på linuxportalen.se, den bara försvann utan vidare! :(

Linuxportalen.se

Hej tux-sven!

Jo, om man bara har ett linuxsystem på datorn går det väl bra att direkt redigera grub.cfg, men när man har flera blir det lite jobbigt, eftersom man då får icke önskvärda ändringar av boot-konfigurationen efter kommandot update-grub.

Vad har hänt med Linuxportalen? Vet du något om saken? Sajten har ju varit nere några dagar nu. Mycket konstigt. (Hoppas det är något tillfälligt "fel"). Å andra sidan var ju kernel.org nere ett par veckor utan att någon verkade bry sig.

Tillägg 111015
Jag har idag fått reda på att Linuxportalen snart ska vara igång igen. Något tillfälligt fel bara.

LINUX.EXTON.NET

Grub och splash

Tack för tipset om grub-bilden. Verkligen kul. Man kan ju byta enkelt lite hur som helst.