Inicial

Componente del sistema UNIX
Versión 7 Unix : listado /etc , mostrando init y rc
Versión 7 Unix: contenido de un script de shell Bourne /etc/rc

En los sistemas operativos basados ​​en Unix , init (abreviatura de initialization ) es el primer proceso que se inicia durante el arranque del sistema operativo. Init es un proceso demonio que continúa ejecutándose hasta que se apaga el sistema. Es el antecesor directo o indirecto de todos los demás procesos y adopta automáticamente todos los procesos huérfanos . Init es iniciado por el núcleo durante el proceso de arranque ; se producirá un pánico del núcleo si el núcleo no puede iniciarlo o si muere por alguna razón. A init se le asigna normalmente el identificador de proceso 1.

En sistemas Unix como System III y System V , el diseño de init ha divergido de la funcionalidad proporcionada por el init en Research Unix y sus derivados BSD . Hasta principios de la década de 2010, [1] [ verificación fallida ] la mayoría de las distribuciones de Linux empleaban un init tradicional que era algo compatible con System V, mientras que algunas distribuciones como Slackware usan scripts de inicio de estilo BSD, y otras como Gentoo tienen sus propias versiones personalizadas.

Desde entonces, se han creado varias implementaciones de init adicionales, que intentan abordar las limitaciones de diseño de las versiones tradicionales. Entre ellas, se incluyen launchd , Service Management Facility , systemd , Runit y OpenRC .

Investigación en estilo Unix/estilo BSD

Research Unix init ejecuta el script de inicialización de shell ubicado en /etc/rc, [2] luego lanza getty en terminales bajo el control de /etc/ttys. [3] No hay niveles de ejecución; el /etc/rcarchivo determina qué programas ejecuta init. La ventaja de este sistema es que es simple y fácil de editar manualmente. Sin embargo, el nuevo software agregado al sistema puede requerir cambios en los archivos existentes que corren el riesgo de producir un sistema que no se pueda iniciar.

BSD init era, antes de 4.3BSD, el mismo que init de Research UNIX; [4] [5] en 4.3BSD , agregó soporte para ejecutar un sistema de ventanas como X en terminales gráficas bajo el control de /etc/ttys. [6] [7] Para eliminar el requisito de editar /etc/rc, las variantes de BSD han admitido durante mucho tiempo un /etc/rc.localarchivo específico del sitio que se ejecuta en un sub-shell cerca del final de la secuencia de arranque.

Con NetBSD 1.5 se introdujo un sistema completamente modular que se adaptó a FreeBSD 5.0 ​​y sus sucesores. Este sistema ejecuta los scripts en el /etc/rc.ddirectorio. A diferencia del orden de los scripts de System V, que se deriva del nombre de archivo de cada script, este sistema utiliza etiquetas de dependencia explícitas ubicadas dentro de cada script. [8] El orden en el que se ejecutan los scripts lo determina la utilidad rcorder en función de los requisitos establecidos en estas etiquetas.

Estilo SysV

sysv-rc-conf , una utilidad TUI que selecciona qué scripts de inicio de estilo SysV se ejecutarán en cada nivel de ejecución

En comparación con sus predecesores, el UNIX System III de AT&T introdujo un nuevo estilo de configuración de inicio del sistema, [9] que sobrevivió (con modificaciones) en el UNIX System V y por lo tanto se denomina "init estilo SysV".

En cualquier momento, un sistema V en ejecución se encuentra en uno de los estados predeterminados, llamados niveles de ejecución . Al menos un nivel de ejecución es el estado operativo normal del sistema; normalmente, otros niveles de ejecución representan el modo de usuario único (utilizado para reparar un sistema defectuoso), el apagado del sistema y varios otros estados. Al cambiar de un nivel de ejecución a otro, se ejecuta un conjunto de scripts por nivel de ejecución, que normalmente montan sistemas de archivos, inician o detienen daemons , inician o detienen el sistema X Window , apagan la máquina, etc.

Niveles de ejecución

Los niveles de ejecución de System V describen determinados estados de una máquina, caracterizados por los procesos y daemons que se ejecutan en cada uno de ellos. En general, hay siete niveles de ejecución, de los cuales tres se consideran "estándar", ya que son esenciales para el funcionamiento de un sistema:

  1. Apagar
  2. Modo de usuario único (también conocido como S o s )
  3. Reiniciar

