Linux/GRUB
Różnice pomiędzy GRUB a GRUB 2 [4]
Wersje
edytujUstawienia
edytujPrzy instalacji dowolnej dystrybucji Linuksa, instalujemy też zazwyczaj bootloadera, który umożliwia wybór, który system operacyjny chcemy uruchomić. Z reguły domyślnie uruchamianym systemem wtedy będzie nowo zainstalowany system Linux - jednak można ustawić tak, żeby domyślnym był inny (np. Windows).
W przypadku bootloadera GRUB jest to dość proste.
- logujemy się jako root (albo administrator, który ma uprawnienia do zapisywania plików w katalogu /boot)
- wchodzimy do katalogu /boot/grub
- otwieramy do edycji plik menu.lst (za pomocą dowolnego edytora tekstu, np. mcedit); w pliku tym są zapisane informacje jakie systemy operacyjne są na naszym komputerze zainstalowane, na jakich partycjach, oraz dodatkowe opcje bootloadera
Ewentualnie możemy użyć programu:
- Grub Customizer [5]
- StartUp-Manager
Opcja "default"
edytujGdzieś na początku pliku menu.lst powinien się znajdować wpis
default 0
lub podobny. Może go też nie być, ale w większości dystrybucji powinien on wyglądać właśnie tak. Przy tym wpisie jest opis (komentarz - linie zaczynające się od "#"), który objaśnia znaczenie tej opcji (oczywiście po angielsku).
Przykład:
## default num # Set the default entry to the entry number NUM. Numbering starts from 0, and # the entry number 0 is the default if the command is not used. # # You can specify 'saved' instead of a number. In this case, the default entry # is the entry saved with the command 'savedefault'. default 0
Jeżeli nie ma tego wpisu, to można go utworzyć.
Służy on do wyboru domyślnej opcji wyboru.
Jak ustawić
edytujW dalszej części pliku znajdziesz wpisy typu
title Debian GNU/Linux, kernel 2.4.27-2-686 root (hd0,2) kernel /vmlinuz-2.4.27-2-686 root=/dev/hdc7 ro initrd /initrd.img-2.4.27-2-686 savedefault boot
Policz ile jest takich wpisów (pierwszy wpis ma numer 0, itd.), i sprawdź na którym miejscu jest ten system operacyjny, który ma być uruchamiany domyślnie. Ten numer wstawimy do opcji "default".
UWAGA! Liczą się wszystkie wpisy, także te użyte nie do uruchamiania jakiegoś systemu, tylko do oddzielenia np. systemu Linux od innych systemów. Czyli poniższy wpis także należy policzyć:
title Other operating systems: root
Po wstawieniu odpowiedniej liczby do opcji default, zapisujemy
plik /boot/grub/menu.lst, i to już wszystko.
Efekt
edytujZauważ, że kolejność, w jakiej są wyświetlane przy starcie komputera zainstalowane systemy, nie ulega zmianie. Jest tylko taka różnica, że domyślnie zaznaczony nie jest pierwszy na liście, tylko ten który wybraliśmy - i jeżeli jest ustawiona opcja "timeout" (także w pliku /boot/grub/menu.lst), to jeżeli nie naciśniemy żadnego klawisza w określonym czasie, to zostanie uruchomiony system domyślny.
Opcja "timeout"
edytujWspomnieliśmy o opcji "timeout". Po przeczytaniu tego artykułu, na pewno poradzisz sobie z ustawieniem, jak długo GRUB ma czekać na wybór systemu do uruchomienia. Wystarczy znaleźć linijkę
timeout
(zapewne również na początku pliku), i ustawić liczbę sekund. Np. wpis:
timeout 5
mówi bootloaderowi, że ma czekać 5 sekund zanim uruchomi domyślny system operacyjny. Jeżeli w tym czasie naciśniemy dowolny klawisz, to w tym momencie GRUB przestaje odmierzać czas - jeżeli np. naciśniemy strzałkę, ale nie wciśniemy ENTER, to nasz komputer zatrzyma się na tym etapie, i będzie czekał na ręczne wybranie systemu do uruchomienia.
Opcja "savedefault"
edytujJeżeli chcemy, żeby za każdym razem domyślnie uruchamianym systemem był ten, który ostatnio uruchomiliśmy, to zamiast liczby, w linijce "default" wpisujemy:
default saved
Teraz trzeba sprawdzić, czy przy każdym z wpisów uruchamiających jakiś
system, jest linijka
savedefault
Powinna ona się znajdować po linijkach "title" i "root", ale przed bootowaniem systemu.
Jak rozpoznać, które linijki oznaczają bootowanie systemu:
- jeżeli wpis dotyczy Linuksa, lub podobnego systemu operacyjnego (UNIX, BSD), to będzie to linijka
boot
- jeśli jest to Windows 95/98, to będzie to:
makeactive chainloader +1
- w przypadku Windowsa NT wpis będzie zapewne podobny (lub identyczny) jak dla Win 98
Dlaczego to ważne? GRUB może zapisać, który system został wybrany, tylko przed zabootowaniem dowolnego systemu, ponieważ bootowanie systemu oznacza zakończenie pracy GRUBa, i załadowanie w jego miejsce kodu uruchamiającego dany system, który w tym momencie przejmuje całą kontrolę nad sprzętem.
Wyświetlane linijki tekstu
edytujWcześniej wspomnieliśmy o wpisach
title Debian GNU/Linux, kernel 2.4.27-2-686 root (hd0,2) kernel /vmlinuz-2.4.27-2-686 root=/dev/hdc7 ro initrd /initrd.img-2.4.27-2-686 savedefault boot
oraz
title Other operating systems: root
Linijka title określa, jaki tekst będzie w danej linijce wyświetlany. Np. dla wpisu oddzielającego system Linux od innych systemów, w naszym przykładzie wyświetlane będzie:
Other operating systems:
Możesz to zmienić, np. na:
title Inne systemy operacyjne: root
wtedy pierwszy ekran będzie wyglądał znacznie bardziej przyjaźnie.
Łącze szeregowe
edytujCiekawą możliwością jest używanie GRUBa na systemach pozbawionych dostępu do klawiatury / monitora (czy wręcz karty graficznej) a wyposażonych w port szeregowy.
Aby GRUB wyświetlał menu poprzez port szeregowy należy umieścić w pliku konfiguracyjnym wpisy:
serial --unit=0 --speed=115200 terminal --timeout=5 console serial
GRUB musi w tym celu być skompilowany z obsługą linii szeregowej. Parametr speed definiuje szybkość łącza (można ustawić także inne parametry, takie jak kontrola parzystości, bity stopu, etc.) natomiast unit wskazuje numer portu szeregowego (porty numerowane są od zera). Terminal definiuje konsolę i łącze szeregowe, wykrycie aktywności w ciągu 5 sekund spowoduje wybranie danego terminala i wyświetlenie menu.
Warto skonfigurować także system operacyjny, aby wysyłał komunikaty diagnostyczne na ten sam port, dla linuksa:
kernel [ścieżka do jadra] root=[urzadzenie z glownym systemem plikow lub initrd] console=tty0 console=ttyS0,115200 [pozostale opcje...]
Bezpieczeństwo
edytujChoć fizyczny dostęp do komputera zwykle oznacza, że potencjalny atakujący prędzej czy później znajdzie sposób aby się do niego włamać (jedynym realnym zabezpieczeniem jest silne szyfrowanie sprzętowe danych na dysku połączone z autoryzacją biometryczną) to jednak warto spróbować nieco poprawić zabezpieczenia systemu przed niepowołanym dostępem, zwłaszcza, że GRUB posiada ogromne możliwości i osoba z dostępem do jego shella może dokonać poważnych zniszczeń (z usunięciem/uszkodzeniem partycji włącznie). Możliwe jest zabezpieczenie wybranych wpisów w menu oraz trybu shell za pomocą hasła:
password --md5 [tu wstawiamy hash md5 hasła uzyskany za pomocą polecenia grub-md5-crypt]
Jeśli do wpisu w menu dodamy polecenie lock, wówczas wykonanie odpowiadającej mu sekwencji poleceń będzie wymagać podania hasła.
Przykładowe wpisy
edytujNajlepsze efekty w nauce daje często analiza przykładów, więc niżej podanych jest parę przykładów wpisów w konfiguracji GRUB-a dla typowych systemów operacyjnych
GNU/Linux
edytujtitle GNU/Linux root (hd0,2) kernel /vmlinuz-2.4.27-2-686 root=/dev/hdc7 ro initrd /initrd.img-2.4.27-2-686 savedefault boot
Windows
edytujtitle Windows rootnoverify (hd0,0) makeactive chainloader +1
Windows XP - na drugim dysku
edytujtitle Windows map (hd0) (hd1) map (hd1) (hd0) rootnoverify (hd0,0) makeactive chainloader +1
Windows 7 - na drugim dysku
edytujtitle Windows 7 rootnoverify (hd1,0) makeactive chainloader +1
FreeBSD
edytujtitle FreeBSD root (hd0,3,a) kernel /boot/loader boot
Należy zwrócić uwagę na dodanie ,a do numeru partycji. Jest to spowodowane specyficzną organizacją partycji (slices) FreeBSD.
Źródła
edytuj- ↑ GNU GRUB
- ↑ GRUB bootloader - Full tutorial by Dedoimedo
- ↑ GRUB 2 bootloader - Full tutorial by Dedoimedo
- ↑ GRUB vs GRUB 2
- ↑ Grub customizer