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