Linux -start systemu


Komputer rozpoczyna proces startu systemu przez wykonanie kodu znajdującego się w pamięci ROM (w BIOS-ie). Tam zapisana jest m.in. informacja, gdzie znajduje się Boot Loader. W przypadku uruchamiania systemu z dysku twardego może on być umieszczony w głównym sektorze startowym (MBR, ang. Master Boot Record) lub w sektorze startowym odpowiedniej partycji.

Dla dystrybucji Aurox standardowo instalowany jest GRUB, można też korzystać z Lilo. Zadaniem boot loadera dla systemu Linux jest wystartowanie systemu, lokalizacja jądra i załadowanie jądra.

Gdy jądro zostanie w całości załadowane, rozpoczyna ono inicjalizację sterowników. Następnie próbuje  załadować i zamontować główny system plików jako /.

Następnie system odnajduje w głównym systemie plików program init (w katalogu /sbin) i wykonuje go. Init odczytuje swój plik konfiguracyjny /etc/inittab, szuka linii oznaczonej sysinit i wykonuje podany tam skrypt.

# System initialization

si::sysinit:/etc/rc.d/rc.sysinit

Skrypt sysinit to w naszym przypadku plik  /etc/rc.d/rc.sysinit.

Ten skrypt to seria komend powłoki, które inicjalizują podstawowe usługi systemu, oraz wykonują czynności takie jak:

  • uruchamianie sprawdzania systemu plików na dyskach (fsck)
  • ładowanie potrzebnych modułów jądra,
  • startowanie pamięci swap,
  • inicjalizacja sieci,
  • montowanie dysków wymienionych w /etc/fstab.

Ten skrypt często wywołuje inne skrypty odpowiadające za inicjalizację poszczególnych modułów.

Gdy skrypt sysinit zakończy pracę, kontrola powraca do programu init, który następnie wchodzi na domyślny poziom pracy, podany w pliku inittab przy słowie kluczowym initdefault.

# Default runlevel. The runlevels used by RHS are:

#   0 - halt (Do NOT set initdefault to this) – zatrzymanie systemu

#   1 - Single user mode – tryb jednego użytkownika –bez hasła dla administratora

#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)

#                         dla wielu użytkowników, ale bez sieci i NFS

#   3 - Full multiuser mode – pełny tryb dla wielu użytkowników (tekstowy)

#   4 – unused - nieużywany

#   5 - X11 - pełny tryb dla wielu użytkowników (graficzny)

#   6 - reboot (Do NOT set initdefault to this) – restart systemu

#

id:5:initdefault:

 

# System initialization.

si::sysinit:/etc/rc.d/rc.sysinit

 

l0:0:wait:/etc/rc.d/rc 0

l1:1:wait:/etc/rc.d/rc 1

l2:2:wait:/etc/rc.d/rc 2

l3:3:wait:/etc/rc.d/rc 3

l4:4:wait:/etc/rc.d/rc 4

l5:5:wait:/etc/rc.d/rc 5

l6:6:wait:/etc/rc.d/rc 6

 

....

 

 

# Run gettys in standard runlevels

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

 

# Run xdm in runlevel 5

x:5:respawn:/etc/X11/prefdm -nodaemon

Linie poziomów pracy na ogół wyszczególniają program taki jak getty, który jest odpowiedzialny za obsługę komunikacji przez konsolę i terminale. Program getty wypisuje linię zachęty login:. Wywołuje on następnie program login, który przeprowadza weryfikacje i ustanawia sesję użytkownika.