DSL Boot Process-es
From DSL Wiki
[Volver a la Pagina principal] [In other languajes: english]
Al arrancar desde un Live CD el proceso de carga es el siguiente:
Contents |
isolinux/syslinux
EL Live CD de DSL esta disponible en ambas versiones: isolinux y syslinux. Ambos son gestores de arranque Linux que se pueden ejecutar desde un CD. Piden al usuario codigos de arranque, cargan el kernel (nucleo) de DSL y el disco RAM inicial en la memoria y luego inician el kernel DSL.
Si empleas la version syslinux, simplemente edita /cdrom/syslinux.cfg para cambiar tus parametros por defecto, el tiempo limite por defecto para la seleccion default selection timeout (el valor esta expresado en decimas de segundo), y el texto del menu de inicio.
Linuxrc
Una vez que el kernel ha cargado, el disco RAM inicial se monta como sistema de archivos de root y se ejecuta el script /linuxrc. /linuxrc hace lo siguiente:
- Busca la imagen comprimida de /KNOPPIX/KNOPPIX en todas l@s discos/particiones disponibles. Una vez encontrada la particion que contiene esta imagen se monta en /cdrom. La seccion implicada es:
# Now that the right SCSI driver is (hopefully) loaded, try to find CDROM
DEVICES="/dev/hd?"
test -n "$FOUND_SCSI" -a -z "$NOCD" && DEVICES="/dev/scd? /dev/scd?? $DEVICES"
# New: Also try parallel port CD-Roms [for Mike].
DEVICES="$DEVICES /dev/pcd?"
# New: also check HD partitions for a KNOPPIX/KNOPPIX image
test -n "$FOUND_SCSI" -a -z "$NOSCSI" && DEVICES="$DEVICES /dev/sd?[1-9] /dev/sd?[1-9][0-9]"
DEVICES="$DEVICES /dev/hd?[1-9] /dev/hd?[1-9][0-9]"
case "$CMDLINE" in *fromhd=/dev/*) DEVICES="$fromhd"; ;; esac
for i in $DEVICES
do
echo -n "${CRE}${BLUE}Looking for CDROM in: ${MAGENTA}$i${NORMAL} "
if mountit $i /cdrom "-o ro" >/dev/null 2>&1
then
if test -f /cdrom/$KNOPPIX_DIR/$KNOPPIX_NAME
then
echo -n "${CRE} ${GREEN}Accessing DSL image at ${MAGENTA}$i${GREEN}...${NORMAL}"
FOUND_KNOPPIX="$i"
break
fi
umount /cdrom
fi
done
- Carga el modulo de nucleo CLOOP y monta el sistema de archivos comprimido KNOPPIX como /KNOPPIX:
mount_knoppix()
{
if test -n "$FOUND_KNOPPIX" -a -f $1/$KNOPPIX_DIR/$KNOPPIX_NAME; then
# DEBUG
# echo "6" > /proc/sys/kernel/printk
$INSMOD -f /modules/cloop.o file=$1/$KNOPPIX_DIR/$KNOPPIX_NAME
mountit /dev/cloop /KNOPPIX "-o ro" || FOUND_KNOPPIX=""
fi
}
mount_knoppix /cdrom
- En este punto, los directorios /bin,/boot,/opt,/lib,/usr son enlaces (symlinks) a los directorios correspondientes dentro de /KNOPPIX. Se configura un enlace similar /sbin y una serie de archivos se copian de /KNOPPIX al sistema de archivos de root. Un disco RAM se monta en /ramdisk y se le enlazan /var y /home.
- Como todos los directorios necesarios (/bin,/boot,/opt,/lib,/usr,/sbin,/home,/var,/etc,/tmp) estan populados (rellenos) se llama ahora al proceso init real.
Init process
El proceso init se ejecuta a traves de todos los scripts de /etc/rcS.d y /etc/rc5.d (el nivel de ejecucion por defecto es runlevel 5).
knoppix-autoconfig
/etc/init.d/knoppix-autoconfig es el primer script que ejecuta el proceso init. Se establecen las configuraciones regionales (zona horaria, mapeo del teclado, etc). Trata de autodetectar el hardware disponible y cargar los modulos apropriados y configurar la red empleando DHCP. Finalmente recorre las particiones disponibles para crear un fstab valido.
dsl-config
/etc/init.d/dsl-config controla la configuracion especifica de DSL. Crea un enlace desde /opt al disco RAM para permitirle la escritura, configura /home/dsl usando /etc/skel como plantilla, carga las extensiones DSL y finalmente restaura el archivo de copia de seguridad (si existe). Tambien comprueba una serie codigos de arranque.
bootlocal.sh
/opt/bootlocal.sh se ejecuta despues de dsl-config. Como este script reside en una parte grabable del sistema de archivos (porque /opt esta enlazado a ramdisk/opt) es posible incluirlo al pedir una copia de seguridad de tus configuraciones. Por tanto se puede emplear para añadir tus propios comandos de arranque personalizados.
Ingresar en el sistema
El /etc/inittab especifica que el usuario root debe ingresarse automaticamente
1:12345:respawn:/bin/bash -login >/dev/tty1 2>&1 </dev/tty1
Si el nivel de ejecucion es igual a 5 (el nivel por defecto) cambia al usuario dsl tal como se especifique en '/.bash_profile:
#!/bin/bash
RUNLEVEL=`runlevel|cut -f2 -d' '`
if [ $RUNLEVEL -eq 5 ]
then
export HOME=/home/dsl
cd $HOME
while [ 1 ]; do
su - dsl
done
fi
El sistema X Windows se inicia tal como se especifique en /home/dsl/.bash_profile (este archivo originariamente reside en /etc/skel y dsl-config lo copia a /home/dsl/).
#!/bin/bash export IRCNICK=DSL SSH=`env | grep SSH_CONNECTION` if [ -z "$SSH" ]; then startx; fi
Finalmente se cargan los programas especificados en /home/dsl/.xinitrc (de nuevo, este archivo reside originariamente en /etc/skel). Por defecto se carga fluxbox y el archivo de ayuda de DSL.
# put X windows programs that you want started here. # Be sure to add at the end of each command the & if egrep -qv noicons /proc/cmdline 2>/dev/null; then enhance &>/dev/null & fi dillo /usr/share/doc/dsl/getting_started.html &>/dev/null & fluxbox
