En aquest article explicarem el d'arrancada dels sistemes Unix basats en SystemV. La majoria de Distribucions Linux utilitzen un sistema d'arrencada compatible amb SystemV. Hi ha però algunes distribucions com Slackware que utilitzen un sistema basat en BSD i altres tenen el seu propi sistema d'arrencada (Gentoo Linux).
El cor del sistema d'arrancada és el procés init. Aquest procés l'executa el kernel al iniciar el sistema i és l'encarregat d'executar tots els serveis necessaris per tal que el sistema funcioni correctament.
El procés d'execució en SystemV és el següent:
NOTA: Actualment sistemes operatius com Ubuntu ja no utilitzant el fitxer inittab. L'arrancada del sistema es duu a terme mitjançant upstart.
L'arrancada d'un sistema operatiu (boot en anglès) té les següents fases:
El primer procés a executar-se a l'encendre un sistema operatiu és una petita aplicació normalment carregada en una memòria ROM (Read Only Memory) o algun altre sistema empotrat (embedded) com memòries PROM, EPROM o FLASH (lectura i escriptura). Aquesta aplicació és anomenada firmware o en el cas de IBM PC s'anomena BIOS (Basic Input/Output System). Actualment tant els firmware com les BIOS són sistemes que es poden actualitzar (tot i que no es una tasca habitual) i per tant utilitzant memòries de lectura/escriptura.
En el cas dels PC, la BIOS disposa d'un programa de configuració al qual es pot a accedir durant l'arrancada amb una seqüència de tecles especifiques com Supr, o tecles de funció. La configuració determina configuracions del maquinari del sistema (Chipsets, busos de sistema, Gestió del consum energètic, seguretat d'accés al sistema, etc.) i sobretot l'ordre d'arrancada dels dispositius del sistema' (quin dispositiu serà el que carregarà el sistema operatiu)
Un cop escollit segons la configuració de la BIOS el dispositiu d'arrancada, en el cas d'un disc dur es passa l'execució (aquest procés és anomenat Chain Loading o també canvi de context, ja que es commuta la memòria i la CPU del firware al Boot Loader) a un programa que es troba al primer sector del dispositiu. El programa s'anomena Boot Loader i el primer sector del disc és el Master Boot Record (MBR) que típicament té 512 bytes.
En aquest petit espai, trobem una petita aplicació que carrega el sistema operatiu i informació del disc dur (taula de particions, etiqueta del disc, etc).
Els programaris carregadors del sistema operatiu més coneguts són:
Tots ells permeten en major o menor mida, configurar la càrrega del SO. El més habitual és poder escollir entre múltiples sistemes operatius en sistemes duals, o poder configurar el pas de paràmetres al nucli del sistema operatiu.
Alguns carregadors del sistema com Grub, per poder suportat diferents sistemes de fitxer necessiten més espai que el proporcionat pel MBR. En aquest cas el gestor esta dividit en parts o stages. La primera part té la part bàsica de l'arrancada (menús) i les altres parts es troben al primer sector de la partició de carrega del sistema operatiu o en espais com l'espai de compatibilitat de DOS.
Un cop escollit el sistema operatiu i la partició on aquest es troba allotjat, es procedeix a carregar el nucli del S0. Aquesta fase depèn força de cada sistema operatiu. Tots els SO disposen d'un nucli, encara que hi han diferents tipus de nucli:
Depenent del tipus de nucli aquest durà a terme unes o altres tasques.
Consulteu l'apartat el kernel del tema 15 sobre sistemes operatius.
Un cop carregat el nucli s'inicien els processos i serveis del sistema. A GNU/Linux els processos s'executen en un ordre determinat pels Nivells d'execució de Unix/Linux. Els primers processos en executar-se són:
El PID és l'identificador del procés.
Podem consultar els processos i els seus PID amb la comanda:
$ ps aux
I podem consultar l'estructura d'arbre jeràrquic amb:
$ pstree
Consulteu el tema:
El terme RunLevel es refereix a un mode d'operació d'un ordinador segons el sistema d'inicialització UNIX SystemV.
Els sistemes Unix/Linux carregen els serveis del sistema mitjançant un sistema de nivells o runlevels. Cada distribució Unix té els seus propis nivells amb petites diferències.
La comanda init ens permet moure'ns entre nivells. Així per exemple, un sistema multiusuari Linux pot esdevenir, en cas de necessitat (per exemple per a tasques de manteniment o de recuperació delk sistema), un sistema monousuari executant:
$ sudo init 1
Tots les sistemes Linux tenen al menys els tres nivells estàndard:
Id Nom Descripció 0 Halt Para o apaga el sistema. S Single-User Mode Entra al sistema en un sol usuari. Només s'executen els serveis bàsics. 6 Reboot Torna a iniciar el sistema.
Com hem vist, el procés inicial a tots els sistemes Linux és el procés init. El primer que fa aquest procés és llegir el fitxer /etc/inittab. Aquest fitxer és el que determina els nivells existents i el seu comportament.
Realment la majoria de sistemes moderns tenen el següents nivells d'execució:
ID Nom Descripció 1 Single-User Mode No configura xarxa (NOTA a Ubuntu sembla que no és pas així) ni inicia daemons i només permet el login a root. 2 Multi-User Mode Permet múltiples usuaris però sense xarxa 3 Multi-User Mode amb xarxa. Nivell d'execució típic dels servidors. 4 No utilitzat. Reservat per usos futurs? 5 X11 Nivell d'execució + X Window System.
Amb una mica més de detall:
A Debian i Ubuntu no hi ha distinció entre els nivell 2 a 5. Vegeu Debian FAQ on booting.
NOTA: Ubuntu utilitza upstart
En Linux parlem de serveis o dimonis (i en altres sistemes operatius el concepte és similar) quan ens referim a un procés que normalment s'executa de forma continua i sense interactivitat amb l'usuari (no s'utilitzen els dispositius I/O habituals -teclat, ratolí, pantalla). Cal diferenciar els processos de les aplicacions interactives que són executades específicament pels usuaris.
Podem consultar el nivell d'execució en que estem amb:
$ runlevel
o
$ who -r
La comanda init ens permet moure'ns entre nivells. Així per exemple, un sistema multiusuari Linux pot esdevenir, en cas de necessitat (per exemple per a tasques de manteniment o de recuperació del sistema), un sistema monousuari executant:
$ sudo init 1
Cada distribució Unix inicia els seus nivells utilitzant scripts d'inicialització/control de serveis. Aquests scripts no es troben sempre al mateix lloc en diferents distribucions però lo habitual (segons el sistema System V) és:
Tenir els scripts a:
/etc/init.d
Es poden controlar els serveis de la següent forma (exemple Apache):
$ sudo /etc/init.d/apache2 * Usage: /etc/init.d/apache2 {start|stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean}
La forma de determinar quins serveis s'executen al carregar el sistema i en quins nivell és creant enllaços a les carpetes:
$ ls /etc/rc rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/ rc.local rcS.d/
Hi ha una carpeta per nivell. Exemple:
$ ls /etc/rcls /etc/rc2.d/ ls: /etc/rcls: No such file or directory /etc/rc2.d/: README S10xserver-xorg-input-wacom S19autofs S20exim4 S20samba S24dhcdbd S89atd S99rc.local S01vboxadd S11klogd S19cupsys S20hotkey-setup S20snmpd S25bluetooth S89cron S99rmnologin S02vboxadd-timesync S12dbus S19mysql S20makedev S20sysstat S30gdm S90binfmt-support S99stop-readahead S02vboxvfs S12hal S19slapd S20ntop S20uml-utilities S30nagios S91apache2 S99webmin S05vbesave S16ssh S20acct S20nvidia-kernel S20vboxdrv S30nagios2 S98munin-node S10acpid S17mysql-ndb-mgm S20apmd S20openbsd-inetd S20vboxnet S50ntp S98usplash S10powernowd.early S18avahi-daemon S20apport S20powernowd S20winbind S50proftpd S99acpi-support S10sysklogd S18mysql-ndb S20dirmngr S20rsync S22consolekit S89anacron S99laptop-mode
On
i el número determinar l'ordre d'arrancada o apagada.
Recursos:
Un cop carregats tots els serveis, el sistema demanara a l'usuari les dades (també es pot configurar el sistema per tal que entri per defecte amb un usuari concret)
En entorns Unix, el procés que s'encarrega d'aquesta fase és getty. Si executem:
$ ps aux | grep getty root 4696 0.0 0.0 1696 520 tty4 Ss+ 08:24 0:00 /sbin/getty 38400 tty4 root 4697 0.0 0.0 1696 520 tty5 Ss+ 08:24 0:00 /sbin/getty 38400 tty5 root 4701 0.0 0.0 1692 516 tty2 Ss+ 08:24 0:00 /sbin/getty 38400 tty2 root 4702 0.0 0.0 1696 520 tty3 Ss+ 08:24 0:00 /sbin/getty 38400 tty3 root 4703 0.0 0.0 1692 512 tty1 Ss+ 08:24 0:00 /sbin/getty 38400 tty1 root 4704 0.0 0.0 1696 520 tty6 Ss+ 08:24 0:00 /sbin/getty 38400 tty6 sergi 16338 0.0 0.0 2988 744 pts/2 R+ 20:00 0:00 grep getty
Com podeu veure hi ha diferents logins en execució. El control de les terminals d'inici el trobem al fitxer:
$ cat /etc/inittab ... # The default runlevel. id:2:initdefault: # Boot-time system configuration/initialization script. # This is run first except when booting in emergency (-b) mode. si::sysinit:/etc/init.d/rcS # What to do in single-user mode. ~~:S:wait:/sbin/sulogin # /etc/init.d executes the S and K scripts upon change # of runlevel. # # Runlevel 0 is halt. # Runlevel 1 is single-user. # Runlevels 2-5 are multi-user. # Runlevel 6 is reboot. l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 # Normally not reached, but fallthrough in case of emergency. z6:6:respawn:/sbin/sulogin # What to do when CTRL-ALT-DEL is pressed. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now # Action on special keypress (ALT-UpArrow). #kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work." # What to do when the power fails/returns. pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop # /sbin/getty invocations for the runlevels. # # The "id" field MUST be the same as the last # characters of the device (after "tty"). # # Format: # <id>:<runlevels>:<action>:<process> # # Note that on most Debian systems tty7 is used by the X Window System, # so if you want to add more getty's go ahead but skip tty7 if you run X. # 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 ...
A Ubuntu ja no s'utilitza aquest fitxer, perquè utilitza upstart. La configuració la trobarem a:
/etc/event.d
Per exemple hi ha un fitxer per cada tty:
$ cat tty1 # tty1 - getty # # This service maintains a getty on tty1 from the point the system is # started until it is shut down again. start on runlevel 2 start on runlevel 3 start on runlevel 4 start on runlevel 5 stop on runlevel 0 stop on runlevel 1 stop on runlevel 6 respawn exec /sbin/getty 38400 tty1
Normalment per defecte podem accedir a les terminals tty amb la combinació de tecles Ctrl+Alt+F1-F6. Es poden configurar altres terminals i fins i tot que una tty remota es connecti a un login remot
La terminal 7 (Ctrl+Alt+F7) normalment esta reservada a l'entorn gràfic X. Actualment hi ha diferents entorns d'escriptori] en Unix (Gnome, KDE, XFCE,) que corren sobre X-Window. Tots ells disposen del que s'anomena un Desktop Manager (DM) (Gnome té GDM, KDE té KDM, i també hi ha el genèric XDM) que és l'aplicació que s'encarrega del login del usuari a l'entorn gràfic i de la gestió del mateix.
L'execució dels desktops managers es duu a terme al nivell corresponent (depèn de cada distribució). A Ubuntu:
$ ls /etc/rc2.d| grep gdm S30gdm
Per tant s'executa al nivell 2. L'entorn gràfic es pot reiniciar amb
NOTA: Atenció, la següent comanda reinicia l'entorn gràfic sense confirmació i per tant podem perdre dades.
$ sudo /etc/init.d/gdm restart
El procés init (abreviació d'initialization) és el programa inicial en tots els sistemes xNIX. És pare de tota la resta de processos, normalment té el PID 1 i s'executa com un dimoni del sistema.
Tal com mostra la comanda:
$ pstree init─┬─acpid ├─amarokapp─┬─ruby │ └─6*[{amarokapp}] ├─amarokapp ├─apache2───5*[apache2] ├─arpwatch ..............
El procés init és pare de tota la resta de processos. Si executem
$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1628 524 ? Ss 08:50 0:01 /sbin/init splash root 2 0.0 0.0 0 0 ? SN 08:50 0:00 [ksoftirqd/0] root 3 0.0 0.0 0 0 ? S 08:50 0:00 [watchdog/0] root 4 0.0 0.0 0 0 ? S< 08:50 0:00 [events/0] root 5 0.0 0.0 0 0 ? S< 08:50 0:00 [khelper] root 6 0.0 0.0 0 0 ? S< 08:50 0:00 [kthread] root 8 0.0 0.0 0 0 ? S< 08:50 0:00 [kblockd/0] root 9 0.0 0.0 0 0 ? S< 08:50 0:00 [kacpid] root 10 0.0 0.0 0 0 ? S< 08:50 0:00 [kacpi_notify] ............
Podem veure que el procés init sempre té l'identificador de procés (PID) 1. Podem obtenir més informació sobre els processos Linux a l'article Processos_Linux.
Consulteu init.
IMPORTANT: A partir de la versió Feisty d'Ubuntu i de Fedora 9 s'utilitza el sistema d'arrancada basat en Upstart en comptes del fitxer /etc/inittab. Els sistemes que utilitzen upstart, encara s'utilitza el fitxer /etc/inittab però només per establir el nivell d'execució per defecte.
Segons el manual, cada línia del fitxer inittab té el següent format:
id:runlevels:action:process
On
Les opcions vàlides del camp action són:
El fitxer inittab és l'encarregat de la configuració del procés init. Vegem un exemple de fitxer inittab (extret d'una Debian):
# /etc/inittab: init(8) configuration. # $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $ # The default runlevel. id:2:initdefault: # Boot-time system configuration/initialization script. # This is run first except when booting in emergency (-b) mode. si::sysinit:/etc/init.d/rcS # What to do in single-user mode. ~~:S:wait:/sbin/sulogin # /etc/init.d executes the S and K scripts upon change # of runlevel. # # Runlevel 0 is halt. # Runlevel 1 is single-user. # Runlevels 2-5 are multi-user. # Runlevel 6 is reboot. l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 # Normally not reached, but fallthrough in case of emergency. z6:6:respawn:/sbin/sulogin # What to do when CTRL-ALT-DEL is pressed. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now # Action on special keypress (ALT-UpArrow). #kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work." # What to do when the power fails/returns. pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop # /sbin/getty invocations for the runlevels. # # The "id" field MUST be the same as the last # characters of the device (after "tty"). # # Format: # <id>:<runlevels>:<action>:<process> # # Note that on most Debian systems tty7 is used by the X Window System, # so if you want to add more getty's go ahead but skip tty7 if you run X. # 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 # Example how to put a getty on a serial line (for a terminal) # #T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100 #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100 # Example how to put a getty on a modem line. # #T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3
La secció:
# Boot-time system configuration/initialization script. # This is run first except when booting in emergency (-b) mode. si::sysinit:/etc/init.d/rcS
Determina que el primer que s'executa és l'script /etc/init.d/rcS:
$ cat /etc/init.d/rcS #! /bin/sh # # rcS # # Call all S??* scripts in /etc/rcS.d/ in numerical/alphabetical order # exec /etc/init.d/rc S
El que fa és executar tots els scripts que comencen per S (Start) de la carpeta /etc/rcS.d/. Els script s'executen en l'ordre que indica el número que hi ha després de la S en els scripts.
La secció:
# /etc/init.d executes the S and K scripts upon change # of runlevel. # # Runlevel 0 is halt. # Runlevel 1 is single-user. # Runlevels 2-5 are multi-user. # Runlevel 6 is reboot. l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 # Normally not reached, but fallthrough in case of emergency. z6:6:respawn:/sbin/sulogin
Determina que s'executa al passar a un nivell d'execució concret. Estan indicats els 6 nivells (tot i que Debian utilitza el 0 el 1 el 2 i el 6). S'executen els scripts amb S o els scripts amb K segons s'estigui iniciant o aturant el nivell.
La secció:
1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6
Indica que cal executar a les terminals virtuals (accessibles amb la combinació de tecles Ctrl+Alt+Fnúmero_de_terminal, Crt+Alt+F1,F2..).
S'indica de la següent forma al fitxer /etc/inittab:
# The default runlevel. id:2:initdefault:
L'exemple anterior indica que el nivell d'execució per defecte és el 2 (típic dels sistemes Debian o de versions prèvies a Upstart d'Ubuntu).
Fedora encara manté aquest fitxer tot i utilitzar upstart, precisament per indicar el nivell per defecte:
id:5:initdefault:
El nivell per defecte dels sistemes de la família Red Hat és el nivell 5 (quant hi ha entorn gràfic, és a dir, en versions d'escriptori, no de servidor).
Si executem:
$ sudo shutdown -h -H 0
El resultat serà quelcom similar a:
És a dir s'aturarà el sistema però no s'aturarà la màquina.
Aquesta combinació es pot utilitzar des d'una terminal no gràfica (des de l'entorn gràfic sovint s'ignora o la combinació es capturada i apareix un menú amb opcions d'aturada) per tornar a iniciar l'ordinador.
Als sistemes que configuren la seva engegada amb el fitxers inittab, podem modificar el comportament de Ctrl+Alt+Delete modificant aquest fitxer. Per exemple a Debian podeu trobar:
$ sudo joe /etc/inittab
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
Podem comentar la línia amb un # al principi i desactivarem ctrl+Alt+Delete. O podem canviar la comanda (per exemple canviar el -r per -h i aturarà la màquina en comptes de tornar-la a iniciar).
La carpeta /etc/init.d conté el scripts (executables) encarregats de l'inicialització de serveis. Un script típic ha de tenir com a mínim els parametres start i stop. Altres possibilitats són reload, restart o status. Per exemple:
$ /etc/init.d/apache2 start
Inicialitza el servidor web apache (versió 2.0).
L'últim script en executar-se és /etc/rc.d/rc.local. En aquest fitxer podem inicialitzar serveis específics del nostre sistema, encara que el proposit inicial éra controlar els serveis de xarxa.
Consulteu:
Programació_de_Dimonis_Linux#Programaci.C3.B3_d.27scripts_d.27inicialitzaci.C3.B3_System_V_per_a_dimonis
Quan s'inicia un nivell d'execució, el sistema executa els links que és troben a la carpeta que li correspon a aquest nivell d'execució (p.e. per al nivell 3 /etc/rc3.d). Les carpetes/nivells existents són:
En aquestes carpetes trobem dos tipus de links:
Els dos dígits que segueixen a les lletres k o s, indiquen la prioritat del procés. Els nombres menors s'executen abans. Els enllaços apunten als scripts d'inicialització de serveis (normalment a la carpeta /etc/init.d).
Per defecte els links k executen l'script amb el paràmetre stop i els links s executen el mateix script però amb el paràmetre start.
Proporciona l'ordre:
$ dpkg -L chkconfig | grep bin /sbin /sbin/chkconfig
Els executables proporcionats pel paquet són:
$ dpkg -L sysvinit-utils | grep bin /usr/bin /usr/bin/last /usr/bin/mesg /usr/sbin /usr/sbin/service /bin /sbin /sbin/killall5 /sbin/sulogin /sbin/fstab-decode /sbin/bootlogd /sbin/startpar /usr/bin/lastb /bin/pidof
La comanda update-rc.d facilita el procés explicat en el punt anterior. Per exemple:
$ sudo update-rc.d -f samba remove
Esborra tots els enllaços de les carpetes /etc/rcx.d que fan referència al servei samba.
o podem afegir el servei Samba a l'arrencada del sistema amb:
$ sudo update-rc.d samba defaults Adding system startup for /etc/init.d/samba ... /etc/rc0.d/K20samba -> ../init.d/samba /etc/rc1.d/K20samba -> ../init.d/samba /etc/rc6.d/K20samba -> ../init.d/samba /etc/rc2.d/S20samba -> ../init.d/samba /etc/rc3.d/S20samba -> ../init.d/samba /etc/rc4.d/S20samba -> ../init.d/samba /etc/rc5.d/S20samba -> ../init.d/samba
Crea enllaços al servei samba en els nivells per defecte. Els nivell per defecte estan indicats al propi fitxer d'inicialització:
$ cat /etc/init.d/samba | more # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6
El paràmetre -d serveix per a fer proves. No executa cap canvi però mostra quins serien aquests canvis.
Podem veure en quins nivells el sistema estarà en execució o apagat. Un altre manera és utilitzar la comanda locate:
# updatedb # locate ntop | grep rc /etc/rc.d/rc5.d/S93ntop /etc/rc.d/rc0.d/K83ntop /etc/rc.d/rc2.d/S93ntop /etc/rc.d/rc1.d/K83ntop /etc/rc.d/rc6.d/K83ntop /etc/rc.d/rc3.d/S93ntop /etc/rc.d/rc4.d/S93ntop /etc/rc.d/init.d/ntop /usr/share/doc/ntop-3.2/FAQarchive /usr/share/ntop/html/marchio_unipi_pant541_144.gif
NOTA: La comanda equivalent en sistema Fedora/red Hat és chkconfig
A Debian/Ubuntu l'ordre es proporcionada pel paquet:
$ whereis update-rc.d update-rc: /usr/sbin/update-rc.d-insserv /usr/sbin/update-rc.d $ dpkg -S /usr/sbin/update-rc.d sysv-rc: /usr/sbin/update-rc.d
NOTA: L'ordre chkconfig està disponible també a Debian/Ubuntu, i es proporcionada pel paquet del mateix nom:
$ whereis chkconfig chkconfig: /sbin/chkconfig /usr/share/man/man8/chkconfig.8.gz $ dpkg -S /sbin/chkconfig chkconfig: /sbin/chkconfig
Segons el manual:
$ man chkconfig
chkconfig --list serveix per activar/desactivar serveis del sistema. També però el pode utilitzar per consultar els serveis del sistema amb:
$ chkconfig --list | more NetworkManager.dpkg-backup 0:off 1:off 2:off 3:off 4:off 5:off 6:off acpi-support 0:off 1:off 2:on 3:on 4:on 5:on 6:off acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off alsa-utils 0:off 1:off 2:off 3:off 4:off 5:off 6:off anacron 0:off 1:off 2:off 3:off 4:off 5:off 6:off ...
Mostra tots els serveis del sistema i en quins nivells d'execució s'executen o s'aturen. POdeu mostrar només un servei indicant en nom del dimoni:
$ chkconfig --list apache2 apache2 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Per exemple per afegir un servei com ntop, primer s'ha d'afegir el servir al control de chkconfig. Per exemple el servei ntop:
# /sbin/chkconfig --add ntop
I després fer que el servei s'executi durant l'arrancada del sistema:
# /sbin/chkconfig ntop on
Ara amb la comanda:
# /sbin/chkconfig --list | grep ntop ntop 0:apagat 1:apagat 2:engegat 3:engegat 4:engegat 5:engegat 6:apagat
Si no volem aplicar els valors per defecte podem indicar en quins nivells cal executar/aturar el dimoni:
$ chkconfig --level 23 ntop on
NOTA: L'exemple està pensat per a sistemes Debian
No està disponible per defecte a Ubuntu.
Segons el manual:
$ man invoke-rc.d
invoke-rc.d - executes System-V style init script actions
Per exemple:
$ sudo invoke-rc.d apache2 start
executa el servidor web apache.
A Debian/Ubuntu el paquet es proporcionat:
$ whereis invoke-rc.d invoke-rc: /usr/sbin/invoke-rc.d $ dpkg -S /usr/sbin/invoke-rc.d sysv-rc: /usr/sbin/invoke-rc.d
NOTA: També està disponible a Ubuntu
Per engegar un servei en sistemes Fedora:
# /sbin/service ntop start
A Ubuntu:
$ sudo /usr/bin/service apache2 start * Starting web server apache2 ... [ OK ]
Recursos:
L'ordre service a Ubuntu es proporcionada pel paquet:
$ whereis service service: /usr/bin/service /usr/sbin/service /usr/share/man/man8/service.8.gz $ dpkg -S /usr/bin/service sysvinit-utils: /usr/bin/service
Per apagar un sistema Linux es pot executar la següent comanda:
$ shutdown -h 0
Aquesta comanda envia el sistema al runlevel 0
Per reiniciar és pot executar...
$ reboot
o
$ shutdown 6
Consulteu /etc/inittab
On ? és el corresponent runlevel.
El fitxer /etc/services conté un llistat amb els serveis més habituals i els ports en els qual corren aquest serveis.
La carpeta /usr/share/doc/sysv-rc conté més documentació sobre SysV a Debian. Podem descomprimir els README amb la comanda:
$ cd /usr/share/doc/sysv-rc $ sudo gunzip README.runlevels
El fitxer més interessant per llegir és:
$ gedit README.runlevels