Product SiteDocumentation Site

Rozdział 9. Usługi Uniksa

9.1. Bootowanie systemu
9.2. Remote Login
9.2.1. Secure Remote Login: SSH
9.2.2. Using Remote Graphical Desktops
9.3. Managing Rights
9.4. Administration Interfaces
9.4.1. Administrating on a Web Interface: webmin
9.4.2. Configuring Packages: debconf
9.5. syslog System Events
9.5.1. Principle and Mechanism
9.5.2. The Configuration File
9.6. The inetd Super-Server
9.7. Scheduling Tasks with cron and atd
9.7.1. Format of a crontab File
9.7.2. Using the at Command
9.8. Scheduling Asynchronous Tasks: anacron
9.9. Quotas
9.10. Kopia bezpieczeństwa
9.10.1. Backing Up with rsync
9.10.2. Restoring Machines without Backups
9.11. Hot Plugging: hotplug
9.11.1. Introduction
9.11.2. The Naming Problem
9.11.3. How udev Works
9.11.4. A concrete example
9.12. Power Management: Advanced Configuration and Power Interface (ACPI)
Ten rozdział opisuje kilka podstawowych usług, które są dostępne w wielu systemach Unix. Wszyscy administratorzy powinni je znać.

9.1. Bootowanie systemu

Kiedy bootujesz komputer, masa wiadomości przewijających się przez konsole ukazuje wykonywane automatyczne inicjalizacje i konfiguracje. Czasami chcesz nieco wpłynąć na działanie tego etapu, co oznacza, ze musisz go dobrze zrozumieć. To jest właśnie celem tej części książki.
Po pierwsze, BIOS kontroluje komputer, wykrywa dyski, ładuje główny sektor rozruchowy i uruchamia bootloader. Bootloader przejmuje kontrole, znajduje jądro systemu na dysku, ładuje i uruchamia je. Jądro systemu jest następnie inicjalizowane i rozpoczyna poszukiwanie i montowanie partycji zawierającej główny system plików i w końcu uruchamia pierwszy program-init. Często, ta główna partycja i init są, tak naprawdę, ulokowane w wirtualnym systemie plików, który istnieje tylko w pamięci RAM(stąd jego nazwa,“initramfs”, dawniej zwany “initrd” lub "inicjalizacja dysku RAM").Ten system plików jest ładowany do pamięci przez bootloader, często z pliku na dysku twardym lub z sieci. Zawiera absolutne minimum wymagane przez jądro systemu do wczytania "prawdziwego" głównego systemu plików: mogą to być moduły sterowników dla dysku twardego lub inne programy, bez których system nie może się zbootować albo jeszcze częściej skrypty inicjalizacyjne i moduły do kompletacji RAID, tworzenia zaszyfrowanych partycji, aktywacji LVM itd. Kiedy główna partycja jest już zamontowana, initramfs oddaje kontrolę rzeczywistemu initowi i maszyna wraca do standardowego procesu bootwania.
"Rzeczywisty init " jest obecnie dostarczany przez sysv-rc (“System V”) i ten fragment stanowi jego dokumentację.
Init uruchamia kilka procesów, następujące polecenia z pliku /etc/inittab. Pierwszy uruchamiany program(który nawiązuje do kroku sysinit ) jest to /etc/init.d/rcS, skrypt, który uruchamia wszystkie programy w /etc/rcS.d/.
Wśród nich możesz znaleźć kolejno programy odpowiedzialne za:
  • konfigurowanie klawiatury konsoli;
  • wczytywanie sterowników: większość modułów jądra systemu jest wyczytywana przez nie samodzielnie jak przy wykryciu dysku twardego; następnie automatycznie wczytywane są dodatkowe sterowniki, a lista nawiązujących modułów tworzona jest w /etc/modules;
  • sprawdzanie integralności systemu plików;
  • montowanie lokalnych partycji;
  • konfigurowanie sieci;
  • montowanie sieciowego systemu plików(NFS).
