Ogólny format pliku konfiguracyjnego jest całkiem prosty. Każda linia
zawiera słowo kluczowe i jeden lub więcej argumentów. Dla ułatwienia większość
linii zawiera tylko jeden argument. Cokolwiek poprzedzone znakiem #
jest uważane za komentarz i jest ignorowane. Ten rozdział opisuje każde słowo
kluczowe w ogólnym porządku jaki zawiera plik GENERIC
. Wyczerpująca lista opcji i więcej szczegółowych objaśnień
zależnych od architektury znaleźć można w pliku NOTES
, znajdującym się
w tym samym katalogu co GENERIC
. Opis opcji niezależnych
od architektury znajduje się w pliku /usr/src/sys/conf/NOTES
.
By skompilować plik zawierający wszystkie dostępne opcje, jak się z reguły robi
do celów testowych, należy wpisać jako root
następujące polecenie:
#
cd /usr/src/sys/i386
/conf && make LINT
Poniżej opisany został przykład pliku konfiguracyjnego GENERIC
z licznymi dodatkowymi komentarzami, tam gdzie są potrzebne objaśnienia. Przykład ten
powinien odpowiadać naszej kopii pliku
/usr/src/sys/
.i386
/conf/GENERIC
Jest to architektura komputera. Musi być którymś z:
alpha
, amd64
,
i386
, ia64
,
pc98
, powerpc
, lub
sparc64
.
Powyższe wpisy określają typ CPU jaki posiadamy w swoim systemie. Możemy mieć kilka
różnych wpisów (np. jeśli nie jesteśmy pewni czy mamy I586_CPU
czy
I686_CPU
), jednak kiedy konfigurujemy jądro najlepiej pozostawić CPU
jakie mamy. Jeśli nie jesteśmy pewni swojego procesora, możemy sprawdzić zawartość pliku
/var/run/dmesg.boot
, aby przejrzeć komunikaty startowe.
Jest to identyfikator jądra. Możemy go zmienić na taki
jak nazwaliśmy swoje jądro, w naszym poprzednim przykładzie
MYKERNEL
. Wartość jaką pozostawimy
we wpisie ident
będzie wyświetlana podczas
startu, więc korzystnie jest dać nowemu jądru inną nazwę,
jeśli chcemy go odróżnić od jądra, którego używamy na co dzień
(np. chcemy zbudować eksperymentalne jądro).
device.hints(5) jest wykorzystywany do konfiguracji
opcji sterowników urządzeń. Domyślną lokacją sprawdzaną przez
loader(8) w trakcie uruchamiania systemu jest
/boot/device.hints
. Wykorzystując opcję
hints
możemy wkompilować je statycznie
w jądro. Tym samym nie będzie potrzeby tworzyć pliku
device.hints
w katalogu
/boot
.
Typowy proces kompilacji FreeBSD wyświetla również informacje
diagnostyczne w trakcie budowy jądra z użyciem opcji
-g
, która włącza wyświetlanie informacji
diagnostycznych w gcc(1). Ten sam efekt można również
osiągnąć poprzez opcję -g
w config(8) przy
korzystaniu z „tradycyjnej” metody kompilacji jądra
(Sekcja 8.3, „Budowanie i instalowanie indywidualnego jądra” zawiera więcej informacji
na temat budowy jądra).
Tradycyjny i domyślny systemowy zarządca procesów FreeBSD. Nie zmieniajmy tego.
Pozwala na wywłaszczanie wątków w jądrze przez wątki o wyższym priorytecie. Pozwala to na interaktywność i przerywanie wątków, by ukończyć pewne czynności wcześniej i uniknąć oczekiwania.
Obsługa sieci. Należ pozostawić ten wpis, nawet jeśli nie planujemy podłączyć się do sieci. Większość programów wymaga przynajmniej urządzenia pętli zwrotnej loopback (np. tworzenie połączeń sieciowych wewnątrz naszego PC), więc jest to wpis bardzo istotny.
Umożliwia to obsługę protokołu komunikacyjnego IPv6.
Jest to podstawowy dyskowy system plików. Należy go pozostawić, jeśli startujemy system z dysku twardego.
Opcja ta umożliwia tzw. Soft Updates w jądrze, co potrafi przyspieszyć
czas dostępu do dysku przy zapisie. Jednakże, nawet jeśli funkcja ta jest włączona
w jądrze, musi zostać aktywowana dla wybranych dysków. Czy opcja ta jest włączona
możemy sprawdzić w wyniku polecenia mount(8). Jeśli przy naszym dysku
nie ma oznaczenia soft-updates
oznacza to, że musimy ją włączyć
wykorzystując polecenie tunefs(8) (dla istniejących systemów plików)
bądź newfs(8) (dla nowych systemów plików).
Opcja ta włącza w jądrze obsługę list kontroli dostępu do systemu plików. Polega to na wykorzystaniu rozszerzonych atrybutów oraz systemu plików UFS2. Sekcja 14.12, „File System Access Control Lists” opisuje dokładniej tę funkcjonalność. Domyślnie listy ACL są włączone i nie powinny być wyłączane w jądrze jeśli były wcześniej wykorzystywane w systemie plików, gdyż usunie to listy kontroli dostępu zmieniając metodę ochrony plików w nieprzewidywalny sposób.
Opcja ta zawiera kod szybszej obsługi dużych katalogów kosztem zużycia dodatkowej pamięci. Możemy pozostawić tę opcję dla dużych serwerów lub dla interaktywnej stacji roboczej, a zablokować ją kiedy system jest mało obciążony i posiada mało pamięci, a dostęp do dysków nie jest taki ważny, np. serwer z zaporą ogniową.
Opcja ta włącza obsługę wirtualnego dysku w pamięci RAM, wykorzystywanego jako główne urządzenie.
Sieciowy system plików. Jeżeli nie planujemy montowania partycji z serwera UNIX® poprzez TCP/IP, możemy zablokować te linie.
System plików MS-DOS®. Jeśli nie planujemy montowania dysków lub partycji
sformatowanych pod DOS-em podczas startowania systemu, dla bezpieczeństwa zablokujmy
tę linię. Automatycznie MSDOSFS będzie ładowane kiedy pierwszy raz zamontujemy
DOSową partycje jak opisano powyżej. Również wyśmienity program emulators/mtools
umożliwia dostęp do dyskietek DOSowych
bez potrzeby ich montowania i odmontowywania (i bynajmniej nie jest potrzebny
MSDOSFS
).
System plików ISO 9660 dla płyt CDROM. Jeśli nie posiadamy napędu CDROM możemy zablokować tę linię, lub gdy montujesz dane z CD okazjonalnie (od kiedy zamontujemy dane z CD po raz pierwszy, CD9660 będzie ładowany automatycznie). Płyty audio CD nie potrzebuje tego systemu plików.
System plików procesów. Jest to system plików „na niby” montowany
w /proc
, który dla takich programów jak ps(1) posiada więcej
informacji o tym jakie procesy są właśnie uruchomione. W większości przypadków
wykorzystanie PROCFS
nie jest wymagane, gdyż większość narzędzi
diagnostycznych i monitorujących zostało zaadaptowanych do pracy bez PROCFS
:
Domyślne instalacje nie montują tego systemu plików.
Jądra 6.X wykorzystujące PROCFS
muszą również
zawierać obsługę PSEUDOFS
.
Opcja ta umożliwia tworzenie dużej ilości partycji na pojedynczym dysku.
Kompatybilność z systemem 4.3BSD. Należy pozostawić ten wpis; niektóre programy będą zachowywać się dziwnie jeśli zablokujemy tę opcję.
Opcja ta potrzebna jest w systemach FreeBSD 5.X i386™ i Alpha do obsługi aplikacji skompilowanych w starszych wersjach FreeBSD, wykorzystujących stary interfejs wywołań systemowych. Zaleca się by wykorzystywać tę opcję we wszystkich systemach i386™ i Alpha, w których mogą wykorzystywane starsze aplikacje; platformy wspierane dopiero od wersji 5.X, jak np. ia64 i SPARC64®, nie wymagają ten opcji.
Sprawi to, że jądro zatrzyma się na 5 sekund przed rozpoczęciem rozpoznawania w naszym systemie każdego urządzenia SCSI. Jeśli jednak posiadamy tylko urządzenia IDE, możemy ten wpis zignorować. W innym przypadku możemy zmniejszyć tę wartość i w ten sposób przyspieszyć start systemu. Gdy to zrobimy a FreeBSD będzie miał kłopoty z rozpoznawaniem urządzeń SCSI będziemy musieli zmienić tę wartość na większą.
Śledzenie procesów przez jądro, które jest użyteczne w diagnozowaniu.
Daje to systemom z rodziny V mechanizm współdzielenia pamięci. W działaniu ma to wiele wspólnego z mechanizmem XSHM w X-ach. Znaczna ilość programów obciążająca system graficzny zyska automatycznie na prędkości. Jeśli jesteśmy użytkownikiem X-ów koniecznie pozostawmy tę opcję.
Wsparcie dla mechanizmu komunkatów w Systemach V. Opcja ta dodaje zaledwie kilkaset bajtów do jądra.
Wsparcie dla mechanizmu semaforów w Systemach V. Mniej przydatne w użyciu ale również dodaje tylko kilkaset bajtów do jądra.
Parametr -p
polecenia ipcs(1) wyświetli każdy proces,
który używa tych dogodności Sytemów V.
Rozszerzenia czasu rzeczywistego dodane w 1993 do POSIX®. Pewne aplikacje z kolekcji portów używają tego mechanizmu (jak np. StarOffice™).
Opcja ta związana jest z obsługą klawiatury. Dodaje ona wpis CDEV
w /dev
.
Pomaga to w diagnozowaniu, wypisując łatwiejsze do odczytania definicje rejestrów.
Giant jest nazwą mechanizmu wzajemnego wykluczania (uśpiony mutex)
chroniącego znaczną grupę zasobów jądra. Obecnie mechanizm ten stanowi niedopuszczalnie
wąskie gardło w wydajności systemu, które jest zastępowane przez blokady
zabezpieczające indywidualne zasoby. Opcja ADAPTIVE_GIANT
powoduje, że Giant jest dołączany do zestawu adaptacyjnie zapętlanych
muteksów. Co oznacza, że w momencie gdy wątek chce zablokować mutex Giant,
który jest już zablokowany przez inny wątek bądź procesor, pierwszy wątek
będzie pracował i oczekiwał na zwolnienie blokady. Normalnie, wątek
przeszedłby do stanu uśpienia i oczekiwał na kolejną okazję uruchomienia.
Jeśli nie jesteśmy przekonani, pozostawmy tę opcję włączoną.
Urządzenie apic pozwala na wykorzystanie we/wy APIC do dostarczania
przerwań. Urządzenie apic może być wykorzystywane zarówno w jądrach UP jak
i SMP, przy czym wymagane jest jedynie w przypadku tych drugich. By włączyć
obsługę wielu procesorów należy dodać wiersz options SMP
.
Należy włączyć to jeśli posiadamy płytę główną typu EISA. Umożliwia to autodetekcję i konfigurację dla wszystkich urządzeń pracujących na magistrali EISA.
Włączmy to jeśli posiadamy płyte główną typu PCI. Umożliwia to autodetekcję kart PCI i przesyłanie z magistrali PCI do ISA.
Kontroler stacji dyskietek.
Sterownik ten obsługuje wszystkie urządzenia ATA i ATAPI. Potrzebujemy tylko tej jednej linijki, aby jądro wykrywało wszystkie urządzenia na współczesnych maszynach.
Potrzebne jest to razem z device ata
dla dysków ATA.
Potrzebne jest to razem z device ata
dla dysków ATA RAID.
Potrzebne jest to razem z device ata
dla napędów CDROM ATAPI.
Potrzebne jest to razem z device ata
dla stacji dyskietek ATAPI.
Potrzebne jest to razem z device ata
dla urządzeń taśmowych ATAPI.
Powoduje to przydzielanie przez kontroler statycznego numeru, inaczej liczba dyskowa będzie przydzielana dynamicznie.
Kontrolery SCSI. Należy zablokować te kontrolery, których nie posiadamy w naszym systemie. Jeśli mamy system oparty tylko na IDE możemy pozbyć się całej listy.
Peryferia SCSI. Ponownie, jeśli nie posiadamy takowych możemy je wyłączyć lub jeśli posiadamy tylko sprzęt IDE możemy wszystkie powyższe wpisy usunąć.
Sterownik USB umass(4) i kilka innych sterowników wykorzystuje podsystem SCSI chociaż nie są one prawdziwymi urządzeniami SCSI. Tym samym musimy pamiętać by nie usunąć całkowicie obsługi SCSI jeśli którykolwiek z tego typu sterowników został uwzględniony w konfiguracji jądra.
Obsługa kontrolerów RAID. Jeśli nie posiadamy żadnych kontrolerów RAID, możemy te wpisy zablokować lub usunąć.
Sterownik klawiatury (atkbdc
) obsługujący porty we/wy
dla klawiatur AT i dla urządzeń wskazujących PS/2. Wymagany jest przez sterownik klawiatur
(atkbd
) i PS/2 (psm
).
Sterownik atkbd
razem z kontrolerem atkbdc
umożliwiają dostęp do klawiatury AT84 lub do rozszerzonej klawiatury, które podłączone
są do kontrolera AT.
Urządzenie to należy wykorzystać jeśli nasza myszka jest podłączona do portu PS/2.
Podstawowa obsługa multipleksacji klawiatury.
Sterownik kart video.
Obraz tytułowy w trakcie startu! Wymagany również przez wygaszacze ekranu.
sc
jest domyślnym sterownikiem konsoli, przypominający
konsolę SCO. Wiele programów pracujących w trybie pełnoekranowym uzyskują dostęp
do konsoli poprzez biblioteki bazy danych terminala takie jak termcap
,
nie powinno więc być istotne czy używamy właśnie jego czy vt
,
sterownika zgodnego z VT220
. Kiedy logujemy się, a nasz program
ma kłopoty podczas uruchamiania spod konsoli, należy ustawić zmienną
TERM
na scoansi
.
Sterowniki konsoli kompatybilnej z VT220 i z wcześniejszymi VT100/102. Dobrze pracują
na niektórych laptopach nie posiadających sprzętu kompatybilnego z sc
.
Również w takim przypadku należy zmodyfikować zmienną TERM
na
vt100
lub vt220
, kiedy się logujemy. Sterownik ten
może być również użyteczny kiedy łączymy się z dużą liczbą różnorodnych maszyn w sieci,
gdzie termcap
lub terminfo
często nie posiadają
wpisów dla urządzeń sc
— wówczas vt100
powinien być dostępny praktycznie na wszystkich platformach.
Należy włączyć tę opcję jeśli posiadamy kartę AGP w systemie. Włączy to obsługę AGP i AGP GART dla płyt głównych obsługujących te funkcje.
Zaawansowane zarządzanie energią. Użyteczne dla laptopów, chociaż
we FreeBSD 5.X i późniejszych opcja ta jest domyślnie wyłączona w jądrze
GENERIC
.
Sterownik urządzenia regulatora czasowego dla zarządzania energią, jak np. APM i ACPI.
Obsługa kart PCMCIA. Potrzebna dla laptopów.
Są to porty szeregowe nazywane w terminologii MS-DOS®/Windows®
COM
.
Jeśli posiadamy wewnętrzny modem na COM4
oraz port szeregowy COM2
, należy zmienić IRQ modemu
na 2 (z technicznych pobudek IRQ2 = IRQ9) bo takiej kolejności wymaga FreeBSD.
Jeśli posiadamy wieloportową kartę szeregową musimy odwołać się do podręcznika
systemowego sio(4) po więcej informacji o właściwych ustawieniach w pliku
/boot/device.hints
. Niektóre karty wideo (zwłaszcza te
bazujące na chipie S3) używają adresów we/wy w postaci 0x*2e8
,
a ponieważ wiele tanich kart szeregowych nie dekoduje w pełni 16-bitowej przestrzeni
adresowej we/wy, powodują one konflikt sprzętowy czyniąc port COM4
praktycznie niedostępnym.
Każdy port szeregowy wymaga unikalnego IRQ (z wyjątkiem multiportów gdzie
współdzielenie przerwania jest obsługiwane) zatem domyślne IRQ dla
COM3
i COM4
nie mają zastosowania.
Interfejs portu równoległego na magistrali ISA.
Umożliwia obsługę portów równoległych.
Obsługa drukarek na porcie równoległym.
Powyższe trzy wpisy są wymagane, by było możliwe korzystanie z drukarek na porcie równoległym.
Sterownik dla równoległego interfejsu sieciowego.
Uniwersalny port we/wy + IEEE1284.
Napęd ZIP firmy Iomega. Wymagane sterowniki scbus
i da
. Najlepszą wydajność można osiągnąć wykorzystując
porty w trybie EPP 1.9.
Opcję tę należy odblokować jeśli posiadamy „niemą” szeregową lub równoległa kartę PCI, obsługiwaną przez sterownik puc(4).
Różne karty sieciowe na złączu PCI. Należy zablokować lub usunąć te z nich, które nie są obecne w naszym systemie.
Obsługa szyny MII wymagana dla wielu kart sieciowych 10/100 na złączu PCI,
wykorzystujących nadajniki-odbiorniki zgodne z MII lub mają wbudowany nadbiornik
pracujący jak MII. Dodanie device miibus
do jądra pozwoli
na obsługę miibus API i wszystkich sterowników PHY, włączając te, które
nie wymagają indywidualnych ustawień i sterowników.
Sterowniki wykorzystujące szynę MII.
Sterowniki ISA Ethernet. Plik
/usr/src/sys/
zawiera szczegółowy opis, która karta jest obsługiwana
przez dany sterownik.i386
/conf/NOTES
Obsługa różnych kart bezprzewodowych.
Standardowe urządzenie pętli zwrotnej dla TCP/IP. Jeśli łączymy się
z localhost
(a.k.a. 127.0.0.1
) za pomocą telnetu bądź FTP, połączenie
powróci do nas za pomocą tego urządzenia. Obecność tego wpisu
w konfiguracji jądra jest niezbędna.
Bezpieczny z kryptograficznego punktu widzenia generator liczb losowych.
ether
jest wymagany tylko wówczas, gdy posiadamy kartę
Ethernet. Zawiera podstawowy kod protokołu Ethernet.
sl
służy do obsługi SLIP. Zostało prawie całkowicie
wyparte przez PPP, które jest łatwiejsze w obsłudze, lepiej przystosowane
do połączeń modem - modem i posiada więcej możliwości.
Wsparcie jądra dla PPP przy połączeniach wdzwanianych. Jest również
w niej zaimplementowana wersja PPP, dla wielu aplikacji używających tun
,
oferująca większą elastyczność i funkcjonalności takie jak np. połączenie na żądanie
(demand dialing).
Używane przez rodzinę aplikacji korzystających z PPP. Więcej informacji na ten temat zawiera rozdział niniejszego Podręcznika poświęcony właśnie PPP.
Jest to „pseudo-terminal” wykorzystywany przez przychodzące
sesje telnet
i rlogin
,
xterm oraz kilka innych aplikacji, jak np.
Emacs.
Pseudo urządzenie memory-disk.
Implementacja tunelowania IPv6 przez IPv4, IPv4 przez IPv6, IPv4 przez IPv4
oraz IPv6 przez IPv6. Urządzenie gif
posiada cechę
„auto-klonowania”, co umożliwia tworzenie wymaganych plików urządzeń.
To pseudo-urządzenie wyłapuje przesłane do niego pakiety i przekazuje je do demona translacji IPv4/IPv6.
Filtr pakietów rodem z Berkeley. To pseudo-urządzenie pozwala interfejsom sieciowym pracować w trybie nasłuchiwania, wyłapując każdy pakiet wysłany w sieci (np w sieci Ethernet). Pakiety te mogą zostać zapisane na dysku i/lub sprawdzane programem tcpdump(1).
Urządzenie bpf(4) jest również wykorzystywane przez dhclient(8), by uzyskać adres IP domyślnego rutera (bramki) itp. Jeśli używamy DHCP pozostawmy ten wpis.
Obsługa wielu urządzeń USB.
Obsługa różnorodnych urządzeń Firewire.
Więcej informacji o wymienionych oraz dodatkowych urządzeniach obsługiwanych
przez FreeBSD znaleźć można w pliku
/usr/src/sys/
.i386
/conf/NOTES
Maszyny dużego rozmiaru pamięci wymagają dostępu do większej ilości pamięci niż 4 gigabajty, do których ograniczona jest przestrzeń wirtualnych adresów użytkowników+jądra (ang. User+Kernel Virtual Address, KVA). Z tego właśnie powodu Intel dodał w procesorach serii Pentium® Pro i późniejszych obsługę 36-bitowej przestrzeni adresów pamięci fizycznej.
Rozszerzenie PAE (ang. Physical Address Extension)
procesorów Intel® Pentium® Pro i późniejszych pozwala na instalację
do 64 gigabajtów pamięci. FreeBSD potrafi obsługiwać te rozszerzenie
poprzez opcję konfiguracji jądra PAE
, dostępną we wszystkich
bieżących wersjach. Z uwagi na ograniczenia występujące w architekturze
pamięci Intela, nie istnieje rozróżnienie pomiędzy rozmiarem pamięci poniżej
i powyżej 4 gigabajtów. Pamięć znajdująca się powyżej
jest po prostu dodawana do puli dostępnej pamięci.
By aktywować obsługę PAE w jądrze, wystarczy dodać poniższy wiersz do pliku konfiguracyjnego naszego jądra:
Obsługa PAE jest dostępna we FreeBSD jedynie dla procesorów Intel® IA-32. Należy również zwrócić uwagę, iż obsługa PAE we FreeBSD nie została szeroko przetestowana i powinna być traktowana jako drugiej jakości w porównaniu z innymi stabilnymi funkcjami FreeBSD.
Obsługa PAE we FreeBSD posiada również pewne ograniczenia:
Dany proces nie ma dostępu do więcej jak 4 gigabajtów przestrzeni pamięci wirtualnej VM.
Moduły KLD nie mogą być ładowane do jądra z włączoną opcją PAE, z uwagi na różnice w strukturze skompilowanego modułu i jądra.
Sterowniki urządzeń nie wykorzystujące interfejsu bus_dma(9)
spowodują utratę danych w jądrze z włączoną opcją
PAE. Tym samym odradza się ich stosowanie.
Z tego właśnie powodu plik konfiguracyjny jądra z opcją
PAE
jest dostarczany w wersji FreeBSD nie zawierającej
żadnych ze sterowników, o których nie wiadomo, że współpracują poprawnie
z jądrem z włączoną opcją PAE.
Niektóre narzędzia dostrajania systemu określają wykorzystanie
zasobów pamięci na podstawie ilości dostępnej pamięci fizycznej.
Takie programy mogą niepotrzebnie przydzielać więcej pamięci
niż powinny, z uwag na naturę dużego rozmiaru pamięci systemu
PAE. Przykładem może być opcja sysctl
kern.maxvnodes
, która kontroluje maksymalną liczbę
dopuszczalnych węzłów w jądrze. Zaleca się modyfikację tych
i innych parametrów do rozsądnych wartości.
Może być potrzebnym zwiększenie rozmiaru przestrzeni adresów
KVA bądź redukcja ilości specyficznych zasobów
jądra często wykorzystywanych (patrz wyżej) w celu uniknięcia
wyczerpania KVA. Do zwiększenia przestrzeni
KVA może być wykorzystania opcja jądra
KVA_PAGES
.
W przypadku uwag odnośnie wydajności i stabilności pracy zaleca się lekturę podręcznika systemowego tuning(7). Podręcznik systemowy pae(4) zawiera natomiast aktualne informacje odnośnie obsługi PAE we FreeBSD.
All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.