Aparte de estos estándares, los sistemas Unix y similares tratan los niveles de ejecución de forma algo diferente. El denominador común, el /etc/inittabarchivo, define lo que hace cada nivel de ejecución configurado en un sistema determinado.

Niveles de ejecución predeterminados

Sistema operativoNivel de ejecución predeterminado
AIX2
antiX5
Gentoo Linux3 [10]
HP-UX3 (consola/servidor/multiusuario) o 4 (gráfico)
Linux desde cero3
Software de Slackware Linux3
Solaris / illumos3 [11]
Sistema UNIX V, versiones 3.x y 4.x2
UnixWare 7.x3

En las distribuciones Linux que tienen como valor predeterminado el nivel de ejecución 5 en la tabla de la derecha, el nivel de ejecución 5 invoca un entorno gráfico multiusuario que ejecuta el sistema X Window , normalmente con un administrador de pantalla como GDM o KDM . Sin embargo, los sistemas operativos Solaris e illumos suelen reservar el nivel de ejecución 5 para apagar automáticamente la máquina.

En la mayoría de los sistemas, todos los usuarios pueden comprobar el nivel de ejecución actual con el comando runlevelo who -r. [12] El usuario root normalmente cambia el nivel de ejecución actual ejecutando los comandos telinito init. El /etc/inittabarchivo establece el nivel de ejecución predeterminado con la :initdefault:entrada .

En los sistemas Unix, el cambio de nivel de ejecución se logra iniciando solo los servicios faltantes (ya que cada nivel define solo aquellos que se inician/detienen). [ cita requerida ] Por ejemplo, cambiar un sistema del nivel de ejecución 3 al 4 solo podría iniciar el servidor X local. Al regresar al nivel de ejecución 3, se detendría nuevamente.

Otras implementaciones

Tradicionalmente, una de las principales desventajas de init es que inicia las tareas en serie, esperando a que cada una termine de cargarse antes de pasar a la siguiente. Cuando los procesos de inicio terminan con la entrada/salida (E/S) bloqueada, esto puede provocar demoras prolongadas durante el arranque. Acelerar la E/S, por ejemplo, mediante el uso de SSD, puede acortar las demoras, pero no soluciona la causa raíz.

Se han realizado varios esfuerzos para reemplazar los daemons init tradicionales para abordar este y otros problemas de diseño, incluidos:

  • Scripts de arranque en GoboLinux
  • busybox-init , adecuado para sistemas operativos integrados , utilizado por Alpine Linux , SliTaz 5(Rolling), Tiny Core Linux y VMware ESXi , y utilizado por OpenWrt antes de que fuera reemplazado por procd
  • Dinit, un gestor de servicios y sistema de inicio. [13]
  • Epoch, un sistema de inicio de Linux de un solo subproceso centrado en la simplicidad y la gestión de servicios [14]
  • Initng , un reemplazo completo de init diseñado para iniciar procesos de forma asincrónica
  • launchd , un reemplazo para init en Darwin / macOS / iOS / tvOS a partir de Mac OS X v10.4 (lanza SystemStarter para ejecutar procesos antiguos 'rc.local' y SystemStarter)
  • OpenRC , un generador de procesos que utiliza el init proporcionado por el sistema, al mismo tiempo que proporciona aislamiento de procesos, inicio paralelizado y dependencia de servicios; utilizado por Alpine Linux , Gentoo y sus derivados, y disponible como una opción en Devuan y Artix Linux
  • runit , un reemplazo completo multiplataforma para init con inicio paralelo de servicios, utilizado de manera predeterminada en Void Linux [15]
  • Sun Service Management Facility (SMF), un reemplazo/rediseño completo de init desde cero en illumos / Solaris a partir de Solaris 10, pero lanzado como el único servicio por el init original de estilo System V
  • Shepherd , el gestor de servicios y demonios de GNU que proporciona una inicialización asincrónica basada en dependencias; escrito en Guile Scheme y pensado para ser pirateado de forma interactiva durante el funcionamiento normal del sistema [16]
  • s6, un paquete de software que incluye un sistema de inicio. [17] [18]
  • systemd , un paquete de software, reemplazo completo de init en Linux, que incluye un demonio init, con inicio simultáneo de servicios, administrador de servicios y otras características.
  • SystemStarter , un generador de procesos iniciado por el init de estilo BSD en Mac OS X anterior a Mac OS X v10.4
  • Upstart , un reemplazo completo de init diseñado para iniciar procesos de forma asincrónica. Iniciado por Ubuntu y utilizado por ellos hasta 2014. También se utilizó en Fedora 9, [19] [20] Red Hat Enterprise Linux 6 [21] y ChromeOS de Google . [22]

