Table of Contents
LFCS: Gestión de procesos y servicios de inicio del sistema (SysVinit, Systemd y Upstart)-Parte 7
Hace un par de meses, Linux Foundation anunció la certificación LFCS. ( Linux Foundation Certified Sysadmin. , un nuevo y emocionante programa cuyo objetivo es permitir a personas de todos los ámbitos el mundo para obtener la certificación en la realización de 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.
Administrador de sistemas certificado por la Fundación Linux-Parte 7
El siguiente video describe una breve introducción al Programa de certificación de la Fundación Linux.
Esta publicación es la Parte 7 de una serie de 10 tutoriales, aquí en esta parte, explicaremos cómo administrar los servicios y procesos de inicio del sistema Linux, que son necesarios para t El examen de certificación LFCS.
Gestión del proceso de inicio de Linux
El proceso de inicio 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.
Proceso de arranque de Linux
Cuando presione el botón Encendido en su máquina, el firmware que está almacenado en un chip EEPROM en la placa base inicializa el POST ( Encendido-On Self Test ) para comprobar el estado de los recursos de hardware del sistema. Una vez finalizada la POST , el firmware busca y carga el cargador de arranque de la 1ª etapa , que se encuentra en el MBR o en la EFI. partición del primer disco disponible y le da el control.
Método MBR freestar.config.enabled_slots.push
El MBR se encuentra en el primer sector del disco marcado como de arranque en la configuración del BIOS y tiene un tamaño de 512 bytes.
- Primeros 446 bytes : el cargador de arranque contiene tanto el código ejecutable como el texto del mensaje de error.
- Siguientes 64 bytes : La tabla de particiones contiene un registro para cada una de las cuatro particiones (primaria o extendida). Entre otras cosas, cada registro indica el estado (activo/inactivo), el tamaño y los sectores de inicio/fin de cada partición.
- Últimos 2 bytes : El número mágico sirve como una verificación de validación del MBR.
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, tendremos que guardarlo y almacenarlo en otro lugar (como una unidad USB , 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.
Copia de seguridad de MBR # dd if =/dev/sda of = mbr.bkp bs = 512 count = 1
Copia de seguridad de MBR en Linux Restaurando MBR # dd if = mbr.bkp of =/dev/sda bs = 512 count = 1
Restaurar MBR en Linux Método EFI/UEFI
Para sistemas que utilizan EFI / UEFI , 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, Se carga y ejecuta el cargador de arranque de segunda etapa (también conocido como administrador de arranque). GRUB [ GRand Unified Boot ] 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.
- Archivo de configuración heredado de GRUB :/boot/grub/menu.lst (distribuciones más antiguas, no compatibles por firmwares EFI/UEFI).
- Archivo de configuración GRUB2 : muy probablemente,/etc/default/grub.
Aunque los objetivos de el examen LFCS no solicita explícitamente conocimientos sobre los aspectos internos de GRUB , si es valiente y puede permitirse estropear su sistema (es posible que desee probarlo primero en una máquina, por si acaso), debe ejecutar.
# update-grub
Como root después de modificar la configuración de GRUB para aplicar los cambios.
Básicamente, GRUB carga el kernel predeterminado y la imagen initrd o initramfs . 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 de sistemas y servicios ( init o systemd , cuya identificación de proceso o PID es siempre 1) para comenzar el proceso de inicio normal en el espacio de usuario para presentar una interfaz de usuario.
Tanto init como 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).
Systemd e Init
Inicio de servicios (SysVinit)
El concepto de niveles de ejecución en Linux especifica diferentes formas de usar 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 según las convenciones que se originaban con System V UNIX , con el sistema pasando la ejecución de 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 de las principales distribuciones se están alejando del estándar System V en favor de un administrador de sistema y servicio bastante nuevo llamado systemd (que significa demonio del sistema), pero generalmente admite comandos sysv por motivos de compatibilidad. Esto significa que puede ejecutar la mayoría de las conocidas herramientas de inicio sysv en una distribución basada en systemd.
Lea también : Por qué ‘systemd’ reemplaza a ‘init’ en Linux
Además de iniciar el proceso del sistema, init busca el archivo /etc/inittab para decidir qué nivel de ejecución se debe ingresar.
Nivel de ejecución Descripción 0 Detenga 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 multiusuario. 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 Normalmente, 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 comando init : init N (donde N es uno de los niveles de ejecución listados arriba). 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 de forma anormal).
En su lugar, el comando shutdown 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 indica a init que cambie los niveles de ejecución); sin embargo, el nivel de ejecución predeterminado (en el que se iniciará el sistema) debe editarse primero en el archivo /etc/inittab .
Por esa razón, siga estos pasos para cambiar correctamente entre niveles de ejecución, como root, busque la siguiente línea en /etc/inittab .
id: 2: initdefault:
y cambie el número 2 por 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 now
Ese último comando reiniciará el sistema, haciendo que se inicie en el nivel de ejecución especificado durante el próximo arranque, y ejecutará los scripts ubicados en /etc/rc [ runlevel] .d para decidir qué servicios deben iniciarse y cuáles no. Por ejemplo, para el nivel de ejecución 2 en el siguiente sistema.
Cambiar niveles de ejecución en Linux Manage Services usando chkconfig
Para habilitar o deshabilitar los servicios del sistema en el arranque, usaremos el 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.
Lea también : Cómo detener y deshabilitar servicios no deseados en Linux
Listar la configuración de nivel de ejecución para un servicio.
# chkconfig–list [nombre del servicio] # chkconfig–list postfix # chkconfig–list mysqld
Listado de configuración de nivel de ejecución
En la imagen de arriba podemos ver que sufijo está configurado para comenzar cuando el sistema ingresa a los niveles de ejecución 2 a 5 , mientras que mysqld se ejecutará de forma predeterminada para los niveles de ejecución 2 a 4 . Ahora suponga que este no es el comportamiento esperado.
Por ejemplo, también necesitamos activar mysqld para el nivel de ejecución 5 y desactivar postfix para los niveles de ejecución 4 y 5. Esto es lo que haríamos en cada caso (ejecutar los siguientes comandos como root).
Habilitar un servicio para un nivel de ejecución particular # chkconfig–level [nivel (s)] servicio en # chkconfig–level 5 mysqld on Deshabilitar un servicio para niveles de ejecución particulares # chkconfig–level [nivel (s)] servicio desactivado # chkconfig–level 45 postfix off
Habilitar Deshabilitar Servicios
Ahora realizaremos tareas similares en un sistema basado en Debian usando sysv-rc-conf .
Administrar Servicios 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 iniciarse.
# ls-l/etc/rc[0-6].d | grep-E ‘rc [0-6] | mdadm’
Comprobar Runlev el del Servicio en ejecución
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
SysV Runlevel Config
Luego presione q para salir.
3.. Reiniciaremos el sistema y ejecutaremos nuevamente el comando del PASO 1 .
Iniciar o detener servicios
Una vez que el recurso compartido de red //192.168.0.10/gacanepa esté disponible, intentemos comenzar, luego detener y finalmente reiniciar la unidad media-samba.mount . Después de realizar cada acción, ejecute systemctl status media-samba.mount para verificar su estado.
# systemctl start media-samba.mount # systemctl status media-samba.mount # systemctl stop media-samba.mount # systemctl reiniciar media-samba.mount # systemctl status media-samba.mount
Iniciar servicios de detención Habilitar o deshabilitar un servicio para que se inicie durante boot
En systemd puede habilitar o deshabilitar un servicio cuando arranca.
# systemctl habilitar [servicio] # habilitar un servicio # systemctl deshabilitar [servicio] # evitar que se inicie un servicio en el arranque
El proceso de habilitar o deshabilitar un servicio para que se inicie automáticamente al arrancar consiste en agregar o eliminar enlaces simbólicos en el directorio /etc/systemd/system/multi-user.target.wants .
Habilitación de servicios de inhabilitación
Alternativamente, puede encontrar sacar el estado actual de un servicio (habilitado o deshabilitado) con el comando.
# systemctl is-enabled [service]
Por ejemplo,
# systemctl is-enabled postfix.service
Además, puedes reiniciar o apagar el sistema con.
# systemctl reboot # systemctl shutdown
Upstart
Upstart es un reemplazo basado en eventos para /sbin/init daemon y nació de la necesidad de iniciar servicios solo, cuando se necesitan (también supervisarlos mientras se ejecutan) y manejar los eventos a medida que ocurren, superando así el sistema clásico sysvinit basado en dependencias.
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 de 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 de inicio predeterminado.
Debido a que el script de inicio SysV para system ha sido tan común durante tanto tiempo que una gran cantidad de paquetes de software incluyen scripts 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, debería iniciarse de la forma habitual.
Además, si hemos instalado utilidades como chkconfig, debería poder hacerlo utilícelos para administrar sus servicios basados en SysV tal como lo haríamos en 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.