SysVinit (Español)
En los sistemas basados en SysVinit, init es el primer proceso que se ejecuta una vez que se carga el Kernel de Linux. Por defecto, el programa init usado por el kernel es /sbin/init
proveido por systemd-sysvcompat (de forma predeterminada en las instalaciones nuevas, véase systemd) o sysvinitAUR. La palabra init siempre se refiere a sysvinit en este artículo.
inittab es el archivo de configuración inicial que encuentra init en /etc
. Contiene las instrucciones de inicio de los programas y scripts que van a funcionar al iniciar el nivel de ejecución especificado.
Aunque un sistema Arch basado en SysVinit no utiliza init, la mayor parte del trabajo se delega en los #Scripts principales de arranque. Este artículo se centra en init e inittab.
Migración a systemd
- systemd y systemd-sysvcompat son utilizados de forma predeterminada en los nuevos soportes de instalación desde el 2012-10-13. Esta sección está dedicada a las instalaciones de Arch Linux que todavía dependen de sysvinit e initscripts.
- Si se está utilizando Arch Linux en un VPS, consulte la página apropiada.
Consideraciones previas antes de pasarse a systemd
- Para una aproximación al tema son recomendables algunas lecturas acerca de systemd.
- Tenga en cuenta el hecho de que systemd tiene un sistema journal que sustituye a syslog, aunque los dos pueden coexistir. Véase la sección sobre journal.
- Aunque systemd puede reemplazar algunas de las funcionalidades de cron, acpid, o xinetd, no hay necesidad de abandonar el uso de los demonios tradicionales a menos que así lo desee.
- La interacción con los initscripts no está funcionando con systemd. En particular, netcfg-menu no puede ser usado al inicio del sistema.
Proceder a la instalación
- Instale systemd y añada a la línea de órdenes del kernel lo siguiente:
init=/usr/lib/systemd/systemd
- Una vez hecho, puede habilitar los servicios deseados mediente el uso de
systemctl enable <nombre_del_servicio>
(los cuales equivalen aproximadamente a los demonios incluidos en la matrizDAEMONS
con nombres diferentes). - Reinicie el sistema y compruebe que
systemd
está realmente activo mediante la orden siguiente:cat /proc/1/comm
. Esta debería devolver la salida:systemd
. - Asegúrese de que el nombre del equipo está configurado correctamente en systemd:
hostnamectl set-hostname elnombredemiequipo
o/etc/hostname
. - Proceda a eliminar initscripts[enlace roto: package not found] y sysvinitAUR del sistema e instale systemd-sysvcompat.
- Opcionalmente, retire el parámetro
init=/usr/lib/systemd/systemd
en cuanto que ya no es necesario. systemd-sysvcompat proporciona un enlace simbólico a init de systemd cuando sysvinit es usado
Información complementaria
- Se si utiliza
quiet
en los parámetros del kernel, es posible removerlo durante el primer incio de systemd para identificar eventuales problemas durante el arranque.
- No es necesario añadir su usuario a los grupos (
sys
,disk
,lp
,network
,video
,audio
,optical
,storage
,scanner
,power
, etc.) para la mayoría de los casos con systemd. Los grupos pueden, incluso, causar alguna disfuncionalidad. Por ejemplo, el grupo de audio impedirá el cambio rápido de usuarios y permitirá que las aplicaciones bloqueen el software de mezcla. Cada inicio de sesión PAM proporciona una sesión logind, que, durante una sesión local, le dará permisos a través de POSIX ACLs para dispositivos de audio/vídeo, y permitirá ciertas operaciones, como el montaje de discos extraíbles, a través de udisks.
- Consulte el artículo sobre Network Configuration para saber cómo configurar los targets de las conexiones de red.
Descripción de init e inittab
init es siempre un proceso y, aparte de gestionar el espacio de intercambio, es el proceso padre a todos los demás procesos. Usted puede imaginar dónde se encuentra init en la jerarquía de procesos de su sistema con pstree
:
$ pstree -Ap
init(1)-+-acpid(3432) |-crond(3423) |-dbus-daemon(3469) |-gpm(3485) |-mylogin(3536) |-ngetty(3535)---login(3954)---zsh(4043)---pstree(4326) |-polkitd(4033)---{polkitd}(4035) |-syslog-ng(3413)---syslog-ng(3414) `-udevd(643)-+-udevd(3194) `-udevd(3218)
Además de la inicialización normal del sistema (como su nombre indica), init también se encarga de reiniciar, apagar y arrancar en modo de recuperación (single-user mode).
Para apoyar a ésto, inittab contiene grupos con diferentes niveles de ejecución .
Los niveles de ejecución usados por Arch son 0 para detener, 1 (S como alias) para el modo single-user, 3 para el arranque normal (modo multi-usuario), 5 para X y 6 para reiniciar el sistema. Otras distribuciones pueden adoptar otros convenios, pero los significados de 0, 1 y 6 son universales.
Tras la ejecución, init explora inittab y lleva a cabo las acciones oportunas. Una entrada en inittab toma la forma siguiente:
id:runlevels:action:process
Donde id
es un identificador único para la entrada (sólo un nombre, sin efecto real en init), y runlevels
es una cadena de los niveles de ejecución (no incluida). Si el nivel de ejecución de init está indicado en runlevels
, la acción se llevará a cabo action
, ejecutando process
en su caso. Algunas acciones especiales de action
s podrían hacer que init hiciese caso omiso de runlevels
y adoptar un método de ejecución especial. Una explicación más detallada a continuación en la siguiente sección.
Instalación
Cambiar runlevel (nivel de ejecución)
A través del gestor de arranque
Para cambiar el nivel de ejecución (runlevel) al iniciar el sistema, simplemente agregue el nivel de ejecución deseado n
a la línea de configuración del gestor de arranque. Una solución similar a ésto se consigue con inittab. Para arrancar con el nivel de ejecución deseado, agregue su número a los parámetros del Kernel (por ejemplo, 3
para el runlevel 3).
El nivel de ejecución se añade al final, por lo que el kernel sabe el nivel de ejecución que debe iniciar. Para utilizar otro programa de inicio (por ejemplo, systemd), añada init=/bin/systemd
o similar.
Después de arrancar
Después de que el sistema ha arrancado, puede invocar telinit n
para informar a init que cambie el nivel de ejecución a n
. init lee el nivel de ejecución n de inittab y "diffs", cancela la ejecución del runlevel anterior, y permite llevar a cabo acciones que no están presentes en el nivel de ejecución anterior. Los procesos actuales en los dos niveles de ejecución se deja intacto. El procedimiento de cancelación es en realidad un poco complejo, de nuevo, los detalles técnicos se pueden encontrar en la página de init manpage.
init no revisa inittab. Será necesario recurrir a telinit
explícitamente e introducir modificaciones en inittab. El comando telinit q
hace que init re-examine inittab pero no cambia el nivel de ejecución.
inittab
En esta sección se examinan las entradas comunes de inittab, en el mismo orden en que aparecen en el inittab por defecto utilizado por Arch. Después de ver algunos ejemplos le ayudarán a crear su propia entrada de inittab.
/etc/inittab
pruébelo con telinit q
antes de reiniciar, dado que un error de sintaxis pequeño puede evitar que su sistema arranque.Runlevel por defecto
El nivel de ejecución (runlevel) predeterminado es 3. Coméntelo, y descomente la opción que sigue si prefiere arrancar en el nivel 5 (que se utiliza para X comunmente) por defecto:
id:5:initdefault:
Scripts principales de arranque
Se trata de la secuencia de comandos de inicio principal de Arch.
rc::sysinit:/etc/rc.sysinit rs:S1:wait:/etc/rc.single rm:2345:wait:/etc/rc.multi rh:06:wait:/etc/rc.shutdown
Arranque en modalidad de usuario único
A veces, su Kernel puede no arrancar del todo, debido a un disco duro dañado o un sistema de archivos corrupto, ausencia de claves de archivos, etc En este caso, su imagen de inicio puede entrar de forma automática en modo de usuario único, que sólo se permite el acceso como root y utiliza /sbin/sulogin
en lugar de /sbin/login
para controlar el proceso de inicio de sesión. Usted puede entrar en modo de usuario único mediante la adición de la letra S
a la de línea de comandos del kernel en la configuración de GRUB, LILO, o syslinux. Si desea ejecutar algo que no sea sulogin
, especifique ésto:
su:S:wait:/sbin/sulogin -p
Gettys e inicio de sesión
Estas son los elementos básicos que se están ejecutando en sus terminales gettys. La mayoría de las configuraciones por defecto tendrá gettys que se ejecutan en varios ttyS1-6, que hará visualizar en la pantalla el símbolo de login. Véase también openvt, chvt, stty, y ioctl.
c1:234:respawn:/sbin/agetty 9600 tty1 xterm-color c5:5:respawn:/sbin/agetty 57600 tty2 xterm-256color
Ctrl+Alt+Supr
Cuando se presiona la secuencia especial de teclas Ctrl+Alt+Supr
, esta entrada determina la acción a realizar.
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Programas de X
Si usted está interesado en la depuración de errores, puede lanzar cualquier aplicación que utilice desde inittab
. Un programa útil a ejecutar es el gestor de inicio de sesión, que se lanzará cuando el nivel de ejecución es 5, multi-user-x-mode. En el siguiente ejemplo se puede ver cómo empezar SLiM cuando se le coloca el nivel de ejecución 5.
x:5:respawn:/usr/bin/slim >/dev/null 2>&1 #x:5:respawn:/usr/bin/xdm -nodaemon -confi /etc/X11/xdm/archlinux/xdm-config
Scripts Power-Sensing
Init puede comunicarse con el dispositivo UPS y ejecutar procesos basados en el status de UPS. He aquí algunos ejemplos:
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
Solicitud de teclado personalizado
La línea siguiente agrega una función personalizada para cuando una secuencia especial de teclas se pulsa. Usted puede modificar esta secuencia de teclas especial como quiera, siguiendo la sintexis de Ctrl+Alt+Del
.
kb::kbrequest:/usr/bin/wall "Keyboard Request -- edit /etc/inittab to customize"
Lanzar kbrequest
Usted puede activar la secuencia especial de teclas kbrequest mediante el envío de la señal WINCH al proceso init (1) como root (a través de sudo). Con este comando:
kill -WINCH 1
escribiendo mediante wall
en todas las ttys:
Broadcast message from root@askapachehost (console) (Wed Oct 27 14:02:26 2010): Keyboard Request -- edit /etc/inittab to customize
Véase también
- Automatic login to virtual console (Español)
- Disable clearing of boot messages
- Start X at login (Español)
- xinitrc (Español)
- Display manager (Español)
- SLiM