H:\Książki\Informatyka\Linux\Linux - księga eksperta\04.DOC 105
Rozdzia³ 4. ¨ LILO 105
Kamrain Husain
W tym rozdziale:
u Instalacja programu LILO
u Linux i dyski twarde
u Sektor startowy
u Uruchamianie systemu
u Program instalujący plik mapowania sektora startowego
u Pliki obrazów sektora startowego
u Wyłączanie i usuwanie programu LILO
u LILO – rozwiązywanie problemów
Program LILO (ang. LInux LOader, czyli program ładujący Linuxa) służy do ładowania jądra systemu operacyjnego. Jest on programem bardzo elastycznym: potrafi uruchomić jądro Linuxa zapisane w dowolnym systemie plików, nie wyłączając dyskietki, również z poziomu innego systemu operacyjnego.
Ten rozdział poświęcony jest programowi LILO, obsłudze dysków twardych w systemie Linux, procesowi uruchamiania systemu (ang. boot), najpopularniejszym metodom uruchamiania systemu i ich powiązaniom z LILO. Powinien on pomóc Ci zainstalować oraz poprawnie i wydajnie używać programu LILO.
W systemach linuxowych spotkać można kilka wersji programu LILO. Większość nowszych wersji obsługuje jedną z dwóch struktur katalogów: bardziej tradycyjna (i starsza) struktura przechowywana jest w katalogu /etc/lilo, natomiast nowsza struktura porozrzucana jest po kilku katalogach, takich jak /etc, /sbin i /boot. Ponieważ wersja znajdująca się w całości w katalogu /etc/lilo jest popularniejsza, posłużymy się nią jako wersją modelową. Jeśli posiadasz wersję rozrzuconą po kilku katalogach, w przykładach należy podstawić odpowiednie ścieżki dostępu (jeżeli w systemie plików istnieje katalog /etc/lilo, oznacza to, że zainstalowana jest starsza wersja programu LILO).
W większości systemów program LILO jest już zainstalowany i skonfigurowany. Jeśli działa on prawidłowo w Twoim systemie, możesz pominąć ten podrozdział, chyba że zamierzasz uaktualnić wersję tego programu.
Wiele wersji Linuxa zawiera procedurę szybkiej instalacji programu LILO, instalującą minimalną liczbę plików niezbędnych do jego uruchomienia, która jest opisana w pliku QuickInst.old albo QuickInst.new (choć nie we wszystkich wersjach Linuxa). Może ona być używana wyłącznie w przypadku pierwszej instalacji programu LILO lub, gdy jego stara wersja ma zostać całkowicie usunięta. Nie powinna być natomiast stosowana do uaktualniania wersji LILO, ponieważ utracone zostaną wszystkie informacje konfiguracyjne.
Zanim można będzie skompilować program LILO, należy odpowiednio skonfigurować jądro systemu, używając programu makeconfig. Aby kompilacja przebiegła poprawnie, wszystkie pliki nagłówkowe kodu źródłowego jądra systemu muszą znajdować się w katalogu /usr/ include/linux. Proces instalacji i kompilacji powinien zostać uruchomiony pod kontrolą powłoki sh (Bourne Shell) albo kompatybilnej. Zgłaszane były problemy pojawiające się podczas kompilacji pod kontrolą powłoki Korn Shell, lepiej więc użyć powłoki /bin/sh lub /bin/bash.
Pełna instalacja LILO wymaga, by wszystkie pliki z jego archiwów (zazwyczaj nazywają się one lilo.xxx.tar.gz, gdzie xxx odpowiada numerowi wersji) były rozpakowane do katalogu o nazwie innej niż /etc/lilo, ponieważ procedura instalacyjna zgłasza błąd, gdy nazwy katalogu źródłowego i docelowego są identyczne. Po zdekompresowaniu plików do jakiegoś tymczasowego katalogu należy kolejno:
1. przejrzeć plik makefile i upewnić się, że zawarte w nim informacje dotyczące konfiguracji są prawidłowe (dokładniej temat ten zostanie omówiony w podrozdziale „Plik makefile”);
2. skompilować program LILO; jeśli chcesz używać starej struktury katalogów (/etc/lilo), wydaj polecenie
make –f Makefile.old
3. natomiast jeśli chcesz zainstalować nowszą strukturę:
make –f Makefile.new
4. skopiować pliki programu LILO do katalogu docelowego, wydając polecenie
make –f Makefile.old install
lub
make –f Makefile.new install
w zależności od tego, czy używasz starej, czy nowej struktury katalogów;
5. przejrzeć katalogi lilo; powinny znajdować się w nich takie pliki jak: any_d.b, boot.b, chain.b, disktab, lilo i os2_d.b.
Jeśli plików tych nie ma albo też podczas instalacji wyświetlane były komunikaty o błędach, powinieneś powtórzyć proces instalacji. Należy również sprawdzić, czy informacje zawarte w pliku Makefile są odpowiednie dla systemu. Po prawidłowym zainstalowaniu programu LILO można użyć go do skonfigurowania procesu uruchamiania systemu.
W niektórych systemach dyski twarde nie pozwalają na odczytanie informacji o swoich parametrach, takich jak ilość głowic, cylindrów i sektorów na ścieżkę – generowane są wtedy komunikaty typu „bad geometry”, a proces instalacji kończy się błędami dysku. Dotyczy to szczególnie dysków SCSI oraz dysków o pojemności większej niż 1GB.
W takim przypadku parametry dysku muszą zostać wpisane do pliku disktab. Dokładniejszy opis tego zagadnienia znajdziesz w podrozdziale „Tablica parametrów dysku” w dalszej części tego rozdziału. Zmodyfikuj zgodnie z opisem zawartość pliku disktab, dopisując do niego parametry dysku, a następnie przetestuj nową konfigurację, kopiując ją na dyskietkę i uruchamiając z niej system. Aby to zrobić, musisz:
1. wejść do katalogu programu LILO (zazwyczaj jest to katalog /etc/lilo);
2. skopiować konfigurację LILO na dyskietkę za pomocą następującego polecenia:
echo image=nazwa_kernela | ./lilo –C ‑ ‑b /dev/fd0 ‑v
gdzie nazwa_kernela to nazwa pliku zawierającego jądro systemu (jeśli nie chcesz utracić bieżącej zawartości pliku mapowania sektora startowego, powinieneś dodać opcję –m, a po niej nazwę nowego pliku mapowania);
3. ponownie uruchomić system z dyskietki.
Jeśli informacje konfiguracyjne są poprawne, LILO odczyta program uruchamiający system z dyskietki, po czym załaduje z dysku twardego jądro systemu. Parametry dysku są poprawne, jeżeli uruchomienie przebiegło pomyślnie i można poruszać się po systemie plików. Jeśli nie masz dostępu do systemu plików zapisanego na dysku twardym, oznacza to, że parametry dysku zostały podane nieprawidłowo i należy je poprawić.
Plik Makefile, dostarczany razem z programem LILO, zawiera informacje poprawne dla większości systemów, dla bezpieczeństwa należy jednak je przejrzeć. LILO używa danych zapisanych w pliku Makefile albo /etc/lilo/config.defines. Jeśli istnieje plik config.defines, plik Makefile jest ignorowany. W większości przypadków edycja pliku Makefile jest dobrym rozwiązaniem, ale jeśli zamierzasz intensywnie korzystać z programu LILO, lepiej wprowadzać modyfikacje do pliku config.defines, ponieważ nowe instalacje LILO nie naruszają danych w nim zapisanych.
Parametry definiowane w pliku Makefile, na które należy zwrócić szczególną uwagę, zebrane zostały w tabeli 4.1, wraz z objaśnieniami sposobu ich działania.
Tabela 4.1. Parametry programu LILO definiowane w pliku Makefile
Parametr
Znaczenie
IGNORECASE
Powoduje, że w nazwach plików zawierających jądro systemu nie rozróżniane są małe i wielkie litery; domyślnie włączone.
NO1STDIAG
Powoduje, że nie będą wyświetlane komunikaty o błędach odczytu przy ładowaniu programu zarządzającego uruchamianiem systemu; domyślnie wyłączone.
NOINSTDEF
Jeśli w wierszu poleceń pominięto opcję instalacji, nie zostanie zainstalowany nowy sektor startowy, ale zmodyfikowany istniejący; domyślnie wyłączone.
ONE_SHOT
Powoduje, że system nie uruchomi się samoczynnie w przypadku, gdy wciśnięty zostanie jakiś klawisz; domyślnie wyłączone.
READONLY
Zapobiega usunięciu istniejącego pliku mapowania sektora startowego; domyślnie wyłączone.
Proces uaktualniania istniejącej wersji LILO przebiega prawie tak samo jak jego pierwsza instalacja. Jedyną różnicą jest fakt, że wykonane zostaną kopie zapasowe wszystkich istniejących plików konfiguracyjnych, o nazwach z rozszerzeniem .old, na przykład plik chain.b zostanie przemianowany na chain.old. Jeśli nowa wersja LILO zachowuje się poprawnie, pliki te mogą później zostać usunięte.
Uaktualnienie wersji LILO zawsze wiąże się z koniecznością odświeżenia sektora startowego, ponieważ trzeba dodać do niego informacje o nowych lokalizacjach plików i o nowym pliku mapowania sektora startowego. Odświeżanie sektora startowego polega na uruchomieniu programu lilo.
Żeby zrozumieć zasadę działania LILO, musisz poznać „budowę” dysku twardego. Na pewno wiesz, że jest to w zasadzie system koncentrycznych ścieżek (ang. track), rozchodzących się od środka powierzchni dysku (talerza) w kierunku jego brzegu. Każda ścieżka podzielona jest na pewną liczbę sektorów (ang. sector).
Dysk twardy identyfikowany jest przez liczbę talerzy, a dokładniej liczbę głowic (ponieważ liczba talerzy może być większa, gdy nie wszystkie są używane do zapisywania danych, jak to ma zazwyczaj miejsce w przypadku pierwszego i ostatniego talerza), liczbę ścieżek na cal (mierzoną wzdłuż promienia) i liczbę sektorów przypadających na jedną ścieżkę. Znając pojemność jednego sektora, łatwo wyliczyć całkowitą pojemność dysku przez pomnożenie liczby sektorów na ścieżkę, liczby ścieżek i głowic oraz pojemności jednego sektora.
Linux jest dość ściśle powiązany z systemem DOS, więc zobaczmy najpierw, jak z dysku twardego korzysta DOS. Dysk zawierający jeden system operacyjny (czyli również dyskietka) posiada sektor startowy (ang. boot sector), po którym następuje obszar danych, zawierający między innymi blok administracyjny (informacje o rozkładzie plików itp.).
Sektor startowy jest pierwszym sektorem na dysku; jest on odczytywany podczas uruchamiania komputera w celu załadowania systemu operacyjnego. Sektor startowy zawiera króciutki program, kierujący proces uruchamiania systemu do właściwych procedur inicjujących.
Blok administracyjny jest przeważnie częścią obszaru danych, choć nie jest bezpośrednio dostępny dla użytkowników. Zawiera on informacje o położeniu plików na dysku (w formacie głowica/ścieżka/sektor). W systemie DOS zapisane są one w tablicy alokac...
Wolf-1