The Linux Bootdisk HOWTO
The Linux Bootdisk HOWTO
Autor: Tom Fawcett
fawcett@croftj.net
v3.4, maj 1999
Wersja polska: Adam Byrtek
alpha@irc.pl
v1.2, lipiec 1999
Dokument ten opisuje, jak tworzyć swoje własne dyskietki startowe dla Linuxa.
Dyskietki te mogą zostać użyte jako dyskietki ratunkowe, lub w celu
przetestowania nowych składników systemu. Jeśli nie czytałeś jeszcze Linux
FAQ i powiązanych dokumentów, takich jak Linux Installation HOWTO czy Linux
Install Guide, to nie powinieneś tworzyć dyskietek startowych. Jeśli
potrzebujesz jedynie dyskietki ratunkowej na wypadek awarii, to zajrzyj do
dodatku
Gotowe dyskietki.
1. Przedmowa.
Uwaga: Ten dokument może być przestarzały. Jeśli upłynęło więcej
niż sześć miesięcy od daty podanej na stronie tytułowej, to poszukaj nowej
wersji tego dokumentu na stronie Linux Documentation Project
http://metalab.unc.edu/LDP/HOWTO/Bootdisk-HOWTO.html.
Dokument ten powinien być czytelny w formacie tekstowym, jednak dzięki
wykorzystaniu typografii wygląda on znacznie lepiej w formacie Postscript
(.ps) lub HTML. Zachęcamy do wybrania jednego z tych formatów. Wersja
w formacie Info jest tak okrojona, że staje się bezużyteczna.
1.1 Uwagi na temat wersji.
Graham Chapman (grahamc@zeta.org.au) napisał oryginalną wersję
Bootdisk-HOWTO i opiekował się tym dokumentem aż do wersji 3.1. Tom Fawcett
(fawcett@croftj.net) dodał sporo materiału na temat jądra 2.0
i jest on opiekunem tego dokumetu od wersji 3.2. W dokumencie pozostało sporo
oryginalnego tekstu Chapmana.
Dokument ten jest napisany w oparciu o jądro Linux-a w wesji 2.0 lub
późniejszej. Jeśli posiadasz starsze jądro (1.2.xx lub niższe), to zajrzyj
do poprzedniej wersji Bootdisk-HOWTO, którą możesz znaleźć na
Stronie domowej Grahama Chapmana.
Informacje zawarte w tym dokumencie dotyczą platformy Intel. Wiele z
nich może być również poprawnych dla innych procesorów, ale nie mamy na ten
temat żadnych danych. Prosimy o kontakt ludzi mających doświadczenia z
dyskietkami startowymi na innych platformach sprzętowych.
1.2 Opinie.
Czekamy na wszystkie opinie, czy to dobre, czy złe, na temat zawartości tego
dokumentu. Staraliśmy się, aby informacje w nim umieszczone były jak
najbardziej pewne i dokładne. Daj nam znać gdy znajdziesz jakieś błędy.
Dziekujemy ludziom, którzy pomagali nam przysyłając poprawki czy sugestie.
Ich wkład uczynił ten dokument o wiele lepszym, niż gdybyśmy tworzyli go sami.
Wysyłaj komentarze, sugestie i poprawki na adres email autora podany
powyżej. Nie mam nic przeciwko odpowiadaniu na pytania, jednak radzę
najpierw przeczytać dział
Rozwiązywanie problemów.
1.3 Rozpowszechnianie.
Copyright © 1995,1996,1997,1998,1999 by Tom Fawcett and Graham Chapman.
Ten dokument może zostać rozpowszechniany na warunkach ustalonych przez
Licencję Linux Documentation Project, znajdującą się pod adresem
http://metalab.unc.edu/LDP/HOWTO/Bootdisk-HOWTO.html. Skontaktuj się z
autorem, jeśli nie jesteś w stanie otrzymać licencji.
Ta dokumentacja jest darmowa. Jest rozpowszechniana z nadzieją, że okaże się
użyteczna, jednak bez żadnej gwarancji.
2. Wprowadzenie.
Dyskietki startowe są przydatne w wielu sytuacjach, takich jak:
Testowanie nowego jądra.
Odzyskiwanie danych po awarii dysku -- od utraconego boot sektora aż
po uszkodzenie głowicy.
Leczenie uszkodzonego systemu. Nawet drobne potknięcie w czasie gdy
jesteś zalogowany jako root może unieruchomić cały system. Żeby go naprawić,
trzeba będzie wystartować go z dyskietki startowej.
Uaktualnianie plików krytycznych dla działania systemu, takich jak
libc.so.
Istnieje kilka sposobów otrzymywania dyskietek startowych:
Użycie dyskietki z dystrybucji takiej jak Slackware. Umożliwi ci ona
przynajmniej wystartowanie systemu.
Użycie pakietu ratunkowego do stworzenia dyskietek ratunkowych.
Nauczenie się co jest potrzebne do działania dyskietki startowej, a
następnie zbudowanie jej samodzielnie.
Niektórzy używają tej ostatniej metody i robią wszystko sami. Dzięki temu
jeśli coś pójdzie nie tak, to wiadomo co zrobić aby to naprawić. Dodatkowo
jest to bardzo dobra metoda na nauczenie się jak działa Linux.
Ten dokument zakłada podstawową znajomość zasad administracji systemu Linux.
Przykładowo powinieneś wiedzieć coś katalogach, systemach plików i
dyskietkach. Powinieneś wiedzieć, jak używać poleceń mount i df.
Powinieneś wiedzieć, do czego służą i jak wyglądają pliki
/etc/passwd i fstab. Powinieneś wiedzieć, że
większość poleceń w tym HOWTO powinna być wykonywana gdy jesteś zalogowany
jako root.
Konstruowanie swojej własnej dyskietki startowej od zera może być
skomplikowane. Jeśli nie czytałeś Linux FAQ i powiązanych dokumentów, takich
jak Linux Installation HOWTO i Linux Installation Guide, to nie powinieneś
tworzyć dyskietek startowych. Jeśli potrzebujesz jedynie działającej
dyskietki startowej na wypadek awarii, to o wiele łatwiej będzie
ściągnąć gotową. Aby je znaleźć, zajrzyj do dodatku
Gotowe dyskietki.
3. Dyskietki startowe i proces startu systemu.
Dyskietka startowa jest po prostu miniaturowym systemem Linux na dyskietce.
Musi on spełniać wiele funkcji wykonywanych przez zwykły, pełnowymiarowy
system Linux. Zanim spróbujesz stworzyć własną dyskietkę, musisz zrozumieć
podstawy startowania systemu Linux. Prezentujemy tutaj jedynie podstawy,
które są wystarczające do zrozumienia reszty tego dokumentu. Wiele
szczegółów i opcji alternatywnych zostało ominiętych.
3.1 Proces startu systemu.
Wszystkie komputery PC rozpoczynają proces startu systemu przez wykonanie
kodu znajdującego się w pamięci ROM (konkretnie w BIOS-ie), który
ładuje jeden sektor z sektora 0, cylindra 0 napędu startowego. Napęd
startowy to zazwyczaj pierwszy napęd dyskietek (oznaczony A: w DOS-ie
i /dev/fd0 w Linuxie). Następnie BIOS próbuje wykonać zawartość
tego sektora. Na większości dyskietek startowych sektor 0, cylinder 0
zawiera:
kod programu ładującego takiego jak LILO, który, aby wystartować system,
lokalizuje jądro, ładuje je i wykonuje.
początek jądra systemu operacyjnego, takiego jak Linux.
Jeśli jądro Linuxa zostało przekopiowane bezpośrednio na dyskietkę, to
pierwszy sektor dyskietki będzie jednocześnie pierwszym sektorem jądra. Kod
znajdujący się w pierwszym sektorze będzie kontynuował proces startu
ładując resztę jądra z dyskietki.
Gdy jądro zostanie w całości załadowane, rozpoczyna ono inicjalizację
sterowników. Następnie próbuje ono załadować i zamontować główny
system plików z jednego z urządzeń. Główny system plików to po prostu
system montowany jako ``/''. Jądro musi wiedzieć, gdzie szukać głównego
systemu plików, jeśli nie znajdzie tam obrazu który można załadować,
zawiesza się.
W niektórych sytuacjach -- często w czasie startowania z dyskietki --
główny system plików zostaje załadowany do ramdysku, czyli
do pamięci RAM która jest traktowana przez system tak, jakby była dyskiem.
Istnieją dwa powody dla których system ładuje się do ramdysku. Po pierwsze,
RAM jest o wiele szybszy niż dyskietka, tak więc operacje systemowe są
wykonywane szybko. Po drugie, jądro może załadować
skompresowany system plików z dyskietki i rozpakować go do
ramdysku, dzieki czemu na dyskietce można zmieścić o wiele więcej plików.
Gdy główny system plików zostanie załadowany i zamontowany, ujrzysz taką
informację:
VFS: Mounted root (ext2 filesystem) readonly.
Następnie system odnajduje w głównym systemie plików program init (w
katalogu /bin lub /sbin) i wykonuje go. init odczytuje
swój plik konfiguracyjny /etc/inittab, szuka lini oznaczonej
sysinit i wykonuje podany tam skrypt. Skrypt sysinit to najczęściej
plik /etc/rc, /etc/init.d/boot lub podobny. Ten
skrypt to seria komend powłoki, które inicjalizują podstawowe usługi systemu,
oraz wykonują czynności takie jak:
Uruchamianie fsck na wszystkich dyskach,
Ładowanie potrzebnych modułów jądra,
Startowanie pamięci swap,
Inicjalizacja sieci,
Montowanie dysków wymienionych w fstab.
Ten skrypt często wywołuje inne skrypty odpowiadające za inicjalizację
poszczególnych modułów. Na przykład, w typowej procedurze inicjalizacyjnej
systemów zgodnych z SysV, katalog /etc/rc.d/ zawiera złożoną
strukturę podkatalogów, których pliki odpowiedzialne są za załączanie i
wyłączanie poszczególnych usług systemu. Jednak na dyskietce startowej
skrypty sysinit są na ogół bardzo proste.
Gdy skrypt sysinit zakończy pracę, kontrola powraca do programu init,
który następnie wchodzi na domyślny poziom pracy, podany w pliku
inittab przy słowie kluczowym initdefault. Linie poziomów pracy na
ogół wyszczególniają program taki jak getty, który jest
odpowiedzialny za obsługę komunikacji przez konsolę i terminale. To własnie
program getty wypisuje znaną wszystkim linię zachęty ``login:''.
Wywołuje on następnie program login, który przeprowadza
weryfikacje i ustanawia sesję użytkownika.
3.2 Typy dysków.
Po zapoznaniu się z podstawami procesu startowania systemu, możemy
zdefiniować różne typy dyskietek. Dzielimy je na cztery rodzaje.
startowaDyskietka zawierająca jądro które może zostać uruchomione.
Dyskietka może zostać użyta do wystartowania jądra, które następnie może
załadować główny system plików z innego dysku. Jądro na dyskietce startowej
zwykle musi wiedzieć, gdzie znaleźć swój główny system plików.
Często dyskietka startowa ładuje główny system plików z innej dyskietki, ale
jest także móżliwe ładowanie głównego systemu plików z twardego dysku.
Najczęściej robi się to po to, aby przetestować nowe jądro (w
rzeczywistości podczas kompilacji nowego jądra polecenie ``make zdisk''
utworzy taką dyskietkę startową).
głównaDyskietka z systemem plików zawierającym pliki wymagane do
uruchomienia systemu Linux. Taka dyskietka nie musi zawierać jądra czy
programu ładującego.
Gdy jądro zostało już wystartowane, główna dyskietka może zostać użyta, aby
uruchomić system niezależnie od innego dysku. Zazwyczaj główna
dyskietka jest automatycznie kopiowana do ramdysku. Znacznie przyspiesza to
dostęp do danych, oraz zwalnia miejsce w stacji na dyskietkę narzędziową.
startowa/głównaDyskietka zawierająca zarówno jądro,
jak i główny system plików. Innymi
słowy zawiera ona wszystko, co potrzebne do wystartowania i uruchomienia
Linuxa bez twardego dysku. Zaletą takich dyskietek jest ich zwięzłość --
wszystko znajduje się na jednej dyskietce. Jednak rozmiary wszystkich
elementów ciągle się powiększają, więc coraz trudniej zmieścić wszystko na
jednej dyskietce, nawet przy użyciu kompresji.
narzędziowaDyskietka ta zawiera system plików, ale nie jest on jednak
montowany jako główny system plików. Jest to dodatkowa dyskietka z danymi.
Używa się jej aby dostarczyć dodatkowe programy narzędziowe niemieszczące
się na głównej dyskietce.
Gdy mówimy o ``tworzeniu dyskietki startowej'', mamy na myśli tworzenie
zarówno części startowej (jądra) jak i głównej (plików). Mogą one znajdować
się razem lub osobno. Najbardziej elastycznym rozwiązaniem w przypadku
dyskietek ratunkowych jest użycie osobnej dyskietki startowej i głównej,
oraz jednej lub więcej dyskietki narzędziowej.
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.
5. Wybieranie jądra.
W tej chwili posiadasz skompresowany główny system plików. Następny krok to
zbudowanie lub wybranie jądra. W wiekszości przypadków możliwe jest
skopiowanie aktualnego jądra i wystartowanie z niego dyskietki. Jednak w
niektórych przypadkach będziesz chciał stworzyć swoje własne jądro.
Pierwszym powodem jest jego rozmiar. Jeśli tworzysz pojedyńczą dyskietkę
startową/główna, to jądro będzie jednym z największych plików na dyskietce,
więc będziesz musiał jak najbardziej zredukować jego rozmiar.
Aby zmniejszyć rozmiar jądra, skompiluj je z minimalną liczbą opcji
konieczną do działania systemu. Powinieneś wyłączyć wszystko,
co nie jest potrzebne. Można spokojnie wyrzucić obsługę sieci, jak również
obsługę wszystkich napędów i innych urządzeń których nie potrzebujesz w
czasie korzystania z dyskietki. Pamiętaj, że twoje jądro musi posiadać
wbudowaną obsługę ramdysku oraz systemu plików ext2.
Po wybraniu minimalnej konfiguracji jądra, powinieneś zastanowić się co
jeszcze może być ci potrzebne. Naczęściej korzysta się z dyskietki startowej
aby sprawdzić i odzyskać uszkodzone dane w systemie plików, a do tego możesz
potrzebować wbudowanej obsługi w jądrze. Na przykład jeśli swoje kopie
zapasowe przechowujesz na taśmie używając Ftape, to jeśli utracisz swój
system plików i napędy zawierające Ftape, nie będziesz mógł odtworzyć
danych z taśm zapasowych. Będziesz musiał przeinstalować Linuxa, ściągnąć i
przeinstalować ftape i dopiero wtedy odczytywać kopie zapasowe.
Generalnie chodzi o to, aby instalować w jądze obsługę wszystkich
potrzebnych urządzeń wejścia/wyjścia.
Procedura kompilowania jądra jest opisana w dokumentacji dołączonej do
jądra. Jest ona bardzo łatwa, najpierw zajrzyj do katalogu
/usr/src/linux. Jeśli masz probemy ze skompilowaniem jądra, to
raczej nie powinieneś brać się do tworzenia dyskietki startowej. Pamiętaj,
aby skompresować jądro poleceniem ``make zImage''.
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ą.
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.
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.
Jeśli główny system plików ma zostać umieszczony na tej samej
dyskietce co jądro, to przenieś go używając komendy dd z opcją
seek, która określa ile bloków należy przeskoczyć:
dd if=rootfs.gz of=/dev/fd0 bs=1k seek=BLOKI_JĄDRA
Jeśli system plików ma zostać umieszczony na drugiej dyskietce,
to wyjmij ze stacji pierwszą, włóż drugą a następnie przenieś na na nią
główny system plików:
dd if=rootfs.gz of=/dev/fd0 bs=1k
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.
7. Rozwiązywanie problemów.
Po stworzeniu dyskietek kilka pierwszych prób wystartowania systemu często
kończy się niepowodzeniem. Najlepszym podejściem podczas budowania głównego
systemu plików jest łączenie elementów istniejącego systemu tak, aby system
dyskietkowy przynajmiej wyświetlał komunikaty na konsoli. Gdy zacznie on
komunikować się z tobą, jesteś już w połowie drogi do sukcesu, ponieważ
możesz zobaczyć, co sprawia problemy i naprawić je pojedynczo aż system
będzie działał poprawnie. Jeśli system po prostu wiesza się bez żadnego
komunikatu, to odnalezienie przyczyny staje się trudne. Stworzenie systemu,
który zostanie poprawnie wystartowany do momentu, w którym będzie mógł
komunikować się z użytkownikiem, wymaga zainstalowania i skonfigurowania
kilku komponentów. Zalecaną metoda badania problemu gdy system nie chce się
komunikować z użytkownikiem jest następująca:
Możesz ujrzeć komunikat taki jak ten:
Kernel panic: VFS: Unable to mount root fs on XX:YY
Jest to powszechny problem i ma jedynie kilka przyczyn. Po pierwsze, sprawdz
nazwę urządzenia XX:YY z listą. Czy to poprawne urządzenie główne?
Jeśli nie, prawdopodobnie nie uruchomiłeś rdev -R, lub zrobiłeś to na
złym obrazie. Jeśli kod urządzenia jest poprawny, sprawdź uważnie sterowniki
włączone do jądra. Upewnij się że stacja dysków, ramdysk i system plików
ext2 zostały wbudowane.
Sprawdź, czy główna dyskietka faktycznie zawiera odpowiednie katalogi.
Może się zdarzyć, że skopiujesz nieodpowiedni katalog, w rezultacie
otrzymując na głównej dyskietce przykładowo katalog /rootdisk/bin
zamiast /bin.
Sprawdź, czy plik /lib/libc.so jest dowiązaniem do tego
samego pliku, co /lib/libc.so na twardym dysku.
Sprawdź, czy symboliczne dowiązania z katalogu /dev na dysku
twardym istnieją także dla odpowiednich urządzeń na głównej dyskietce.
W wielu sytuacjach szczególnie istotne jest /dev/console.
Sprawdź, czy dołączyłeś pliki /dev/tty1, /dev/null, /dev/zero,
/dev/mem, /dev/ram i /dev/kmem.
Sprawdź konfigurację jądra, obsługa wszystkich zasobów wymaganych do
zalogowania się musi być wbudowana w jądro, a nie w postaci modułów. Tak
więc obsługa ramdysku i systemu plików ext2 musi być wbudowana.
Sprawdź, czy w jądrze główne urządzenie oraz parametry ramdysku są
ustawione poprawnie.
Gdy przeanalizujesz już wszystkie powyższe przypadki, możesz sprawdzić
następujące pliki:
Upewnij się, że istnieje plik /sbin/init lub
/bin/init. Upewnij się, że ma on uprawnienia do
wykonywania.
Uruchom ldd init aby sprawdzić biblioteki wymagane przez
init. Na ogół jest to jedynie libc.so, ale zawsze warto sprawdzić.
Upewnij się, że istnieją wymagane biblioteki i program ładujący.
Upewnij się, że posiadasz odpowiedni program ładujący biblioteki --
ld.so dla bibliotek a.out lub ld-linux.so dla bibliotek
ELF.
Sprawdź odwołania do getty (lub podobnego programu, jak
agetty, mgetty czy getty_ps) w pliku inittab.
Porównaj je z plikiem inittab na dysku twardym. Przejrzyj strony man
używanych programów. Właśnie w pliku inittab może wystąpić najwięcej
problemów, ponieważ jego składnia zależy od konkretnego systemu i wersji
programu init. Jedynym rozwiązaniem jest przeczytanie stron man o
init oraz inittab, prześledzenie, co dokładnie system robi po
wystartowaniu. Sprawdź, czy w pliku /etc/inittab znajduje się
pozycja inicjalizacji systemu. Zawiera ona ścieżkę do skryptu inicjalizacji
systemu, który musi istnieć.
Tak samo jak w przypadku init, uruchom ldd podając jako
parametr twój program getty i sprawdź, czy istnieją wszystkie
potrzebne biblioteki oraz program ładujący.
Upewnij się, że dołączyłeś powłokę (np. bash czy ash), która
potrafi wykonać wszystkie skrypty rc.
Jeśli na dyskietce istnieje plik /etc/ld.so.cache, to
odśwież go.
Jeśli init startuje, ale otrzymujesz komunikat:
Id xxx respawning too fast: disabled for 5 minutes
pochodzi on z programu init i oznacza, że getty lub login
kończą pracę zaraz po uruchomieniu.
Sprawdz pliki getty i login i wszystkie potrzebne im biblioteki.
Upewnij się, że ich wywołania w pliku /etc/inittab są
prawidłowe. Jeśli otrzymujesz dziwne komunikaty od getty, może to
oznaczać, że jego wywołanie z /etc/inittab jest nieprawidłowe.
Opcje dla programów getty są zróżnicowane, nawet poszczególne wersje
agetty posiadają niekompatybilne ze sobą opcje przy
wywołaniu.
Jeśli podajesz poprawną nazwę użytkownika, ale system pyta natychmiast o
inną nazwę, to problemem może być PAM bądź NSS. Zajrzyj do działu
PAM i NSS. Problem może być także spowodowany tym,
że korzystasz z haseł shadow, ale nie skopiowałeś pliku
/etc/shadow na dyskietkę.
Jeśli próbujesz uruchomić jakiś program, przykładowo df, który znajduje
się na dyskietce, ale otrzymujesz komunikat: df: not found, to sprawdź
dwie rzeczy. Po pierwsze, upewnij się, że katalog w którym znajduje się
program jest w zmiennej PATH. Po drugie, sprawdź, czy istnieją wszystkie
potrzebne biblioteki oraz program ładujący.
8. Różne tematy.
8.1 Redukcja głównego systemu plików.
Czasem główny system plików jest zbyt duży, aby zmieścić się na dyskietce,
nawet po kompresji. Poniżej podano kilka sposobów zmniejszenia rozmiaru
systemu plików, uporządkowanych według efetywności:
Zwiększ gęstość dyskietkiStandardowo dyskietki są formatowane na
1440K, ale dostępne są formaty o większej gęstości. Program
fdformat umożliwia formatowanie dyskietki na następujące
wielkości: 1600, 1680, 1711, 1743, 1760, 1840 i 1920. Większość napędów
1440K obsługuje dyskietki 1722K, więc dla dyskietek startowych zawsze używam
tego formatu. Zobacz stronę man fdformat oraz
/usr/src/linux/Documentation/devices.txt.
Wymień powłokęNajbardziej populare powłoki dla Linuxa, takie jak
bash i tcsh, zajmują bardzo dużo miejsca i wymagają wielu
bibliotek. Istnieją jednak alternatywne powłoki, takie jak
ash, lsh, kiss czy smash, które są o wiele mniejsze i
wymagają mniej (lub żadnych) bibliotek. Większość tych zastępczych powłok
jest dostępna pod adresem
http://metalab.unc.edu/pub/Linux/system/shells/. Upewnij się, że
powłoka z której korzystasz potrafi wykonać wszystkie polecenia w plikach
rc na dyskietce.
Obetnij biblioteki i programy
Biblioteki i programy są często nieobcięte (zawierają symbole dla debuggera).
Taki plik po uruchomieniu na nim file będzie oznaczony jako `not
stripped'. Podczas kopiowania programów do głównego systemu plików dobrym
pomysłem jest korzystanie z polecenia:
objcopy --strip-all ŹRÓDŁO CEL
Gdy kopiujesz biblioteki, użyj:
objcopy --strip-debug ŹRÓDŁÓ CEL
Przenieś mniej ważne pliki na dyskietkę narzędziowąJeśli jakieś
programy nie są wymagane do wystartowania systemu i zalogowania się, to
możesz przenieść je na dyskietkę narzędziową. Szczegółów szkukaj w dziale
Tworzenie dyskietki narzędziowej. Możesz także
zastanowić się nad przeniesieniem modułów na dyskietkę narzędziową.
8.2 Systemy plików bez ramdysku.
Dział
Budowanie głównego systemu plików zawiera
informacje na temat tworzenia skompresowanego głównego systemu plików, który
po uruchomieniu systemu jest ładowany do ramdysku. Ta metoda posiada wiele
zalet, więc jest często używana. Jednak niektóre systemy posiadają za mało
pamięci RAM, w takich sytuacjach główny system plików może zostać
zamontowany bezpośrednio, a nie kopiowany do ramdysku.
W sumie łatwiej stworzyć taki właśnie system plików niż skompresowany,
ponieważ może on zostać zbudowany bezpośrednio na dyskietce, a nie na jakimś
innym urządzeniu i nie musi on być kompresowany. Opiszemy tutaj ogólnie
różnice w tworzeniu takiego właśnie systemu plików. Jeśli zdecydujesz się
z niego korzystać, pamiętaj, że będziesz miał do dyspozycji o wiele
mniej miejsca.
Oblicz, ile wolnego miejsca pozostanie na główny system plików.
Jeśli tworzysz pojedynczą dyskietkę startową/główną, to musisz zmieścić na
niej wszystkie bloki jądra oraz wszystkie bloki głównego systemu plików.
Korzystając z programu mke2fs utwórz na dyskietce główny system
plików o odpowiedniej wielkości.
Zapełnij system plików tak, jak to opisano w osobnym dziale.
Gdy już skończysz, odmontuj system plików i przenieś go do pliku na
dysku, ale nie kompresuj go.
Przenieś jądro na dyskietkę, tak jak to opisano w osobnym dziale.
Podczas obliczania słowa ramdysku wyzeruj bit 14, aby zaznaczyć, że
główny system plików nie ma być ładowany do ramdysku. Uruchom rdev z
odpowiednimi parametrami.
Przenieś główny system plików tak, jak poprzednio.
Istnieje kilka dróg na skróty. Jeśli budujesz dwu-dyskietkowy zestaw, to
możesz stworzyć kompletny system plików bezpośrednio na drugiej dyskietce,
bez potrzeby przenoszenia go na twardy dysk i z powrotem. Jeśli budujesz
pojedynczą dyskietkę startową/główną i korzystasz z LILO, to możesz zbudować
jeden system plików na całej dyskietce, zawierający jądro, pliki LILO
oraz pliki główne, a następnie uruchomić LILO jako ostatni krok.
8.3 Tworzenie dyskietki narzędziowej.
Tworzenie dyskietki narzędziowej jest stosunkowo proste, wystarczy stworzyć
system plików na sformatowanej dyskietce i skopiować do niego pliki. Aby
korzystać z niej podczas używania dyskietki startowej, wystarczy zamontować
ją ręcznie po uruchomieniu systemu.
We wcześniejszych rozdziałach wspomnieliśmy, że dyskietka narzędziowa
powinna zostać zamontowana w katalogu /usr. W tej systuacji
programy powinny być umieszczone w katalogu /bin dyskietki
narzędziowej, aby po zamontowaniu były dostępne pod ścieżką
/usr/bin. Dodatkowe biblioteki wymagane przez programy powinny
zostać umieszczone w katalogu /lib na dyskietce.
Istnieje kilka istotnych aspektów, o których należy pamiętać podczas
projektowania dyskietki narzędziowej:
Nie umieszczaj na dyskietce narzędziowej plików krytycznych dla
działania systemu, ponieważ będzie ją można zamontować dopiero po
wystartowaniu systemu.
Nie możesz w tym samym czasie korzystać z napędu taśmowego i napędu
dyskietek. Oznacza to, że jeśli posiadasz napęd taśmowy, to nie będziesz
miał do niego dostępu gdy dyskietka narzędziowa jest zamontowana.
Dostęp do plików na dyskietce narzędziowej będzie bardzo powolny.
W Dodatku
Spis plików przykładowej dyskietki startowej możesz zobaczyć przykładowe pliki na dyskietce narzędziowej.
Oto kilka pomysłow na programy, które mogą okazać się przydatne: programy do
badania i manipulacji dyskami (format, fdisk) i systemami plików
(mke2fs, fsck, debugfs, isofs.o), mały edytor tekstów (elvis, jove),
narzędzia do kompresji i archiwizacji (gzip, tar, cpio, afio),
narzędzia do obsługi taśm (mt, tob, taper), narzędzia komunikacyjne
(ppp.o, slip.o, minicom) i narzędzia do obsługiu urządzeń
(setserial, mknod).
9. Jak robią to profesjonaliści.
Pewnie zauważyłeś, że dyskietki startowe używane przez największe
dystrybucje, takie jak Slackware, RedHat czy Debian, wydają się o wiele
bardziej skomplikowane, niż te opisane w tym dokumencie. Profesjonalne
dyskietki startowe są bazowane na tych samych założeniach, które tu
podaliśmy, ale wykorzystują różne triki, ponieważ takie dyskietki mają o
wiele większe wymagania. Po pierwsze, muszą współpracować z szeroką gamą
sprzętu, tak więc muszą one umieć komunikować się z użytkownikiem i ładować
odpowiednie sterowniki urządzeń. Po drugie, muszą być przygotowane do
działania z wieloma różnymi opcjami instalacji, dodatkowo wykonując pewne
działania automatycznie. Po trzecie dystrybucyjne dyskietki startowe na ogół
spęłniają zarówno rolę instalacyjną, jak i ratunkową.
Niektóre dyskietki startowe korzystają z usługi zwanej initrd
(initial ramdisk). Została ona wprowadzona w jądrze wersji 2.0.x
i daje o wiele większą elastyczność,
startując jądro w dwóch fazach. Na początku ładowany jest początkowy obraz
ramdysku z dyskietki startowej. Początkowy ramdysk to główny system plików
zawierający programy, które zostaną uruchomione zanim zostanie załadowany
prawdziwy główny system plików. Ten program najczęściej bada otoczenie i/lub
prosi użytkownika o wybranie różnych opcji startowych, takich jak
urządzenie, z którego zostanie załadowany prawdziwy główny system plików.
Często ładuje on też dodatkowe moduły nie wbudowane do jądra. Gdy działanie
tego programu zakończy się, jądro ładuje prawdziwy główny obraz i
uruchamianie jest kontynuowanie normalnie. Więcej informacji o initrd
szukaj w /usr/src/linux/Documentation/initrd.txt i
ftp://elserv.ffm.fgan.de/pub/linux/loadlin-1.6/initrd-example.tgz.
Poniżej znajduje się podsumowanie tego, jak działają dyskietki startowe
poszczególnych dystrybucji, oparte na przeglądaniu ich systemu systemu
plików i/lub kodu źródłowego. Nie gwarantujemy, że ta informacja jest
dokładna, ani że nic się nie zmieniło od czasu opisanej wersji.
Slackware (v.2.1) po prostu startuje system przy użyciu LILO, tak jak to
opisano w dziale
Przenoszenie jądra z LILO.
Dyskietki startowe Slackware przy starcie wypisują komunikat (``Welcome
to the Slackware Linux bootkernel disk!'') używając do tego parametru
LILO message. Informuje to użytkownika, że może podać dodatkowe
parametry startowe, jeśli to konieczne. Po wystartowaniu, główny system
plików jest ładowany z drugiej dyskietki. Użytkownik uruchamia skrypt
setup który rozpoczyna instalację. Zamiast korzystać z jądra opartego
na modułach, Slackware daje użytkownikowi do dyspozycji wiele różnych jąder,
do wyboru zależnie od konfiguracji sprzętowej.
RedHat (v.4.0) także korzysta z LILO. Ładuje skompresowany ramdysk z
pierwszej dyskietki, który uruchamia specjalnie napisany program init.
Program ten pyta o sterowniki i, jeśli to konieczne, ładuje pliki z dodatkowej
dyskietki.
Debian (v.1.3) jest prawdopodobnie najbardziej skomplikowanym zestawem
dyskietek startowych. Korzysta on z programu ładującego SYSLINUX, który
ustala osopowiednie parametry, a następnie używa obrazu
initrd aby poprowadzić użytkownika przez procedurę
instalacji. Wygląda na to, że korzysta on zarówno z przerobionego programu
init, jak i z przerobionej powłoki.
10. Najczęściej zadawane pytania (FAQ).
Q. Próbuje wystartować system z dyskietki, ale nic się nie dzieje.
Co mam zrobić?
Zajrzyj do działu
Rozwiązywanie problemów
powyżej.
Q. Jak działają dyskietki startowe dystrybucji Slackware/Debian/RedHat?
Zajrzyj do działu
Jak to robią profesjonaliści powyżej.
Q. W jaki sposób stworzyć dyskietkę startową ze sterownikiem XYZ?
Najłatwiej zdobyć jądro z dystrybucji Slackware. Jądra Slackware zawierają
sterowniki do jak największej ilości urządzeń, więc jeśli posiadasz
kontroler IDE lub SCSI, istnieją duże szanse, że sterownik do urządzenia jest
dołączony do jednego z jąder Slackware.
Przejdz do katalogu a1 i wybierz jądro odpowiednie dla posiadanego
typu kontrolera. Sprawdz w pliku xxxxkern.cfg dla odpowiedniego jądra
czy zawiera ono odpowiednie sterowniki. Jeśli urządzenie jest na tej liście,
to jądro to powinno wystartować twój system. Ściągnij plik xxxxkern.tgz i
skopiuj go na dyskietkę, tak jak opisano powyżej, w dziale na temat
tworzenia dyskietek startowych.
Następnie musisz sprawdzić główne urządzenie tego jądra, korzystając
z komendy rdev:
rdev zImage
Komenda rdev wyświetli aktualne główne urządzenie dla tego jądra.
Jeśli nie odpowiada ono twojemu głównemu urządzeniu, użyj rdev aby
je zmienić. Na przykład jądro korzysta z /dev/sda2, ale moja
główna partycja SCSI znajduje się na urządzeniu /dev/sda8.
Aby zmienić główne urządzenie na dyskietkę, musisz użyć komendy:
rdev zImage /dev/fd0
Informacje na temat tworzenia głównych dyskietek Slackware wykraczają poza
zakres tego dokumentu, więc sugeruje zajrzeć do Linux Install Guide lub
zdobyć dystrybucję Slackware. Zobacz także dział ``Odnośniki'' w tym HOWTO.
Q. Jak uaktualnić jądro na mojej dyskietce?
Jeśli dyskietka startowa nie zawiera systemu plików, po prostu skopiuj jądro
za pomocą komendy dd. W przypadku dyskietki startowej/głównej użyj
komendy cp. Zajrzyj do działu ``Startowanie'' aby dowiedzieć się
szczegółów na temat tworzenia dyskietki startowej. Ten opis odnosi się także
do uaktualniania jądra.
Q. Jak dodać nowe pliki do mojej głównej dyskietki?
Najprostszym sposobem jest skopiowanie systeku plików z dyskietki z powrotem
do użytego URZĄDZENIA (z działu
Tworzenie systemu plików powyżej). Następnie zamontuj system plików i dokonaj zmian.
Musisz wiedzieć, w którym bloku zaczynał się system plików i ile bloków
zajmował:
dd if=/dev/fd0 bs=1k skip=POCZĄTEK count=BLOKI | gunzip > URZĄDZENIE
mount -t ext2 URZĄDZENIE /mnt
Po dokonaniu zmian, postępuj tak jak poprzednio (w dziale
Tworzenie dyskietki) i przenieś główny system
plików z powrotem na dyskietkę. Nie musisz przenosić ponownie jądra czy
ponownie przeliczać słowa ramdysku jeśli nie zmieniłeś pozycji nowego
systemu plików.
Q. Jak mogę usunąć LILO aby ponownie korzystać ze startowania DOS?
Tak na prawdę ten temat nie dotyczy dyskietek startowych, ale ludzie często
o to pytają. Z poziomu Linuxa możesz użyć komendy:
/sbin/lilo -u
Możesz także wykorzystać dd aby przenieść kopię zapasową stworzoną
przez LILO z powrotem do bootsektora. Zajrzyj do dokumentacji LILO, jeśli
chcesz się dowiedzieć jak to zrobić.
Z poziomu systemu DOS lub Windows możesz skorzystać z polecenia DOS'a:
FDISK /MBR
MBR oznacza Master Boot Record i zastępuje bootsektor nowym DOS'owym,
nie zmieniając przy tym tablicy partycji. Niektórzy puryści nie zgadzają się
z tym, ale nawet autor LILO, Werner Almesberger, sugeruje to rozwiązanie.
Jest ono proste, no i działa.
Q. Jak mogę wystartować system jeśli zgubiłem jądro oraz moją
dyskietkę startową?
Jeśli nie masz dyskietki startowej, to najprostszym sposobem będzie zdobycie
odpowiedniego jądra Slackware jak to opisano powyżej w odpowiedzi na pytanie
``Jak mogę stworzyć dyskietkę startową ze sterownikiem XXX?''. Następnie
możesz wystartować komputer używając tego jądra i naprawić wszystkie
problemy.
Jądro to może nie mieć ustawionego odpowiedniego głównego urządzenia.
Na przykład typowe jądro SCSI Slackware za główne urządzenie uznaje
/dev/sda2, a moja główna partycja Linuxowa to
/dev/sda8. W tej sytuacji główne urządzenie w jądrze musi
zostać zmienione.
Główne urządzenie oraz wartość słowa ramdysku możesz zmienić nawet wtedy,
gdy posiadasz jedynie jądro i jakiś inny system operacyjny, na przykład DOS.
Polecenie rdev zmienia ustawienia poprzez zmianę wartości konkretnych
bajtów w pliku jądra, więc możesz zrobić to samo, jeśli tylko posiadasz
edytor heksadecymalny pracujący pod innym działającym systemem
-- przykładowo Norton Disk Editor z pakietu Norton Utilities pod DOS.
Następnie musisz sprawdzić i, jeśli to konieczne, zmienić wartości pod
następującymi przesunięciami:
HEX DEC OPIS
0x01F8 504 Młodszy bajt słowa ramdysku
0x01F9 505 Starszy bajt słowa ramdysku
0x01FC 508 Poboczny numer urządzenia - patrz niżej
0X01FD 509 Główny numer urządzenia - patrz niżej
Znaczenie słowa ramdysku zostało opisane w dziale
Ustawianie słowa ramdysku powyżej.
Poboczny i głowny numer musi odpowiadać urządzeniu, na którym znajduje się
główny system plików. Niektóre najczęściej używane wartości to:
DEVICE GŁÓWNY POBOCZNY
/dev/fd0 2 0 Pierwsza stacja dysków
/dev/hda1 3 1 Pierwsza partycja na pierwszym dysku IDE
/dev/sda1 8 1 Pierwsza partycja na pierwszym dysku SCSI
/dev/sda8 8 8 Ósma partycja na pierwszym dysku SCSI
Gdy już ustawisz odpowiednie wartości, możesz zapisać plik na dyskietce
korzystając z Norton Utilities Disk Editor, albo programu rawrite.exe,
który znajduje się we wszystkich dystrybucjach. Jest to program DOS'owy
który zapisuje dane w czystej postaci zaczynając od boot sektora dyskietki,
zamiast zapisywać do systemu plików. Jeśli używasz Norton Utilities, musisz
zapisać plik do fizycznej dyskietki zaczynając od jej początku.
Q. W jaki sposób mogę stworzyć dodatkowe kopie dyskietek?
Jako że nośniki magnetyczne z czasem tracą swe właściwości, powinieneś
posiadać kilka kopii swoich dyskietek ratunkowych, w razie gdyby oryginały
uległy uszkodzeniu.
Najprostszą metodą tworzenia kopii każdej dyskietki, włączając w to
dyskietki startowe czy narzędziowe, jest użycie komendy dd aby
skopiować zawartość oryginalnej dyskietki do pliku na dysku twardym, a
następnie użyć tej samej komendy aby skopiować plik z powrotem na dyskietkę.
Zauważ, że nie powinieneś montować dyskietek, ponieważ dd korzysta
bezpośrednio z urządzenia.
Aby skopiować oryginał, użyj polecenia:
dd if=URZĄDZENIE of=PLIK
gdzie URZĄDZENIE jest nazwą urządzenia stacji dyskietek
a PLIK jest nazwą docelowego pliku na twardym dysku
Pominięcie parametru count powoduje skopowanie całej dyskietki
(2880 bloków jeśli jest to dyskietka HD).
Aby skopiować plik spowrotem na dyskietkę, włóż dyskietkę do stacji i
użyj komendy:
dd if=PLIK of=URZĄDZENIE
Zauważ, że powyższy opis zakłada, że posiadasz tylko jedną stację dysków.
Jeśli posiadasz dwa napędy tego samego typu, możesz skopiować dyskietki
używając komendy:
dd if=/dev/fd0 of=/dev/fd1
Q. Jak wystartować system bez wpisywania za każdym razem
"ahaxxxx,nn,nn,nn"?
Jeśli dysk nie może zostać automatycznie wykryty, koniecznie jest
dostarczenie parametrów do jądra, takich jak:
aha152x=0x340,11,3,1
Ten parametr może zostać dostarczony na kilka sposobów, korzystając z LILO:
Poprzez wpisywanie go za każdym razem w linii poleceń LILO, jednak
jest to męczące.
Używając słowa kluczowego LILO ``lock'' aby linia poleceń została
zachowana jako domyślna, używana przy każdym starcie systemu.
Używając opcji append= w pliku konfiguracyjnym LILO. Pamiętaj, że
parametr musi zostać ujęty w cudzysłowy.
Przykładaowa linia poleceń dla podanego powyżej parametru może wyglądać
następująco:
zImage aha152x=0x340,11,3,1 root=/dev/sda1 lock
Przekaże ona opcje urządzenia do jądra, ustawi w jądrze główne urządzenie na
/dev/sda1 i zapisze linie poleceń do użycia przy każdym
następnym starcie systemu.
Przykładowa opcja append wygląda następująco
append = "aha152x=0x340,11,3,1"
Pamiętaj, że parametr w linii poleceń nie może być ujęty w cudzyłowy,
ale musi być ujęty w cudzysłowy jeśli występuje w opcji append.
Pamiętaj także, że w jądrze musi znajdować się sterownik dla podanego typu
urządzenia. Jeśli tak nie jest, będziesz musiał przekompilować jądro
aby zawierało odpowiednie sterowniki. Szczegóły na temat rekompilacji jądra
znajdziesz w pliku README w katalogu /usr/src/linux oraz w
Linux FAQ i Installation HOWTO. Ewentualnie możesz zdobyć odpowiednie jądro
dla tego urządzenia i zainstalować je.
Przed ekperymentami z LILO zalecane jest zapoznanie się z jego dokumentacją.
Nieprawidłowe użycie opcji BOOT może uszkodzić partycję.
Q. Podczas staru otrzymuje komunikat błędu "A: cannot execute
B". Co to oznacza?
W niektórych przypadkach ścieżki do plików są na stałe zapisane w niektórych
programach. Nie zdarza się to zawsze, ale może wyjaśnić dlaczego program nie
może zostać odnaleziony w twoim systemie nawet jeśli jesteś pewien że się
tam znajduje. Możesz sprawdzić, czy program ma zapisaną na stałe lokalizację
jakiegoś innego programu korzystając z komendy strings i przepuszczając
jej wyjście przez filtr grep.
Niektóre znane przypadki zapisanych na stałe lokalizacji:
Niektóre wersje shutdown mają zapisaną na stałe lokalizację
/etc/reboot, tak więc reboot musi zostać umieszczony
w katalogu /etc.
Czasem jądro nie może odnaleźć programu init.
Aby naprawić ten problem przenieś program do odpowiedniego katalogu, lub
zmień pliki konfiguracyjne (np. inittab) aby wskazywały na poprawny
katalog. Jeśli masz wątpliwości, umieść program w tym samym katalogu,
w którym znajdował się na dysku twardym oraz użyj tych samych plików
inittab i /etc/rc.d.
Q. Moje jądro posiada obsługę ramdysku, ale inicjuje go z wielkością 0K.
W takiej sytuacji podczas startu systemu pojawi się informacja:
Ramdisk driver initialized : 16 ramdisks of 0K size
Dzieje się tak dlatego, że rozmiar ramdysko został ustawiony na 0 przez
jądro podczas startu systemu. Najprawdopodobniej dzieje się tak przez
parametr w pliku konfiguracyjnym LILO:
ramdisk= 0
Który w starszych dystrybucjach został umieszczany w przykładowym pliku
konfiguracyjnym LILO. Jeśli posiadasz taką linię, usuń ją.
Skutki korzystania z ramdysku o rozmiarze 0K są nieprzewidywalne i mogą
doprowadzić do błędów jądra.
Appendix
11. Odnośniki.
Gdy ściągasz pakiet, zawsze znajdź jego najnowszą wersję, chyba że masz dobre
powody aby tego nie robić.
11.1 Gotowe dyskietki.
Poniżej znajdują się odnośniki do dyskietek startowych poszczególnych
dystrybucji. Zawsze korzystaj z mirrorów, aby zredukować obciążenie
serwera.
Dyskietki startowe Slackware,
łówne"> oraz
Mirrory Slackware
Dyskietki startowe RedHat oraz
Mirrory RedHat
Dyskietki startowe Debian oraz
Mirrory Debian
Oprócz tych dyskietek dystrybucyjnych, dostępne są także poniższe dyskietki
ratunkowe. Są one dostępne w katalogu
http://metalab.unc.edu/pub/Linux/system/recovery/!INDEX.html, chyba
że podano inaczej.
tomsrtbt, autorstwa Toma Oehser, to pojedyncza dyskietka
startowa/główna oparta na jądrze 2.0 z duża ilością dodatkowych funkcji i
programów. Obsługuje IDE, SCSI, napęd taśmowy, karty sieciowe, PCMCIA i inne.
Zawartych jest ponad 100 programów narzędziowych do naprawy i odtwarzania
dysków. Pakiet zawiera także skrypty służące do rozłożenia i złożenia z
powrotem obrazu dyskietki tak, aby można było zmodyfikować jej zawartość.
rescue02, autorstwa Johna Comyns, to dyskietka ratunkowa oparta na
jądrze 1.2.84, z obsługą IDE, Adaptec 1542 oraz NCR53C7,8xx. Korzysta z
plików wykonywalnych ELF, ale ma wystarczająco dużo komend, więc może zostać
wykorzystana pod każdym systemem. Zawiera moduły dla pozostałych kart SCSI,
które mogą zostać załadowane po wystartowaniu systemu. Prawdopodobnie
dyskietka ta nie będzie działać na systemach z 4MB RAM, ponieważ
korzysta z ramdysku wielkości 3MB.
resque_disk-2.0.22, autorstwa Sergei'a Viznyuk, to
dyskietka startowa oparta o jądro 2.0.22 z wbudowaną obsługą IDE, wielu
różnych kontrolerów SCSI oraz ELF/a.out. Dodatkowo zawiera wiele modułów i
użytecznych narzędzi do naprawy i odtwarzania twardego dysku.
Obrazy dyskietek cramdisk oparte na jądrze 2.0.23 działają już na
maszynach z 4 i 8MB RAM. Zawierają emulację koprocesora, obsługę sieci (PPP,
NE2000, 3C509) lub obsługę napędu ZIP. Te dyskietki wystartują na komputerze
386 z 4MB RAM. Obsługują DOS, więc możesz ściągnąć je z sieci na partycję
DOS.
http://metalabs.unc.edu/pub/Linux/system/recovery/images/
11.2 Pakiety ratunkowe.
Na metalab.unc.edu można znaleźć kilka pakietów do tworzenia dyskietek
ratunkowych. Korzystając z tych pakietów najczęściej wybierasz pliki do
załączenia na dyskietce, a reszta dzieje się automatycznie (do pewnego
stopnia). Aby uzyskać więcej informacji przeczytaj plik
http://metalab.unc.edu/pub/Linux/system/recovery/!INDEX.html.
Sprawdź daty utworzenia poszczególnych pakietów -- niektóre z nich nie
były uaktualniane od kilku lat i nie pozwalają na tworzenie skompresowanego
systemu plików ładowanego do ramdysku. Z tego co wiem jedynie Yard posiada
obsługę ramdysku.
11.3 Skrypty powłoki Grahama Chapman'a
Graham Chapman napisał zestaw skryptów użytecznych jako przykłady jak
tworzyć dyskietki startowe. Skrypty te w poprzedniej wersji tego dokumentu
znajdowały się w załączniku, ale zostały z niego usunięte i umieszczone na
stronie WWW:
http://www.zeta.org.au/~grahamc/linux.htmlSkrypty te mogą okazać się pożyteczne, ale zawsze czytaj uważnie instrukcje
do nich dołączone -- jeśli przykładowo wybierzesz złe urządzenie wymiany,
twój główny system plików zostanie w całości i nieodwracalnie usunięty.
Upewnij się że skonfigurowałeś wszystko poprawnie zanim użyjesz skryptów!
11.4 LILO (LInux LOader) -- program ładujący Linuxa.
Napisany przez Wernera Almesberger. Doskonały program ładujący, zawierający
w dokumentacji informacje na temat bootsektora oraz pierwszych faz
startowania systemu.
Znajdziesz go pod adresem
ftp://tsx-11.mit.edu/pub/linux/packages/lilo/. Jest on także dostępny
na Metalab i jego mirrorach.
11.5 Linux FAQ i HOWTO.
Dokumenty te dostępne są one z wielu źródeł. Przeglądnij grupę usenet
news.answers oraz comp.os.linux.announce.
FAQ jest dostępne pod adresem
http://metalab.unc.edu/pub/Linux/docs/faqs/linux-faq a dokumenty HOWTO
pod adresem
http://metalab.unc.edu/pub/Linux/docs/HOWTO.
Większość dokumentacji do Linuxa dostępna jest na stronie
The Linux Documentation Project homepage.
Ewentualnie możesz wysłać list pod adres mail-server@rtfm.mit.edu
ze słowem ``help'' w treści wiadomości, i robić to, co podają otrzymane
instrukcje.
Od tłumacza: Polskie wersje dokumentów HOWTO znajdziesz pod adresem
Jak To Zrobić.
11.6 Korzystanie z ramdysku.
Doskonały opis działania ramdysku znajduje się w dokumentacji dostarczanej
razem z jądrem Linuxa. Zajrzyj do pliku
/usr/src/linux/Documentation/ramdisk.txt. Został on napisany
przez Paula Gortmaker i zawiera dział na temat tworzenia skompresowanego
ramdysku.
11.7 Proces startowania Linuxa.
Więcej szczegółow na temat procesu startowania Linuxa znajdziesz w
następujących miejscach:
W The Linux System Administrators' Guide znajduje się dział na temat
startowania systemu. Zajrzyj pod adres
http://metalab.unc.edu/LDP/LDP/sag/c1582.html
The LILO ``Technical overview''
http://metalab.unc.edu/pub/Linux/system/boot/lilo/lilo-t-21.ps.gz
zawiera szczegółowy opis startowania systemu na najniższym poziomie, aż do
załadowania jądra.
Najlepszym przewodnikiem jest kod źródłowy. Poniżej podano kilka
plików jądra powiązanych z procesem startowania. Jeśli posiadasz kod
źródłowy Linuxa, znajduje się on w katalogu /usr/src/linux.
Ewentualnie pod adresem
http://wafu.netgate.net/linux/
znajduje się hipertekstowa przeglądarka kodu źródłowego jądra autorstwa
Shigio Yamaguchi (shigio@wafu.netgate.net). Poniżej znajdują się
niektóre interesujące pliki:
arch/i386/boot/bootsect.S,setup.SZawiera kod w assemblerze dotyczący bootsektora.
arch/i386/boot/compressed/misc.cZawiera kod dekompresujący jądro.
arch/i386/kernel/Katalog zawierający kod inicjujący jądro. Plik setup.c zawiera słowo
ramdysku
drivers/block/rd.cZawiera sterownik ramdysku. Procedury rd_load oraz
rd_load_image ładują bloki z urządzenia do ramdysku.
Procedura identify_ramdisk_image ustala, jaki tym
systemu plików został znaleziony oraz czy jest on skompresowany.
12. Kody błędów LILO.
W usenecie ludzie często zadają pytania na ten temat, więc umieściliśmy je
tutaj dla szerszego grona. To podsumowanie pochodzi z LILO User
Documentation Wernera Almsberger, dostępnego pod adresem
ftp://metalab.unc.edu/pub/Linux/system/boot/lilo/lilo-u-21.ps.gz.
Gdy LILO ładuje się, wyświetla słowo ``LILO''. Każda litera jest
wyświetlana po lub przed wykonaniem jakiejś czynności. Jeśli w pewnym
momencie wystąpi błąd, można wykorzystać litery do zidentyfikowania
problemu.
(nic)Żadna część LILO nie została załadowana. LILO nie został zainstalowany, albo
partycja w której bootsektorze LILO został zainstalowany nie jest aktywna.
LRozpoczęła się pierwsza faza programu ładującego, ale niemożliwe jest
przejście do drugiej fazy. Dwucyfrowy kod błędu oznacza rodzaj błędu (patrz
także dział ``Disk error codes''). Zwykle dzieje się tak z powodu awarii
nośnika lub złych parametrów dysku.
LIProgram ładujący pierwszej fazy załadował drugą fazę, ale nie udało mu się
jej uruchomić. Może być to spowodowane błednymi parametrami dysku lub
przeniesieniem pliku /boot/boot.b bez wywołania instalatora.
LILRozpoczął się program ładujący drugiej fazy, ale nie udało mu się załadaować
tablicy deskryptorów z pliku mapy. Najczęściej jest to spowodowane awarią
nośnika lub błędnymi parametrami dysku.
LIL?Program ładujący drugiej fazy został załadowany pod nieprawidłowym adresem.
Zwykle jest to spowodowane błędnymi parametrami dysku lub przeniesieniem
pliku /boot/boot.b bez uruchomienia instalatora.
LIL-Tablica deskryptorów jest nieprawidłowa. Może to być spowodowane błędnymi
parametrami dysku lub przeniesieniem pliku /boot/map bez
uruchomienia istalatora mapy.
LILOWszystkie elementy LILO zostały prawidłowo załadowane.
Jeśli BIOS zasygnalizuje błąd gdy LILO próbuje załadować obraz startowy,
wyświetlany jest odpowiedni kod błędu. Kody te są z zakresu od 0x00 do
0xbb. W LILO User Guide znajduje się ich wyjaśnienie.
13. Lista plików przykładowej głównej dyskietki.
Poniżej znajduje się zawartość przykładowej dyskietki głównej i narzędziowej.
Root directory:
drwx--x--x 2 root root 1024 Nov 1 15:39 bin
drwx--x--x 2 root root 4096 Nov 1 15:39 dev
drwx--x--x 3 root root 1024 Nov 1 15:39 etc
drwx--x--x 4 root root 1024 Nov 1 15:39 lib
drwx--x--x 5 root root 1024 Nov 1 15:39 mnt
drwx--x--x 2 root root 1024 Nov 1 15:39 proc
drwx--x--x 2 root root 1024 Nov 1 15:39 root
drwx--x--x 2 root root 1024 Nov 1 15:39 sbin
drwx--x--x 2 root root 1024 Nov 1 15:39 tmp
drwx--x--x 7 root root 1024 Nov 1 15:39 usr
drwx--x--x 5 root root 1024 Nov 1 15:39 var
/bin:
-rwx--x--x 1 root root 62660 Nov 1 15:39 ash
-rwx--x--x 1 root root 9032 Nov 1 15:39 cat
-rwx--x--x 1 root root 10276 Nov 1 15:39 chmod
-rwx--x--x 1 root root 9592 Nov 1 15:39 chown
-rwx--x--x 1 root root 23124 Nov 1 15:39 cp
-rwx--x--x 1 root root 23028 Nov 1 15:39 date
-rwx--x--x 1 root root 14052 Nov 1 15:39 dd
-rwx--x--x 1 root root 14144 Nov 1 15:39 df
-rwx--x--x 1 root root 69444 Nov 1 15:39 egrep
-rwx--x--x 1 root root 395 Nov 1 15:39 false
-rwx--x--x 1 root root 69444 Nov 1 15:39 fgrep
-rwx--x--x 1 root root 69444 Nov 1 15:39 grep
-rwx--x--x 3 root root 45436 Nov 1 15:39 gunzip
-rwx--x--x 3 root root 45436 Nov 1 15:39 gzip
-rwx--x--x 1 root root 8008 Nov 1 15:39 hostname
-rwx--x--x 1 root root 12736 Nov 1 15:39 ln
-rws--x--x 1 root root 15284 Nov 1 15:39 login
-rwx--x--x 1 root root 29308 Nov 1 15:39 ls
-rwx--x--x 1 root root 8268 Nov 1 15:39 mkdir
-rwx--x--x 1 root root 8920 Nov 1 15:39 mknod
-rwx--x--x 1 root root 24836 Nov 1 15:39 more
-rws--x--x 1 root root 37640 Nov 1 15:39 mount
-rwx--x--x 1 root root 12240 Nov 1 15:39 mt
-rwx--x--x 1 root root 12932 Nov 1 15:39 mv
-r-x--x--x 1 root root 12324 Nov 1 15:39 ps
-rwx--x--x 1 root root 5388 Nov 1 15:39 pwd
-rwx--x--x 1 root root 10092 Nov 1 15:39 rm
lrwxrwxrwx 1 root root 3 Nov 1 15:39 sh -> ash
-rwx--x--x 1 root root 25296 Nov 1 15:39 stty
-rws--x--x 1 root root 12648 Nov 1 15:39 su
-rwx--x--x 1 root root 4444 Nov 1 15:39 sync
-rwx--x--x 1 root root 110668 Nov 1 15:39 tar
-rwx--x--x 1 root root 19712 Nov 1 15:39 touch
-rwx--x--x 1 root root 395 Nov 1 15:39 true
-rws--x--x 1 root root 19084 Nov 1 15:39 umount
-rwx--x--x 1 root root 5368 Nov 1 15:39 uname
-rwx--x--x 3 root root 45436 Nov 1 15:39 zcat
/dev:
lrwxrwxrwx 1 root root 6 Nov 1 15:39 cdrom -> cdu31a
brw-rw-r-- 1 root root 15, 0 May 5 1998 cdu31a
crw------- 1 root root 4, 0 Nov 1 15:29 console
crw-rw-rw- 1 root uucp 5, 64 Sep 9 19:46 cua0
crw-rw-rw- 1 root uucp 5, 65 May 5 1998 cua1
crw-rw-rw- 1 root uucp 5, 66 May 5 1998 cua2
crw-rw-rw- 1 root uucp 5, 67 May 5 1998 cua3
brw-rw---- 1 root floppy 2, 0 Aug 8 13:54 fd0
brw-rw---- 1 root floppy 2, 36 Aug 8 13:54 fd0CompaQ
brw-rw---- 1 root floppy 2, 84 Aug 8 13:55 fd0D1040
brw-rw---- 1 root floppy 2, 88 Aug 8 13:55 fd0D1120
brw-rw---- 1 root floppy 2, 12 Aug 8 13:54 fd0D360
brw-rw---- 1 root floppy 2, 16 Aug 8 13:54 fd0D720
brw-rw---- 1 root floppy 2, 120 Aug 8 13:55 fd0D800
brw-rw---- 1 root floppy 2, 32 Aug 8 13:54 fd0E2880
brw-rw---- 1 root floppy 2, 104 Aug 8 13:55 fd0E3200
brw-rw---- 1 root floppy 2, 108 Aug 8 13:55 fd0E3520
brw-rw---- 1 root floppy 2, 112 Aug 8 13:55 fd0E3840
brw-rw---- 1 root floppy 2, 28 Aug 8 13:54 fd0H1440
brw-rw---- 1 root floppy 2, 124 Aug 8 13:55 fd0H1600
brw-rw---- 1 root floppy 2, 44 Aug 8 13:55 fd0H1680
brw-rw---- 1 root floppy 2, 60 Aug 8 13:55 fd0H1722
brw-rw---- 1 root floppy 2, 76 Aug 8 13:55 fd0H1743
brw-rw---- 1 root floppy 2, 96 Aug 8 13:55 fd0H1760
brw-rw---- 1 root floppy 2, 116 Aug 8 13:55 fd0H1840
brw-rw---- 1 root floppy 2, 100 Aug 8 13:55 fd0H1920
lrwxrwxrwx 1 root root 7 Nov 1 15:39 fd0H360 -> fd0D360
lrwxrwxrwx 1 root root 7 Nov 1 15:39 fd0H720 -> fd0D720
brw-rw---- 1 root floppy 2, 52 Aug 8 13:55 fd0H820
brw-rw---- 1 root floppy 2, 68 Aug 8 13:55 fd0H830
brw-rw---- 1 root floppy 2, 4 Aug 8 13:54 fd0d360
brw-rw---- 1 root floppy 2, 8 Aug 8 13:54 fd0h1200
brw-rw---- 1 root floppy 2, 40 Aug 8 13:54 fd0h1440
brw-rw---- 1 root floppy 2, 56 Aug 8 13:55 fd0h1476
brw-rw---- 1 root floppy 2, 72 Aug 8 13:55 fd0h1494
brw-rw---- 1 root floppy 2, 92 Aug 8 13:55 fd0h1600
brw-rw---- 1 root floppy 2, 20 Aug 8 13:54 fd0h360
brw-rw---- 1 root floppy 2, 48 Aug 8 13:55 fd0h410
brw-rw---- 1 root floppy 2, 64 Aug 8 13:55 fd0h420
brw-rw---- 1 root floppy 2, 24 Aug 8 13:54 fd0h720
brw-rw---- 1 root floppy 2, 80 Aug 8 13:55 fd0h880
brw-rw---- 1 root disk 3, 0 May 5 1998 hda
brw-rw---- 1 root disk 3, 1 May 5 1998 hda1
brw-rw---- 1 root disk 3, 2 May 5 1998 hda2
brw-rw---- 1 root disk 3, 3 May 5 1998 hda3
brw-rw---- 1 root disk 3, 4 May 5 1998 hda4
brw-rw---- 1 root disk 3, 5 May 5 1998 hda5
brw-rw---- 1 root disk 3, 6 May 5 1998 hda6
brw-rw---- 1 root disk 3, 64 May 5 1998 hdb
brw-rw---- 1 root disk 3, 65 May 5 1998 hdb1
brw-rw---- 1 root disk 3, 66 May 5 1998 hdb2
brw-rw---- 1 root disk 3, 67 May 5 1998 hdb3
brw-rw---- 1 root disk 3, 68 May 5 1998 hdb4
brw-rw---- 1 root disk 3, 69 May 5 1998 hdb5
brw-rw---- 1 root disk 3, 70 May 5 1998 hdb6
crw-r----- 1 root kmem 1, 2 May 5 1998 kmem
crw-r----- 1 root kmem 1, 1 May 5 1998 mem
lrwxrwxrwx 1 root root 12 Nov 1 15:39 modem -> ../dev/ttyS1
lrwxrwxrwx 1 root root 12 Nov 1 15:39 mouse -> ../dev/psaux
crw-rw-rw- 1 root root 1, 3 May 5 1998 null
crwxrwxrwx 1 root root 10, 1 Oct 5 20:22 psaux
brw-r----- 1 root disk 1, 1 May 5 1998 ram
brw-rw---- 1 root disk 1, 0 May 5 1998 ram0
brw-rw---- 1 root disk 1, 1 May 5 1998 ram1
brw-rw---- 1 root disk 1, 2 May 5 1998 ram2
brw-rw---- 1 root disk 1, 3 May 5 1998 ram3
brw-rw---- 1 root disk 1, 4 May 5 1998 ram4
brw-rw---- 1 root disk 1, 5 May 5 1998 ram5
brw-rw---- 1 root disk 1, 6 May 5 1998 ram6
brw-rw---- 1 root disk 1, 7 May 5 1998 ram7
brw-rw---- 1 root disk 1, 8 May 5 1998 ram8
brw-rw---- 1 root disk 1, 9 May 5 1998 ram9
lrwxrwxrwx 1 root root 4 Nov 1 15:39 ramdisk -> ram0
*** Dołączyłem jedynie urządzenia IDE dla partycji których używam.
*** Jeśli korzystasz ze SCSI, użyj zamiast nich urządzeń /dev/sdXX.
crw------- 1 root root 4, 0 May 5 1998 tty0
crw--w---- 1 root tty 4, 1 Nov 1 15:39 tty1
crw------- 1 root root 4, 2 Nov 1 15:29 tty2
crw------- 1 root root 4, 3 Nov 1 15:29 tty3
crw------- 1 root root 4, 4 Nov 1 15:29 tty4
crw------- 1 root root 4, 5 Nov 1 15:29 tty5
crw------- 1 root root 4, 6 Nov 1 15:29 tty6
crw------- 1 root root 4, 7 May 5 1998 tty7
crw------- 1 root tty 4, 8 May 5 1998 tty8
crw------- 1 root tty 4, 9 May 8 12:57 tty9
crw-rw-rw- 1 root root 4, 65 Nov 1 12:17 ttyS1
crw-rw-rw- 1 root root 1, 5 May 5 1998 zero
/etc:
-rw------- 1 root root 164 Nov 1 15:39 conf.modules
-rw------- 1 root root 668 Nov 1 15:39 fstab
-rw------- 1 root root 71 Nov 1 15:39 gettydefs
-rw------- 1 root root 389 Nov 1 15:39 group
-rw------- 1 root root 413 Nov 1 15:39 inittab
-rw------- 1 root root 65 Nov 1 15:39 issue
-rw-r--r-- 1 root root 746 Nov 1 15:39 ld.so.cache
*** Plik ld.so.cache jest tworzony przez ldconfig i przechowuje
*** lokalizacje bibliotek. Podczas startowania wystąpi wiele błędów
*** jeśli brakuje ld.so.cache. Możesz odtworzyć go po stworzeniu
*** dyskietki, albo dodać ldconfig do dyskietki i uruchamiać go ze
*** skryptu rc.x.
-rw------- 1 root root 32 Nov 1 15:39 motd
-rw------- 1 root root 949 Nov 1 15:39 nsswitch.conf
drwx--x--x 2 root root 1024 Nov 1 15:39 pam.d
-rw------- 1 root root 139 Nov 1 15:39 passwd
-rw------- 1 root root 516 Nov 1 15:39 profile
-rwx--x--x 1 root root 387 Nov 1 15:39 rc
-rw------- 1 root root 55 Nov 1 15:39 shells
-rw------- 1 root root 774 Nov 1 15:39 termcap
-rw------- 1 root root 78 Nov 1 15:39 ttytype
lrwxrwxrwx 1 root root 15 Nov 1 15:39 utmp -> ../var/run/utmp
lrwxrwxrwx 1 root root 15 Nov 1 15:39 wtmp -> ../var/log/wtmp
/etc/pam.d:
-rw------- 1 root root 356 Nov 1 15:39 other
/lib:
*** Posiadam system ELF z glibc, więc potrzebuję loadera ld-2.so
-rwxr-xr-x 1 root root 45415 Nov 1 15:39 ld-2.0.7.so
lrwxrwxrwx 1 root root 11 Nov 1 15:39 ld-linux.so.2 -> ld-2.0.7.so
-rwxr-xr-x 1 root root 731548 Nov 1 15:39 libc-2.0.7.so
lrwxrwxrwx 1 root root 13 Nov 1 15:39 libc.so.6 -> libc-2.0.7.so
lrwxrwxrwx 1 root root 17 Nov 1 15:39 libcom_err.so.2 -> libcom_err.so.2.0
-rwxr-xr-x 1 root root 6209 Nov 1 15:39 libcom_err.so.2.0
-rwxr-xr-x 1 root root 153881 Nov 1 15:39 libcrypt-2.0.7.so
lrwxrwxrwx 1 root root 17 Nov 1 15:39 libcrypt.so.1 -> libcrypt-2.0.7.so
-rwxr-xr-x 1 root root 12962 Nov 1 15:39 libdl-2.0.7.so
lrwxrwxrwx 1 root root 14 Nov 1 15:39 libdl.so.2 -> libdl-2.0.7.so
lrwxrwxrwx 1 root root 16 Nov 1 15:39 libext2fs.so.2 -> libext2fs.so.2.4
-rwxr-xr-x 1 root root 81382 Nov 1 15:39 libext2fs.so.2.4
-rwxr-xr-x 1 root root 25222 Nov 1 15:39 libnsl-2.0.7.so
lrwxrwxrwx 1 root root 15 Nov 1 15:39 libnsl.so.1 -> libnsl-2.0.7.so
-rwx--x--x 1 root root 178336 Nov 1 15:39 libnss_files-2.0.7.so
lrwxrwxrwx 1 root root 21 Nov 1 15:39 libnss_files.so.1 -> libnss_files-2.0.7.so
lrwxrwxrwx 1 root root 14 Nov 1 15:39 libpam.so.0 -> libpam.so.0.64
-rwxr-xr-x 1 root root 26906 Nov 1 15:39 libpam.so.0.64
lrwxrwxrwx 1 root root 19 Nov 1 15:39 libpam_misc.so.0 -> libpam_misc.so.0.64
-rwxr-xr-x 1 root root 7086 Nov 1 15:39 libpam_misc.so.0.64
-r-xr-xr-x 1 root root 35615 Nov 1 15:39 libproc.so.1.2.6
lrwxrwxrwx 1 root root 15 Nov 1 15:39 libpwdb.so.0 -> libpwdb.so.0.54
-rw-r--r-- 1 root root 121899 Nov 1 15:39 libpwdb.so.0.54
lrwxrwxrwx 1 root root 19 Nov 1 15:39 libtermcap.so.2 -> libtermcap.so.2.0.8
-rwxr-xr-x 1 root root 12041 Nov 1 15:39 libtermcap.so.2.0.8
-rwxr-xr-x 1 root root 12874 Nov 1 15:39 libutil-2.0.7.so
lrwxrwxrwx 1 root root 16 Nov 1 15:39 libutil.so.1 -> libutil-2.0.7.so
lrwxrwxrwx 1 root root 14 Nov 1 15:39 libuuid.so.1 -> libuuid.so.1.1
-rwxr-xr-x 1 root root 8039 Nov 1 15:39 libuuid.so.1.1
drwx--x--x 3 root root 1024 Nov 1 15:39 modules
drwx--x--x 2 root root 1024 Nov 1 15:39 security
/lib/modules:
drwx--x--x 4 root root 1024 Nov 1 15:39 2.0.35
/lib/modules/2.0.35:
drwx--x--x 2 root root 1024 Nov 1 15:39 block
drwx--x--x 2 root root 1024 Nov 1 15:39 cdrom
/lib/modules/2.0.35/block:
-rw------- 1 root root 7156 Nov 1 15:39 loop.o
/lib/modules/2.0.35/cdrom:
-rw------- 1 root root 24108 Nov 1 15:39 cdu31a.o
/lib/security:
-rwx--x--x 1 root root 8771 Nov 1 15:39 pam_permit.so
*** Katalogi do montowania.
/mnt:
drwx--x--x 2 root root 1024 Nov 1 15:39 SparQ
drwx--x--x 2 root root 1024 Nov 1 15:39 cdrom
drwx--x--x 2 root root 1024 Nov 1 15:39 floppy
/proc:
/root:
-rw------- 1 root root 176 Nov 1 15:39 .bashrc
-rw------- 1 root root 182 Nov 1 15:39 .cshrc
-rw------- 1 root root 47 Nov 1 15:39 .glintrc
-rwx--x--x 1 root root 455 Nov 1 15:39 .profile
-rw------- 1 root root 4014 Nov 1 15:39 .tcshrc
/sbin:
-rwx--x--x 1 root root 23976 Nov 1 15:39 depmod
-rwx--x--x 2 root root 274600 Nov 1 15:39 e2fsck
-rwx--x--x 1 root root 41268 Nov 1 15:39 fdisk
-rwx--x--x 1 root root 9396 Nov 1 15:39 fsck
-rwx--x--x 2 root root 274600 Nov 1 15:39 fsck.ext2
-rwx--x--x 1 root root 29556 Nov 1 15:39 getty
-rwx--x--x 1 root root 6620 Nov 1 15:39 halt
-rwx--x--x 1 root root 23116 Nov 1 15:39 init
-rwx--x--x 1 root root 25612 Nov 1 15:39 insmod
-rwx--x--x 1 root root 10368 Nov 1 15:39 kerneld
-rwx--x--x 1 root root 110400 Nov 1 15:39 ldconfig
-rwx--x--x 1 root root 6108 Nov 1 15:39 lsmod
-rwx--x--x 2 root root 17400 Nov 1 15:39 mke2fs
-rwx--x--x 1 root root 4072 Nov 1 15:39 mkfs
-rwx--x--x 2 root root 17400 Nov 1 15:39 mkfs.ext2
-rwx--x--x 1 root root 5664 Nov 1 15:39 mkswap
-rwx--x--x 1 root root 22032 Nov 1 15:39 modprobe
lrwxrwxrwx 1 root root 4 Nov 1 15:39 reboot -> halt
-rwx--x--x 1 root root 7492 Nov 1 15:39 rmmod
-rwx--x--x 1 root root 12932 Nov 1 15:39 shutdown
lrwxrwxrwx 1 root root 6 Nov 1 15:39 swapoff -> swapon
-rwx--x--x 1 root root 5124 Nov 1 15:39 swapon
lrwxrwxrwx 1 root root 4 Nov 1 15:39 telinit -> init
-rwx--x--x 1 root root 6944 Nov 1 15:39 update
/tmp:
/usr:
drwx--x--x 2 root root 1024 Nov 1 15:39 bin
drwx--x--x 2 root root 1024 Nov 1 15:39 lib
drwx--x--x 3 root root 1024 Nov 1 15:39 man
drwx--x--x 2 root root 1024 Nov 1 15:39 sbin
drwx--x--x 3 root root 1024 Nov 1 15:39 share
lrwxrwxrwx 1 root root 10 Nov 1 15:39 tmp -> ../var/tmp
/usr/bin:
-rwx--x--x 1 root root 37164 Nov 1 15:39 afio
-rwx--x--x 1 root root 5044 Nov 1 15:39 chroot
-rwx--x--x 1 root root 10656 Nov 1 15:39 cut
-rwx--x--x 1 root root 63652 Nov 1 15:39 diff
-rwx--x--x 1 root root 12972 Nov 1 15:39 du
-rwx--x--x 1 root root 56552 Nov 1 15:39 find
-r-x--x--x 1 root root 6280 Nov 1 15:39 free
-rwx--x--x 1 root root 7680 Nov 1 15:39 head
-rwx--x--x 1 root root 8504 Nov 1 15:39 id
-r-sr-xr-x 1 root bin 4200 Nov 1 15:39 passwd
-rwx--x--x 1 root root 14856 Nov 1 15:39 tail
-rwx--x--x 1 root root 19008 Nov 1 15:39 tr
-rwx--x--x 1 root root 7160 Nov 1 15:39 wc
-rwx--x--x 1 root root 4412 Nov 1 15:39 whoami
/usr/lib:
lrwxrwxrwx 1 root root 17 Nov 1 15:39 libncurses.so.4 -> libncurses.so.4.2
-rw-r--r-- 1 root root 260474 Nov 1 15:39 libncurses.so.4.2
/usr/sbin:
-r-x--x--x 1 root root 13684 Nov 1 15:39 fuser
-rwx--x--x 1 root root 3876 Nov 1 15:39 mklost+found
/usr/share:
drwx--x--x 4 root root 1024 Nov 1 15:39 terminfo
/usr/share/terminfo:
drwx--x--x 2 root root 1024 Nov 1 15:39 l
drwx--x--x 2 root root 1024 Nov 1 15:39 v
/usr/share/terminfo/l:
-rw------- 1 root root 1552 Nov 1 15:39 linux
-rw------- 1 root root 1516 Nov 1 15:39 linux-m
-rw------- 1 root root 1583 Nov 1 15:39 linux-nic
/usr/share/terminfo/v:
-rw------- 2 root root 1143 Nov 1 15:39 vt100
-rw------- 2 root root 1143 Nov 1 15:39 vt100-am
/var:
drwx--x--x 2 root root 1024 Nov 1 15:39 log
drwx--x--x 2 root root 1024 Nov 1 15:39 run
drwx--x--x 2 root root 1024 Nov 1 15:39 tmp
/var/log:
-rw------- 1 root root 0 Nov 1 15:39 wtmp
/var/run:
-rw------- 1 root root 0 Nov 1 15:39 utmp
/var/tmp:
14. Spis plików przykładowej dyskietki narzędziowej.
total 579
-rwxr-xr-x 1 root root 42333 Jul 28 19:05 cpio*
-rwxr-xr-x 1 root root 32844 Aug 28 19:50 debugfs*
-rwxr-xr-x 1 root root 103560 Jul 29 21:31 elvis*
-rwxr-xr-x 1 root root 29536 Jul 28 19:04 fdisk*
-rw-r--r-- 1 root root 128254 Jul 28 19:03 ftape.o
-rwxr-xr-x 1 root root 17564 Jul 25 03:21 ftmt*
-rwxr-xr-x 1 root root 64161 Jul 29 20:47 grep*
-rwxr-xr-x 1 root root 45309 Jul 29 20:48 gzip*
-rwxr-xr-x 1 root root 23560 Jul 28 19:04 insmod*
-rwxr-xr-x 1 root root 118 Jul 28 19:04 lsmod*
lrwxrwxrwx 1 root root 5 Jul 28 19:04 mt -> mt-st*
-rwxr-xr-x 1 root root 9573 Jul 28 19:03 mt-st*
lrwxrwxrwx 1 root root 6 Jul 28 19:05 rmmod -> insmod*
-rwxr-xr-x 1 root root 104085 Jul 28 19:05 tar*
lrwxrwxrwx 1 root root 5 Jul 29 21:35 vi -> elvis*
Wyszukiwarka
Podobne podstrony:
bootdisk howto pl 8bootdisk howto pl 13bootdisk howto pl 3bootdisk howto pl 7bootdisk howto pl 4bootdisk howto pl 10bootdisk howto pl 5bootdisk howto pl 6bootdisk howto pl 9bootdisk howto pl 2bootdisk howto pl 11bootdisk howto plbootdisk howto pl 12bootdisk howto pl 14bootdisk howto pl 1PPP HOWTO pl 6 (2)NIS HOWTO pl 1 (2)cdrom howto pl 1jtz howto pl 5więcej podobnych podstron