Drukuj
Nadrzędna kategoria: Ubuntu
Kategoria: Początkujący
Odsłony: 28121
GRUB dla zielonych - 5.0 out of 5 based on 1 vote

Ocena użytkowników: 5 / 5

Gwiazdka aktywnaGwiazdka aktywnaGwiazdka aktywnaGwiazdka aktywnaGwiazdka aktywna
 
Tak pomyślałem, że zanim zacznę opisywać proces instalacji Ubuntu na komputerze dla początkujących, opiszę najpierw GRUB'a. Jest on szczególnie ważny dla użytkowników komputerów z wieloma systemami.
Tłumacząc na chłopski rozum, GRUB to program, którego wynikiem może być tabelka z wyborem systemu, która pokazuje się przed zaczęciem ładowania systemu. Problem użytkowników Windows, którzy stykają się z czymś takim polega tym, że nie rozumieją pojęć takich jak /dev/sda czy hd0,0. Jeśli chodzi o to pierwsze to po części wytłumaczyłem to w poprzednim artykule. Ale zanim przejdziemy do GRUB'a wytłumaczę filozofię nazewnictwa dysków w Linuksie. Co prawda większość dzisiejszych dystrybucji robi wszystko za użytkownika i nie musi on grzebać w plikach konfiguracyjnych po instalacji Linuksa, aby móc wybierać system podczas startu, ale zawsze lepiej wiedzieć jak coś jest zbudowane i jak działa.
W Linuksie wszystko jest plikiem, nawet urządzenie. Pliki urządzeń znajdują się w katalogu /dev. Co daje takie podejście? Przypuśćmy, że chcemy zrzucić płytę do pliku ISO. Możemy po prostu skopiować zawartość pliku /dev/scd0, który reprezentuje urządzenie DVD/CD do pliku ISO gdzieś na dysku. Polecenie to wygląda tak:
dd if=/dev/scd0 of=/home/qkiz/płyta.iso
To tylko jedno z wykorzystań. Tak samo jest z dyskami twardymi. Jeśli mamy w komputerze dysk SATA będzie on reprezentowany jako /dev/sda. Dyski starszego typu są reprezentowane jako /dev/hda. Jeśli mamy drugi dysk będzie on oznaczony jako /dev/sdb. Czyli zmienia się literka na końcu, która wyznacza kolejność. Tą kolejność narzuca BIOS, który wykrywa urządzenia podłączone do komputera. Więc to jaką literę na końcu nazwy będzie miał plik, zależy od BIOSu.
A co z partycjami? Ktoś może zadać takie pytanie. Partycje są oznaczone też w katalogu /dev. Na przykład pierwsza partycja dysku pierwszego będzie oznaczona /dev/sda1, druga - /dev/sda2, i tak dalej. Zmienia się teraz cyfra na końcu nazwy pliku. Może dam jeszcze dwa przykłady, aby nie pozostawiać wątpliwości co do nazewnictwa.
Przykład 1: Mamy jeden dysk twardy, który posiada 2 partycje. Uzyskujemy do niego dostęp uruchamiając system z płyty Ubuntu. Pierwsza partycja nazywa się Windows, a druga Pliki.
Wydaje mi się, że to najprostszy przykład. A teraz dla rozbudowania dodamy drugi dysk twardy do przykładu wyżej. Na drugim dysku są trzy partycje. Pierwsza to partycja z głównym katalogiem /, druga partycja to swap czyli pamięć wirtualna Linuksa, a trzecia to pliki użytkownika z punktem montowania /home.
Przykład 2:
Mam nadzieje, że i ten przykład jest jasny. Teraz przejdźmy jeszcze do jednej sytuacji, która może nam się przytrafić. W powyższych sytuacjach mielismy do czynienia tylko z partycjami podstawowymi, których może być maksymalnie 4 na jednym dysku. A co jeśli mamy duży dysk i chcemy mieć więcej partycji? Musimy się posłużyć wtedy partycją rozszerzoną.
Najlepiej posłużyć się przykładem. Tak więc połączymy dwa pierwsze, z założeniem że całość będzie na jednym, odpowiednio dużym dysku. Chcemy mieć aż 5 partycji na jednym dysku, czyli o jedną za dużo.
Przykład: Na dysku mamy już Windows'a na pierwszej partycji, na drugiej mamy dane. Zmniejszamy partycję Pliki, aby zaoszczędzić miejsce na Ubuntu. Jako, że nie można mieć więcej niż 4 partycję posłużymy sie partycją rozszerzoną. Jest ona jakby kontenerem na partycje logiczne, ale sama też jest traktowana jako partycja. Czyli w wolnym miejscy tworzymy tą rozszerzoną. Po utworzeniu mamy 3 partycje: dwie podstawowe (Windows i Pliki) i jedną rozszerzoną. W rozszerzonej tworzymy 3 logiczne, tak aby estetycznie trzymać partycje linuksowe razem. Partycji logicznych może być nieograniczona ilość.
Przykładowy dysk
Jak widać na powyższym rysunku partycje linuksowe są elegancko odizolowane od windows'owych. Nawet jakby nie były odizolowane to i tak nie ma znaczenia, chodzi o to, aby był względny porządek na dysku. Łatwiej sie później połapać w konfiguracji. Oczywiście szerokość kolorowych bloczków ma sie nijak do proporcji wielkości partycji. To jest rysunek poglądowy.
A dlaczego nie można zainstalować Windows'a na partycjach logicznych, a Ubuntu na podstawowych? Dlatego, że Windows nawet jeśli będzie zainstalowany bez problemu na logicznej, to i tak pliki bootloader'a będzie chciał trzymać na podstawowej. Jako, że nie będzie miał do niej dostępu, bo system plików Linuksa mu na to nie pozwoli (po za tym Windows nawet go nie rozpozna :P ), nie będzie mógł zapisać ich. Linux może leżeć na byle jakiej partycji.

