The Linux Bootdisk HOWTO: Budowanie głównego systemu plików.
Następna strona
Poprzednia strona
Spis treści
4. Budowanie głównego systemu plików.
Tworzenie głównego systemu plików wymaga wyselekcjonowania plików niezbędnych
dla działania systemu. W tym rozdziale opiszemy, jak zbudować
skompresowany główny system plików. Rzadziej spotykanym
rozwiązaniem jest stworzenie nieskompresowanego systemu plików na dyskietce,
która będzie mogła zostać bezpośrednio zamontowana jako główna. Taka
alternatywa jest opisana w rozdziale
Systemy plików bez ramdysku.
4.1 Wiadomości ogólne.
Główny system plików musi zawierać to wszystko, co potrzebne jest do
prawidłowego działania pełnego systemu Linux. Aby tego dokonać, dyskietka
musi spełniać minimalne wymagania dla systemu Linux, to znaczy musi posiadać:
Podstawową strukturę systemu plików,
Minimalny zestaw katalogów: /dev, /proc, /bin, /etc, /lib, /usr,
/tmp,
Podstawowy zestaw programów użytkowych: sh, ls, cp, mv,
itd.,
Minimalny zestaw plików konfiguracyjnych: rc, inittab, fstab,
itd.,
Urządzenia: /dev/hd*, /dev/tty*, /dev/fd0, etc.,
Biblioteki zapewnieniające podstawowych funkcji używanych przez
programy użytkowe.
Oczywiście system staje się użyteczny tylko wtedy, gdy można coś na nim
uruchomić. Dyskietka główna w zasadzie staje się użyteczna tylko wtedy, gdy
można wykonać poniższe czynności:
Sprawdzić system plików na innym dysku. Na przykład aby sprawdzić główny
system plików na dysku twardym musisz uruchomić system z innego dysku,
takiego jak dyskietka startowa. Następnie musisz uruchomić program
fsck sprawdzający dysk twardy gdy nie jest on zamontowany.
Odzyskać całość lub część twardego dysku z kopii zapasowej, używając
programów kompresujących i archiwizujących takich jak cpio, tar, gzip
i ftape.
Opiszemy jak stworzyć skompresowany system plików, nazwany tak dlatego,
że jest on spakowany na dyskietce a podczas startu systemu zostaje
zdekompresowany do ramdysku.
W
skompresowanym systemie plików można zmieścić sporo plików (około sześć
megabajtów) na standardowej dyskietce 1.44MB. System plików jest większy niż
dyskietka, więc nie można go tworzyć na dyskietce. Musimy stworzyć go gdzie
indziej, skompresować a następnie skopiować na dyskietkę.
4.2 Tworzenie systemu plików.
Aby stworzyć główny system plików potrzebne jest wolne urządzenie, na którym
muszą zmieścić się pliki przed kompresją. Potrzebujesz urządzenia o
rozmiarze co około czterech megabajtów. Istnieje kilka możliwości:
Użyj ramdysku (URZĄDZENIE = /dev/ram0). W
takiej sytuacji pamięć operacyjna jest wykorzystywana do zasymulowania
dysku. Ramdysk musi być odpowiedniej wielkości, tak, aby zmieścił się na nim
tworzony system plików. Jeśli korzystasz z LILO, to w pliku konfiguracyjnym
(/etc/lilo.conf) powinna znajdować się linia:
RAMDISK_SIZE = nnn
która ustala ilość przydzielanej pamięci RAM. Wartością domyślną jest 4096K,
co powinno wystarczyć do naszych celów. Prawdopodobnie nie powinieneś
tworzyć takiego ramdysku na komputerze z mniej niż 8MB RAM.
Upewnij się czy istnieje urządzenie /dev/ram0, /dev/ram czy
/dev/ramdisk. Jeśli nie, to utwórz /dev/ram0 za
pomocą polecenia mknod (liczba główna 1, poboczna 0).
Dobrym rozwiązaniem jest wystarczająco duża partycja na dysku twardym.
Użyj użądzenia zwrotnego, które umożliwia traktowanie
pliku na dysku jako urządzenia. Korzystając z urządzenia zwrotnego możesz
stworzyć na dysku twardym plik mający trzy megabajty i zbudować w nim system
plików.
Wpisz man losetup aby uzyskać informacje na temat korzystania z urządzeń
zwrotnych. Jeśli nie posiadasz losetup, możesz go znaleźć razem z
kompatybilnymi wersjami mount i umount w pakiecie util-linux
pod adresem
ftp://ftp.win.tue.nl/pub/linux/utils/util-linux/.
Jeśli nie posiadasz urządzenia zwrotnego (/dev/loop0,
/dev/loop1, itd.) w systemie, to musisz je stworzyć za pomocą
polecenia ``mknod /dev/loop0 b 7 0''. Po zainstalowaniu nowych
wersji mount i umount stwórz na dysku plik tymczasowy o
odpowiednim rozmiarze (np. /tmp/fsfile). Możesz użyć komendy
dd if=/dev/zero of=/tmp/fsfile bs=1k count=<it/nnn/
aby stworzyć plik o długości nnn bloków.
W poniższych przykładach użyj nazwy pliku zamiast słowa URZĄDZENIE. Gdy
montujesz taki plik, musisz dodać opcję ``-o loop'' aby
poinformować system, że jest to urządzenie zwrotne.
Na przykład polecenie
mount -o loop -t ext2 /tmp/fsfile /mnt
zamontuje plik /tmp/fsfile (poprzez urządzenie zwrotne) w
katalogu /mnt. Polecenie df potwierdzi to.
Gdy już wybrałeś jedną z tych możliwości, przygotuj URZĄDZENIE za pomocą
polecenia:
dd if=/dev/zero of=URZĄDZENIE bs=1k count=3000
Ta komenda wyzerowuje urządzenie. Ten krok jest bardzo ważny, ponieważ
system plików zostanie później skompresowany, więc niewykorzystany obszar
powinien zostać wypełniony zerami, aby otrzymać jak najlepszą kompresję.
Następnie stwórz system plików. Jądro Linuxa rozpoznaje i kopiuje z
dyskietki głównej do ramdysku dwa rodzaje systemów plików. Są to minix i
ext2, jednak preferowany jest ten drugi. Jeśli zdecydujesz się na ext2, to
przydatna może okazać się opcja -i, dzięki której możesz stworzyć
więcej i-węzłów niż jest to przyjęte domyślnie. Zalecane jest użycie opcji
-i 2000, aby nie zabrakło ci i-węzłów. Ewentualnie możesz zaoszczędzić
sporo i-węzłów poprzez usunięcie wielu niepotrzebnych plików z katalogu
/dev. Na dyskietce 1.44MB polecenie mke2fs domyślnie utworzy
360 i-węzłów. Na mojej dyskietce ratunkowej wystarcza w zupełności 120
i-węzłów, jednak gdy dołączysz wszystkie urządzenia z katalogu
/dev z pewnością przekroczysz 360. Użycie skompresowanego systemu
plików daje do dyspozycji więcej miejsca, czyli jednocześnie większą ilość
domyślnych i-węzłów, ale ciągle może okazać się konieczna redukcja liczby
plików czy zwiększenie liczby i-węzłów.
Tak więc polecenie które użyjesz powinno wyglądać mniej więcej tak:
mke2fs -m 0 -i 2000 URZĄDZENIE
(Jeśli korzystasz z urządzenia zwrotnego, to w miejsce URZĄDZENIA powinieneś
podać nazwę pliku. W tej sytuacji program mke2fs zapyta czy naprawdę
chcesz to zrobić, odpowiedz tak).
Program mke2fs automatycznie wykryje ilość wolnego miejsca i
odpowiednio się skonfiguruje. Opcja -m 0 zapobiega rezerwowaniu miejsca
dla użytkownika root, powiększając w ten sposób dostępny obszar na dysku.
Następnie zamontuj urządzenie:
mount -t ext2 URZĄDZENIE /mnt
(Musisz stworzyć katalog /mnt jeśli jeszcze nie intnieje.) W
pozostałych działach wszystkie nazwy katalogów będą podawane wzgędem
katalogu /mnt.
4.3 Zapełnianie systemu plików.
Poniżej znajduje się minimalny zestaw katalogów dla twojego głównego systemu
plików:
/dev -- Urządzenia, wymagane do operacji wejścia/wyjścia
/proc -- Katalog wymagana przez system plików proc
/etc -- Pliki konfiguracyjne systemu
/sbin -- Programy krytyczne dla działania systemu
/bin -- Podstawowe programy uważane za część systemu
/lib -- Biblioteki dzielone
/mnt -- Miejsce montowania innych systemów plików
/usr -- Dodatkowe narzędzia i aplikacje
(Pokazana tutaj struktura katalogów odnosi się jedynie do głównych
dyskietek. Prawdziwe systemy Linux używają bardziej złożonych i
rygorystycznych zasad ustalania gdzie plik powinien się znajdować, zwanych
Filesystem Hierarchy Standard).
Trzy katalogi w głównym systemie plików pozostaną puste, więc wystarczy je
utworzyć komendą mkdir. Katalog /proc to po prostu miejsce, w
którym umieszczony zostanie system plików proc. Katalogi /mnt i
/usr są tylko miejscami montowania innych systemów plików gdy
dyskietka startowa/główna już działa. Także te katalogi wystarczy jedynie
utworzyć.
Pozostałe cztery katalogi są opisane w następnych działach.
/dev
Katalog /dev zawiera specjalne pliki dla każdego wykorzystywanego
przez system urządzenia, katalog ten jest obowiązkowy. Jest to zwykły
katalog, więc może zostać stworzony poleceniem mkdir. Jednak
poszczególne pliki urządzeń muszą zostać utworzone w nietypowy sposób,
za pomocą komendy mknod.
Istnieje jednak droga na skróty, możesz skopiować zawartość istniejącego już
katalogu /dev i skasować niepotrzebne pliki. Podczas kopiowania
musisz użyć opcji -R, dzięki temu nie będzie kopiowana zawartość
plików. Upewnij się, że użyłeś R pisanego wielką literą. Jeśli
użyjesz małej litery -r, prawdopodobnie będziesz kopiował zawartość
wszystkich swoich twardych dysków, a raczej tyle, ile się z nich zmieści na
dyskietce. Tak więc uważaj i użyj komedy:
cp -dpR /dev /mnt
przyjmując że system plików jest zamontowany w /mnt. Opcja dp
spowoduje, że połączenia symboliczne zostaną skopiowane jako połączenia, a
nie odpowiadające im pliki, oraz zostaną zachowane oryginalne atrybuty
plików, włączając w to prawa własności.
Jeśli jednak masz ochotę trochę się pomęczyć, użyj komendy ls -l aby
wyświetlić główne i pomniejsze numery potrzebnych urządzeń, a następnie
utwórz je w katalogu docelowym używając polecenia mknod.
Gdy pliki zostaną skopiowane, warto sprawdzić czy posiadasz wszystkie
potrzebne urządzenia. Na przykład ftape korzysta z napędów
taśmowych, więc musisz skopiować to urządzenie jeśli chcesz mieć dostęp do
napędu taśmowego z dyskietki startowej.
Pamiętaj, że każdy plik urządzenia wymaga jednego i-węzła, więc
i-węzły są cennym zasobem, szególnie w przypadku systemów
dyskietkowych. Dobrym pomysłem jest usunięcie niepotrzebnych urządzeń z
katalogu /dev dyskietki. Wiele urządzeń jest kompletnie
nieprzydatnych w konkretnych systemach. Na przykład jeśli nie posiadasz
żadnych dysków SCSI, możesz bez żadnych problemów usunąć wszystkie urządzenia
zaczynające się na sd. Jeśli nie masz zamiaru korzystać z portu
szeregowego, możesz usunąc wszystkie pliki zaczynające się od cua.
Upewnij się, że posiadasz następujące urządzenia:
console, kmem, mem, null, ram, tty1.
/etc
Ten katalog musi zawierać pliki konfiguracyjne. Zwykle pliki w tym katalogu
dzielą się na trzy grupy:
Zawsze wymagane przez system, np. rc, fstab, passwd.
Wymagane w niektórych sytuacjach.
Pozostałe śmieci.
Pliki, które nie są najważniejsze, mogą zostać znalezione za pomocą komendy:
ls -ltru
Wyświetla ona listę plików posortowaną według daty ostatniego dostępu, więc
jeśli plik nie był czytany, to znaczy że można go pominąć na głównej
dyskietce.
Na mojej głównej dyskietce mam około 15 plików konfiguracyjnych. Zmniejsza
to ilość pracy, którą trzeba poświecić na poprawę trzch grup plików:
Pliki, które należy skonfigurować:
rc.d/* -- skrypty startu systemu i zmiany poziomu pracy
fstab -- lista systemów plików, które należy
zamontować
inittab -- parametry dla programu init,
uruchamianego przy starcie systemu.
Pliki, które należy poprawić:
passwd -- spis użytkowników, katalogów domowych itd.
group -- grupy użytkowników
shadow -- hasła użytkowników, możesz nie posiadać tego pliku.
termcap -- the terminal capability database.
Gdy liczy się bezpieczeństwo, pliki passwd i shadow powinny zostać
okrojone, aby uniemożliwić kopiowanie haseł poza system.
Upewnij się, że plik passwd zawiera przynajmniej użytkownika
root. Jeśli chcesz umożliwić logowanie się innym użytkownikom, to
upewnij się czy istnieją ich powłoki i katalogi domowe.
termcap, baza danych terminali, zwykle liczy kilkaset kilobajtów.
Wersja znajdująca się na dyskietce powinna być okrojona tak, aby zawierała
jedynie używany terminal(e), czyli najczęściej jedynie wpis
linux-console.
Pozostałe pliki. Na razie działają, więc można zostawić je w spokoju.
Teraz trzeba skonfigurować jedynie dwa pliki, ich zawartość jest zaskakująco
mała.
Plik rc powinien zawierać:
#!/bin/sh
/bin/mount -av
/bin/hostname Kangaroo
Upewnij się, że katalogi są poprawne. W zasadzie nie musisz uruchamiać
hostname, jednak jest to zalecane.
Plik fstab powinien zawierać conajmniej:
/dev/ram0 / ext2 defaults
/dev/fd0 / ext2 defaults
/proc /proc proc defaults
Możesz też skopiować pozycje z istniejącego pliku fstab, ale nie
powinieneś automatycznie montować partycji na twardym dysku. Użyj przy nich
opcji noauto. Pamiętaj, twój dysk twardy może być uszkodzony, gdy
będziesz korzystał z dyskietki startowej.
Plik inittab powinien być zmodyfikowany tak, aby pozycja
sysinit uruchamiała rc, czy jakiś inny skrypt startowy.
Dodatkowo, jeśli nie chcesz pozwolić użytkownikom logować się przez port
szeregowy, dodaj znak komentarza przed każdą linią getty zawierającą
na końcu urządzenie ttys lub ttyS. Pozostaw porty tty, abyś
mógł się zalogować z konsoli.
Minimalny plik inittab wygląda tak:
id:2:initdefault:
si::sysinit:/etc/rc
1:2345:respawn:/sbin/getty 9600 tty1
2:23:respawn:/sbin/getty 9600 tty2
Plik inittab określa, co system robi w niektórych sytuacjach i
na poszczególnych poziomach pracy. Upewnij się, że istnieją wszystkie nazwy
plików wymienione w inittab, init zawiesi się bez żadnego
komunikatu o błędzie, jeśli nie znajdzie któregoś z wymienionych tam
programów.
Należy sprawdzić, czy komendy znajdujące
się w pliku inittab odpołują się do programów, które istnieją w
odpowiednim katalogu. Jeśli umieścisz programy na dyskietce korzystając ze
spisu w dodatku
Spis plików przykładowej dyskietki głównej i skopiujesz plik inittab z dysku bez dokonania poprawek, to
prawdopodobnie ponad połowa wpisów w tym pliku będzie się odwoływała do
nieistniejących programów czy nieprawidłowych katalogów.
Niektóre programy nie mogą zostać przeniesione gdzie indziej, ponieważ inne
programy szuają ich w ściśle określonym miejscu. Na przykład w moim systemie
/etc/shutdown wymaga /etc/reboot. Jeśli przeniosę
reboot do /bin/reboot i wykonam komendę shutdown, to
wystąpi błąd, ponieważ nie może on znaleźć pliku reboot.
Jeśli chodzi o resztę, to skopiuj pozostałe pliki tekstowe oraz potrzebne
programy z katalogu /etc. Jako przykład może służyć dodatek
Spis plików przykładowej dyskietki startowej.
Prawdopodobnie wystarczy skopiować tylko te pliki, które tam wypisano,
jednak poszczególne systemy bardzo się różnią, więc nie możesz być pewien,
czy nazwy pliku na tej liście pokrywają się z nazwami w twoim systemie.
Jedyną pewną metodą jest sprawdzenie w pliku inittab, które pliki są
wymagane.
Większość systemów posiada katalog /etc/rc.d/ zawierający
skrypty dla poszczególnych poziomów pracy. Aby system działał, wymagany jest
przynajmniej jeden skrypt rc, jednak prościej skopiować plik
inittab i katalog /etc/rc.d z istniejącego
systemu i wyciąć niepotrzebne dla systemu dyskietkowego pozycje ze skryptów w
katalogu rc.d.
/bin i /sbin
Katalog /bin jest odpowiednim miejscem dla dodatkowych programów
użytkowych wykonujących podstawowe operacje, takich jak ls, mv,
cat czy dd. W dodatku
Spis plików przykładowej dyskietki startowej znajdziesz przykładową listę plików
katalogu /bin i /sbin. Nie zawiera ona jednak programów
potrzebnych do odtwarzania plików z kopii zapasowych, takich jak cpio,
tar i gzip, ponieważ, aby zaoszczędzić miejsce, umieszczam je na
osobnej dyskietce narzędziowej. Gdy główna/startowa dyskietka zostaje
wystartowana, zostaje ona skopiowana do ramdysku, pozostawiając miejsce w
napędzie do zamontowania kolejnej dyskietki --- dyskietki narzędziowej.
Zwykle montuję ją w katalogu /usr.
Tworzenie dyskietki narzędziowej jest opisane dalej, w dziale
Budowanie dyskietki narzędziowej. Zalecane jest
skopiowanie tych samych wersji programów, co użyte do stworzenia kopii
zapasowej, aby nie zdarzyło się, że nie możesz odtworzyć swojej kopii,
ponieważ wersje są niekompatybilne.
Upewnij się, że skopiowałeś następujące programy: init,
getty lub ich odpowiedniki, login, mount, jakąś powłokę
potrafiącą uruchomić skrypty rc, dowiązanie sh do powłoki.
/lib
W katalogu /lib umieszczasz potrzebne biblioteki dzielone oraz
programy służące do ich ładowania. Jeśli wymagane biblioteki nie zostaną
odnalezione w katalogu /lib, to system się nie zostanie
wystartowany. Przy odrobinie szczęścia możesz ujrzeć komunikat mówiący o
błędzie.
Prawie każdy program wymaga co najmniej biblioteki libc,
libc.so.N, gdzie N to numer wersji. Sprawdz w swoim
katalogu /lib. Plik libc.so.N jest na ogół symbolicznym
dowiązaniem do aktualnej wersji:
% ls -l /lib/libc*
-rwxr-xr-x 1 root root 4016683 Apr 16 18:48 libc-2.1.1.so*
lrwxrwxrwx 1 root root 13 Apr 10 12:25 libc.so.6 ->
W tym przypadku potrzebny jest plik libc-2.1.1.so. Aby dowiedzieć się,
jakie jeszcze biblioteki są potrzebne, powinieneś sprawdzić wszystkie pliki
wykonywalne które chcesz umieścić na dyskietce i sprawdzić ich zależności
komendą ldd. Na przykład:
% ldd /sbin/mke2fs
libext2fs.so.2 => /lib/libext2fs.so.2
libcom_err.so.2 => /lib/libcom_err.so.2
libuuid.so.1 => /lib/libuuid.so.1
libc.so.5 => /lib/libc.so.5
Wymagany jest każdy plik po prawej stronie. Pamiętaj, że wymienione
biblioteki mogą być tylko symbolicznymi dowiązaniami.
Zauważ, że niektóre biblioteki są całkiem spore i mogą nie zmieścić się w
głównym systemie plików. Na przykład biblioteka libc.so wspomniana
wyżej liczy około 4MB. Prawdopodobnie będziesz musiał okroić biblioteki
przed kopiowaniem. Zajrzyj do działu
Redukowanie głównego systemu plików po więcej informacji.
Dodatkowo w katalogu /lib musisz umieścić program ładujący
biblioteki. Jest to plik ld.so (dla bibliotek a.out) lub ld-linux.so
(dla bibliotek ELF). Jeśli nie jesteś pewien którego z nich potrzebujesz,
wykonaj komendę file z nazwą biblioteki jako parametr. Na przykład:
% file/lib/libc.so.4.7.2 /lib/libc.so.5.4.33 /lib/libc-2.1.1.so
/lib/libc.so.4.7.2: Linux/i386 demand-paged executable (QMAGIC), stripped
/lib/libc.so.5.4.33: ELF 32-bit LSB shared object, Intel 80386, version 1, stripped
/lib/libc-2.1.1.so: ELF 32-bit LSB shared object, Intel 80386, version 1, not stripped
QMAGIC oznacza, że wersja 4.7.2 jest biblioteką a.out, a ELF
oznacza, że wersja 5.4.33 i 2.1.1 jest biblioteką ELF.
Skopiuj odpowiedni program ładujący biblioteki do tworzonego głównego systemu
plików. Powinieneś dokładnie sprawdzić, czy posiadasz wszystkie
konieczne biblioteki i odpowiedni program ładujący. Jeśli jądro nie potrafi
załadować potrzebnej biblioteki, na ogół zawiesza się bez żadnego
komunikatu.
4.4 Providing for PAM and NSS.
System może wymagać dynamicznie ładowanych bibliotek niewidocznych dla
ldd.
PAM (Pluggable Authentication Modules).
Jeśli twój system korzysta z PAM (Pluggable Authentication Modules), to
musisz się na to przygotować, ponieważ w przeciwnym wypadku nie
będziesz mógł się zalogować. Ogólnie mówiąc PAM to skomplikowany modularny
sposób uwierzytelniania użytkowników i kontroli ich dostępu do usług.
Jeśli w katalogu /etc znajduje się katalog pam.conf lub
pam.d, musisz dołączyć pewne minimalne wsparcie dla PAM. (Możesz
także uruchomić ldd na pliku login, jeśli w wyjściu znajdzie
się tekst libpam.so, potrzebujesz PAM).
Na szczęście kwestie bezpieczeństwa nie są zazwyczaj istotne przy tworzeniu
dyskietki startowej, jako że każdy posiadający fizyczny dostęp do komputera
może z nim zrobić wszystko. Tak więc możesz po prostu wyłączyć PAM tworząc
w głównym systemie plików prosty plik /etc/pam.conf, taki jak
ten:
OTHER auth optional /lib/security/pam_permit.so
OTHER account optional /lib/security/pam_permit.so
OTHER password optional /lib/security/pam_permit.so
OTHER session optional /lib/security/pam_permit.so
Skopiuj także plik /lib/security/pam_permit.so do
głównego systemu plików. Ta biblioteka liczy jedynie 8KB.
Zauważ, że taka konfiguracja daje każdemu pełny dostęp do plików i usług
w systemie. Jeśli z jakiś względów bezpieczeństwo dyskietki startowej jest
dla ciebie ważne, musisz skopiować niektóre lub wszystkie pliki
konfiguracyjne PAM z twardego dysku. Przeczytaj uważnie dokumentację PAM i
skopuj wszystkie potrzebne biblioteki z /lib/security do
głównego systemu plików.
Musisz także skopiować na dyskietkę plik /lib/libpam.so, ale o
tym już wiesz, ponieważ uruchomiłeś ldd na /bin/login, który
pokazał zależność.
NSS (Name Service Switch).
Jeśli korzystasz z glibc (aka libc6), będziesz musiał przygotować się na
usługi nazw, w przeciwnym wypadku nie będziesz mógł się zalogować. Plik
/etc/nsswitch.conf kontroluje dostęp do bazy danych dla
poszczególnych usług. Jeśli nie planujesz korzystać z usług przez sieć (np.
DNS i NIS), musisz przygotować jedynie prosty plik
nsswitch.conf, taki jak ten:
passwd: files
shadow: files
group: files
hosts: files
services: files
networks: files
protocols: files
rpc: files
ethers: files
netmasks: files
bootparams: files
automount: files
aliases: files
netgroup: files
publickey: files
Określa to, że każda usługa będzie udostępniana jedynie poprzez lokalne
pliki. Będziesz musiał także dołączyć plik
/lib/libnss_files.so.1, który będzie dynamicznie ładowany
aby obsłużyć żądania.
Jeśli chcesz mieć dostęp do sieci z dyskietki startowej, możesz utworzyć
bardziej rozbudowany plik nsswitch.conf. Aby dowiedzieć się więcej,
zajrzyj na stronę man nsswitch. Pamiętaj że musisz dołączyć plik
/lib/libnss_usługa.so.1
dla każdej usługi.
4.5 Moduły.
Jeśli posiadasz jądro obsługujące moduły, to musisz zastanowić się, które
moduły mogą być potrzebne po wystartowaniu systemu. Prawdopodobnie
potrzebujesz modułów ftape i zftape jeśli posiadasz napęd taśmowy,
modułów do urządzeń SCSI jeśli takie posiadasz i ewentualnie modułów do
obsługi PPP i SLIP jeśli chcesz mieć dostęp do sieci.
Te moduły powinny zostać umieszczone w katalogu /lib/modules.
Powinieneś także dołączyć programy insmod, rmmod i lsmod.
Jeśli chcesz automatycznie ładować moduły, to możesz dołączyć modprobe,
depmod i swapout. Jeśli korzystasz z kerneld, to dołącz go
razem z plikiem /etc/conf.modules.
Jednak największą zaletą korzystania z modułów jest możliwość przeniesienia
niektórych z nich na dystkietkę narzędziową, oszczędzając w ten sposób
miejsce na głównej dyskietce. Gdy potrzebna jest obsługa wielu różnych
urządzeń, takie podejście jest lepsze niż budowa jednego wielkiego jądra
z wieloma wbudowanymi sterownikami.
Pamiętaj, aby wystartować skompresowany system plików ext2, musisz
posiadać wbudowaną w jądro obsługę ext2 i ramdysku. Nie mogą znajdować się
one w postaci modułów.
4.6 Końcowe detale.
Pewne programy systemowe, takie jak login, do poprawnego działania
wymagają pliku /var/run/utmp i katalogu /var/log.
Tak więc:
mkdir -p /mnt/var/{log,run}
touch /mnt/var/run/utmp
Na koniec, gdy skopiowałeś już wszystkie wymagane biblioteki, uruchom
program ldconfig aby odświeżyć plik /etc/ld.so.cache w
głównym systemie plików. Plik ten informuje program ładujący gdzie znaleźć
biblioteki. Aby odświeżyć ld.so.cache wykonaj następujące komendy:
chdir /mnt; chroot /mnt /sbin/ldconfig
Polecenie chroot jest konieczne, ponieważ ldconfig zawsze
odświeża plik cache dla głównego katalogu.
4.7 Kopiowanie na dyskietkę.
Gdy już skończyłeś tworzenie głównego systemu plików, odmontuj go, skopiuj
do pliku i skompresuj:
umount /mnt
dd if=URZĄDZENIE bs=1k | gzip -v9 > rootfs.gz
Zostanie utworzony plik rootfs.gz który jest skompresowanym głównym
systemem plików. Powinieneś sprawdzić, czy zmieści się na dyskietce, jeśli
nie, to będziesz musiał cofnąć się i usunąć jakieś pliki. Dział
Redukowanie głównego systemu plików zawiera kilka
porad na ten temat.
Następna strona
Poprzednia strona
Spis treści