El arranque del sistema operativo en Linux es fundamental ya que pone en marcha toda la estructura del sistema. En Linux, los sistemas de inicialización más comunes son systemd y System V init (SysV init) y a continuación te explicaré cómo funcionan, sus diferencias y por qué systemd ha llegado a dominar en la mayoría de distribuciones de Linux modernas.
El proceso de arranque de nuestro sistema comienza cuando encendemos la computadora y pasa por varias etapas hasta que el sistema operativo está listo para el usuario. Estas etapas son las siguientes:
1. BIOS/UEFI: Realiza una verificación inicial del hardware y carga el gestor de arranque (como GRUB).
2. Gestor de arranque: Selecciona el kernel de Linux y lo carga en la memoria.
3. Kernel: Configura los controladores de hardware y monta el sistema de archivos raíz.
4. Sistema de inicialización: Aquí entra en juego systemd o SysV init, que inicializa todos los servicios y procesos de fondo necesarios.
Init System V es uno de los primeros sistemas de inicialización utilizados en Linux. Se basa en un diseño secuencial, donde los servicios se inician uno por uno en un orden predefinido utilizando scripts.
/etc/rc.d/init.d/
/etc/init.d/
0
: Apagar el sistema.1
: Modo monousuario (útil para tareas de recuperación o mantenimiento).2
: Modo multiusuario (sin servicios de red completos en sistemas basados en Dedian, en RedHat practicamente no tenía uso, era igual al runlevel 3).3
: Modo multiusuario sin interfaz gráfica.4
: Modo multiusuario (sin uso, generalmente usado para personalización).5
: Modo multiusuario con interfaz gráfica.6
: Reiniciar el sistema./etc/systemd/system/
systemctl
.Runlevel (SysV Init) | Target equivalente (systemd) |
---|---|
0 | poweroff.target |
1 | rescue.target |
2 | multi-user.target |
3 | multi-user.target |
4 | multi-user.target |
5 | graphical.target |
6 | reboot.target |
Ahora te mostraré como puedes ejecutar directamente desde la terminal los comandos equivalentes para cambiar el runlevel en SysV init y systemd el clasico runlevel 2,3 y 4 de SysV init cumple la misma función.
Cambiar el runlevel por defecto en SysV init: debes editar con nano, vi o vim el archivo /etc/inittab
y establecer el número de runlevel que requieras id:3:initdefault:
sudo vim /etc/inittab
Cambiar el runlevel temporalmente en SysV init: para cambiar temporalmente ejecuta sudo init [runlevel]
con el numero que requieras.
sudo init 3
Cambiar el target por defecto en Systemd: a diferencia de SysV init con Systemd no debes modificar un archivo, debes ejecutar el comando sudo systemctl set-default [target]
sudo systemctl set-default multi-user.target
Cambiar el target temporalmente en Systemd: para cambiar temporalmente ejecuta sudo systemctl isolate [target]
sudo systemctl isolate multi-user.target
Ten cuidado de establecer el runlevel 0 o el target de poweroff por defecto, ya que el sistema entrará automáticamente en modo de apagado cada vez que se inicie porque el runlevel 0
y el target poweroff.target
están diseñados específicamente para apagar el sistema, si eso ocurre tendrás que interrumpir el proceso de arranque desde el GRUB.