GRUB2 a GRUB Legacy

Od jakiegoś już czasu rozwijany jest następca popularnego bootloader’a GNU GRand Unified Bootloader (w skrócie GRUB (a właściwie teraz już GRUB Legacy)) – GRUB 2. Mimo, że nie jest on w 100% skończony, niektóre dystrybucje (jak np. Ubuntu od wersji 9.10) już przestawiły się na niego. Skoro jest on używany już teraz, a jego popularność będzie tylko rosnąć, warto wiedzieć czym charakteryzuje się nowa wersja. Jednak zanim o tym, kilka słów o tym jak GRUB działa.

Uruchamianie systemu (przy wykorzystaniu GRUB’a) przebiega tak:

  1. BIOS (Basic Input Output System) jest uruchamiany automatycznie przy starcie komputera. Inicjalizuje on sprzęt oraz ładuje i uruchamia następny etap.
  2. MBR (Master Boot Record) jest to pierwszy sektor dysku (ciągle jeszcze 512 bajtów). W nim znajduje się tablica partycji oraz program rozruchowy, który zajmuje 446 bajtów z tej przestrzeni. W nim znajduje się plik GRUB’a: stage1, zadaniem którego jest załadować następną część bootloader’a. LILO (LInux LOader, poprzedni popularny bootloader) zajmuje tylko tą przestrzeń i stąd jego ograniczenia. GRUB z racji swoich możliwości musiał zostać podzielony na kilka plików.
  3. stage1 ładuje następnie stage1.5 który znajduje się najczęściej w wolnej przestrzeni między MBR’em a pierwszą partycją. W tym pliku zakodowane są informacje o położeniu reszty GRUB’a oraz pliku konfiguracyjnego.
  4. stage2 jest ostatnim plikiem bootloader’a który odczytuje konfigurację oraz następnie uruchamia system operacyjny. Posiada on również konsolę GRUB’a pozwalającą uruchomić system nie wymieniony w konfiguracji, modyfikowanie wpisów oraz kilka innych rzeczy.

Pierwsza różnica między GRUB2, a Legacy to brak pliku sttage1.5. Po stage1 od razu ładowany jest stage2. To jednak nie wprowadza żadnych widocznych zmian dla użytkowników. Z tych widocznych warto między innymi wspomnieć o:

  • GRUB Legacy działa tylko na komputerach architektury x86 oraz x86-64; GRUB2 docelowo ma wspierać dodatkowo architektury PowerPC, SPARC oraz kilka innych
  • GRUB Legacy działa tylko z BIOS’em (istnieją nieoficjalne patch’e na inne systemy); GRUB2 dodatkowo wspiera EFI (komputery Apple) oraz OpenFirmware
  • GRUB2 oficjalnie wspiera nowy system partycji GPT (GUID Partition Table); GRUB Legacy posiada nieoficjalne patch’e implementujące wsparcie tego systemu
  • nowa wersja umożliwia uruchamianie bezpośrednio z programowych RAID’ów oraz z LVM’a
  • dodano wsparcie dla trzech systemów plików: NTFS, HFS+ (Apple) oraz ZFS
  • dodatkowo GRUB2 potrafi bezpośrednio ładować system Mac OS X
  • nowa wersja rozszerzalna jest o moduły których lista już w tej chwili jest bardzo długa i prawdopodobnie będzie rosnąć
  • GRUB2 posiada także prosty język skryptowy, bardzo przypominający bash’a; możliwość pisania skryptów w pliku konfiguracyjnym niezwykle zwiększa jego możliwości

Poza rozszerzeniem możliwości zmieniono też składnię pliku konfiguracyjnego:

prosty plik grub.conf dla GRUB2:

set timeout=10
set default=0

menuentry "Linux (2.6.32.2 kernel)" {
        set root=(hd1,8)
        linux /bzImage-2.6.32.2 ro root=/dev/sdb4
        initrd /initramfs-x86_64-2.6.32.2
}

menuentry "Windows 7" {
        set root=(hd1,2)
        parttool (hd0,1) hidden+
        parttool (hd1,5) hidden-
        chainloader +1
}

odpowiadający plik menu.lst dla GRUB Legacy:

timeout 10
default 0

title Linux (2.6.32.2 kernel)
        root (hd1,8)
        kernel /bzImage-2.6.32.2 ro root=/dev/sdb4
        initrd /initramfs-x86_64-2.6.32.2

title Windows 7
        root (hd1,2)
#       parttool (hd0,1) hidden+        #brak odpowiednika
#       parttool (hd1,5) hidden-        #brak odpowiednika
        chainloader +1

Ci z Was którzy są zaznajomieni z plikiem konfiguracyjnym GRUB’a szybko wyłapią najważniejsze różnice, a są nimi:

  • wszystkie zmienne są ustawiane poprzez słowo kluczowe “set” i posiadają znam równości (=)
  • w starej wersji wpis kończył się z początkiem kolejnego, teraz są one opatrzone klamrami
  • słowo kluczowe “title” zamieniono na “menuentry”
  • systemy linux’owe uruchamia się nie poprzez komendę “kernel” tylko “linux”
  • partycje numerowane są od 1 natomiast dyski nadal od 0, co dla wielu jest najbardziej “bolesną” zmianą
  • dodano wiele innych komend z którymi warto się zaznajomić

To chyba większość ze zmian wartych wymienienia. Jak widać duży nacisk położono na zwiększenie możliwości (RAID/LVM, nowe systemy plików, skryptowanie, moduły). Zwrócono też uwagę na użytkowników komputerów z jabłkiem w logo, którzy do tej pory musieli używać albo nieoficjalnych patch’y na GRUB’a, albo korzystać z trybu emulacji BIOS’u.

Jakkolwiek zmian jest sporo to zawsze powstanie pytanie: “Czy powinienem wymienić starego GRUB’a na nową wersję?”. Moim zdaniem, jeśli nie potrzebujesz żadnej z nowych funkcji to na razie lepiej pozostać przy sprawdzonym systemie i oszczędzić sobie czasu i ewentualnych kłopotów przy zmianie.

  • Trackback are closed
  • Comments (1)
    • temp
    • 05/12. 2010 3:38pm

    Tak, zdecydowanie, GRUB2 doprowadza mnie wĸłaśnie do szału.
    Wyprawiam cyrki aby TIMEOUT zaczął ponownie działać (po aktualizacji szlak trafił) i nawet ręczne grzebanie w /etc/grub/ i /etc/default/.. nic nie zmienia. Timeout nie ma jak zaklętego. Zdecydowanie polecam GRUB 0.97 gdzie i konfiguracja “z palca” jest błyskawiczna i bezproblemowa jak dotychczas.

Comment are closed.