Następna strona Poprzednia strona Spis treści

6. Składnie tego wszystkiego: tworzenie dyskietek.

W tym momencie powinieneś posiadać jądro oraz skompresowany główny system plików. Jeśli tworzysz dyskietkę startową/główną, sprawdź, czy oba pliki zmieszczą się na dyskietce. Jeśli tworzysz osobno dystkietkę startową i główną, sprawdź, czy główny system plików zmieści się na jednej dyskietce.

Powinieneś zdecydować, czy używać LILO do wystartowania jądra. Alternatywnym rozwiązaniem jest skopiowanie jądra bezpośrednio na dyskietkę i wystartowanie bez LILO. Zaletą korzystania z LILO jest to, że umożliwia on przekazanie pewnych parametrów do jądra które mogą być konieczne do inicjalizacji sprzętu. Sprawdź plik /etc/lilo.conf. Jeśli istnieje on i zawiera linię ``append=...'', prawdopodobnie musisz przekazać jakieś parametry. Wadą korzystania z LILO jest to, że tworzenie dyskietki jest bardziej skomplikowane, i zajmuje trochę więcej miejsca. Musisz utworzyć odrębny system plików, który nazwiemy systemem plików jądra, do którego skopiujesz jądro i kilka innych plików wymaganych przez LILO.

Jeśli zamierzasz korzystać z LILO, czytaj dalej. Jeśli chcesz skopiować jądro bezpośrednio na dyskietkę, przejdź do działu Przenoszenie jądra bez LILO.

6.1 Przenoszenie jądra z LILO.

Pierwszą rzeczą, która musisz zrobić, jest stworzenie małego pliku konfiguracyjnego dla LILO. Powinien on wyglądać mniej więcej tak:


      boot      =/dev/fd0
      install   =/boot/boot.b
      map       =/boot/map
      read-write
      backup    =/dev/null
      compact
      image     = KERNEL
      label     = Bootdisk
      root      =/dev/fd0

Znaczenia tych parametrów szukaj w dokumentacji LILO. Prawdopodobnie będziesz chciał również dodać do pliku linię append=... taką samą, jak w pliku /etc/lilo.conf na dysku twardym.

Zapisz ten plik jako bdlilo.conf.

Następnie musisz stworzyć mały system plików, który nazwiemy systemem plików jądra, aby odróżnić go od głównego systemu plików.

Najpierw sprawdź, jak duży powinien być ten system plików. Weź rozmiar twojego jądra w blokach (rozmiar pokazywany przez komendę ``ls -l KERNEL'' podzielony przez 1024 i zaokrąglony w górę) i dodaj 50. Około pięćdziesiąt bloków to obszar potrzebny na i-węzły oraz pozostałe pliki. Jeśli chcesz, możesz dokładnie obliczyć ten obszar, lub po prostu użyć liczby 50. Jeśli tworzysz osobno dyskietkę startową i główną, to możesz spokojnie przeznaczyć nawet więcej miejsca, jako że pierwsza dyskietka jest w całości przeznaczona na jądro. Nazwijmy tę liczbę BLOKI_JĄDRA.

Włóż dyskietkę do stacji dysków (przyjmiemy że jest nią /dev/fd0) i utwórz na niej system plików ext2:

      mke2fs -i 8192 -m 0 /dev/fd0 BLOKI_JĄDRA

Opcja ``-i 8192'' oznacza, że chcemy jeden inode co 8192 bajty. Następnie zamontuj system plików, usuń katalog lost+found oraz utwórz katalogi dev i boot dla LILO:

      mount /dev/fd0 /mnt
      rm -rf /mnt/lost+found
      mkdir /mnt/{boot,dev}

Następnie utwórz urządzenia /dev/null i /dev/fd0. Zamiast szukania ich numerów, możesz po prostu skopiować je z twardego dysku używając opcji -R:

      cp -R /dev/{null,fd0} /mnt/dev

LILO wymaga kopii swojego programu startującego, boot.b, który możesz przegrać z twardego dysku. Zwykle znajduje się on w katalogu /boot:

      cp /boot/boot.b /mnt/boot

Na koniec skopiuj plik konfiguracyjny LILO który utworzyłeś poprzednio oraz swoje jądro. Oba pliki mogą zostać umieszczone w głównym katalogu:

      cp bdlilo.conf KERNEL /mnt

W tej chwili w systemie plików jądra znajduje się wszystko co potrzebne dla LILO, więc jesteś teraz gotowy do uruchomienia go. Opcja -r oznacza instalowanie programu startującego w katalogu innym niż główny:

      lilo -v -C bdlilo.conf -r /mnt

