Jak przebiega bootowanie z tymi skryptami?

W Linuksie zastosowano usprawnienie bootowania zwane SysVinit. Jest ono oparte na koncepcji runlevel'i. Może się to bardzo różnić w rozmaitych systemach, więc nie można zakładać, że gdy działało dobrze w <tu wstaw nazwę dystrybucji>, to będzie tak samo i w LFS. LFS robi rżne rzeczy po swojemu, ale respektuje ogólnie przyjęte standardy.

SysVinit (który od teraz będziemy nazywać init) działa używając schematu poziomów działania "runlevels". Jest ich 7 (od 0 do 6), tych poziomów działania (Właściwie, to jest ich więcej, ale są do szczególnych przypadków i zasadniczo sie ich nie używa. Strona manuala dla init opisuje te szczegóły), a każdy z nich odpowiada czynnościom, jakie komputer powinien wykonywać podczas uruchamiania się. Domyślny poziom to 3. Oto opisy różnych poziomów działania, tak jak to się często implementuje:

0: zatrzymanie komputera (halt the computer)
1: tryb jednoużytkownikowy (single-user mode)
2: tryb wieloużytkownikowy bez obsługi sieci (multi-user mode without networking)
3: tryb wieloużytkownikowy z siecią (multi-user mode with networking)
4: zarezerwowany do oknserwacji, jeśli nie, to działa tak samo, jak poziom 3 (reserved for customization, otherwise does the same as 3)
5: tak samo, jak poziom 4, zwykle stosuje się do graficznego logowania [jak xdm dla X'ów, albo kdm dla KDE] (same as 4, it is usually used for GUI login [like X's xdm or KDE's kdm])
6: uruchom ponownie komputer (reboot the computer)

Komendą używaną do zmian poziomów działania jest init <runlevel> gdzie <runlevel> to poziom, na jaki chcemy się przełączyć. Na przykład, aby rebootować komputer, użytkownik może zastosować komendę init 6. Komenda "reboot" jest tylko aliasem, tak jak komenda "halt" jest aliasem dla init 0.

There are a number of directories under /etc/rc.d that look like like rc?.d where ? is the number of the runlevel and rcsysinit.d which contain a number of symbolic links. Some begin with a K, the others begin with an S, and all of them have two numbers following the initial letter. The K means to stop (kill) a service, and the S means to start a service. The numbers determine the order in which the scripts are run, from 00 to 99; the lower the number the sooner it gets executed. When init switches to another runlevel, the appropriate services get killed and others get started.

The real scripts are in /etc/rc.d/init.d. They do all the work, and the symlinks all point to them. Killing links and starting links point to the same script in /etc/rc.d/init.d. That's because the scripts can be called with different parameters like start, stop, restart, reload, status. When a K link is encountered, the appropriate script is run with the stop argument. When a S link is encountered, the appropriate script is run with the start argument.

There is one exception. Links that start with an S in the rc0.d and rc6.d directories will not cause anything to be started. They will be called with the parameter stop to stop something. The logic behind it is that when you are going to reboot or halt the system, you don't want to start anything, only stop the system.

These are descriptions of what the arguments make the scripts do:

Feel free to modify the way the boot process works (after all, it's your own LFS system). The files given here are just an example of how it can be done in a nice way (well, what we consider nice -- you may hate it).