Hace un par de meses, la Fundación Linux anunció la LFCS (Administrador de sistemas certificado por la Fundación Linux), un nuevo y emocionante programa cuyo objetivo es permitir que personas de todos los confines del mundo obtengan la certificación para realizar tareas de administración de sistemas básicas a intermedias en sistemas Linux. Esto incluye la compatibilidad con sistemas y servicios que ya están en ejecución, junto con la búsqueda y el análisis de problemas de primera mano, además de la capacidad de decidir cuándo plantear problemas a los equipos de ingeniería.
El siguiente video describe una breve introducción al programa de certificación de The Linux Foundation.
Esta publicación es la Parte 7 de una serie de 10 tutoriales, aquí, en esta parte, explicaremos cómo administrar el proceso y los servicios de inicio del sistema Linux, que son necesarios para el examen de certificación LFCS.
El proceso de arranque de un sistema Linux consta de varias fases, cada una representada por un componente diferente. El siguiente diagrama resume brevemente el proceso de arranque y muestra todos los componentes principales involucrados.
Cuando presiona el Poder en su máquina, el firmware que está almacenado en un EEPROM chip en la placa base inicializa el CORREO (Poder en la auto prueba) para comprobar el estado de los recursos de hardware del sistema. Cuando el CORREO finaliza, el firmware busca y carga el 1ra etapa cargador de arranque, ubicado en el MBR o en el EFI partición del primer disco disponible y le da el control.
El MBR se encuentra en el primer sector del disco marcado como de arranque en el BIOS ajustes y es 512 bytes de tamaño.
El siguiente comando realiza una copia de seguridad del MBR (en este ejemplo, /dev/sda es el primer disco duro). El archivo resultante, mbr.bkp puede ser útil si la tabla de particiones se daña, por ejemplo, haciendo que el sistema no pueda arrancar.
Por supuesto, para usarlo más tarde si surge la necesidad, necesitaremos guardarlo y almacenarlo en otro lugar (como un USB unidad, por ejemplo). Ese archivo nos ayudará a restaurar el MBR y nos pondrá en marcha una vez más si y solo si no cambiamos el diseño del disco duro mientras tanto.
# dd if = / dev / sda of = mbr.bkp bs = 512 count = 1.
# dd if = mbr.bkp of = / dev / sda bs = 512 count = 1.
Para sistemas que utilizan el EFI/UEFI método, el firmware UEFI lee su configuración para determinar qué aplicación UEFI se iniciará y desde dónde (es decir, en qué disco y partición se encuentra la partición EFI).
A continuación, el 2da etapa cargador de arranque (también conocido como administrador de arranque) se carga y se ejecuta. COMIDA [Bota unificada GRand] es el administrador de arranque más utilizado en Linux. Se puede encontrar una de dos versiones distintas en la mayoría de los sistemas que se utilizan en la actualidad.
Aunque los objetivos de la LFCS examen no solicite explícitamente conocimiento sobre COMIDA internos, si es valiente y puede permitirse estropear su sistema (es posible que desee probarlo primero en una máquina virtual, por si acaso), debe ejecutar.
# update-grub.
Como raíz después de modificar la configuración de GRUB para aplicar los cambios.
Básicamente, COMIDA carga el predeterminado núcleo y el initrd o initramfs imagen. En pocas palabras, initrd o initramfs ayudan a realizar la detección de hardware, la carga del módulo del kernel y el descubrimiento de dispositivos necesarios para montar el sistema de archivos raíz real.
Una vez que el sistema de archivos raíz real está activo, el kernel ejecuta el administrador del sistema y de servicios (en eso o systemd, cuya identificación de proceso o PID es siempre 1) para comenzar el proceso de inicio del espacio de usuario normal para presentar una interfaz de usuario.
Ambas cosas en eso y systemd son demonios (procesos en segundo plano) que administran otros demonios, como el primer servicio en iniciar (durante el arranque) y el último servicio en terminar (durante el apagado).
El concepto de niveles de ejecución en Linux especifica diferentes formas de utilizar un sistema controlando qué servicios se están ejecutando. En otras palabras, un nivel de ejecución controla qué tareas se pueden realizar en el estado de ejecución actual = nivel de ejecución (y cuáles no).
Tradicionalmente, este proceso de inicio se realizaba en base a convenciones que se originaron con Sistema V UNIX, con el sistema pasando ejecutando colecciones de scripts que inician y detienen servicios cuando la máquina ingresa a un nivel de ejecución específico (que, en otras palabras, es un modo diferente de ejecutar el sistema).
Dentro de cada nivel de ejecución, los servicios individuales se pueden configurar para que se ejecuten o para que se apaguen si se están ejecutando. Las últimas versiones de algunas distribuciones importantes se están alejando del Sistema V estándar en favor de un administrador de sistemas y servicios bastante nuevo llamado systemd (que significa demonio del sistema), pero generalmente admite sysv comandos por motivos de compatibilidad. Esto significa que puede ejecutar la mayoría de los sysv init herramientas en una distribución basada en systemd.
Leer también: Por qué "systemd" reemplaza a "init" en Linux
Además de iniciar el proceso del sistema, en eso mira al /etc/inittab archivo para decidir qué nivel de ejecución se debe ingresar.
Nivel de ejecución | Descripción |
0 | Detén el sistema. El nivel de ejecución 0 es un estado de transición especial que se utiliza para apagar el sistema rápidamente. |
1 | También con alias as o S, este nivel de ejecución a veces se denomina modo de mantenimiento. Los servicios, si los hay, se inician en este nivel de ejecución varían según la distribución. Por lo general, se usa para el mantenimiento del sistema de bajo nivel que puede verse afectado por el funcionamiento normal del sistema. |
2 | Multi usuario. En sistemas Debian y derivados, este es el nivel de ejecución predeterminado e incluye, si está disponible, un inicio de sesión gráfico. En los sistemas basados en Red-Hat, este es el modo multiusuario sin conexión en red. |
3 | En los sistemas basados en Red-Hat, este es el modo multiusuario predeterminado, que ejecuta todo excepto el entorno gráfico. Este nivel de ejecución y los niveles 4 y 5 generalmente no se usan en sistemas basados en Debian. |
4 | Por lo general, no se utiliza de forma predeterminada y, por lo tanto, está disponible para personalización. |
5 | En sistemas basados en Red-Hat, modo multiusuario completo con inicio de sesión GUI. Este nivel de ejecución es como el nivel 3, pero con un inicio de sesión GUI disponible. |
6 | Reinicie el sistema. |
Para cambiar entre niveles de ejecución, simplemente podemos emitir un cambio de nivel de ejecución usando el en eso comando: init norte (donde N es uno de los niveles de ejecución enumerados anteriormente). Tenga en cuenta que esta no es la forma recomendada de llevar un sistema en ejecución a un nivel de ejecución diferente porque no advierte a los usuarios que ya han iniciado sesión (lo que hace que pierdan trabajo y que los procesos finalicen) anormalmente).
En cambio, el apagar El comando debe usarse para reiniciar el sistema (que primero envía un mensaje de advertencia a todos los usuarios registrados y bloquea cualquier otro inicio de sesión; luego envía una señal a init para que cambie los niveles de ejecución); sin embargo, el nivel de ejecución predeterminado (en el que se iniciará el sistema) debe editarse en el /etc/inittab archivo primero.
Por esa razón, siga estos pasos para cambiar correctamente entre los niveles de ejecución. Como root, busque la siguiente línea en /etc/inittab.
id: 2: initdefault:
y cambia el numero 2 para el nivel de ejecución deseado con su editor de texto preferido, como vim (descrito en Cómo usar el editor vi / vim en Linux - Parte 2 de esta serie).
A continuación, ejecute como root.
# shutdown -r ahora.
Ese último El comando reiniciará el sistema, lo que hará que se inicie en el nivel de ejecución especificado durante el próximo inicio, y ejecutará los scripts ubicados en el /etc/rc[runlevel].d directorio para decidir qué servicios deben iniciarse y cuáles no. Por ejemplo, para el nivel de ejecución 2 en el siguiente sistema.
Para habilitar o deshabilitar los servicios del sistema en el arranque, usaremos comando chkconfig en CentOS / openSUSE y sysv-rc-conf en Debian y derivados. Esta herramienta también puede mostrarnos cuál es el estado preconfigurado de un servicio para un nivel de ejecución en particular.
Leer también: Cómo detener y deshabilitar servicios no deseados en Linux
Listado de la configuración de nivel de ejecución para un servicio.
# chkconfig --list [nombre del servicio] # chkconfig --list postfix. # chkconfig --list mysqld.
En la imagen de arriba podemos ver que sufijo está configurado para iniciarse cuando el sistema entra en niveles de ejecución 2 mediante 5, mientras que mysqld se ejecutará de forma predeterminada para los niveles de ejecución 2 mediante 4. Ahora suponga que este no es el comportamiento esperado.
Por ejemplo, necesitamos encender mysqld para nivel de ejecución 5 también, y desactive postfix para los niveles de ejecución 4 y 5. Esto es lo que haríamos en cada caso (ejecute los siguientes comandos como root).
# chkconfig --level [level (s)] service on. # chkconfig - nivel 5 mysqld activado.
# chkconfig --level [nivel (s)] servicio desactivado. # chkconfig - postfix de nivel 45 desactivado.
Ahora realizaremos tareas similares en un Basado en Debian sistema usando sysv-rc-conf.
Configurar un servicio para que se inicie automáticamente en un nivel de ejecución específico y evitar que se inicie en todos los demás.
1. Usemos el siguiente comando para ver cuáles son los niveles de ejecución donde mdadm está configurado para comenzar.
# ls -l /etc/rc[0-6].d | grep -E 'rc [0-6] | mdadm'
2. Usaremos sysv-rc-conf para evitar que mdadm se inicie en todos los niveles de ejecución excepto 2. Simplemente marque o desmarque (con la barra espaciadora) como desee (puede moverse hacia arriba, abajo, izquierda y derecha con las teclas de flecha).
# sysv-rc-conf.
Entonces presione q abandonar.
3. Reiniciaremos el sistema y ejecutaremos nuevamente el comando desde PASO 1.
# ls -l /etc/rc[0-6].d | grep -E 'rc [0-6] | mdadm'
En la imagen de arriba podemos ver que mdadm está configurado para iniciarse solo en el nivel de ejecución 2.
systemd es otro administrador de servicios y sistemas que está siendo adoptado por varias distribuciones importantes de Linux. Su objetivo es permitir que se realice más procesamiento en paralelo durante el inicio del sistema (a diferencia de sysvinit, que siempre tiende a ser más lento porque inicia los procesos uno a la vez, comprueba si uno depende de otro, y espera a que se lancen los demonios para que puedan iniciarse más servicios) y para que sirva como una gestión dinámica de recursos para un sistema.
Por lo tanto, los servicios se inician cuando se necesitan (para evitar consumir recursos del sistema) en lugar de iniciarse sin una razón sólida durante el inicio.
Ver el estado de todos los procesos que se ejecutan en su sistema, tanto systemd nativo y SysV services, ejecute el siguiente comando.
# systemctl.
El CARGA columna muestra si la definición de la unidad (consulte la UNIDAD columna, que muestra el servicio o cualquier cosa mantenida por systemd) se cargó correctamente, mientras que el ACTIVO y SUB las columnas muestran el estado actual de dicha unidad.
Cuando el ACTIVO La columna indica que el estado de una unidad no es activo, podemos verificar qué sucedió usando.
# systemctl status [unidad]
Por ejemplo, en la imagen de arriba, media-samba.mount está en estado fallido. Corramos.
# systemctl status media-samba.mount.
Podemos ver eso media-samba.mount falló porque el proceso de montaje en el host dev1 no pudo encontrar el recurso compartido de red en //192.168.0.10/gacanepa.
Una vez que la red comparte //192.168.0.10/gacanepa esté disponible, intentemos iniciar, luego detener y finalmente reiniciar la unidad media-samba.mount. Después de realizar cada acción, ejecutemos systemctl status media-samba.mount para verificar su estado.
# systemctl inicia media-samba.mount. # systemctl status media-samba.mount. # systemctl detiene media-samba.mount. # systemctl reinicia media-samba.mount. # systemctl status media-samba.mount.
Bajo systemd puede habilitar o deshabilitar un servicio cuando se inicia.
# systemctl habilitar [servicio] # habilitar un servicio # systemctl deshabilitar [servicio] # evitar que un servicio se inicie en el arranque.
El proceso de habilitar o deshabilitar un servicio para que se inicie automáticamente en el arranque consiste en agregar o eliminar enlaces simbólicos en el /etc/systemd/system/multi-user.target.wants directorio.
Alternativamente, puede averiguar el estado actual de un servicio (habilitado o deshabilitado) con el comando.
# systemctl está habilitado [servicio]
Por ejemplo,
# systemctl postfix.service está habilitado.
Además, puede reiniciar o apagar el sistema con.
# systemctl reiniciar. # systemctl shutdown.
Advenedizo es un reemplazo basado en eventos para el /sbin/init daemon y nació de la necesidad de iniciar servicios solo, cuando son necesarios (también supervisándolos mientras se están ejecutando) y manejando eventos a medida que ocurren, superando así el clásico sysvinit basado en dependencias sistema.
Se desarrolló originalmente para la distribución de Ubuntu, pero se usa en Red Hat Enterprise Linux. 6.0. Aunque estaba destinado a ser adecuado para su implementación en todas las distribuciones de Linux como reemplazo por sysvinit, con el tiempo fue eclipsado por systemd. El 14 de febrero de 2014, Mark Shuttleworth (fundador de Canonical Ltd.) anunció que las futuras versiones de Ubuntu usarían systemd como el demonio init predeterminado.
Porque el SysV La secuencia de comandos de inicio para el sistema ha sido tan común durante tanto tiempo que una gran cantidad de paquetes de software incluyen secuencias de comandos de inicio de SysV. Para acomodar dichos paquetes, Upstart proporciona un modo de compatibilidad: ejecuta scripts de inicio de SysV en las ubicaciones habituales (/etc/rc.d/rc?.d, /etc/init.d/rc?.d, /etc/rc?.d, o una ubicación similar). Por lo tanto, si instalamos un paquete que aún no incluye un script de configuración Upstart, aún debería iniciarse de la forma habitual.
Además, si hemos instalado utilidades como chkconfig, debería poder usarlos para administrar sus servicios basados en SysV tal como lo haríamos en los sistemas basados en sysvinit.
Los scripts Upstart también admiten el inicio o la detención de servicios basados en una variedad más amplia de acciones que los scripts de inicio SysV; por ejemplo, Upstart puede lanzar un servicio siempre que se conecte un dispositivo de hardware en particular.
Un sistema que utiliza Upstart y sus scripts nativos reemplaza exclusivamente el /etc/inittab archivo y el nivel de ejecución específico SysV directorios de secuencias de comandos de inicio con .conf guiones en el /etc/init directorio.
Estas * .conf Los guiones (también conocidos como definiciones de trabajo) generalmente consisten en lo siguiente:
Por ejemplo,
# Mi servicio de prueba - Descripción de la demostración del script Upstart "Aquí va la descripción del" autor "de 'Mi servicio de prueba'" Dave Null <[correo electrónico protegido]>" # Estrofas # # Las estrofas definen cuándo y cómo se inicia y se detiene un proceso. # Vea una lista de estrofas aquí: http://upstart.ubuntu.com/wiki/Stanzas#respawn. # Cuándo iniciar el servicio. comenzar en el nivel de ejecución [2345] # Cuándo detener el servicio. detener en el nivel de ejecución [016] # Reiniciar automáticamente el proceso en caso de falla. reaparecer. # Especifique el directorio de trabajo. chdir / home / dave / myfiles. # Especifique el proceso / comando (agregue argumentos si es necesario) para ejecutar. exec bash backup.sh arg1 arg2.
Para aplicar los cambios, deberá decirle a advenedizo que vuelva a cargar su configuración.
# initctl reload-configuration.
Luego comience su trabajo escribiendo el siguiente comando.
$ sudo start yourjobname.
Donde yourjobname es el nombre del trabajo que se agregó anteriormente con el yourjobname.conf texto.
Una guía de referencia más completa y detallada para Upstart está disponible en el sitio web del proyecto en el menú "Libro de cocina”.
Es necesario conocer el proceso de arranque de Linux para ayudarle con las tareas de resolución de problemas, así como para adaptar el rendimiento de la computadora y los servicios en ejecución a sus necesidades.
En este artículo hemos analizado lo que sucede desde el momento en que pulsas el Poder cambie para encender la máquina hasta que obtenga una interfaz de usuario completamente operativa. Espero que hayas aprendido a leerlo tanto como yo mientras lo montaba. No dude en dejar sus comentarios o preguntas a continuación. ¡Siempre esperamos tener noticias de nuestros lectores!