bootdisk howto pl 4 QHEC7RPOPLIMI7TWHHXSNIB52FSZHDE2WIPCYPY


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

Wyszukiwarka