Escrito esta:Dijo Jesús "Yo soy la vid verdadera, y mi Padre es el viñador."(Juan 15:1)
El proceso init inicia el sistema en un determinado runlevel
- el runlevel inicial especificado en /etc/inittab
- Runlevel
- determinada configuración software que permite la ejecución de una serio de procesos en la máquina
Los runlevels se identifican por números de 0 a 6
Runlevel | Descripción |
0 | parada del sistema |
1 | modo monousuario; solo root puede entrar |
2, 3, 4, 5 | modos multiusuario |
6 | reiniciar el sistema |
S | también monousuario (usado por scripts) |
La utilización de los runlevels 2-5 varía con la distribución de Linux:
- en Debian los 4 son idénticos: modo multiusuario completo (con entorno de ventanas, si disponible); por defecto se usa el 2
- en RedHat y similares:
- 2: multiusuario sin NFS
- 3: multiusuario completo (sin ventanas)
- 4: no usado
- 5: multiusuario completo (con ventanas)
Es posible cambiar de runlevel en cualquier momento usando el comando telinit o init:
- Formato
telinit [-t SEC] runlevel
- SEC es el número de segundos que esperará init a que un proceso se detenga con un SIGTERM antes de antes de matarlo con un SIGKILL (por defecto, 5)
- Ejemplo: pasa al runlevel 6 en 10 segundos (reinicia la máquina)
telinit -t 10 6
- Es posible hacer que init relea el fichero de configuración /etc/inittab:
telinit q
- podemos saber en que runlevel nos encontramos con el comando runlevel
- runlevel: muestra el runlevel actual y el anterior
# runlevel
N 2
indica que nos encontramos en el nivel 2 y que no hubo nivel anterior
Define como se ejecutan los runlevels
- indica el runlevel por defecto
- indica los scripts a ejecutar en cada runlevel
Formato de las líneas de inittab
identificador:runlevels:acción:proceso
- identificador: nombre asociado a cada línea del fichero generalmente no superior a 4 caracteres
- runlevels: lista de runlevels (todos seguidos) para los cuales esta línea se tendrá en cuenta
- acción: indica de qué forma o bajo qué condiciones se ejecuta el comando del campo siguiente
- proceso: comando que se ejecuta para esta entrada en los runlevels especificados
Algunas de las acciones de init son (para verlas todas ver el manual de inittab)
- respawn: el proceso se reinicia si termina
- wait: init inicia el proceso y espera a que termine para seguir
- once: init inicia el proceso una vez, cuando se entra en el runlevel
- sysinit: el proceso se ejecuta durante el arranque de la sistema
- ctrlaltdel: el proceso se ejecuta si se recibe un CTRL-ALT-DEL
- powerwait: el proceso se ejecuta cuando se acaba la batería
- powerokwait: el proceso se ejecuta cuando se recupera la energía
- powerfailnow: el proceso se ejecuta cuando la batería está casi vacía
Ejemplo de inittab
# Número de runlevel por defecto.
id:2:initdefault:
# Script que se ejecuta siempre en cada inicio
# independientemente del runlevel.
si::sysinit:/etc/init.d/rcS
# Script para cada runlevel
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
# Normalmente no se alcanza, sólo si falla el reinicio
z6:6:respawn:/sbin/sulogin
# Qué hacer si se presiona CTRL-ALT-DEL
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
# Qué hacer si la corriente se va/vuelve
pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop
- el script /etc/init.d/rcS se ejecuta en el arranque
- este script llama a los scripts del directorio /etc/rcS.d
- Por cada runlevel, se ejecuta el script /etc/init.d/rc X
- este script llama a los scripts del directorio /etc/rcX.d
Los ficheros de estos directorio son de la forma:
[K|S]NNServicio
Al entrar en un runlevel se ejecutan todos los ficheros del /etc/rcX.d correspondiente
- los que empiezan por K detienen servicios
- los que empiezan por S los inician
- los scripts se ejecutan por orden alfabético (primero K y después S)
Todos los ficheros son enlaces a los scripts reales, que están en el directorio /etc/init.d
- estos script admiten, al menos, uno de los siguientes parámetros:
- start inicia el servicio
- stop para el servicio
- Ejemplo, para y reinicia los servicios de red:
# /etc/init.d/networking stop
# /etc/init.d/networking start
Si queremos iniciar un nuevo servicio en un determinado runlevel
- colocar el script de inicio en /etc/init.d
- hacer un enlace de nombre SxyServicio en el runlevel
- tener en cuenta posibles dependencias con otros servicios
- hacer un enlace de nombre tipo K en el runlevel en que se quiera pararlo
- un buen número de secuencia es 100-xy (el orden de matar los procesos inverso debe ser al de iniciarlos)
- existen programas que nos facilitan la labor:
- update-rc.d: crea y borra enlaces a los scripts init
- sysv-rc-conf: GUI para consola
- ksysv: entorno gráfico para KDE
Despues de ejecutar los scripts de inicio, init crea un conjunto de terminales virtuales, siguiendo lo que se indica en /etc/inittab
.......
# Lanzar las terminales para el login de los usuarios
# Notar que el la mayoría de los sistemas tty7 es usado por X Window,
# así, para añadir mas getty's se debe saltar tty7
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
- en esta configuración, los runlevels 2 y 3 arrancan 6 terminales y los 4 y 5 sólo 1
- podemos cambiar de tty con Ctrl-Alt-F[1-6]
- el tty7 se utiliza para pasar al entorno de ventanas
- los terminales se lanzan con spawn para que se vuelvan a crear cuando salimos de la sesión
En este momento se puede acceder al sistema:
- al iniciar la sesión en un terminal:
- el proceso tty se convierte en un proceso login que chequea usuario y contraseña
- si se accede con éxito, el proceso login se convierte en un shell
- al salir de la sesión
- el proceso bash muere
- init relanza (respawn) un nuevo tty
hola tengo un problema por querer hacer que funcionara el wifi no se porque razon la canaima no me arranca y me pide un fulano runlevel sera que me pueden ayudar?
ResponderEliminarEsto te puede Ayudar
ResponderEliminarhttp://listas.canaima.softwarelibre.gob.ve/pipermail/soporte/2013-June/009041.html
https://espanol.answers.yahoo.com/question/index?qid=20110427203002AAQZEOq
Mi Correo es: instructor.sk@gmail.com
Puedes Preguntar por ese Medio