Teraz przejdźmy do GRUB'a. Ten oznacza dyski i partycje na swój, podobny sposób. Zmieniają sie tylko literki. Ważny jest tutaj plik device.map, który znajduje się w /boot/grub/. W nim są zawarte przypisania dysków do grub'owych oznaczeń. Np. dysk /dev/sda w hd0, dysk /dev/sdb to będzie hd1 itd. Tak więc jeśli mamy jeden dysk, zawartość pliku /boot/grub/device.map będzie wyglądał tak:
(hd0)    /dev/sda
Jeśli mamy dwa dyski to plik będzie wyglądał tak:
(hd0)    /dev/sda
(hd1)    /dev/sdb
Jak pisałem, sposób podobny. Jeśli nie podoba nam sie kolejność oznaczeń dysków określona automatycznie przez system podczas instalacji, zawsze możemy to zmienić edytując powyższy plik.
Partycje są oznaczane w ten sposób:
Te oznaczenia też są proste. Żadna filozofia, trzeba po prostu wiedzieć jaka jest kolejność partycji na dysku i wiemy jak powinna być określona w GRUB.
Przejdźmy teraz do najważniejszego pliku konfiguracyjnego GRUB'a czyli /boot/grub/menu.lst. Tu znajduje się konfiguracja wyglądu i zachowania menu, które pokazuje się przed systemami. Zazwyczaj instalator systemu wszystko sam skonfiguruje, nie będzie trzeba specjalnie nic grzebać. Możemy co najwyżej pozmieniać wpisy w menu na jakieś bardziej pasujące nam, np. zamiast Windows Loader możemy dać Windows 7 czy Windows XP. Aby go edytować, trzeba mieć prawa admina w systemie.
Pliki konfiguracyjne Linuksa mają to do siebie, że są tekstowe, można je edytować w konsoli, bez środowiska graficznego i zazwyczaj same w sobie zawierają pomoc w konfiguracji (niestety po angielsku). Znaczki# poprzedzają komentarze, wszystko co po nich się znajduje będzie ignorowane przez programy. Są tylko dla informacji użytkownika. Zazwyczaj służą do pomocy. To bardzo ułatwia życie. Jeśli chce zmienić konfigurację odległego serwera, nie musze specjalnie do tego używać zdalnego pulpitu, który przez neta będzie się wlekł, wystarczy mi linia poleceń.
Poniżej przedstawię najważniejsze opcje GRUB'a, które można wykorzystać w konfiguracji.
Menu GRUB
W menu mamy 5 pozycji. Liczenie zaczynamy od zera. Jeśli chcemy aby domyślnie zaznaczony był Windows po default wpisujemy po prostu 4. Jeśli chcemy aby domyślnie był zaznaczony memtest, nie ma sprawy, wpisujemy 2. Czwarta linijka jest tylko opisem i nie zawiera, żadnych procedur uruchamiania systemu, więc nawet jeśli wpiszemy 3 to i tak sie nic nie uruchomi.
password ubuntu
Po wpisaniu hasła ubuntu mamy dostęp do menu. Ale żeby nikt nam nie podejrzał hasła możemy je zakodować. Uruchamiamy konsole, wpisujemy grub i enter. Jesteśmy w linii poleceń programu GRUB. Teraz wpisujemy polecenie md5crypt. Program zapyta nas o hasło, wpisujemy je, potwierdzamy enterem i dostajemy swojego hasło w postaci kodu md5. Kopiujemy to co wypluł program i wstawiamy do pliku menu.lst. Hasło ubuntu będzie wyglądać np. tak:
password $1$mH9J6/$2IYH5lu/byKJOVvshqVyy/
Napisałem na przykład ponieważ jeśli powtórzymy to samo polecenie, kod md5 będzie wyglądał już inaczej. Z linii poleceń GRUB'a wychodzimy przez quit. Jeśli naciśniemy przycisk tab uzyskamy listę poleceń.
Teraz dam kilka przykładowych wpisów z pliku menu.lst, które uruchamiają różne systemy, aby pokazać jak te opcje wygląją w całości.
title        Ubuntu 8.10, kernel 2.6.27-14-generic ?
uuid        176dd0de-adb1-4d6b-9103-4e469b454d79 ?
kernel        /boot/vmlinuz-2.6.27-14-generic root=UUID=176dd0de-adb1-4d6b-9103-4e469b454d79 ro splash ?
initrd        /boot/initrd.img-2.6.27-14-generic?
quiet ?
To uruchamia Ubuntu w normalnym trybie.
title        Ubuntu 8.10, memtest86+
uuid        176dd0de-adb1-4d6b-9103-4e469b454d79
kernel        /boot/memtest86+.bin
quiet
Ten wpis uruchamia program do testowania pamięci.
title        Microsoft Windows XP Professional
root        (hd0,0)
savedefault
makeactive
chainloader    +1
A ten uruchamia Windows'a.