LILO powinien zakończyć działanie bez żadnych błędów, następnie system plików powinien wyglądać podobnie jak poniżej:


total 361
  1 -rw-r--r--   1 root     root          176 Jan 10 07:22 bdlilo.conf
  1 drwxr-xr-x   2 root     root         1024 Jan 10 07:23 boot/
  1 drwxr-xr-x   2 root     root         1024 Jan 10 07:22 dev/
358 -rw-r--r--   1 root     root       362707 Jan 10 07:23 vmlinuz
boot:
total 8
  4 -rw-r--r--   1 root     root         3708 Jan 10 07:22 boot.b
  4 -rw-------   1 root     root         3584 Jan 10 07:23 map
dev:
total 0
  0 brw-r-----   1 root     root       2,   0 Jan 10 07:22 fd0
  0 crw-r--r--   1 root     root       1,   3 Jan 10 07:22 null

Nie przejmuj się, jeśli rozmiary plików sę nieco inne.

Następnie pozostaw dysk w napędzie i przenieś się do działu Konfiguracja słowa ramdysku.

6.2 Przenoszenie jądra bez LILO.

Jeśli nie korzystasz z LILO, to skopiuj jądro na dyskietkę startową używając komendy dd:

      % dd if=KERNEL of=/dev/fd0 bs=1k
      353+1 records in
      353+1 records out

W tym przykładzie dd zapisał 353 kompletne rekordy oraz 1 niekompletny, tak więc jądro zajmuje teraz pierwsze 353 bloki na dyskietce. Nazwij tę liczbę BLOKI_JĄDRA i zapamiętaj ją, ponieważ będzie ona potrzebna w następnym dziale.

Na koniec ustaw dyskietkę jako główne urządzenie i skonfigguruj je tak, aby było dostępne do zapisu i odczytu:

      rdev /dev/fd0 /dev/fd0
      rdev -R /dev/fd0 0

Pamiętaj, aby użyć opcji -R pisanej wielką literą w drugiej komendzie rdev.

6.3 Konfiguracja słowa ramdysku.

Wewnątrz obrazu jądra znajduje się słowo ramdysku, które mówi, gdzie znajduje się główny system plików, oraz zawiera pewne inne opcje. Słowo to można zmieniać za pomocą polecenia rdev, a interpretowane jest w następujący sposób:

      bity  0-10:     Przemieszczenie ramdysku, w blokach 1024-bajtowych
      bity 11-13:     nieużywane
      bit     14:     Flaga oznaczająca, że ramdysk na zostać załadowany
      bit     15:     Flaga oznaczająca, aby pytać przez ładowaniem
                      głównego systemu plików

Jeśli bit 15 jest ustawiony, to podczas startu zostaniesz poproszony o włożenie do napędu nowej dyskietki. Jest to konieczne w przypadku korzystania z dwóch dyskietek.

Istnieją dwa przypadki, w zależności od tego, czy budujesz pojedynczą dyskietkę startową/główną, czy dwie osobne dyskietki, startową i główną.

  1. Jeśli budujesz system na jednej dyskietce, to skompresowany główny system plików zostanie umieszczony zaraz za jądrem, więc przemieszczenie ramdysku będzie następnym wolnym blokiem za jądrem (czyli powinno wymosić tyle samo, ile BLOKI_JĄDRA). Bit 14 zostanie ustawiony na 1, a bit 15 będzie wynosił zero.
  2. Jeśli budujesz zestaw dwóch dyskietek, to główny system plików rozpocznie się w bloku zero drugiej dyskietki, więc przemieszczenie będzie wynosić zero. Bity 14 oraz 15 będą ustawione na 1.

Po skrupulatnych obliczniach wartości słowa ramdysku, ustaw ją poleceniem rdev -r. Upewnij się, że podałeś wartość dziesiętną. Jeśli korzystasz z LILO, to argumentem dla rdev powinna być ścieżka do jądra, np. /mnt/vmlinuz. Jeśli kopiowałeś jądro za pomocą polecenia dd, to użyj zamiast tego nazwę urządzenia stacji dysków (np. /dev/fd0).

      rdev -r JĄDRO_LUB_STACJA_DYSKÓW WARTOŚĆ

Jeśli korzystasz z LILO, odmontuj teraz dyskietkę.

6.4 Przenoszenie głównego systemu plików.

Ostatnim krokiem jest przeniesienie głównego systemu plików.

Moje gratulacje, dyskietki są już gotowe! Zawsze powninieneś przetestować swoje dyskietki startowe zanim odłożysz je na bok do czasu awarii! Jeśli coś się nie uda, czytaj dalej.


Następna strona Poprzednia strona Spis treści