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.