Do napisania tego tekstu skłoniły mnie problemy podczas ostaniej instalacji systemu a raczej problem z tzw. bootloadrem. Odkąd zacząłem korzystać z Linuxa przeważnie korzystałem z poczciwego LILO (LInux LOader), który jest bardzo prosty w konfiguracji natomiast jest już trochę leciwy. Co mnie urzekło to fakt, iż Grub 2 potrafi zbootować obraz iso bezpośrednio z dysku. Jako, że sporadycznie miałem kontakt z poprzednią wersją gruba nie doznałem szoku podczas konfiguracji, jakiego doznali niektórzy użytkownicy przyzwyczajeni do gruba v1 (m.in. brak pliku /boot/grub/menu.lst na rzecz /boot/grub/grub.cfg).
Różnice między Grub1 a Grub2:
grub1: grub2:
/dev/sda1 (hd0,0) (hd0,1)
/dev/sda2 (hd0,1) (hd0,2)
/dev/sda3 (hd0,2) (hd0,3)
/dev/sdb1 (hd1,0) (hd1,1)
/dev/sdb2 (hd1,1) (hd1,2)
/dev/sdb3 (hd1,2) (hd1,3)
Struktura plików i katalogów konfiguracyjnych Gruba 2 możemy podzelić na:
Dodawanie systemu Windows:
Dodanie kolejnego systemu można przeprowadzić w dwójnasób, dodać odpowiedni wpis do pliku /etc/grub.d/40_custom lub stworzyc własny skrypt w katalogu /etc/grub.d/. Szczerze mówiąc nie widzę większej różnicy między jednym a drugim sposobem. Ja wybrałem tworzenie własnych skryptów, kierując się zasadą jeden plik - jeden wpis w menu grub-a.
Poniższa konfiguracja przeprowadzona jest w następującej sytuacji (u siebie można sprawdzić wydając polecenie fdisk -l):
dysk nr 1:
Device Boot Id System
/dev/sda1 7 HPFS/NTFS
/dev/sda2 f W95 Ext'd (LBA)
/dev/sda5 83 Linux
dysk nr 2:
Device Boot Id System
/dev/sdb1 * c W95 FAT32 (LBA) #partycja z windows xp
/dev/sdb2 f W95 Ext'd (LBA)
/dev/sdb5 7 HPFS/NTFS
#!/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.
menuentry "Windows XP" {
set root=(hd1,1)
drivemap -s (hd0) (hd1) ##WAŻNE:jeśli windows znajduje się na innej partycji niż grub
chainloader +1
}
#!/bin/sh -e
echo "Dodany Windows XP" >&2 #komunikat przy wykonywaniu update-grub2
cat << EOF
menuentry "Windows XP" { #wpis w menu
set root=(hd1,1) #ustawinie dysku i partycji
drivemap -s (hd0) (hd1) #WAŻNE:jeśli windows znajduje się na innej partycji niż grub
chainloader +1
}
EOF
grub2 - automatyczne dodawanie Windows-a
Jeśli ktoś nie jest zagorzałym fanem grzebania w plikach konfiguracyjnych z pomocą przychodzi program o nazwie os-prober. Aplikacja os-prober przeszukuje wszytskie dyski w celu znalezienia dodatkowych systemów, dodając je do menu gruba. Obsługa jest wprost banalna, sprowadza się do instalacji i uruchomienia.
aptitude install os-prober #instalacja dla systemów opartych na Debianie
os-prober
update-grub2
grub2 - bootowanie obrazu iso z dysku HDD
Poniżej przedstawie jak uruchomić obraz ISO znajdujący się na dysku z poziomu GRUB-a. Może to być zarówno LiveCD lub inne programy np. Acronis True Image. W tym przypadku aplikacja os-prober nie jest w stanie nam pomoć, musimy sami stworzyć odpowiedni wpis w /etc/grub.d/. Należy zaznaczyć, iż podana poniżej konfiguracja jest konkretnym przykładem dla systemu LiveCD Slax.
#!/bin/sh -e
echo "Dodawanie Slax LiveCD" >&2
cat << EOF
menuentry "slax LiveCD" {
loopback loop /root/iso/slax-6.1.2.iso
linux (loop)/boot/vmlinuz from=/root/iso/slax-6.1.2.iso ramdisk_size=6666 root=/dev/ram0 rw autoexec=startx
initrd (loop)/boot/initrd.gz
}
EOF