Linux init Detailed

  

init es uno de los programas indispensables en el funcionamiento del sistema Linux.

El llamado proceso de inicio, que es un proceso de nivel de usuario iniciado por el kernel.

Una vez que el kernel se inicia solo (se ha cargado en la memoria, comienza a ejecutarse y todos los controladores de dispositivos y estructuras de datos se han inicializado, etc.), el proceso de inicio se completa al iniciar un programa de inicio de programa de usuario. Por lo tanto, init es siempre el primer proceso (su número de proceso es siempre 1).

El kernel lo buscará en algunos lugares donde se haya utilizado init en el pasado. Su ubicación correcta (para sistemas Linux) es /sbin /init. Si el núcleo no puede encontrar init, intentará ejecutar /bin /sh. Si la ejecución falla, el sistema no se iniciará.

Primero, lo que es INIT: init es uno de los programas indispensables en la operación del sistema Linux.

El llamado proceso de inicio, que es un proceso de nivel de usuario iniciado por el kernel.

Una vez que el kernel se inicia solo (se ha cargado en la memoria, comienza a ejecutarse y todos los controladores de dispositivos y estructuras de datos se han inicializado, etc.), el proceso de inicio se completa al iniciar un programa de inicio de programa de usuario. Por lo tanto, init es siempre el primer proceso (su número de proceso es siempre 1).

El kernel lo buscará en algunos lugares donde se haya utilizado init en el pasado. Su ubicación correcta (para sistemas Linux) es /sbin /init. Si el núcleo no puede encontrar init, intentará ejecutar /bin /sh. Si la ejecución falla, el sistema no se iniciará.

Segundo, el nivel de ejecución

Entonces, ¿cuál es el nivel de ejecución?

En pocas palabras, el nivel de ejecución es el nivel de funcionalidad que el sistema operativo
está ejecutando actualmente. Este nivel varía de 1 a 6 y tiene diferentes funciones.

Los diferentes niveles de ejecución se definen de la siguiente manera: (Consulte /etc /inittab en Red Hat Linux)

# 0 - Tiempo de inactividad (no establezca initdefault en 0)

# 1 - Modo de usuario único

# 2 - Multiusuario, sin NFS

# 3 - Modo multiusuario completo (nivel de ejecución estándar)

# 4 - No usado

# 5 - X11 (xwindow)

# 6 - Reiniciar (no establezca initdefault en 6)

Estos niveles están en /etc /inittab Especificado en el archivo. Este archivo es el archivo principal que busca el programa de inicio. El primer servicio que se ejecuta es el archivo ubicado en el directorio /etc/rc.d. En la mayoría de las distribuciones de Linux, los scripts de inicio se encuentran en /etc/rc.d/init.d. Estos scripts están conectados al directorio /etc/rc.d/rcn.d con el comando ln.
(El n aquí es el nivel de ejecución 0-6)

En tercer lugar, la configuración del nivel de ejecución

La configuración del nivel de ejecución se realiza en la línea /etc /inittab, como se muestra a continuación:

12: 2: espera: /etc /init.d /rc 2

El primer campo es una etiqueta especificada arbitrariamente;

El segundo campo indica que esta línea se aplica a Ejecute ese nivel (aquí es 2);

El tercer campo indica que al ingresar al nivel de ejecución, init debe ejecutar el comando en el cuarto campo una vez, e init debe esperar a que finalice el comando. El comando /etc/init.d/rc ejecuta las entradas de inicio y detención para obtener cualquier comando necesario para ejecutar el nivel 2.

El comando en el cuarto campo realiza todo cuando se configura el nivel de ejecución. "Misceláneo". Inicia un servicio que aún no se está ejecutando, terminando un servicio que no debería estar ejecutándose dentro del nuevo nivel de ejecución. Dependiendo de la versión de Linux, los comandos específicos utilizados son diferentes, y la configuración del nivel de ejecución también es diferente.

Cuando se inicia init, busca una línea de código en /etc /inittab, que especifica el nivel de ejecución predeterminado:

id: 2: initdefault:

