Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
FreeBSD. Podstawy
administracji systemem
Autor: Michael Lucas
Tumaczenie: Marek Ptlicki, Grzegorz Werner
ISBN: 83-7361-604-7
Tytu oryginau: Absolute BSD
Format: B5, stron: 616
Spis treci
Przedmowa...................................................................................... 17
Wprowadzenie ................................................................................. 19
Rozdzia 1. Instalacja ........................................................................................ 35
Sprzt zgodny z FreeBSD ............................................................................................... 35
Procesor .................................................................................................................... 36
Pami RAM............................................................................................................. 36
Dyski twarde ............................................................................................................. 36
Pobieranie FreeBSD ........................................................................................................ 37
Instalacja z FTP......................................................................................................... 38
Informacje niezbdne do instalacji z FTP ................................................................. 39
Konfiguracja sprztowa................................................................................................... 39
Instalacja FreeBSD.......................................................................................................... 40
Konfiguracja jdra do wykorzystania kart ISA ......................................................... 41
sysinstall brzydki instalator FreeBSD .................................................................. 41
Wykorzystanie dysku ................................................................................................ 42
Podzia na partycje .......................................................................................................... 44
Partycja gwna ............................................................................................................... 46
Przestrze wymiany ........................................................................................................ 46
Podzia przestrzeni wymiany..................................................................................... 47
Systemy plikw /var, /usr oraz /home ............................................................................. 48
Drugi dysk twardy ........................................................................................................... 48
Mikkie aktualizacje ................................................................................................. 49
Rozmiar bloku........................................................................................................... 49
Wybr zestaww instalacyjnych ............................................................................... 50
Nonik instalacyjny................................................................................................... 51
Rozpoczcie instalacji............................................................................................... 51
Konfiguracja poinstalacyjna ............................................................................................ 52
Haso uytkownika root ............................................................................................ 52
Dodawanie uytkownikw ........................................................................................ 53
Strefa czasowa........................................................................................................... 54
Mysz.......................................................................................................................... 54
Konfiguracja kart sieciowych.................................................................................... 55
Xfree86 ..................................................................................................................... 57
Oprogramowanie....................................................................................................... 58
Ponowne uruchomienie systemu ..................................................................................... 58
Uwaga na temat edytorw ............................................................................................... 59
Spis treci
7
Dostosowanie jdra do potrzeb ..................................................................................... 108
Przygotowanie......................................................................................................... 109
Kopia zapasowa jdra ............................................................................................. 110
Edycja plikw jdra................................................................................................. 110
Opcje podstawowe .................................................................................................. 113
Wiele procesorw.................................................................................................... 115
Urzdzenia .............................................................................................................. 115
Kompilacja jdra ........................................................................................................... 118
Problemy z kompilacj jdra................................................................................... 119
Uruchamianie systemu z nowym jdrem....................................................................... 121
Dodawanie funkcji do jdra........................................................................................... 121
LINT ....................................................................................................................... 121
Wykorzystanie opcji do poprawiania bdw.......................................................... 122
Poprawianie wydajnoci jdra ....................................................................................... 123
Wspdzielenie jder ..................................................................................................... 125
Spis treci
9
Konfiguracja klienta................................................................................................ 223
Wchodzimy do wizienia ........................................................................................ 225
Kocowa konfiguracja wizienia ............................................................................ 226
Uruchamianie wizienia.......................................................................................... 226
Zarzdzanie wizieniem.......................................................................................... 227
Zamykanie wizienia .............................................................................................. 228
Monitorowanie bezpieczestwa systemu....................................................................... 228
Co robi w przypadku wamania ................................................................................... 229
10
Spis treci
11
12
Spis treci
13
Co jest zamontowane?................................................................................................... 447
Brudne dyski ................................................................................................................. 447
Fsck......................................................................................................................... 447
Montowanie i odmontowywanie dyskw ...................................................................... 449
Montowanie standardowych systemw plikw....................................................... 449
Montowanie z wykorzystaniem opcji...................................................................... 449
Wymuszone montowanie w trybie do odczytu i zapisu .......................................... 450
Montowanie wszystkich standardowych systemw plikw .................................... 450
Montowanie w niestandardowych lokalizacjach ..................................................... 450
Odmontowywanie ................................................................................................... 450
Mikkie aktualizacje...................................................................................................... 451
Wczanie mikkich aktualizacji............................................................................. 451
Buforowanie zapisu na dyskach IDE a mikkie aktualizacje .................................. 451
Buforowanie zawartoci katalogw............................................................................... 452
Montowanie obcych systemw plikw.......................................................................... 452
Korzystanie z obcych systemw plikw ................................................................. 452
Typy obcych systemw plikw............................................................................... 453
Montowanie obcych systemw plikw za pomoc opcji polecenia mount ............. 454
Prawa dostpu do systemu plikw................................................................................. 454
Noniki wymienne i plik /etc/fstab ................................................................................ 455
Tworzenie dyskietki ...................................................................................................... 455
Formatowanie niskopoziomowe.............................................................................. 456
Tworzenie systemu plikw FFS .............................................................................. 456
Tworzenie systemu plikw MS-DOS...................................................................... 457
Podstawowe informacje o SCSI .................................................................................... 457
Typy SCSI............................................................................................................... 457
Adaptery SCSI ........................................................................................................ 458
Magistrale SCSI ...................................................................................................... 458
Terminatory i okablowanie ..................................................................................... 458
Identyfikatory i numery logiczne urzdze SCSI.................................................... 459
FreeBSD i SCSI ............................................................................................................ 459
Opnienie rozruchu ............................................................................................... 459
Kotwiczenie urzdze ............................................................................................. 460
Dodawanie dyskw twardych........................................................................................ 461
Tworzenie wycinkw .............................................................................................. 462
Tworzenie partycji .................................................................................................. 462
Konfigurowanie pliku /etc/fstab.............................................................................. 463
Instalowanie istniejcych plikw na nowych dyskach ............................................ 463
Tymczasowe montowanie ....................................................................................... 464
Przenoszenie plikw................................................................................................ 464
Montowanie kaskadowe.......................................................................................... 465
14
Spis treci
15
16
Posowie........................................................................................ 577
Dodatek A Przydatne opcje sysctl ................................................................... 583
Skorowidz...................................................................................... 591
Rozdzia 4.
Zabawy z jdrem
Pierwszym krokiem do optymalizacji systemu FreeBSD jest skonfigurowanie jdra.
Osoby niedowiadczone w systemach Unix mog by nieco zmieszane brzmieniem
nazwy: jdro systemu. W kocu jest to tajemna i ciemna strona systemu, gdzie zwyky
miertelnik nie ma dostpu. W niektrych wersjach systemw Unix, takich jak Solaris,
manipulacje w jdrze systemu nie s dostpne uytkownikom kocowym. W systemach
Unix z rodziny open source optymalizacja jdra jest najlepszym sposobem zwikszenia
wydajnoci systemu. W innych systemach operacyjnych zapewne rwnie jest to prawda, lecz ich producenci po prostu nie udostpniaj takiej moliwoci.
Jdro systemu FreeBSD mona w szerokim zakresie dostosowywa do wasnych potrzeb,
nawet podczas pracy. Mona prawie dowolnie modyfikowa ustawienia jdra majce
wpyw na wydajno systemu. Omwimy interfejs opcji sysctl oraz ich wykorzystanie
do zmiany parametrw pracujcego jdra.
Niektrych elementw jdra nie mona jednak zmieni podczas jego pracy, inne z nich
wymagaj bardzo skomplikowanej konfiguracji. Warto rwnie postara si jak najbardziej ograniczy rozmiar jdra, usuwajc z niego zbdne elementy. Najlepszy sposb
dokonania tego polega na skompilowaniu wasnej wersji jdra.
Na kocu rozdziau omwimy adowalne moduy jdra. S to podsystemy jdra, ktre
mona adowa i usuwa z jdra w zalenoci od potrzeb.
100
Konfiguracja jdra
W systemie FreeBSD dostpne s dwa programy do konfiguracji istniejcego jdra:
(8) oraz program rozruchowy (ang. boot loader).
Mechanizm sysctl
Program pozwala podglda wartoci parametrw jdra, jak rwnie w niektrych przypadkach modyfikowa je. Aby nieco zagmatwa spraw, parametry te s czsto
nazywane opcjami sysctl. Mechanizm sysctl jest bardzo skuteczn funkcj, poniewa czasami pozwala rozwiza problemy z wydajnoci bez koniecznoci ponownej kompilacji jdra lub konfiguracji aplikacji. Niestety, te potne moliwoci, bdnie wykorzystane, mog spowodowa pogorszenie wydajnoci, a nawet problemy z dziaaniem.
1
W wersji 5. systemu jdro razem ze swoimi moduami umieszczane jest w katalogu /boot/kernel
101
Mechanizm sysctl jest obsugiwany przez program (8). W wielu miejscach tej
ksiki bd zwraca uwag na uyteczne opcje sysctl, za pomoc ktrych mona wpyn na zachowanie jdra. Aby jednak skutecznie z nich korzysta, trzeba dowiedzie si
o nich czego wicej.
Zanim zaczniemy manipulowa opcjami sysctl, zapoznajmy si z ich list. Opcje sysctl,
dostpne w systemie, mona sprawdzi za pomoc nastpujcego polecenia:
Jako uytkownik nie mam pojcia, co oznacza ta warto. Gdybym jednak mia problemy
z jakim programem, mog zwrci si o pomoc do obsugi technicznej programu lub
zada pytanie na licie dyskusyjnej. Jeli osoba udzielajca pomocy poprosi mnie o to, mog
bez przeszkd odczyta i przekaza mu t warto lub zmieni j w zalenoci od potrzeb.
Opcje sysctl s zorganizowane w formacie drzewa noszcego nazw Management Information Base lub MIB. Drzewo to posiada kilka kategorii, jak net, vm oraz kern. Drzewo
Management Information Base jest wykorzystywane rwnie w innych zadaniach administracji systemem, o czym przekonamy si w dalszej czci ksiki. Kada z tych
kategorii jest podzielona na podkategorie, na przykad kategoria net jest podzielona
na podkategorie: IP, ICMP, TCP, i UDP. Istniej rne typy drzew MIB w rozdziale 19. poznamy na przykad drzewo MIB protokou SNMP. W niniejszym rozdziale
skupimy si jednak na drzewie MIB mechanizmu sysctl.
Zapoznalimy si ju z opcj sysctl
. Przygldajc si bliej dostpnym
opcjom sysctl, zauwaymy, e opcji zawierajcych przedrostek jest wicej. S to
oglne wartoci dotyczce jdra. Znajdziemy rwnie spor liczb opcji zawierajcych
przedrostek
, na przykad:
!
!
S to opcje mechanizmu IPC2 jdra. Drzewo opcji sysctl posiada zatem kilka poziomw
rozgazie.
2
102
Funkcja
"
pami wirtualna
"
systemy plikw
sie
#
informacje diagnostyczne
informacje o sprzcie
#
Kada warto sysctl moe by typu znakowego (string), cakowitego (integer), logicznego (binary) lub specjalnego, zawierajcego kod maszynowy zrozumiay dla specjalizowanych programw (opaque).
Opcje sysctl nie s dobrze udokumentowane i nie ma pojedynczego dokumentu, w ktrym
wszystkie byyby omwione. Kada z nich jest omawiana w podrcznikach systemowych funkcji, ktrych bezporednio dotycz. Na przykad opcja sysctl
(o ktrej wspominamy szerzej w rozdziale 7.) jest omwiona w podrczniku systemowych programu (8). Wiele opcji sysctl nie ma adnej dokumentacji. W dodatku A
przedstawiam list najczciej stosowanych opcji sysctl oraz omawiam ich zastosowanie.
Na szczcie niektre z tych opcji maj oczywiste znaczenie. Na przykad zaraz na pocztku listy znajdziemy opcj nastpujc:
$
Jest ona wana dla osb, ktre testuj rne jdra, co omwimy szerzej w dalszej czci tego rozdziau. Podczas mudnej procedury usuwania problemw z jdrem zdarza
si czsto, e zapominamy, jakie jdro wykorzystujemy w danej chwili. Nieraz zdarzao mi si szuka przyczyny problemu i jej nie odnale, po czym okazywao si, e
mam uruchomion inn wersj jdra ni ta, w ktrej by problem.
POSIX jest midzynarodowym standardem systemw Unix definiujcym funkcje programw i jdra.
FreeBSD w wikszoci jest zgodny ze standardem POSIX.
103
Aby obejrze poddrzewo sysctl (na przykad ke9rn), wywoujemy nastpujce polecenie:
%&'(
)*+,-../01
"
22)
Powyej prezentujemy jedynie kilka wierszy pocztkowych dosy pokanej listy opcji.
Osoby zainteresowane funkcjami sysctl powinny przejrze pen list i zorientowa si
w tym, co jest dostpne. Aby odczyta warto konkretnej opcji, naley poda pen
ciek w drzewie MIB:
"+
Program powoduje wypisanie komunikatu sygnalizujcego dokonanie zmiany, informujcego o poprzedniej i biecej wartoci. Zmiana wartoci opcji sysctl jest a tak
prostym zadaniem.
W nowszych wersjach FreeBSD opcja 4 jest zbyteczna wystarczy poda przypisanie nowej wartoci.
104
105
#560*6
56$ $ 6
56
6
Aby zmieni ustawienia domylne, naley wprowadzi zmienione wersje odpowiednich opcji w pliku /boot/loader.conf.
W pierwszym wierszu powyszego przykadu znajduje si nazwa pliku jdra (ktr poznalimy przy okazji omawiania jednej z opcji sysctl). Zamy, e pracujemy zdalnie
i chcielibymy ponownie uruchomi system z innym jdrem, lecz nie chcemy nadpisywa
standardowego jdra znajdujcego si w pliku /kernel. Zmieniajc nazw pliku jdra
moemy przy nastpnym uruchomieniu zmusi system do zaadowania innego jdra.
Ta opcja sysctl moe by oczywicie ustawiona wycznie podczas rozruchu systemu.
Przeanalizujmy dwa inne przykady: przekazywania opcji pomocniczych sterownikom urzdze oraz uaktywniania opcji automatycznego adowania moduw jdra.
106
Najtrudniej jest okreli moduy, ktre warto zaadowa. Mniejszy problem jest ze sterownikami urzdze: gdy do systemu dodajemy kontroler SCSI lub kart sieciow
mona doda odpowiedni modu, zamiast od nowa kompilowa jdro. Decyzja o zaadowaniu moduu jdra w celu rozwizania okrelonego problemu z reguy jest podejmowana w wyniku przeczytanej dokumentacji lub za czyj porad. Ponadto wiedza
na temat moduw przychodzi wraz z dowiadczeniem, dziki zapoznaniu si z odpowiedni literatur i zdobyciu informacji na temat tego, jakie moduy bd potrzebne
do realizacji konkretnych celw. W dalszej czci rozdziau przeka kilka zalece
dotyczcych okrelonych moduw jdra.
Program adujcy nie jest Uniksem to prosty interpreter polece napisany w jzyku
Forth5. Niektre polecenia programu adujcego przypominaj co prawda polecenia
systemu Unix, lecz uczyniono tak wycznie dla uatwienia korzystania z tego narzdzia.
Jzyk Forth jest jednym z nielicznych interpreterw, ktre zmieszcz si w rekordzie rozruchowym dysku
twardego. Podobny program w jzyku C zajby wicej miejsca. Od czasu do czasu pojawia si ochotnik
obiecujcy napisanie programu adujcego w innym jzyku programowania, jak C, BASIC itp.
Po krtkim okresie osoba taka przestaje jednak zdradza oznaki istnienia.
107
ls
Polecenie powoduje wypisanie nazw plikw, podobnie jak w systemie Unix. Domylnie wypisywana jest zawarto katalogu gwnego; w poleceniu tym mona rwnie
poda pen ciek katalogu, ktrego zawarto chcemy pozna.
unload
Polecenie
powoduje wyczyszczenie pamici z jdra oraz jego moduw zdefiniowanych w pliku loader.conf.
load
Oznacza zaadowanie pliku do pamici. Polecenie to suy do zaadowania moduu, a nawet samego jdra. Aby zaadowa jdro, naley najpierw wyczyci pami z poprzedniej zawartoci (poleceniem
).
Zaadowanie moduu sterownika karty Intel EtherExpress odbywa si w nastpujcy
sposb:
set
Polecenie pozwala ustawi warto opcji sysctl. Na przykad buforowanie zapisu na
dyskach IDE wczymy w nastpujcy sposb:
108
':0
)00000 2d505c
kernel
2
1 0xc0c6c000 13000
linux.ko
#
W tym systemie (na komputerze klasy laptop) zaadowane s w tej chwili dwa moduy:
jdro (kernel) oraz modu zgodnoci z systemem Linux (linux.ko, wicej szczegw
w rozdziale 11.). Kady z tych moduw posiada podmoduy, ktre mona odczyta
za pomoc polecenia
w takim przypadku naley oczekiwa kilkuset
wierszy wyniku.
109
486 i nowszymi, lecz nowsze procesory posiadaj zaawansowane funkcje i optymalizacje, ktre pozwalaj na wydajniejsz prac. Jdro GENERIC nie wykorzystuje tych
funkcji i suy raczej jako rozwizanie kompromisowe.
Dziki dostosowaniu jdra moemy poprawi wydajno systemu, jak rwnie moemy
uwzgldni w jdrze dodatkowe funkcje oraz obsug nowego sprztu, nie uwzgldnionego w jdrze podstawowym.
Przygotowanie
Przed rozpoczciem budowy nowego jdra naley zdoby jego kod rdowy. Czytelnicy,
ktrzy zastosowali si do porad z rozdziau 1. posiadaj ju wszystko w swoim komputerze. W przeciwnym razie musz ponownie uruchomi instalator i zainstalowa rda jdra lub, korzystajc z rozdziau 6., skonfigurowa podsystem CVSup.
Osoby, ktre nie potrafi stwierdzi, czy w systemie zainstalowane zostay kody rdowe
jdra, powinny to sprawdzi w katalogu /usr/src/sys. Jeli katalog ten istnieje i znajduje
si w nim spora liczba plikw i katalogw, oznacza to, e kod rdowy jdra zosta
zainstalowany.
Przed rozpoczciem procesu budowy jdra naley sporzdzi list posiadanego sprztu.
Czasem zadanie to bywa nieatwe, poniewa nazwa producenta i marka podzespou
niewiele mwi o moliwociach tego elementu i jego rzeczywistej konstrukcji. Wiele
firm produkowao karty sieciowe kompatybilne z kart NE2000, czasem nawet karty
marki 3Com posiaday ukad oznakowany jako ne20006. Ponadto rozmaite firmy, na
przykad Linksys, czsto firmuj wasn mark urzdzenia, ktre skonstruowane s na
bazie zupenie rnych wzajemnie ukadw. Na wszystkich pudekach wystpuje napis Linksys, a w kadym moe by produkt zbudowany z ukadw scalonych innych
producentw (niejednokrotnie konfiguracj urzdzenia mona w ciemno oszacowa
na podstawie daty wypuszczenia go na rynek).
Na szczcie sprzt PCI posiada zaawansowane mechanizmy identyfikacji, a FreeBSD
dobrze radzi sobie z tego typu urzdzeniami, w wikszoci przypadkw poprawnie
rozpoznajc je podczas rozruchu systemu. Jeli wykorzystujemy starszy system zawierajcy urzdzenia na magistrali ISA konieczne moe si okaza uzyskanie dokadnych
informacji na temat typu i wersji urzdzenia, obsugiwanych przerwa IRQ oraz portw wejcia-wyjcia (I/O).
Najprostszym sposobem identyfikacji posiadanego sprztu jest sprawdzenie zawartoci
pliku /var/run/dmesg.boot, ktry zawiera bufor komunikatw jdra, czyli sprawdzenie
tych wszystkich informacji, ktre pojawiaj si na ekranie podczas uruchamiania si
systemu (patrz rozdzia 3.). Osoby, ktre nie znaj zawartoci pliku dmesg.boot, powinny koniecznie si z nim zapozna w tej chwili. Niejeden uytkownik bdzie zaskoczony znajdujc si tam tak du iloci wiadomoci na temat posiadanego sprztu.
Umieszczanie takiej etykiety na gwnym ukadzie karty czsto bywa ponad siy producenta. W kocu
znacznie uprocioby to ycie uytkownikw, zatem nie warto si tym przejmowa.
110
Nawet posiadanie wikszej liczby jder niczym nie grozi. Wiele znanych mi osb
umieszcza kopi jdra w katalogu, ktrego nazwa zawiera dat i w ten sposb kolekcjonuje pen histori jder. Jedyn konsekwencj istnienia takiej kolekcji moe
by zapenienie partycji gwnej sytemu.
111
i zmiany wprowadza w kopii, nie w oryginale. Plikowi naley nada nazw zgodn z nazw maszyny (jest to najczciej stosowana konwencja). Na przykad gdy posiadamy
system o nazwie webserver, plikowi konfiguracyjnemu jego jdra nadamy nazw:
!"#"$%&"'(")"
112
machine
Sowo kluczowe
okrela architektur systemu. Nie ma sensu zmienia tej opcji,
chyba, e w systemie x86 budujemy jdro dla systemw Alpha.
cpu
Opcja okrela funkcje obsugiwane przez procesor. Jest to wana opcja, poniewa
wspczesne procesory znacznie rni si od siebie w zakresie obsugiwanych funkcji
(wemy pod uwag choby procesory Pentium i Pentium MMX).
W tej opcji naley wpisa oznaczenie posiadanego procesora. Gdy nie za bardzo wiemy,
co tam wpisa, mona posuy si zawartoci pliku dmesg.boot. Plik dmesg.boot na
moim laptopie zawiera nastpujc tre:
,<-<
888$<
888F $, G2H)+AI:!+
,<-J
*56E68#5!'5
%
5!2K%<-LMA/L(/L<'/L1',LA'.L<9/LA,/L,F!L'/<LA1..L<E/LA,9L,A*ML<91L<'/
LAAFL%F'.L''/3
Dla nas w tym momencie najwaniejszy jest fragment 686-class CPU w pierwszym
wierszu. Oznacza on, e mog usun wiersze z opcjami !%&'"() oraz !*&'"(),
dziki czemu budowane przeze mnie jdro bdzie szybsze i mniejsze. W wyniku tych
modyfikacji jdro bdzie zoptymalizowane pod ktem procesorw klasy 686 i zostanie
pominity wolniejszy, uniwersalny kod.
ident
Opcja okrela nazw jdra, ktra z reguy jest taka sama, jak nazwa serwera. Gdy
budujemy jedno jdro przeznaczone dla wikszej liczby maszyn, warto nada mu nazw
najlepiej oddajc ich przeznaczenie, jak na przykad WEBSERVER.
maxusers
Warto
+ suy do obliczenia rnych wewntrznych parametrw jdra, jak
rozmiary tablic wykorzystywanych w obsudze pocze sieciowych oraz liczby jednoczenie otwartych plikw.
Poczwszy od FreeBSD 4.5 jdro sprawdza ilo dostpnych zasobw i na tej podstawie ustawia warto opcji
+ w sposb optymalny dla wikszoci zastosowa.
Warto , opcji
+ spowoduje wykorzystanie tych domylnych parametrw.
Takie ustawienie skutkuje zadowalajc konfiguracj w przypadku wikszoci systemw. Warto t mona rwnie ustawi rcznie.
113
Opcje podstawowe
Po opcji
+ w pliku konfiguracyjnym jdra nastpuje seria podstawowych opcji
jdra. Opcje te definiuj szczegy obsugi TCP/IP, FFS oraz systemu plikw. W tej sekcji
wystpuj rwnie mniej powszechnie stosowane opcje, z ktrych cz mona usun.
Nie bdziemy omawia wszystkich moliwych opcji, lecz omwimy dziaanie najczciej
wykorzystanych. Szczeglny nacisk kad na opcje typowe dla serwera internetowego.
Przeanalizujmy nastpujce opcje:
A91I/A-N91/
Niektre starsze procesory (jak 386, 486SX) nie posiaday koprocesora arytmetycznego.
Gdy tego typu procesor jest zamontowany w wykorzystywanym systemie, mona pozostawi opcj . /.)0 , co spowoduje wkompilowanie w jdro mechanizmw
emulacji koprocesora. Wszystkie procesory produkowane od wielu lat posiadaj jednak
wbudowane koprocesory arytmetyczne i opcja ta w wikszoci przypadkw jest zbdna.
80/1
Opcja wczajca obsug systemu plikw FFS (Fast Filesystem). Jest to domylny
system plikw systemu FreeBSD. Opcj naley pozostawi bez zmian.
'*%1-<(91/'
114
Powysze dwie opcje wczaj obsug Network File System. Opcja 13455 daje moliwo uruchomienia sytemu z katalogiem gwnym zaimportowanym z serwera NFS.
Jest to rzadko spotykana opcja w serwerze internetowym. Opcje te mona usun, jeli
NFS nie bdzie wykorzystany.
A'(*'%'
Opcja "!#0 definiuje czas (w milisekundach) oczekiwania systemu przed wyszukaniem urzdze SCSI po wykryciu kontrolera SCSI. Opcja ta ma na celu umoliwienie
rozpdzenia si napdw. Jeli w systemie nie s wykorzystywane napdy SCSI,
opcje te mona usun. W przypadku nowszych urzdze SCSI warto opcji mona
zmniejszy do 5000 (5 sekund) lub mniejszej.
-,*0'*N/
115
Opcja 8 4" wcza ledzenie na poziomie jdra. Warto zostawi t opcj, chyba e
kto dokadnie wie, co robi, usuwajc j z konfiguracji.
'7'M'IA
'7'MA'E
'7'M'/A
Opcje powodujce aktywno funkcji (5!9. Wiele programw zaley od wczenia tych
opcji w jdrze.
Wiele procesorw
Gdy system posiada wicej ni jeden procesor, naley koniecznie wczy nastpujce
opcje konfiguracji jdra:
'A<
O
Q
9<8,8*
OB
:
BC+ BC9<8,G'
9<8,8$*J
Opcja .( wskazuje jdru, aby wykorzystywao specjalny kod przeznaczony dla systemw wieloprocesorowych. Opcja (!"!5 wcza funkcje obsugi wejcia-wyjcia w systemach wieloprocesorowych.
Gdy planujemy skompilowa jdra wieloprocesorowe, naley usun opcje !7&'"()
oraz !%&'"(). FreeBSD obsuguje wiele procesorw tylko w tych systemach, ktre
przestrzegaj specyfikacji SMP firmy Intel. Specyfikacja ta nie przewiduje wykorzystania procesorw 386 oraz 486.
W przypadku gdy w systemie wykorzystywany jest pojedynczy procesor, naley zablokowa te opcje.
Urzdzenia
Po opcjach oglnych w pliku konfiguracyjnym jdra wystpuj wpisy dotyczce urzdze pogrupowanych w sposb intuicyjny wedug typw.
116
Magistrale
Na pocztku wystpuj wpisy dotyczce rnego typu magistral, jak czy te
. Wpisy te naley pozostawi, chyba e dany typ magistrali nie wystpuje
w systemie. Moe si zdarzy, e nowoczesny system posiada magistral ISA, cho
mogoby si wydawa inaczej. Na przykad mj nowoczesny laptop posiada magistral
ISA wykorzystywan wewntrznie w systemie. W wikszoci przypadkw mona bez
obaw usun wpis dotyczcy magistrali EISA, ktra nie jest spotykana w nowszych
komputerach.
Interfejsy
W kolejnej sekcji wystpuj interfejsy IDE/ATAPI. Nawet gdy w danej chwili nie planujemy wykorzystywa dyskw twardych tego typu, a pyta gwna wyposaona jest
w zcza IDE, warto w konfiguracji jdra pozostawi te wpisy. Mona natomiast usun
wpisy dotyczce typw urzdze IDE, z ktrych nie planujemy korzysta.
Dalej nastpuj wpisy dotyczce kontrolerw i kart SCSI oraz wykorzystywanych funkcji SCSI. W tej grupie znajduj si rwnie wpisy dotyczce urzdze Zip na zczu rwnolegym oraz USB. Jeli nie planujemy stosowa tych urzdze, mona usun ca
sekcj. Jeli SCSI bdzie uywane, warto usun wpisy dotyczce niewykorzystanych
urzdze.
','8
#" #:/8'99I9H
#":;#:9I92 : #
O@OQ ;98,H
Pseudourzdzenia
W pobliu koca pliku konfiguracyjnego jdra GENERIC znajdziemy list pseudourzdze. Jak moe sugerowa nazwa, urzdzenia te nie wystpuj w postaci sprztowej,
lecz ich funkcje s realizowane przez program. Jednym z takich urzdze jest urzdzenie pseudoterminalu wykorzystywanego podczas zdalnych sesji (za pomoc usug
telnet lub SSH, patrz rozdzia 13.). Urzdzenie pseudoterminalu traktuje zdalne poczenie w podobny sposb, w jaki obsugiwany jest monitor i klawiatura przyczone
lokalnie do systemu. Jdro traktuje mechanizmy tego typu podobnie, jak traktuje
urzdzenia fizyczne, przylgn wic do nich termin pseudourzdzenia. Przykadem
takiego urzdzenia moe by:
# +#"
117
Pseudourzdzenie obsuguje tzw. dyski w pamici. Uytkownicy nie planujcy wykorzystania tej funkcji systemu mog usun ten wpis. W wikszoci serwerw internetowych dyski w pamici s po prostu marnowaniem pamici. Jednak niektre
specjalizowane serwery (jak anonimowe serwery CVS) wykorzystuj ten mechanizm.
# +#"
# +#"
# +#"
118
Urzdzenia USB
Po bloku pseudourzdze znajduj si wpisy dotyczce urzdze USB. Wpisy te dotycz moduw adowanych dynamicznie w razie potrzeby za pomoc mechanizmu
. Wikszo serwerw internetowych nie wykorzystuje urzdze USB, w takich
przypadkach mona wyczy ich obsug w jdrze.
Kompilacja jdra
W poprzednich punktach omwilimy podstawow konfiguracj jdra. Przed wprowadzeniem bardziej zaawansowanych zmian warto na prb skompilowa jdro, aby sprawdzi, czy na tym etapie kompilacja przebiegnie poprawnie.
W tym podrozdziale opisane s zmiany w jdrze przeprowadzane bez uaktualniania
systemu. W przypadku instalowania nowej wersji na starej naley posuy si nieco
inn procedur, opisan w rozdziale 6.
Po wprowadzeniu zmian w opcjach jdra naley je skompilowa. W tym celu wykonujemy polecenie 2;(8), ktre sprawdzi poprawno skadni zmodyfikowanego pliku
konfiguracyjnego i wygeneruje niezbdne pliki konfiguracyjne. Uruchamiamy polecenie 2; z wykorzystaniem pliku konfiguracyjnego .8410:
*+,"#"P##
$$
$A7P/.0/N
( R # RR
##RR
Za pomoc polecenia 2; nie sprawdzimy, czy konfiguracja jdra zostaa przeprowadzona poprawnie, otrzymamy jedynie szereg komunikatw sygnalizujcych istnienie bdw konfiguracyjnych. Stanie si tak na przykad w przypadku zastosowania
nieistniejcej opcji jdra. Za pomoc programu 2; otrzymamy rwnie informacj
o tym, e naley uruchomi polecenie
. Na razie nie omawialimy tego
zagadnienia, naley jednak pamita, e pominicie tego etapu stanowi najczciej
popeniany bd podczas samodzielnej kompilacji jdra systemu.
Niektre komunikaty wypisywane przez program 2; s bardzo czytelne. Na przykad mona usun opcje obsugi systemu plikw UFS, lecz pozostawi konfiguracj
uruchamiania systemu z systemu plikw UFS. Wiedzc, e druga z opcji wymaga zastosowania pierwszej mona z atwoci odgadn przyczyn bdu. Inne komunikaty
mog by jednak mniej zrozumiae i czasem konieczna jest ich dogbna analiza, jak
to opisaem w rozdziale 2.
Gdy polecenie 2; zostanie wykonane bez bdw, na ekranie pojawi si katalog zawierajcy elementy konfiguracyjne jdra. W powyszym przykadzie jest to ../../compile/
MYKERNEL. Naley przej do tego katalogu i wykona nastpujce polecenie:
..
119
Polecenie to skada si z dwch czci. Pierwsza z nich, polecenie
, powoduje sprawdzenie, czy w systemie znajduj si wszystkie elementy niezbdne do konfiguracji jdra i moduw, a nastpnie poczenie ich w jedn cao. Drugie z polece,
, suy do skompilowania jdra z wykorzystaniem kodu rdowego
oraz zalenoci zbudowanych w poprzednim poleceniu.
Ten etap, w zalenoci od mocy procesora, moe trwa do dugo. Na procesorze 486
25 MHz trwa kilka godzin, natomiast na dwuprocesorowym Pentium 1 GHz trwa kilka
minut. Na ekranie bd si przesuwa niezrozumiae komunikaty kompilatora. Na kocu nastpi faza instalacji, w ktrej stare jdro zostanie zapisane w pliku /kernel.old
a nowe jdro w pliku /kernel.
Po zakoczeniu procesu kompilacji naley ponownie uruchomi komputer i uwanie
obserwowa komunikaty startowe. Na pocztku komunikatw pojawi si informacja na
temat katalogu, w ktrym kompilowane byo jdro. W poniszym przykadzie informacja ta zostaa wyrnione pogrubieniem:
, GJ22+1%&'(< B
, GJ2H2L2!L2!L2!L2!!L2!2L22L22L22L22
1.
-"
, 9
"#
%&'()+,-../01'A2)/(1
/
0
1*+,"#"-
+
+> ++>+>
+?+
+
+
+(PN(A*(-N/+
#+8++8+8+8S$$#+
#+
+
#5+$
$
$
$
#
$$$$$
$
$
$
$
#
$$$$$))
TKR
#
UUU/ #
' $
$
$
$
#
$
UUU/ #
' $
$
$
$
#
UUU/ #
' $
$
$
UUU/ #
120
Na pocztku komunikatu mamy informacj, e problem wystpi wwczas, gdy kompilator znajdowa si w katalogu sys/modules/xl i kompilowa znajdujcy si tam modu
jdra. Widzimy wykonywane polecenie; jest zapisane w kilku kolejnych wierszach i rozpoczyna si od ,. Polecenie jest tak naprawd zapisane w jednym wierszu i po
prostu zajmuje kilka wierszy na ekranie. Polecenie koczy si przed wierszem oznaczonym znakiem .
Potem nastpuje wiersz (), w ktrym znajduje si informacja o bdzie (
+
:2<=<) oraz wiersz, w ktrym wystpi bd. Jest to bd, ktry spowodowa zatrzymanie kompilacji. W dalszej czci listingu widzimy seri bdw. Modu jdra
nie moe by skompilowany, co zatrzymuje kompilacj innych moduw (zalenych).
Sytuacja ta uniemoliwia rwnie ukoczenie kompilacji jdra i w konsekwencji sprowadza si do poraki caego przedsiwzicia.
Na szczcie zanim cokolwiek zostanie zainstalowane konieczne jest pomylne zakoczenie kompilacji wszystkich bez wyjtku elementw jdra. Dziki temu nie ma obawy
o uszkodzenie systemu za pomoc instalacji niekompletnego rodowiska jdra. W przypadku niepomylnej kompilacji istnieje moliwo poprawienia rodowiska i ponownej
kompilacji.
Wiemy, w ktrym momencie kompilacji pojawi si bd (znamy cae polecenie, ktrego
realizacja zakoczya si niepowodzeniem). Wiemy te, co to za bd i w ktrym miejscu w pliku wystpi (bd skadni przed znakiem = w pliku /usr/src/sys/modules/xl/../../
pci/if_xl.c w wierszu l55). Bdy, ktre s sygnalizowane w dalszej czci komunikatu
nie maj znaczenia, poniewa wynikaj wprost z tego pierwszego.
Nie naley martwi si, jeli komunikaty bdw oka si niezrozumiae. Wikszo uytkownikw ma takie wraenie. Naley po prostu zastosowa si do porad z rozdziau 2.
i poszuka pomocy w internecie. Na pocztek naley sprawdzi archiwa listy dyskusyjnej FreeBSD-questions. W pole tekstowe wyszukiwarki wklejamy komunikat bdu
z nazw pliku (2+
>**>
+ :2<=<) i sprawdzamy, czy podobny
problem mieli inni uytkownicy. Gdy nie uda si znale adnych podpowiedzi, warto
sprbowa wyszuka nastpny wiersz komunikatu (>
: ).
Jeli nie uda si znale pomocy w archiwach listy dyskusyjnej, mona wysa pytanie
na adres FreeBSD-questions@FreeBSD.org. W licie naley zawrze nastpujce informacje:
kocowy fragment komunikatw z bdnej kompilacji;
informacje o wersji wykorzystywanego systemu FreeBSD;
zawarto pliku /var/run/dmesg.boot;
wynik dziaania polecenia
;
plik konfiguracyjny kompilowanego jdra.
121
By moe problem ten atwo rozwiza i po uzyskaniu tych informacji znajdzie si kto,
kto podsunie jakie sugestie rozwizania. Bdy tego typu wystpuj z reguy w wyniku
niewaciwej konfiguracji jdra.
Uruchamianie systemu
z nowym jdrem
Co naley zrobi, gdy nowe jdro nie do koca dziaa poprawnie? Na przykad zapomnielimy skonfigurowa kompilacj pseudourzdzenia ppp i nie moemy poczy
si z internetem za pomoc modemu. Nie naley wpada w popoch, poniewa nic nie
jest stracone. Podczas uruchamiania systemu naley przerwa proces w sposb opisany
w podrozdziale Rczna konfiguracja programu adujcego. Gdy pojawi si wiersz
polece programu adujcego, naley usun z pamici stare jdro:
LINT
Pen list opcji jdra i sterownikw wraz z ich dokumentacj mona znale w pliku
/usr/src/sys/i386/conf/LINT.
122
Jeli w standardowym jdrze nie jest obsugiwane jakie urzdzenie, naley zajrze do
pliku LINT. Niektre z obsugiwanych opcji s nieco toporne, lecz uytkownicy nietypowego sprztu z pewnoci je doceni. Na przykad system FreeBSD pozwala uaktywni specjalne funkcje procesora IBM BlueLightning, dziki czemu posiadacze
sprztu tego typu mog wykorzysta go w szerszym zakresie.
Typowy fragment pliku LINT wyglda nastpujco:
*B,<-<<.,/N/.*0 O;:
O@# :
,
A# *BB
V:#V Q :BCQ ::#'
!
# :#' H V @
: CW&8*'+Q #<
<
@# :
, A#
,<-<<.*,/N/.*0
Dziki tej opcji moemy uaktywni pewn opcj sprztow w niestandardowej konfiguracji (wykorzystanie przejciwki pozwalajcej zainstalowa procesor nowszego typu
w pycie gwnej starszego typu). FreeBSD pracuje rwnie ze starszym sprztem, wic
zastosowanie mog znale take takie nietypowe opcje. Ta konfiguracja nie jest jednak
na tyle powszechnie stosowana, aby usankcjonowa wczenie opcji "()((45-"0451
w standardowym jdrze. Nie zaszkodzi jednak wiedzie, gdzie naley szuka tej
opcji, gdyby okazaa si potrzebna. Warto przejrze plik LINT choby po to, by nabra orientacji w dostpnych opcjach.
Dlaczego jednak nie s wczone wszystkie opcje dostpne w pliku LINT? Wiele z opcji
zapisanych w tym pliku koliduje z innymi. Na przykad opcja "()((45-"0451 informuje jdro, e w systemie wykorzystywana jest pyta gwna do procesorw
Pentium Pro z procesorem Celeron. Opcja "()4 81 wcza obsug stosu powrotu
w procesorach Cyrix 5x86. Nie ma jednak procesorw Celeron produkowanych
przez firm Cyrix, a nawet gdyby istniay, nie wykorzystywayby wspomnianej wyej
przejciwki do pyt do procesorw Pentium Pro.
<A9<'I<E</.<.*,
Administrator zignorowa te komunikaty i wkrtce system zaama si. Zostaem poproszony o pomoc. Na podstawie sugestii z komunikatu przestudiowaem dokadnie plik
LINT i znalazem nastpujcy fragment:
N: :B<M
Y @
:B C
V
Q :#O@#Q
B;:
:
@
QO#: B-
:
#VB C O;::#V
:
@::B
V
123
OWO@# #:
:
# :
@ B
Y @
:B C CW ::
#B; B
6"
"
6L6"
"
"#6 :6"
"6
V
: CWB
@
: # C#
CB
<A9<'I<E</.<.*,5
124
Klastry pamici mbuf s alokowane w pamici na stae, nie mona wic po prostu
zwikszy tej wartoci do miliona, poniewa pami zajta nie bdzie dostpna dla innych funkcji systemowych, jak otwieranie plikw i obsuga serwera WWW.
Jeden nmbcluster zajmuje okoo 2 kB pamici, wic przykadowe ustawienie spowoduje
zaalokowanie 2 MB pamici na mechanizmy obsugi sieci. W nowoczesnym komputerze
nie jest to duo, lecz w przypadku komputerw klasy 486, na ktrych mona znale
instalacje FreeBSD, jest to ju powany rozmiar pamici. Po co jednak zmienia t
warto?
Aby obliczy liczb buforw mbuf, naley sprawdzi liczb jednoczenie otwartych
pocze w okresach najwikszego obcienia. W tym celu posuymy si poleceniem
(1). Polecenie to suy do wypisania liczby aktywnych w danej chwili operacji
sieciowych, wliczajc w to poczenia TCP, UDP, poczenia na interfejsie ptli zwrotnej oraz poczenia za pomoc gniazd uniksowych. Nas interesuj tylko poczenia
TCP i UDP, wic posuymy si poleceniem ;(1), aby odrzuci zbdne informacje. Po odfiltrowaniu wynik przelemy do polecenia (1), ktre zliczy liczb wierszy
wyniku, co w konsekwencji spowoduje wypisanie liczby pocze TCP i UDP7. Oto
przykad takich wywoa:
22
H
22
HH
Aby sprawdzi liczb wykorzystywanych w danej chwili buforw mbuf, naley wykona
polecenie
. Program netstat omwimy nieco szerzej w rozdziale 5.
W naszym przykadzie w danej chwili w systemie byo aktywnych 427 pocze TCP
oraz 377 UDP. W sumie daje to okoo 800 pocze. Aby wzi pod uwag okresowe
szczyty obcienia, naley wynik zmierzony w okresie typowego obcienia pomnoy
przez dwa.
Gdy wiemy ju, ile pocze przyjdzie nam obsuy, moemy okreli przypuszczaln
ilo pamici wymaganej do ich obsugi. Kade poczenie TCP wymaga wykorzystania bufora wysyki i bufora odbioru. Ich rozmiar (w bitach) mona odczyta z opcji
sysctl
oraz
:
#
!
"
!
Na pocztku ksiki napisaem, e Unix jest czym na ksztat jzyka mwionego. W tym miejscu
mamy doskonay tego przykad: z elementw w postaci polece systemowych skadamy wiksze
polecenie wykonujce okrelone dziaanie. Osoba postronna moe uzna, e administratorzy systemw
Unix s ponadprzecitnie inteligentni. W wikszoci jestemy jednak po prostu leniwi na sposb
kreatywny.
125
Trudno jest pracowa z bajtami, przeliczmy to wic na kilobajty: 16 384 dzielone przez
1024 daje 16, zatem kady bufor zajmuje w systemie 16 kB. Naley jednak sprawdzi
to w wykorzystywanym systemie, poniewa na przykad pomidzy FreeBSD w wersjach 4.3 i 4.4 nastpia zmiana domylnego rozmiaru bufora. Biorc pod uwag 2 bufory na poczenie, otrzymujemy wynik 32 kB.
Kade poczenie UDP rwnie wymaga zastosowania bufora. W tym przypadku nie
ma wikszych moliwoci manipulacji, dla naszych potrzeb moemy jednak zaoy, e
poczenia UDP wymagaj podobnych iloci pamici jak poczenia TCP.
Wiemy wic, e na kade poczenie potrzebujemy 32 kB pamici i e w szczycie bdziemy mieli do czynienia z okoo 800 poczeniami. 800 32 kB = 25 600 kB, czyli okoo
25 MB. Aby wzi pod uwag nage skoki obcienia, pomnmy to przez dwa, co w wyniku da 50 MB.
Kady klaster mbuf ma rozmiar 2 kB, 1024 klastry maj rozmiar 2 MB. Potrzebujemy
50 MB na bufory mbuf, wic dzielimy 50 MB przez 1024, po czym dzielimy to przez 2
i otrzymujemy 25 600 klastrw mbuf. Zatem opcj 1.@"0) 4 ustawiamy na warto
-*',,:
0A&,N-'1/.'5)
Konfigurujc serwer sieciowy, warto przeznaczy dla opcji 1.@"0) 4 okoo jedn
czwart posiadanej pamici RAM. Na przykad w przypadku pamici 128 MB na bufory mbuf przeznaczamy 32 MB pamici, czyli omawian opcj ustawiamy nastpujco: 1.@"0) 4'7&%. By moe to za mao lub za duo, lecz na pocztek stanowi dobre oszacowanie.
Wspdzielenie jder
Gdy mamy do dyspozycji wiksz liczb identycznych komputerw, ktre planujemy
uywa jako serwery, nie ma potrzeby na kadym z nich konfigurowa i kompilowa
jdra. Mona wykorzysta jedno jdro skonfigurowane na potrzeby wszystkich komputerw. Jdro jest w kocu po prostu plikiem binarnym, ktry mona skopiowa.
Aby wykorzysta t moliwo, naley skompilowa jdro i porzdnie je przetestowa.
Nastpnie naley skopiowa plik /kernel oraz katalog /modules na wszystkie pozostae
serwery. Przed umieszczeniem takiego wsplnego jdra na kadym z serwerw naley
oczywicie wykona kopi oryginalnego jdra. Teraz wystarczy ponownie uruchomi
komputer i gotowe.