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