purpura, woda uspokaja

purpura, woda uspokaja
fot. Salman Arif Khan

poniedziałek, 3 lutego 2014

Grub

Grub jest pierwszym programem widocznym przez każdego z nas po instalacji Pointa i ponownym restarcie. Potrafi on rozpoznać dostępne na dysku systemy operacyjne i narzędzia. A przy kolejnych startach wybrać odpowiedni system lub narzędzie do dalszej pracy.
Jego instalacja i praca w dużym stopniu zależna jest od topologii dysku. Dla swojego działania zmienia on pewne obszary dysku dla swoich potrzeb. Dodatkowo wykorzystuje obszary dysku niezajęte przez system. Kluczowym jest oczywiście MBR - sektor rozruchowy dysku nadpisany w trakcie installacji Pointa. W efekcie tego tracimy bezpośredni dostęp do programu rozruchowego windows, o ile posiadamy go na dysku. Każdy system operacyjny musi być uruchamiany oprzez gruba. Ale to dobrze i tak ma być. XP nie umożliwiają rozpoznania i startu innego systemu operacyjnego.
Jak poprzednio, podstawowym założeniem przy instalacji systemu operacyjnego (windowsów, pointa lub innego systemu) i teraz przy modyfikacji gruba było założenie, że fimwarem jest BIOS.

Parametry gruba przechowywane są w pliku tekstowym /etc/default/grub. Plik ten możemy edytować mając uprawnienia administratora.

Tutaj uwaga, dla tych co pierwszy raz i nie wiedzą. W systemach unixowych zawsze pracujemy na swoje konto z mniejszą ilością uprawnień. W pewnych obszarach możemy wszystko, w innych, szczególnie istotnych, musimy sobie przyznać dodatkowe uprawienia. Musimy być rootem, co w windowsach nazywa się administratorem. Jednym z ograniczeń jest zmiana parametrów systemu (a także instalacja innych programów). Bezpieczeństwo bywa męczące, dlatego w windowsach xp natywnie nie ma żadnych zabezpieczeń. Prowadzi to do wielu groźnych sytuacji. W systemach unixowych unikamy tego stosując wypróbowane i racjonalne praktyki. Jedną z nich są ograniczone uprawnienia użytkownika.


Wykonanie polecenia jako root wymaga przynajmniej jednorazowego nadania użytkownikowi stosownych uprawnień. Programem nadającym dodatkowe uprawnienia jest sudo. Dla programów graficznych - gksu.

W systemach unixowych nie wszystko można wyklikać. Wszystko można zrobić w terminalu. To jest siła. Trzeba jednak umieć z tego używać. To jest podstawowy problem. Nie myślcie, że tego nie ma w windowsach. Dokładnie tak samo. By nie odstraszać użytkowników zostało to ukryte i wymaga uruchomienia programu "uruchom" w menu startowym.

Wracamy do Pointa. Uruchamiamy terminal i wpisujemy polecenie

gksu pluma /etc/default/grub

Pojawi się okienko z prośbą o wpisanie naszego hasła. Nie znamy hasła, nie ma autoryzacji. Koniec. Hasło jest niezbędne. O ile można zalogować się bez hasła, jeżeli tego sobie zażyczymy, to nie można zmienić istotnych parametrów systemu bez autoryzacji. Tak to działa. Ale jest gwarancją stabilności, spokoju i generalnie bezpieczeństwa.

