Mini Howto dla bezdyskowych stacji
Robert Nemkin, buci@math.klte.hu
v0.0.3, 12 Września 1996.
WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii
BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll
v1.12, 26 Lipca 1997
Dokument ten opisuje jak zainstalować bezdyskową stacje roboczą Linux-
a. Prawa autorskie należą do Roberta Nemkina. Polisa praw autorskich
to GPL. Chciałbym podziękować Bela Kis bkis@cartan.math.klte.hu za
przetłumaczenie tego dokumentu na język angielski. Dokument ten
został napisany w standardzie ISO-8859-2. Wersja oryginalna znajduje
się pod adresem ftp.icm.edu.pl .
______________________________________________________________________
Spis treści
1. Zmiany.
2. Jak zainstalować bezdyskową stację roboczą Linux-a ?
3. Dokumenty związane z tym.
4. Sprzęt.
5. Podstawowe idee.
5.1 Ustawianie PC-ta.
5.2 Ustawianie bootpd na serwerze.
5.3 Konfiguracja bottpd na serwerze.
5.4 Rozumienie tftp.
5.5 Ustawianie minimalnej konfiguracji Linux-a na odległym serwerze.
5.6 Konfiguracja serwera tftp.
5.7 Praca końcowa.
6. Wymagania pamięciowe i dyskowe; prędkość.
7. Możliwe błędy.
8. Błędy i możliwy dalszy rozwój tego dokumentu.
8.1 Od autora.
8.2 Od tłumacza.
______________________________________________________________________
11.. ZZmmiiaannyy..
ˇ v0.0.3 12 Września 1996: Małe poprawki błędów.
22.. JJaakk zzaaiinnssttaalloowwaaćć bbeezzddyysskkoowwąą ssttaaccjjęę rroobboocczząą LLiinnuuxx--aa ??
Dokument ten traktuje o instalacji bezdyskowej stacji roboczej na
Linux-ie. Czasami jest konieczna instalacja Linux-a na PC-tach, które
nie mają ani dysku twardego ani stacji dyskietek. Jeśli dostępna jest
sieć, inny komputer z Unix-em z bootp, tftp, serwer NFS, i eprom
burner FIXME wtedy możliwe jest zainstalowanie Linux-a bez twardego
dysku czy dyskietek.
33.. DDookkuummeennttyy zzwwiiąązzaannee zz ttyymm..
ˇ NFS-root Mini Howto
ˇ Linux NET-2/3-HOWTO napisane przez Terry Dawsona,
_9_4_0_0_4_5_3_1_@_p_o_s_t_o_f_f_i_c_e_._c_s_u_._e_d_u_._a_u
ˇ /usr/src/linux/README na temat konfiguracji i kompilacji nowego
jądra.
44.. SSpprrzzęętt..
Cokolwiek tu było opisane, sprawdzone zostało na następującej
konfiguracji:
ˇ Sun-OS 4.1.3 jako serwer startowy
ˇ Slackware 2.3 + Linux 1.2.8 + wd 8013 ethercard
ˇ Działająca sieć lokalna oparta na Ethernecie.
55.. PPooddssttaawwoowwee iiddeeee..
Podstawową ideą tego jest: PC-et otrzyma swój adres IP z serwera
startowego poprzez protokół bootp, używając 0.0.0.0 jako inicjacyjnego
adresu IP oraz jądro poprzez protokół tftp. (-- Startowanie poprzez
różne segmenty (poprzez ruter) nie jest takim prostym pytaniem, więc
albo umieść oba - serwer startowy i stację bezdyskową - w jednym
segmencie albo skonfiguruj pomocniczy adres UDP w swoim ruterze dla
adresu serwera. Dalszych informacji szukaj w podręczniku dostarczonym
razem z twoim ruterem.--)
Aby to zrobić postepuj zgodnie z poniższymi krokami.
55..11.. UUssttaawwiiaanniiee PPCC--ttaa..
Zdobądź pakiet nfsboot. (Dostępny jest np. z ftp.icm.edu.pl) Zawiera
on obraz BIOS-u dla karty wd8013, który może być bezpośrednio
zapisany.
Są jeszcze inne alternatywne sposoby na przygotowanie PC-ta:
ˇ jeśli twój komputer nie jest całkowicie bezdyskowy, wtedy możesz
użyć małego DOS-owego programu albo
ˇ obrazu dyskietki binarnej z tego samego pakietu.
Jeśli wybierzesz tę druga opcję musisz zapisać obraz na dyskietke
poleceniem dd.
Obrazy te zawierają klienta bootp oraz tftp. Musisz także przygotować
jądro, które będzie zawierało opcję nfs-root.
ˇ Jeśli używasz najnowszej stabilnej wersji jądra, linux-1.2.13, to
musisz załatać jądro łatą zawartą w pakiecie nfsboot. (-- Zobacz
patch(1)--)
ˇ Jeśli próbujesz użyć najnowszej wersji jądra z serii 1.3.x, to
musisz skonfigurować opcję nfs-root.
Możesz skonfigurować obsługę urządzenia blokowego (dyskietki albo
dysku twardego), ale musisz skonfigurować obsługę tcp/ip, karty wd
ethernet, głównego sytemu plików przez nfs. Potem skompiluj jądro jak
zwykle.
55..22.. UUssttaawwiiaanniiee bboooottppdd nnaa sseerrwweerrzzee..
Można go znleźć w pakiecie >bootpd-2.4.tar.gz na serwerze
ftp.icm.edu.pl.
Zdobądź pakiet, skompiluj go i zainstaluj. Jeśli twój drugi komputer
to przypadkiem Linux Slackware, to możesz przeskoczyć ten krok
ponieważ standardowa dystrybucja zawiera bootpd. Demona można
uruchomić albo bezpośrednio poleceniem: bootpd -s albo używając inetd.
W tym wypadku musisz:
ˇ zmienić plik /etc/inetd.conf przez usunięcie znaku # z początku
tych linii:
___________________________________________________________________
# tftp dgram udp wait root /usr/sbin/in.tftpd tftpd /export
# bootps dgram udp wait root /usr/sbin/in.bootpd bootpd
___________________________________________________________________
ˇ dołożyć lub także odkomentować następujące linie w pliku
/etc/services
___________________________________________________________________
bootps 67/tcp # serwer BOOTP
tftp 69/udp # serwer TFTP
___________________________________________________________________
ˇ ponownie zainicjować inetd przez kill -HUP
55..33.. KKoonnffiigguurraaccjjaa bboottttppdd nnaa sseerrwweerrzzee..
Po pierwsze bootpd ma plik konfiguracyjny o nazwie bootptab, który z
reguły znajduje się w katalogu /etc. Musisz go zmodyfikować przez
wpisanie adresu IP twoich gateway-ów, serwerów dns i adres-u/ów
ethernet twojej stacji bezdyskowej.
Oto przykładowy plik konfiguracyjny /etc/bootptab:
______________________________________________________________________
global.prof:\
:sm=255.255.255.0:\
:ds=192.168.1.5:\
:gw=192.168.1.19:\
:ht=ethernet:\
:bf=linux:
machine1:hd=/export/root/machine1:tc=global.prof:ha=0000c0863d7a:ip=192.168.1.1
machine2:hd=/export/root/machine2:tc=global.prof:ha=0800110244e1:ip=192.168.1.1
machine3:hd=/export/root/machine3:tc=global.prof:ha=0800110244de:ip=192.168.1.1
______________________________________________________________________
_g_l_o_b_a_l_._p_r_o_f jest ogólnym szablonem dla pól host-a, gdzie
ˇ sm jest maską podsieci
ˇ ds jest adresem serwera DNS
ˇ gw jest adresem gatway-a
ˇ ht jest typem sprzętu LAN
ˇ bf jest nazwą pliku startowego
Potem każdy komputer musi mieć swoją linię:
ˇ pierwsze pole jest nazwą host-a
ˇ pole hd jest katalogiem, w którym znajduje się plik startowy
ˇ ogólny szablon może być zawarty przez pole tc
ˇ pole ha jest adresem sprzętowym karty ethernet
ˇ pole ip jest adresem przypisanym do danego host-a
55..44.. RRoozzuummiieenniiee ttffttpp..
TFTP (Trivial File TRansfel Protocol) jest protokołem transferu
plików, takim jak ftp, z tym, że o wiele prostszym do zapisania go w
EPROM-ach. TFTP może zostac użyty na dwa sposoby:
ˇ proste tftp: oznacza, że klient ma dostęp do całego twojego systemu
plików. Jest to prostsze rozwiązanie, ale jest ono wielką dziurą w
bezpieczeństwie systemu (każdy może pobrać twój plik z hasłami
poprzez tftp).
ˇ bezpieczne tftp: serwer tftp używa funkcji systemowej chroot(2),
aby zmienić swój katalog główny. Wszystko poza nowym katalogiem
głównym będzie całkiem niedostępne. Z powodu chroot dir staje się
nowym katalogiem głównym; pole hd musi odzwierciedlać nową
sytuację. Na przykład: podczas używania niezabezpieczonego tftp,
pole hd zawiera pełną ścieżkę do katalogu startowego:
/export/root/machine1. Podczas używania bezpiecznego tftp z
katalogiem /expoprt jako katalog główny, wtedy /export staje się /
a pole hd musi zawierać /root/machine1.
Prawie każda implementacja Unix-a zawiera serwer tftp, przypuszczalnie
nie musisz instalować własnego.
55..55.. sseerrwweerrzzee.. UUssttaawwiiaanniiee mmiinniimmaallnneejj kkoonnffiigguurraaccjjii LLiinnuuxx--aa nnaa
ooddlleeggłłyymm
Może to zawierać pakiety a, ap, n oraz x z dystrybucji Slackware.
Jeśli zainstalujesz więcej - nie ma sprawy; ale wymienione pakiety
wystarczą, żeby zrobić bezdyskowy Xterminal. Do instalacji
potrzebujesz działającego już Linux-a. Znajdź trochę miejsca na dysku
na odległym komputerze i wyeksportuj je jako do zapisu-i-odczytu.
Zamontuj ten wyeksportowany katalog gdzieś (np. /mnt) w systemie
plików Linux-a. Zacznij ustawianie Linux-a i zmień opcję root w setup-
ie z / na /mnt. Potem zainstaluj powyższe pakiety jak zwykle. Jeśli
chcesz mieć nie więcej niż jedną stację bezdyskową Linux-ową, to nie
potrzeba żadnych zmian. Jednak z drugiej strony, jeśli planujesz
używać więcej niż jednej bezdyskowej stacji Linux-owej wtedy powyższe
ustawienia nie będą działać ponieważ niektóry pliki i katalogi muszą
być prywatne dla danej maszyny. Problem ten można obejść przez
przeniesienie katalogu /usr (nie zaweira on żadnych prywatnych danych)
i stworzyć osobne podkatalogi dla każdej bezdyskowej stacji. Na
przykład, jeśli /export/linux/machine1 zostałby zamontowany na /mnt
wtedy struktura katalogów po inicjacyjny ustawieniu wyglądałaby tak:
______________________________________________________________________
/export/linux/machine1/bin
/export/linux/machine1/sbin
/export/linux/machine1/lib
/export/linux/machine1/etc
/export/linux/machine1/var
/export/linux/machine1/usr
______________________________________________________________________
Po zmianach wyglądałaby tak:
______________________________________________________________________
/export/linux/machine1/bin
/export/linux/machine1/sbin
/export/linux/machine1/lib
/export/linux/machine1/etc
/export/linux/machine1/var
/export/linux/usr
______________________________________________________________________
Teraz stwórz podkatalogi dla innych maszyn. Przyjmij na razie, że
twoje stacje bezdyskowe nazywają się machine1, machine2, ...,
machinen; wtedy możesz użyć następującego skryptu w bash-u, aby
pozakładać inne katalogi:
______________________________________________________________________
#!/bin/bash
cd /export/linux
for x in machine2 machine3 ; do
mkdir $x; cd $x
(cd ../machine1; tar cf - *) | tar xvf -
done
______________________________________________________________________
Potem zrób nastepujące eksporty:
ˇ /export/linux/usr tylko-do-odczytu dla każdego
ˇ /export/liunx/machine1 tylko dla machine1 z prawami rw,
root
ˇ /export/liunx/machine2 tylko dla machine2 z prawami rw,
root
ˇ /export/liunx/machine3 tylko dla machine3 z prawami rw,
root
tak jak tutaj: (-- format tego przykładowego pliku odpowiada składni
pliku eksportowego z SunOS-u 4.1.3--)
______________________________________________________________________
# To jest plik /etc/export
# dla odległych Xterminali na Linux-ie zrobiony przez Buci
# ta linia pojawia się tylko jeden raz
/export/root/usr -access=linuxnet
# te po jednej dla każdego host-a
/export/root/machine1 rw=machine1,root=machine1
/export/root/machine2 rw=machine2,root=machine2
/export/root/machine3 rw=machine3,root=machine3
______________________________________________________________________
Nie zapomnij uruchomić exportfs -a.
55..66.. KKoonnffiigguurraaccjjaa sseerrwweerraa ttffttpp..
Teraz czas na konfigurację serwera tftp. Jeśli nie potrzebujesz
bezpiecznego tftp, to wszystko jest raczej proste, twoje klienty mogą
być startowane z katalogu /export.
Jeśli używany jest bezpieczny tftp, to możesz albo zrobić pełną
strukturę katalogów /export/linux pod tftpboot (z jednym rzeczywistym
jądrem i symbolicznymi dołączeniami dla innych maszyn), albo niech
katalog /export będzie katalogiem startowym dla bezpiecznego tftpd.
Albo, jeśli masz odrębny katalog tftpboot, to potrzbujesz tylko
oryginalnej struktury katalogów z jednym jądrem i symbolicznymi
dowiązaniami dla innych. Możesz otrzymać takie ustawienie przez
wpisanie tego:
______________________________________________________________________
mkdir -p /tftpboot/export/linux/machine1
cd /tftpboot/export/linux/machine1
cp /export/linux/machine1/ .
______________________________________________________________________
55..77.. PPrraaccaa kkoońńccoowwaa..
Ostatecznie musisz wpisać:
______________________________________________________________________
/sbin/mount nfs_server:/export/linux/usr /usr
______________________________________________________________________
jako pierwszą linię pliku
______________________________________________________________________
/export/linux//etc/rc.d/rc.S
______________________________________________________________________
gdzie to machine1, machine2, itd.
66.. WWyymmaaggaanniiaa ppaammiięęcciioowwee ii ddyysskkoowwee;; pprręęddkkoośśćć..
Slackware 2.3; dla innych dystrybucji/wersji podane liczby mogą być
różne.
ˇ Miejsce na dysku: 28MB + 6,5MB/maszynę
ˇ RAM: Ja używam X-ów na 8MB. Tylko dla 4MB jest potrzebny swap,
sądze; może on być stworzony oddzielnie dla każdego komputera w
katalogu /tmp.
Nie zapomnij uruchomić _m_k_s_w_a_p.
ˇ Prędkość: Nie miałem problemów na 486 DX2/66 z 8MB RAM-u.
77.. MMoożżlliiwwee bbłłęęddyy..
ˇ Znalazłem dziwny błąd: w podkatalogu /dev SunOS popsuł pliki
urządzeń i musiałem uruchomic ponownie MAKEDEV przez zamontowanie
tego podkatalogu na Linux-a z dyskiem. (Powodem były różnice
pomiędzy Linux-owym a SunOS-owym nfs-em: oba używają 32 bitów na
liczbę główną (major) i liczbę poboczną (minor) urządzeń, ale Linux
używa 16-bitowych pól dla każdego z nich, a SunOS używa 14 bitów
dla liczby głównej, a 18 bitów dla liczby pobocznej.)
ˇ Kiedy bezdyskowy Linux jest startowany, jest tylko jedno pole w
tablicy rutingu do serwera tftp, tak więc musisz ustawić poprawne
tablice rutingu. Masz tu dwie możliwości do wyboru:
ˇ skonfigurować każdy rc.S dla każdej maszyny,
ˇ użyć pakietu z klientem _b_o_o_t_p i napisać uogólniony skrypt
ustawiający.
88.. BBłłęęddyy ii mmoożżlliiwwyy ddaallsszzyy rroozzwwóójj tteeggoo ddookkuummeennttuu..
88..11.. OOdd aauuttoorraa..
ˇ Poprawne cytowanie dokumentów związanych.
ˇ SunOS powstał na podstawie BSD. Trzeba dołączyć konfigurację
bazowaną na SVR4 (np. Solaris)
ˇ Pomimo, iż Linux jest dość podobny do SunOS-a jako serwer
bootp/tftp, to jednak przydałby się przykład wziętyz Linux-a.
ˇ Odnowienie tego dokumentu w związku z bieżącą wersja pakietu
etherboot.
ˇ Pokazać różnice między załatanym jądrem z nfs-root w wersji 1.2.13
i najnowszą wersją jądra 1.3.x, która ma w sobie łatę nfs-root.
ˇ Trzeba wypróbować inne karty niż wd8013.
ˇ Dołączyć informacje na temat konfiguracji _b_o_o_t_p_c, klienta bootp dla
Linux-a, żeby ustawić poprawną tablicę rutingu.
ˇ Literówki i inne błędy: zgłaszaj je do buci@math.klte.hu Dziękuję.
88..22.. OOdd ttłłuummaacczzaa..
Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne,
składniowe, techniczne to pisz do mnie:
B.Maruszewski@zsmeie.torun.pl
Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/
Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże
stronie. Dostępne są także poprzez anonimowe ftp pod adresem
ftp.ippt.gov.pl/pub/Linux/JTZ/
Przetłumaczone przeze mnie dokumenty znajdują się także na mojej
stronie WWW. Są
tam też odwołania do Polskiej Strony Tłumaczeniowej.
Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę
dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij
list o treści subscribe jtz Imię Nazwisko na adres
listproc@ippt.gov.pl
Zmiany wprowadzone przeze mnie do tego dokumentu to polskie odnośniki
do serwerów ftp i WWW.