A partir de febrero de 2019 [actualizar], systemd ha sido adoptado por la mayoría de las principales distribuciones de Linux. [23]

Véase también

Referencias

  1. ^ "Lennart Poettering sobre el tumultuoso ascenso de systemd". The New Stack . 8 de noviembre de 2018. Archivado desde el original el 8 de noviembre de 2018. Consultado el 30 de enero de 2024 .
  2. ^ init(8)  –  Manual del programador de Unix, versión 7
  3. ^ ttys(5)  –  Manual del programador de Unix, versión 7
  4. ^ init(8)  –  Manual del administrador del sistema BSD 4.2
  5. ^ ttys(5)  –  Manual de formatos de archivos 4.2BSD
  6. ^ init(8)  –  Manual del administrador del sistema BSD 4.3
  7. ^ ttys(5)  –  Manual de formatos de archivos 4.3BSD
  8. ^ Andrew Smallshaw (7 de diciembre de 2009). «Scripts de inicio de Unix y Linux, parte 2». Archivado desde el original el 18 de diciembre de 2009. Consultado el 6 de junio de 2011 .
  9. ^ "init(8)". minnie.tuhs.org . Archivado desde el original el 27 de julio de 2021 . Consultado el 12 de septiembre de 2015 .
  10. ^ "Initscripts". Documentación de Gentoo Linux . Gentoo.org. 2014-12-13. Archivado desde el original el 2020-12-03 . Consultado el 2020-12-08 .
  11. ^ "Niveles de ejecución". Administración de Oracle Solaris: tareas comunes . Oracle . Archivado desde el original el 2016-04-10 . Consultado el 2017-11-14 .
  12. ^ "Páginas del manual de UNIX: nivel de ejecución (8)". Unixhelp.ed.ac.uk. 27 de mayo de 1997. Archivado desde el original el 14 de julio de 2014. Consultado el 12 de julio de 2014 .
  13. ^ "GitHub - davmac314/dinit: Monitoreo de servicios / sistema "init"". GitHub . Archivado desde el original el 2021-12-12 . Consultado el 2021-12-12 .
  14. ^ "Página de inicio del sistema Epoch Init". Archivado desde el original el 2 de agosto de 2014. Consultado el 31 de julio de 2014 .
  15. ^ "Página principal de Void Linux". Archivado desde el original el 29 de agosto de 2020. Consultado el 31 de agosto de 2020 .
  16. ^ "El Pastor - Proyecto GNU". Free Software Foundation, Inc. Archivado desde el original el 12 de febrero de 2016. Consultado el 16 de enero de 2016 .
  17. ^ "s6: ¿por qué otra suite de supervisión?". Archivado desde el original el 2021-09-13 . Consultado el 2021-09-13 .
  18. ^ "Sistema de inicialización s6". Archivado desde el original el 13 de septiembre de 2021.
  19. ^ Características aceptadas de Fedora 14, 13 de julio de 2010, archivado desde el original el 27 de marzo de 2022 , consultado el 13 de julio de 2010
  20. ^ "Fedora posterga systemd a F15". Linux Weekly News. 14 de septiembre de 2010. Archivado desde el original el 19 de septiembre de 2010. Consultado el 17 de septiembre de 2010 .
  21. ^ "Implementación". Notas técnicas de Red Hat Enterprise Linux 6 . Red Hat . Archivado desde el original el 29 de agosto de 2018 . Consultado el 31 de diciembre de 2013 .
  22. ^ Arquitectura de software: documentos de diseño de Chromium OS, archivado desde el original el 9 de abril de 2022 , consultado el 25 de enero de 2014
  23. ^ Ver Systemd#Adopción
  • Página de manual de inicio de FreeBSD
  • Un artículo que resume los esquemas de inicio de Unix (2007)
  • Guía de inicio rápido de Solaris Service Management Facility en Wayback Machine (archivada el 31 de diciembre de 2005)
  • Una historia de los sistemas init modernos (1992–2015) Archivado el 11 de octubre de 2015 en Wayback Machine
Obtenido de "https://es.wikipedia.org/w/index.php?title=Init&oldid=1232077874"