Preguntas sobre el sistema init y los niveles de ejecución del kernel

Un saludo a todos. Estoy leyendo Linux Command Line and Shell Scripting Bible de Christine Richard Blum y tengo algunas dudas. Voy a contextualizar antes de hacer las preguntas.

El libro indica que el kernel tiene cuatro funciones principales, donde una de ellas es la gestión de programas de software. En el ejercicio de dicha función, el kernel corre el primer proceso, llamado init, en la memoria virtual y a partir de este inician los demás. El sistema init utiliza niveles de ejecución (runlevels), los cuales son capaces ejecutar solo ciertos tipos de procesos y pueden observarse en el archivo /etc/inittabs.

Mis consultas:

  1. Tenía entendido que la memoria virtual es un complemento importante que ayuda a la RAM a manejar más datos de los que puede manipular, y evita que el SO colapse; pero si es necesaria también para arrancar el kernel, entonces es indispensable. ¿Es correcto?

  2. En el libro se menciona que los niveles de ejecución son cinco, pero tras buscar en Wikipedia, YT y blogs me entero de que son 7.

Resumen

Creo entender casi todos, pero el nivel 4 dice “no usado” y quería saber porqué. Si no tiene función, ¿cuál es la razón de que exista?

  1. ¿Los malwares que explotan vulnerabilidades del kernel atacan esta única función? ¿lo hacen agregando instrucciones en el “inittabs”?

Gracias por el tiempo que puedan darme.

La memoria virtual no es necesaria, y dependiendo de bajo que circunstancias, su uso puede llegar a ser contraproducente. Y en dado caso, no impide que el SO colapse, simplemente es una extensión de la RAM pero más lenta y que se usa para datos recurrentes pero no tanto.

La numeración en los niveles de ejecución es más por una convención, siendo el 4, como dice su descripción, es para ejecutar acciones definidas por el usuario, una especie de arranque personalizado, esa es su función.

Para las vulnerabilidades del kernel, la respuesta es no, para empezar la mayoria de distribuciones que usan el kernel Linux usan systemd, un sistema que entre otras cosas, abarca tambien los niveles de ejecución, y que no usa el directorio /etc/inittabs a menos que se configure para que sea así. Hasta donde se, ese directorio lo usan las distros que usan SysVinit como sistema de inicio.
Otras opciones para un ataque al kernel pueden ser agregando modulos, demonios o reemplazando binarios por otros con codigo malicioso, y más mañas, pero estas son algunas de las obvias.

2 Me gusta

Gracias por la aclaración!

Nunca mejor explicado.