Spotkanie PLUG - 01.XII.1999
Następny tydzień, następne spotkanie. Znowu wystąpił Emil Stępniewski z tym razem (przynajmniej dla mnie osobiście) wyjątkowo ciekawym wykładem na temat LILO (przede wszystkim) oraz ogólnie ładowania systemu przez BIOS i procedury wczytywania kernela do pamięci przez różne loadery.
Można się było dowiedzieć m.in: skąd BIOS wie, co ma zacząć ładować do pamięci, jaka jest logiczna struktura dysku (co to jest MBR, co to jest ogólnie boot-sector, tablica partycji, partycje podstawowe <primary>, rozszerzone, logiczne), a potem w jaki sposób przebiegają kolejne etapy ładowania systemu przez LILO.
Dla osób które nie były na wykładzie, małe streszczenie tego ostatniego:
- na początku ładowany jest tzw. primary loader - który jest bardzo mały, ze względu na zafiksowany rozmiar boot-sectora (po załadowaniu na ekranie pojawia się literka L)
- Primary loader próbuje odczytać tzw. secondary loader - czyli drugi program ładujący, który już nie ma tak restrykcyjnych ograniczeń co do swojej wielkości.Jeśli ładowanie się powiedzie - pojawia się literka I, a jeśli nie - numer błędu który wyskoczył przy ładowaniu, np. 10: błąd CRC, na ogół wskazuje na uszkodzenie dysku/dyskietki... Przy czym po wyświetleniu numeru błędu podejmowana jest kolejna próba - ew. znowu jest wyświetlany numer błędu, i tak w kółko. Stąd efekt przewijających się przez ekran zer i jedynek...
- Jeśli powiodło się wczytanie drugiego loadera, pierwszy próbuje go uruchomić - jeśli mu się uda, na ekranie ląduje literka L. Jeśli nie - to system zwisa...Na ogół oznacza to, że pod adresem który mieliśmy zapamiętany (bo LILO odwołuje się do dysku po adresach fizycznych, a nie korzysta z systemu plików) jest coś innego, a nie nasz loader. Możliwe przyczyny: przenieśliśmy plik z drugim loaderem w inne miejsce, albo źle wyspecyfikowaliśmy geometrię dysku (lub jej nie podaliśmy, a system sam jej nie odgadł). Czasem pomaga dodanie opcji "linear" w lilo.conf, lub pełnej specyfikacji geometrii dysku: liczba cylindrów, głowic, sektorów.
- Jeśli secondary loader się uruchomił, ale coś z nim było nie tak, wyświetla się znaczek "?" (czyli że obraz drugiego loadera jest nie w tym miejscu w pamięci co trzeba, dlatego że np. geometria dysku jest podana niedokładnie) lub "-" (tablica opisująca położenie kernela itp. jest uszkodzona - to na ogół mają coś wspólnego z plikiem /boot/map - np. był on przeniesiony w inne miejsce, bez aktualizowania LILO)
- Jeśli został uruchomiony secondary loader i wszystko jest ok, to już on wyświetla nam literkę "O", ładuje do pamięci kernel i zaczyna go uruchamiać. Na tym kończy się działanie LILO
Takie informacje są przydatne przy diagnozowaniu problemów z ładowaniem systemu - teraz już wiadomo z grubsza o co chodzi, jeśli na ekranie jest np. samo "LI".
Dodatkowo jeszcze poznaliśmy różne sposoby na obchodzenie problemów z dużymi dyskami i 1024 cylindrem: jednym z nich może być użycie NILO, czyli loadera który nie używa odwołań BIOSu do dysku i dlatego nie ma problemu z rokiem 2000... eee, znaczy się właśnie z 1024 cylindrem :)
Innym, IMHO lepszym, jest wykorzystanie _dowolnej_ partycji, która znajduje się poniżej tegoż cylindra: niekoniecznie linuxowej. Wystarczy na nią przenieść zawartość katalogu /boot (konkretnie pliki: boot.b, chains.b, os2_d.b <czyli pliki zawierające loadery, których potem używa LILO. Pliki chains.b oraz os2_d.b nie zawsze są potrzebne...> i obraz kernela, z którego chcemy korzystać. Potem wystarczy w pliku lilo.conf nakazać korzystanie z plików nie z katalogu /boot, tylko np. z /mnt/c/ (który to katalog jest podmontowanym dosowym dyskiem C:) i uruchomić LILO. Ważne jest żeby potem nie ruszać tych plików na dosowej partycji, np. programem defragmentującym. Żeby się przed tym ustrzec, wystarczy ustawić im atrybuty analogiczne do plików msdos.sys i io.sys: system,read-only i hidden. I to z grubsza tyle...
Za tydzień jeszcze nie wiadomo, kto wystąpi, niewykluczone że ja (Sebastian), o ile nie uda mi się znaleźć nikogo innego na to miejsce ;) wykład będzie na temat korzystania z CVSa, lub o pakietach Debiana, to się jeszcze wyjaśni... Zapraszam.