W pliku tym wszystkie linie zaczynające się hashem (#) są komentarzami.

Co zmieniamy??

1. Rozdzielczość.

Grub automatycznie dobiera sobie rozdzielczość w trakcie startu systemu. Jednak nie zawsze ładnie to wygląda. By zmienić musimy dodać parametr GRUB_GFXMODE (poprzedzony # oznacza, że użyte zostały ustawienia standardowe). Przekopiujmy linijkę z haszem poniżej, usuńmy hash i rozdzielczość 640x480. Wpiszmy żądaną rozdzielczość. Dla mojego notebooka jest tak

GRUB_GFXMODE=1366x768

a dla desktopu wstawiłem 1280x1024.

2. Start.

Zwykle grub czeka określoną liczbę sekund by dać czas na wybór systemu lub narzędzia. Parametr ten definiowany jest przez GRUB_TIMEOUT. Składnia jest następująca

GRUB_TIMEOUT=n

jeżeli n jest

  • równe -1, grub czeka w nieskończoność do ręcznego wyboru systemu,
  • równe 0, nie mamy możliwości wyboru. Niezwłocznie startuje wybrany wcześniej system,
  • dowolną liczbą naturalną, grub czeka n sekund, w czasie których możemy zmienić wybór. Jeżeli tego nie zrobimy, startuje z systemem wcześniej zdefiniowanym.

3. Wybór

W chwili instalacji grub jako system startowy wybiera ten, z którego został zainstalowany. Numeracja rozpoczyna się od 0. Czyli nasz system jest zerowy. Jeżeli się okaże, że są windowsy jako trzeci system, to ich numer w grubie wynosi 2. Pozycja systemów i narzędzi widoczna jest podczas pierwszego startu. Parametrem wyboru jest GRUB_DEFAULT. Jeżeli ustawimy

GRUB_DEFAULT=2

to standardowo wybierany jest trzeci system.

Możemy też wybrać inne rozwiązanie. Po raz kolejny opcjonalnie uruchamiamy ten system, który był uruchomiony poprzednio. Jeżeli chcemy zmienić decyzję, mamy na to czas. Tutaj nic się nie zmienia. Działamy. Najpierw hashujemy linię z parametrem GRUB_DEFAULT. W dowolnym miejscu, z reguły na początku dopisujemy następujące ustawienia

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true


Zrobione. Zapisujemy i zamykamy plik. Poniżej fragment mojego pliku /etc/default/grub

...
#starts last used
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

#always first (no. 0)
#GRUB_DEFAULT=0
#---
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""

...

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
GRUB_GFXMODE=1366x768
...


4. Tło.

Grub umożliwia ustawienie kolorów tła i liter. Opcjonalnie, to niebieskie tło i białe litery. Bardziej interesujące jest ustawienie w tle jakiegoś obrazka. Rozwiązań jest kilka. Jednym z nich jest dodanie parametru w pliku /etc/default/grub definującym miejsce obrazka, ja jednak wolę inne rozwiązanie. Pierwszy (alfabetycznie) obrazek umieszczony w katalogu /boot/grub jest użyty jako tło. Oczywiście są pewne ograniczenia co do obrazka i może się zdażyć, że tło nie zostanie wygenerowane. Dlatego warto wybierać pliki jpg lub png z odpowiednią rozdzielczością (ja stosuję zawsze taką rozdzielczość jak rozdzielczość, którą ustawiam w pliku /etc/default/grub) i ograniczoną ilością kolorów. Wersji gruba jest wiele. Zmienia się to w czasie, dlatego trzeba nieco eksperymenować.
Do kopiowania plików służy polecenie cp (polecenie cd służy do zmiany katalogu roboczego). Uruchamiamy terminal. Wygląda to tak

cd katalog_obrazka
sudo cp nazwa_obrazka /boot/grub


Po autoryzacji (hasło!!) plik zostanie przekopiowany. Wiem, że na początek, to ostra jazda, ale to podstawy. Pamiętajcie, że wielu zabiera rok i dłużej (znam takich, co potrzebowali trzech lat), by nauczyć się mówić. Z perspektywy czasu, to wszystko jest łatwe, ale początki łatwe nie są.

5. Finis coronat opus

W tym wypadku to jednak nie wszystko. Tak na prawdę to edytowaliśmy parametry programu generującego ustawienia gruba, nie zaś parametry gruba, które są w /boot/grub/grub.cfg. Wygenerujmy stosowne ustawienia. W terminalu wpisujemy

sudo update-grub

Wszystkie opcje działają już przy następnym uruchomieniu systemu.

6. Zmiana kolejności

To już są działania dla bardziej zaawansowanych. Ale powiem trochę na zapas. Kolejność programów w grubie można zmienić. Część z nich można nawet wyłączyć. Jak to zrobić? Informacja poniżej.

Przejdźmy do katalogu /etc/grub.d/. Tam są pliki wykonywalne generujące ustawienia gruba. Polecenie update-grub tworzy właśnie grub.cfg za pomocą skryptów tego katalogu. Skrypty wykonywane są w porządku alfabetycznm. 10, to utworzenie wpisu o aktualnym systemie, 20, narzędzia np. memtest o ile jest zainstalowany, 30, to inne systemy. Zmiana nazwy może zmienić kolejność. Niewykonanie jakiegoś skryptu powoduje, że w grubie nie ma opcji odpowiadających skryptowi. Zasada prosta, czas na wykonanie.

Windowsy mają być pierwszym systemem. Skryptem przeszukującym dysk lub dyski w poszukiwaniu innych systemów jest 30_os-prober. Zmieniamy jego nazwę. By był pierwszy, numer musi być stosownie mały. W terminalu wpisujemy

cd /etc/grub.d
sudo mv 30_os-prober 09_os-prober


Teraz skrypt 09... jest uruchamiany przed skryptem 10... co powoduje, że inne systemy (np. windowsy) są na wyższych pozycjach gruba. Dodatkowo, jeżeli chcemy wyłączyć skrypt 20.. (np w Ubuntu denerwuje nas memtest w opcjach startowych gruba), zmieniamy plik 20_linux_xen na plik niewykonywalny (zakładam, że już jesteśmy w katalogu /etc/grub.d)

sudo chmod -x 20_linux_xen

użycie polecenia update-grub (jako root) kończy procedurę.