En circunstancias normales el kernel, una vez que está cargado y ha inicializado
algunos componentes del sistema, intenta cargar un programa llamado init
que finaliza el proceso de arranque del sistema. En la mayoría de los sistemas Linux
este programa se llama Sysvinit, que es precisamente el que vamos a instalar ahora
mismo en nuestro sistema LFS.
MakefileUna vez modificadas estas últimas cuatro líneas, el fichero debería parecerse a:
@if [! -p $(ROOT)/dev/initctl ]; then \ echo "Creating $(ROOT)/dev/initctl" \ rm -f $(ROOT)/dev/initctl; \ mknod -m 600 $(ROOT)/dev/initctl p; fi
make LDFLAGS=-staticmake installPara que Sysvinit funcione debemos crear su fichero de configuración.
Crea el fichero $LFS/etc/inittab de la siguiente forma:
# Begin /etc/inittab id:2:initdefault: si::sysinit:/etc/init.d/rcS ~~:S:wait:/sbin/sulogin l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 z6:6:wait:/sbin/sulogin ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now 1:2345:respawn:/sbin/sulogin # End /etc/inittab
Observa el fichero inittab. Cuando arranquemos el sistema, init arrancará el programa sulogin, el cual preguntará por la contraseña de root. Por esta razón debemos tener por lo menos un fichero passwd presente en el sistema LFS. Utilizaremos los ficheros passwd y group existentes en el sistema actual. Como las contraseñas están encriptadas es preferible copiar el fichero existente en vez de volver a escribirlas todas. Es fácil meter la pata, y de esta forma ahorraremos trabajo más adelante:
/etc/passwd y /etc/group a $LFS/etc/$LFS/etc/passwd y elimina todas las líneas excepto la del usuario root$LFS/etc/group y elimina todas las líneas excepto la del usuario rootCuando sulogin te pregunta la contraseña de root y la introduces, es necesario que se inicie una shell, normalmente bash. Como no hay librería instaladas aún necesitamos enlazar bash de forma estática, como hicimos con sisvinit.
configure --enable-static-linkmakebash a $LFS/bin$LFS/bin/sh con $LFS/bin/bashUna vez que hayas completado esta sección podemos probar a conectarnos al sistema. Aparecerán algunos errores. Son debidos a que init no puede arrancar los scripts de rcS y rc. Instalaremos estos scripts más tarde.
Ten en cuenta que no podrás apagar el sistema con un programa como shutdown. A pesar de que el programa está presente, te dará el error "You don't exist. Go away." El problema es que el programa no puede encontrar el fichero de contraseñas. A pesar de que shutdown está enlazado estáticamente con sus correspondientes librerías sigue dependiendo de la NSS (Name Server Switch, Interruptor del servidor de nombres), que forma parte la librería de GNU C. Está librería será instalada más adelante. NSS indica, en este caso, donde se puede encontrar el fichero passwd.
Por el momento puedes reiniciar el sistema con reboot -f. De esta forma
el sistema no se apaga, sino que se reinicia de inmediato. Como el sistema de ficheros
está montado como sólo lectura no se produce daño alguno al sistema, aunque es posible
que la próxima vez que intentes montarlo recibas un mensaje advirtiéndote de que la
última vez que se desmontó hubo problemas y sería aconsejable ejecutar e2fsck para
asegurar la integridad del sistema de ficheros.