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:
- BIOS (Basic Input Output System) jest uruchamiany automatycznie przy starcie komputera. Inicjalizuje on sprzęt oraz ładuje i uruchamia następny etap.
- 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.
- 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.
- 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.
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.