Rozdział 4 Konfiguracja Systemu

Spis treści
4.1 Ogólnie o Systemie
4.2 Wybieranie Jądra

Zanim zaczniesz konfigurować bardziej zaawansowane części systemu, warto dowiedzieć się jak jest on zorganizowany i jakie polecenia będą używane do poszukiwania plików i programów. Dobrze również wiedzieć czy należy skompilować na własne potrzeby jądro i jakie kroki w tym celu należy podjąć. Ten rozdział zaznajomi cię z organizacją i konfiguracją (co odbywa się zwykle poprzez edycję plików) systemu. Zaznajomienie się z jego treścią da ci podstawy do konfiguracji bardziej zaawansowanych części systemu.

4.1 Ogólnie o Systemie

Ważne jest by zrozumieć jak Linux jest zbudowany przed zagłębieniem się różnorodne aspekty konfiguracji. System Linux jest w znaczącym stopniu różny od DOS'a, Windowsa i systemu Macintosh'a (za wyjątkiem bazowanego na Unix'ie Mac OS X), lecz te rozdziały pomogą ci oswoić się z jego budową i umożliwić łatwą jego konfigurację tak by sprostał twoim wymaganiom.

4.1.1 Wygląd systemu plików

Pierwszą zauważalną różnicą pomiędzy DOS'em lub Windows'em a Slackware Linux'em jest system plików. Informacja dla tych, którzy dopiero zaczynają: nie używamy liter by rozróżniać partycje. Pod Linux'em jest jeden główny katalog. Możesz go uważać za odpowiednik DOS'owego C:. Każda partycja w twoim systemie jest montowana do (pod)katalogu w katalogu głównym.

Katalog główny nazywany jest z ang. root directory; jest on oznaczany jako pojedynczy slash (/). Ta koncepcja na pierwszy rzut oka wygląda dziwnie, jednak bardzo ułatwia życie gdy chcesz zwiększyć rozmiar dysku. Na przykład, powiedzmy, że kończy Ci się miejsce na partycji na której jest /home. Większość ludzi instaluje Slackware i tworzy jedną dużą partycję główną. Skoro więc partycja może być zamontowana w każdym katalogu, możesz poprostu pójść do sklepu, kupić nowy dysk i zamontować go do /home. Dodana zostanie przestrzeń dyskowa i to bez konieczności przenoszenia niczego.

Poniżej znajdziesz opisy głównych katalogów w Slackware.

bin

Najważniejsze programy użytkownika są przechowywane w tym miejscu. Jest to absolutne minimum programów wymaganych by system był używalny. Są tam rzeczy takie jak shell oraz polecenia do operowania na systemie plików (ls, cp, itp.). Katalog /bin właściwie nie zmienia się od momentu zakończenia instalacji. Jeżeli tak się dzieje zwykle są to uaktualnienia pakietów, które my dostarczamy.

boot

Pliki, które są używane przez LILO (Linux Loader). Ten katalog również jest modyfikowany w nieznacznym stopniu od momentu instalacji. W tym miejscu przechowywane jest jądro systemu poczynając od wersji 8.1 Slackware. Wcześniej było ono umieszczone w katalogu /, lecz powszechna praktyka bootowania kilku systemów (przy pomocy LILO) z jednej maszyny spowodowała przeniesienie jądra i związanych z nim plików do katalogu boot.

dev

Wszystko w Linux'ie jest traktowane jako plik, nawet urządzenia takie jak porty szeregowe, dyski twarde i skanery. Aby umożliwić do nich dostęp, specjalny plik nazwany węzłem urządzenia (device node) musi być obecny. Wszystkie takie pliki przechowywane są w katalogu /dev. Jest to powszechna praktyka w wielu systemach Unix'owych.

etc

W tym katalogu znajdują się pliki konfiguracyjne systemu. Poczynając od plików konfiguracji X Window poprzez bazę danych użytkowników i kończąc na skryptach startowych. Administrator systemu powinien dokładnie poznać zawartość tego katalogu.

home

Linux jest wieloużytkownikowym systemem operacyjnym. Każdy użytkownik otrzymuje konto i unikalny katalog do przechowywania plików osobistych. Taki katalog nazywany jest domowym katalogiem użytkownika (home directory). Katalog /home tworzony jest jako domyślna lokacja dla katalogów użytkowników.

lib

Biblioteki systemowe wymagane do podstawowych operacji są przechowywane w tym miejscu. Biblioteka C, the dynamic loader, biblioteka ncurses i moduły jądra są wśród zawartości tego katalogu.

mnt

Ten katalog zawiera tymczasowe punkty montowania dla dysków twardych bądź innych napędów (dyskietek, CD-ROM, etc.).

opt

Opcjonalne pakiety oprogramowania. Idea jaka kryje się za /opt polega na tym, że każdy pakiet instaluje się do /opt/software-package, co ułatwia jego usunięcie później. Slackware umieszcza kilka pakietów w tym miejscu (np. KDE w /opt/kde), ale możesz umieścić tam co uważasz.

proc

To unikalny katalog. Nie jest właściwie częścią systemu plików, ale wiertualnym systemem plików, który pozwala na dostęp do informacji nt. jądra. Różnorodne informacje, o których powinieneś wiedzieć są przekazywane przez kernel (jądro) poprzez pliki w /proc. Możesz również wysyłac informacje do jądra poprzez niektóre z tych plików. Spróbuj wykonać cat /proc/cpuinfo.

root

Administrator jest w systemie nazwany root'em. Katalog domowy root'a przechowywany jest w /root zamiast w /home/root. Powód jest oczywisty. Co by się stało gdyby /home była oddzielną partycją i nie mogłaby zostać zamontowana? root naturalnie chciałby się zalogować i naprawić ten problem. Jeżeli jego katalog domowy byłby na uszkodzonym systemie plików, stałoby się to trudne.

sbin

Najważniejsze programy uruchamiane przez root'a i podczas startu systemu są przechowywane w tym katalogu. Zwykli użytkownicy nie uruchomią programów z tego katalogu.

tmp

Miejsce na tymczasowe przechowywanie plików. Każdy użytkownik ma prawa do odczytu i zapisu w tym katalogu.

usr

To duży katalog w systemie Linux. Prawie wszystko nie wymienione powyżej umieszczane jest w tym miejscu. Programy, dokumentacja, źródło jądra i system X Window. To katalog, w którym w większości przypadków będziesz instalował oprogramowanie.

var

Logi systemowe, podręczne dane oraz program lock files są przechowywane w tym miejscu. To katalog dla często zniemiających się danych.

W tym momencie masz już całkiem niezłe pojęcie co gdzie w systemie się znajduje. Bardziej szczegółowe informacje na temat wyglądu systemu plików dostępne są na stronach manuala do hier(7). Następny rozdział pomoże ci odnajdywać pliki, by nie było konieczne ręczne przeglądanie każdego katalogu.

4.1.2 Znajdowanie Plików

Wiesz już co każdy z głównych katalogów zawiera, lecz to wcale nie pomaga ci w odnalezieniu konkretnego pliku. Możnaby oczywiście przeglądać każdy katalog po kolei ale są dużo szybsze sposoby. W Slackware są 4 główne polecenia do wyszukiwania plików.

4.1.2.1 which

Pierwsze z nich to polecenie which(1). W rzeczywistości używa się go do przeszukiwania katalogów wpisanych do zmiennej PATH. Zwracane jest pierwsze wystąpienie pliku i ścieżka do niego. Rozważ przykład:

%  which bash
/bin/bash

Widzsz więc, że bash znajduje się w katalogu /bin. Jest to dość ograniczone polecenie do szukania plików, gdyż przegląda tylko PATH.

4.1.2.2 whereis

Komenda whereis(1) działa podbnie do which, ale szuka również w stronach manuala i plikach źródłowych. Poszukiwanie pliku bash przy pomocy whereis powinno zwrócić:

%  whereis bash
bash: /bin/bash /usr/bin/bash /usr/man/man1/bash.1.gz

Ta komenda mówni nie tylko o tym gdzie program jest zlokalizowany, lecz również gdzie znajduje się jego dokumentacja. Wciąż jednak jest to polecenie dość ograniczone. Co zrobić gdy należy znaleźć jakiś plik konfiguracyjny? Nie można użyć which lub whereis do tego celu.

4.1.2.3 find

Polecenie find(1) pozwala użytkownikowi na przeszukanie systemu plików przy pomocy bogatej kolekcji orzeczeń (predykatów). Przykładowo by odnaleźć plik xinitrc w systemie poniższa komenda zostanie użyta:

%  find / -name xinitrc
/var/X11R6/lib/xinit/xinitrc

Działanie polecenia find zajmie trochę czasu gdyż musi ono przeszukać całe główne (root) drzewo katalogów. Dodatkowo gdy jest uruchomione przez zwykłego użytkownika zostaną wyświetlone komunikaty o odmowie dostępu (permission denied) dla katalogów do których dostęp posiada tylko root. Lecz find znalazł poszukiwany plik, więc jest dobrze. Gdyby tylko działał odrobinę szybciej...

4.1.2.4 slocate

Komenda slocate(1) przeszukuje cały system plików, tak jak to robi find, lecz używa do tego bazy danych zamiast rzeczywistych plików. Baza jest aktualizowana automatycznie każdego ranka, więc jest ona w miarę aktualna. Można ręcznie uruchomić updatedb(1), aby rozpocząć proces aktualizacji bazy slocate (przed uruchomieniem updatedb należy najpierw zalogować się jako root (używając su na przykład). Poniżej jest przykład działania slocate:

%  slocate xinitrc   # we don't have to go to the root
/var/X11R6/lib/xinit/xinitrc
/var/X11R6/lib/xinit/xinitrc.fvwm2
/var/X11R6/lib/xinit/xinitrc.openwin
/var/X11R6/lib/xinit/xinitrc.twm

Dostaliśmy więcej niż oczekiwalismy i to bardzo szybko. Przy pomocy powyższych poleceń powinieneś być w stanie znaleźć wszystko czego szukasz w swoim systemie.

4.1.3 Katalog /etc/rc.d

Pliki inicjalizacji systemu są przechowywane w katalogu /etc/rc.d. W Slackware używane są pliki startowe oparte na BSD. Są one przeciwieństwem skryptów inicjalizacyjnych (startowych) System V, które czynią konfigurację znacznie trudniejszą jeżeli nie używać programów przeznaczonych do ich edycji. W skryptach startowych BSD, każdy runlevel ma przypisany pojedyńczy plik rc. W System V, każdy runlevel ma swój katalog zawierający pewną liczbę skryptów startowych. Tak zorganizowana struktura pozwala na stosunkowo łatwą administrację.

Jest kilka kategorii plików inicjalizacyjnych. Są to: start systemu (system startup), runlevels, inicjalizacja sieci, kompatybilność z System V. Aby tradycji stało sie zadość wrzucimy resztę rzeczy do oddzielnej kategorii.

4.1.3.1 Start systemu - System Startup

Pierwszy program uruchamiany w Slackware poza jądrem Linuxa to init(8). Czyta on plik /etc/inittab(5) by sprawdzić jak uruchomić system. Następnie wykonuje skrypt /etc/rc.d/rc.S by przygotować system do przejścia w pożądany runlevel. Plik rc.S uaktywnia pamięć wirtualną, montuje systemy plików, czyści niektóre katalogi z logami, inicjuje urządzenia Plug and Play, ładuje moduły kernela, konfiguruje urządzenia PCMCIA, ustawia porty szeregowe i uruchamia skrypty startowe System V (o ile takie istnieją). Oczywiście rc.S ma dużo do roboty ale w /etc/rc.d jest kilka skryptów, które rc.S uruchomi by wykonać swoje zadanie:

rc.S

Jest to właściwy skrypt inicjalizacyjny systemu.

rc.modules

Ładuje moduły jądra. Obsługa kart sieciowych, PPP itd. ładowane są w tym miejscu. Gdy skrypt znajdzie plik rc.netdevice zostanie on również uruchomiony.

rc.pcmcia

Sprawdza (Probes) i konfiguruje urządzenia PCMCIA, które możesz mieć w systemie. Użyteczny dla posiadaczy laptopów, którzy najczęściej mają modem lub kartę sieciową korzystającą PCMCIA.

rc.serial

Konfiguruje porty szeregowe uruchamiając odpowiednie polecenia setserial.

rc.sysvinit

Szuka skryptów startowych System V dla pożądanego runlevelu i uruchamia je. Ta kwestia szczegółowo omawiana jest poniżej.

4.1.3.2 Skrypty inicjalizacyjne dla runlevel'i

Po zakończonej inicjalizacji init przechodzi do inicjalizacji runlevel'u. Runlevel opisuje stan w jakim twoja maszyna będzie pracować. Brzmi dziwnie? Cóż, runlevel mówi init'owi czy chcesz akceptować logowanie dla wielu użytkowników, czy chcesz używać usług sieciowych i czy będziesz używał systemu X Window czy agetty(8) by obsługiwać logowania. Poniższe pliki opisują dostępne runlevel'e w Slackware Linux.

rc.0

Zatrzymaj system (runlevel 0). Domyślnie plik jest symbolicznie dowiązany do rc.6.

rc.4

Start wieloużytkownikowy, lecz używając X11 oraz KDM, GDM lub XDM jako menedżera logowania.

rc.6

Restart systemu (runlevel 6).

rc.K

Start w trybie pojedynczego użytkownika (single user) - runlevel 1.

rc.M

Tryb wieloużytkownikowy (runlevel'e 2 i 3) lecz ze standardowym tekstowym logowaniem. Jest to domyślny runlevel w Slackware.

4.1.3.3 Inicjalizacja sieci

Runlevel'e 2, 3, i 4 uruchomią usługi sieciowe. Poniższe pliki są odpowiedzialne za inicjalizację sieci:

rc.inet1

Plik utworzony przez netconfig. Odpowiedzialny jest za konfigurację interfejsu sieciowego.

rc.inet2

Uruchamiany po rc.inet1. Uruchamia podstawowe usługi sieciowe.

rc.atalk

Odpala usługi AppleTalk.

rc.httpd

Plik uruchamia serwer webowy Apache. Jak kilka jeszcze innych skryptów rc, i ten może służyć również (oprócz uruchomienia) do zatrzymania i zrestartowania usługi. rc.httpd pobiera argumenty: stop, start lub restart.

rc.news

Uruchamia serwer newsów (grup dyskusyjnych).

4.1.3.4 Kompatybilność z System V

Kompatybilność z init System V została wprowadzona w Slackware w wersji 7.0. Wiele innych dystrybucji Linux'a używa tego stylu zamiast tego opartego o BSD. Generalnie wygląda to tak, że każdy runlevel ma swój katalog dla skryptów startowych. W stylu BSD jeden runlevel to jeden plik.

Plik rc.sysvinit przeszuka /etc/rc.d i sprawdzi czy masz tam jakieś pliki startowe System V a następnie je uruchomi (o ile odpowiadają one aktualnemu runlevel'owi). Jest to użyteczne dla pewnych komercyjnych pakietów oprogramowania, które instalują skrypty startowe System V.

4.1.3.5 Inne pliki

Skrypty opisane poniżej to pozostałe pliki inicjalizacji systemu. Są one zwykle uruchamiane z jednego z głównych skryptów startowych opisanych wyżej. Wszystko więc co musisz zrobić by wprowadzić w nich uaktualnienia to je wyedytować.

rc.gpm

Uruchamia usługi general purpose mouse (mysz ogólnego przeznaczenia :-). Pozwala na kopiowanie i wklejanie w konsoli Linux'owej. Niekiedy gpm stwarza problemy gdy jest używany pod X Window. Gdy takowych doświadczysz w tym środowisku, spróbuj odebrać prawa do wykonywania tego pliku i zatrzymaj serwer gmp.

rc.font

Ładuje czcionki ekranowe dla konsoli.

rc.local

Zawiera polecenia startowe specyficzne dla Twojego systemu. Plik jest pusty zaraz po instalacji, jakoże jest zarezwerowany dla administratorów. Ten skrypt jest uruchamiany po wykonaniu wszystkich innych czynności inicjalizacyjnych.

Aby aktywować skrypt, wszystko co należy wykonać to nadać mu prawa do wykonywania poleceniem chmod. Aby go “dezaktywować” trzeba mu te prawa odebrać. Po więcej informacji na temat chmod zobacz Sekcja 9.2.

Grenlandia 2012