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.

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
- Logga in för att skriva kommentarer

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.
Grub och splash
Tack för tipset om grub-bilden. Verkligen kul. Man kan ju byta enkelt lite hur som helst.