Omówiłem podstawy tego programu, który co prawda jest w pełni konfigurowany przez Linuksa podczas instalacji, ale warto wiedzieć co znajduje się w środku. A jeszcze lepiej to wiedzieć to przed instalacją Ubuntu. Szczególnie kiedy mamy pierwszy raz styczność z Linuksem.
Mój GRUB
Menu wyboru systemów można jeszcze okrasić prostą grafiką, aby nie były nudne. Zdjęcie powyżej prezentuje mojego GRUB'a.
Jest jeszcze możliwość edycji menu jeszcze przed uruchomieniem systemu. Ustawienia te nie są zapisane, ponieważ sam program GRUB nie może zapisywać niczego na dysku, bez załadowania systemu i zalogowania. Zmiany dotyczną tylko samego menu, czyli na przykład nie zmienimy domyślnego systemu operacyjnego. Możemy na potrzeby tego jednego uruchomienia systemu wyłączyć usplash'a. Aby wyedytować konkretną linijkę, wystarczy ją wskazać (podświetlić ją), potem nacisnąć e (edit). Wprowadzamy zmiany, potwierdzamy enterem. Jeśli wszystko już poprawiliśmy naciskamy b (boot). Zmiany poczynione w ten sposób działają tylko do następnego resetu. Tak więc jeśli coś zepsuliśmy i system się nie uruchamia, a GRUB sypie błędami, to wystarczy zrestartować kompa.
I to byłoby na tyle jeśli chodzi o podstawy GRUB'a. W następnym artykule dla początkujących zajmiemy się instalacją Ubuntu.
Spodobało Ci się? Udostępnij, przypnij, podziel się z innymi:

Simple Disqus Comments