Po tym etapie, init przejmuje kontrolę i uruchamia programy włączone w domyślny poziom działania(którym jest zazwyczaj poziom 2). Uruchamia /etc/init.d/rc 2, skrypt, który włącza wszystkie usługi wymienione w /etc/rc2.d/ i których nazwa zaczyna się na literę "S". Dwucyfrowy numer, który wystąpił, był kiedyś używany do definiowania kolejności, w której usługi muszą być uruchomione, ale obecnie domyślny system bootujący używa insserv, który planuje wszystko automatycznie bazując na zależnościach skryptów. Tak więc każdy butujący skrypt deklaruje warunki, które muszą być spełnione aby uruchomić bądź zatrzymać usługę(na przykład, czy musi być uruchamiana przed lub po innej usłudze); następnie init uruchamia je w kolejności, która spełnia podane warunki. Statyczne numerowanie skryptów nie jest już dlatego brane pod uwagę(ale zawsze muszą zaczynać się na literę "S", po której następują 2 cyfry i prawdziwa nazwa skryptu używanego do określenia zależności). Ogólnie, podstawowe usługi(takie jak przetwarzanie logów przez rsyslog lub przypisywanie portów przez portmap) są uruchamiane pierwsze, a po nich włączane są standardowe usługi i środowisko graficzne (gdm).
System bootowania oparty na zależnościach sprawia, że możliwe jest zautomatyzowanie ponownego numerowania, które potrafi być uciążliwe, jeśli trzeba je przeprowadzić ręcznie, oraz zmniejsza prawdopodobieństwo ludzkiego błędu, ponieważ planowanie odbywa się według wskazanych parametrów. Inną korzyścią jest to, że usługi mogą być uruchomione równolegle, jeśli są od siebie niezależne, co przyśpiesza proces bootowania.
init wyróżnia kilka poziomów działania, więc może przełączać się między nimi komendą telinit new-level. init natychmiastowo uruchamia/etc/init.d/rc z nowym poziomem działania. Następnie ten skrypt uruchamia brakujące usługi i zatrzymuje te, które nie są już pożądane. Aby to zrobić, wskazuje na zawartość /etc/rcX.d (gdzie X reprezentuje nowy poziom działania). Skrypty zaczynające się na "S"(jak "Start") są usługami do uruchomienia; te zaczynające się na "K"(jak "Kill") są usługami, które należy zatrzymać. Skrypt nie uruchomi żadnej usługi, która jest już aktywna w poprzednim poziomie działania.
Domyślnie, Debian korzysta z czterech różnych poziomów działania:
  • Poziom 0 jest używanym tylko tymczasowo, podczas wyłączania się komputera. Dlatego zawiera wiele skryptów "K".
  • Poziom 1, znany także jako tryb dla pojedynczego użytkownika( single-user mode), odpowiada systemowi w trybie awaryjnym; zawiera tylko podstawowe usługi i powstał do wykonywania konserwacji, tak więc interakcje ze zwykłym użytkownikiem nie są pożądane.
  • Poziom 2 służy do wykonywania zwyczajnych operacji, w skład których wchodzą usługi sieciowe, środowisko graficzne, loginy itd.
  • Poziom 6 jest podobny do poziomu 0, pomijając to, że jest używany podczas fazy zamykania, która poprzedza ponowne uruchomienie.
Istnieją inne poziomy, szczególnie od 3 do 5. Domyślnie są skonfigurowane tak, by działać identycznie jak poziom 2, ale administrator może je zmodyfikować(dodając lub usuwając skrypty w /etc/rcX.d) aby przystosować je do szczególnych potrzeb.
Sekwencja ładowania z komputera systemu Linux

Rysunek 9.1. Sekwencja ładowania z komputera systemu Linux

Wszystkie skrypty zawierające się w różnych /etc/rcX.d directories are really only symbolic links — created upon package installation by the update-rc.d program — pointing to the actual scripts which are stored in /etc/init.d/. The administrator can fine tune the services available in each runlevel by re-running update-rc.d with adjusted parameters. The update-rc.d(1) manual page describes the syntax in detail. Please note that removing all symbolic links (with the remove parameter) is not a good method to disable a service. Instead you should simply configure it to not start in the desired runlevel (while preserving the corresponding calls to stop it in the event that the service runs in the previous runlevel). Since update-rc.d has a somewhat convoluted interface, you may prefer using rcconf (from the rcconf package) which provides a more user-friendly interface.
Finally, init starts control programs for various virtual consoles (getty). It displays a prompt, waiting for a username, then executes login user to initiate a session.