¿Quieres mejorar esta pregunta? Actualice la pregunta para que se centre en un solo problema editando esta publicación.
Cerrado hace 4 años.
Mejorar esta pregunta
Estoy interesado en Linux y lo he estado investigando por un tiempo. Acabo de aprender a compilar un kernel de Linux desde el código fuente y arrancarlo con Grub, lo que te lleva al shell del kernel.
Ahora, tan pronto como el kernel se carga en la memoria, busca el init
para cargarlo Mi agenda es abrir un shell (que un usuario normal puede usar, como bash
).
Entonces, ¿cómo puedo traerlo?
¿Necesito configurar init para cargar el shell bash o hay algo que pueda hacer?
Estoy construyendo mi propia distribución y solo necesito que la distribución tenga un shell (bash) y nada más.
Respuesta aceptada:
Mmm. Esto no debería ser complicado de lograr, pero también es muy complejo 🙂
Simplemente puede hacer lo que sugirió Alexander (init=/bin/bash
) y te irá bien.
El proceso init es lo que llama el kernel, e inicia todos de su tierra de usuario. Terminal de inicio de sesión incluido. Si su init solo genera ese terminal bash, está bien. Pero si esa terminal falla o se cierra, se supone que init debe limpiarse. Si algunos de los procesos que inicia desde la terminal fallan, debe limpiarlos. Si mueren, entonces su los niños necesitan un nuevo proceso de padres, será su inicio.
Recomiendo encarecidamente dedicar 10 minutos a leer esto, es una descripción general muy amigable de lo que init
hace:
http://tilde.town/~elly/userland.txt
Entonces te acercarás a entender lo que implica ejecutar tu propio init.
Una parte relevante de ese enlace dice:
Solo hay una cosa que debemos hacer:proporcionar un binario inicial para iniciar en cualquiera de estas rutas:/sbin/init, /etc/init, /bin/init o /bin/sh. Este proceso (init) se ejecuta como pid 1.
El proceso de inicio necesita hacer dos cosas:
-
Nunca salga (si sale init, el kernel entra en pánico)
-
Cosechar procesos zombi
El resto del texto luego implementa un init simple.