Puede pedir a init que ingrese un nivel de ejecución no predeterminado en el momento del inicio especificando un argumento de línea de comando de " single " or " emergency " para el núcleo. Por ejemplo, la especificación de los parámetros de la línea de comando del kernel puede ser realizada por LILO. De esta manera, puede elegir el modo de usuario único (es decir, ejecutar el nivel 1).

El comando telinit cambia el nivel de ejecución mientras el sistema se está ejecutando. Cuando el nivel de ejecución cambia, init ejecuta el comando apropiado desde /etc /inittab.

Cuarto, configuración especial en /etc /inittab

En /etc /inittab, hay varias características especiales que permiten a init reactivar eventos especiales. Estas características especiales están marcadas con palabras clave especiales en el tercer campo. Por ejemplo:

1. powerwait

Permite que init apague el sistema cuando se apaga la alimentación. La premisa es que hay U P S y un software que supervisa U P S e informa al inicio que se ha cortado la alimentación.

2. ctrlaltdel

Permite a init reiniciar el sistema cuando el usuario presiona C t r l + A l t + D e l en el teclado de la consola. Tenga en cuenta que si el sistema se coloca en un lugar público, el administrador del sistema puede configurar la combinación de teclas C t r l + A l t + D e l para realizar otras acciones, como ignorar.

3. sysinit

El comando que se ejecutará cuando se inicie el sistema. Por ejemplo, este comando borrará /tmp.

Las palabras clave especiales enumeradas anteriormente aún no están completas. Para otras palabras clave y sus detalles de uso, consulte la página de manual de su inittab.

V. Arranque en modo de usuario único

Un nivel de ejecución importante es el modo de usuario único (nivel de ejecución 1), en el que solo un administrador del sistema usa una máquina en particular, y Ejecute los servicios del sistema lo menos posible, incluidos los inicios de sesión. El modo de un solo usuario es necesario para algunas tareas administrativas (como ejecutar fsck en una partición /usr) porque requiere desmontar la partición, pero esto no es posible a menos que se hayan eliminado todos los sistemas de servicio.

Un sistema en ejecución puede ingresar al modo de usuario único utilizando init para solicitar el nivel de ejecución 1. Cuando se inicia el kernel, puede ingresar el nivel de ejecución 1 especificando la palabra clave única o de emergencia en la línea de comando del kernel. El kernel también especifica la línea de comando para init. Init sabe por la palabra clave que no debe usar el nivel de ejecución predeterminado (el método de entrada de línea de comando del kernel está relacionado con la forma en que arranca el sistema).

A veces es necesario iniciar en modo de usuario único para que los usuarios puedan ejecutar fsck manualmente (en archivos dispersos) antes de cargar la partición, o al menos antes de cargar la partición /usr dispersa. Cualquier actividad en el sistema puede hacerlo más fragmentado, por lo que debe ejecutar fsck tanto como sea posible.

Si el fsck automatizado falla al inicio, el script de inicio init entrará automáticamente en el modo de usuario único. Esto se hace para evitar que el sistema utilice un sistema de archivos coherente que f s c k no soluciona automáticamente. Los sistemas de archivos inconsistentes son extremadamente raros y, a menudo, dan como resultado una versión del disco duro inconsistente o experimental del kernel, pero es mejor evitar que suceda.

Debido a consideraciones de seguridad, en un modo de usuario único, un sistema configurado correctamente requerirá que el usuario proporcione una contraseña de root antes de iniciar el script de shell. De lo contrario, simplemente ingresará la línea de código apropiada para LILO e iniciará sesión como root (por supuesto, si /etc /passwd no es coherente debido a problemas con el sistema de archivos, no es adecuado para este principio, para poder lidiar con esto En el caso, siempre está listo para preparar un disco de arranque).

Los diferentes niveles de ejecución tienen diferentes usos y deben establecerse de acuerdo con su propia situación.

Por ejemplo, si se pierde la contraseña de root, puede hacer que la máquina arranque en un estado de usuario único. En el indicador de inicio de lilo, escriba:

init = /bin /sh rw Ponga la máquina en el nivel de ejecución 1 y cuelgue el sistema de archivos raíz como leído y escrito. Omite toda la autenticación del sistema, lo que le permite utilizar el programa passwd para cambiar la contraseña de root y luego iniciar un nuevo nivel de ejecución.

Copyright © Conocimiento de Windows All Rights Reserved