[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

¡Esta es una revisión vieja del documento!


Arranque

Ok, ahora que tiene Slackware instalado en su sistema, debería aprender exactamente, qué controla la secuencia de arranque de su máquina y cómo arreglarla si se arruina de alguna manera. Si usa linux por harto tiempo, tarde o temprano cometerá un error que estropeará su cargador de arranque. Afortunadamente esto no requiere una reinstalación para ser arreglado. Al contrario de muchos otros Sistemas Operativos que esconden los detalles subyacentes de su funcionamiento, Linux (y en particular Slackware) le da un control completo sobre el proceso de arranque. Simplemente, editando un par de archivos de configuración y re-ejecutando el instalador del cargador de arranque, puede, fácil y rápidamente cambiar(o romper) su sistema. Slackware incluso hace fácil el contar con un arranque dual con otros sistemas operativos tales como otras distribuciones Linux o Microsoft Windows

mkinitrd

Antes de ir más lejos, se justifica una rápida discusión acerca del kernel Linux. Slackware Linux, incluye al menos dos (aunque a veces más) kernels diferentes. Aunque estos son compilados desde las mismas fuentes (y por lo tanto son los mismos), no son idénticos. Dependiendo de su arquitectura y la versión de Slackware, el instalador puede haber cargado varios kernels en su sistema. Los hay para sistemas mono-procesador, y para multi-procesador (en Slackware de 32-bits). Antiguamente, había muchos tipos de kernels distintos para ser instalados, con diversos tipos de controladores de disco duro. Lo que es más importante para nuestra discusión, es que hay kernels “huge” y “generic”.

Si observa dentro de su directorio /boot verá los distintos kernels instalados en su sistema.

darkstar:~# ls -1 /boot/vmlinuz*
/boot/vmlinuz-huge-2.6.29.4
/boot/vmlinuz-generic-2.6.29.4

Acá puede notar que hay dos kernels instalados: vmlinuz-huge-2.6.29.4 y vmlinuz-generic-2.6.29.4. Cada versión de Slackware incluye a su vez, diferentes versiones de kernels y en ocasiones con nombres ligeramente distintos, así que no se alarme si lo que ve no corresponde exactamente con lo que se ha listado anteriormente.

Los kernels huge (enormes) son exactamente lo que podría pensar; son enormes, sin embargo, eso NO significa que tienen todos los controladores posibles compilados en si mismos. En vez de eso, estos kernels están hechos para arrancar(y ejecutarse) en cada computador concebible en que Slackware está soportado (puede haber unos pocos donde no arranque/funcione). Contienen soporte para hardware que su máquina no (ni nunca) tendrá, pero eso no debería importarle. Estos kernels son incluidos por varias razones, pero probablemente la más importante es su uso por parte del instalador de Slackware (estos son los kernels que se ejecutan en los discos de instalación)
Si elige dejar que el instalador configure el cargador de arranque por Usted, éste usa estos kernels debido a la gran variedad de hardware que soportan.
En contraste, los kernels generic(genéricos) soportan muy poco hardware sin el uso de módulos externos. Si quiere usar alguno de esos kernels generic, deberá ocupar lo que se denomina initrd el cual es creado usando el programa mkinitrd(8)

Entonces, ¿por qué debería usar un kernel generic? Actualmente el equipo de desarrollo de Slackware recomienda el uso de un kernel generic por una variedad de razones. Tal vez la más obvia es el tamaño. Los kernels huge son aproximadamente el doble de grandes que un kernel generic antes de ser descomprimidos y cargados en memoria. Si está usando una máquina antigua o una con poca cantidad de RAM, podrá apreciar el ahorro que ofrece el generic. Otras razones son algo más difíciles de cuantificar. A veces pueden existir conflictos entre controladores incluidos en el kernel huge y, hablando en términos génerales, el rendimiento de éstos no es tan bueno como un generic. Además, al usar un kernel generic se pueden pasar argumentos especiales a los controladores de hardware de manera separada en vez de que estas opciones sean ingresadas a través de la línea de comandos. Algunas de las herramientas incluidas en Slackware funcionan mejor si el kernel usa algunos controladores como módulos en vez de estar estáticamente compilados. Si tiene problemas entendiendo esto, no se alarme, sólo piense: “huge kernel = bueno, generic kernel = mejor”.

Desafortunadamente, usar un kernel generic no es tan sencillo como usar un kernel huge. Para que arranque el sistema, debe incluir un par de módulos básicos en un initrd.
Los módulos son partes compiladas de código del kernel que pueden ser insertados o removidos en un kernel en ejecución (idealmente usando modprobe(8)). Esto hace que el sistema sea un poco más flexible con el costo de una pequeña complejidad extra. Podría ser más fácil el considerar a los módulos como controladores de dispositivos, al menos para esta sección.
Típicamente, necesitará agregar el módulo para el sistema de archivos que eligió usar para su partición raíz durante el proceso de instalación, y, si ésta está localizada en un disco SCSI o un arreglo RAID, también se deberán agregar esos módulos. Finalmente si está usando RAID por software, encriptación de disco o LVM, se deberá crear un initrd independientemente de si usa un kernel generic o no.

Un initrd es un archivo comprimido cpio(1), por lo que crear uno, no es una tarea simple. Afortunadamente, Slackware incluye una herramienta que facilita este proceso.
mkinitrd. Una discusión completa de mkinitrd está un poco fuera del alcance de esta guía, pero de todas formas se mostrarán sus partes más importantes. Para una explicación más completa, revise el manual o ejecute mkinitrd con el argumento –help

darkstar:~# mkinitrd --help
mkinitrd crea un initial ramdisk (en realidad un archivo initramfs cpio+gzip)
usado para cargar módulos del kernel que son necesarios para montar el sistema de archivos de
la partición raíz, u otros módulos que pudiesen ser necesarios antes de que ésta esté disponible.
Otros binarios pueden ser agregados al initrd y el script es fácil de modificar.  Se creativo :-)
.... muchas más líneas eliminadas....

Cuando use mkinitrd, necesitará contar con un poco de información previa: su partición raíz, el sistema de archivos que ésta usa, cualquier otro controlador de disco duro que se requiera, y si usará o no LVM, RAID por software y/o encriptación de disco. A menos que use algún tipo de controlador SCSI(y que la partición raíz esté localizada en este disco), sólo deberá conocer su partición raíz y el tipo de sistema de archivos de ésta.
Asumiendo que ha arrancado la instalación de Slackware usando un kernel huge, puede encontrar esta información con el comando mount o viendo el contenido de /proc/mounts.

darkstar:~# mount
/dev/sda1 on / type ext4 (rw,barrier=1,data=ordered)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/sda2 on /home type jfs (rw)
tmpfs on /dev/shm type tmpfs (rw)

En el ejemplo provisto, puede ver que la partición raíz está localizada en /dev/sda1 y es de tipo ext4. Si se quiere crear un initrd para este sistema, sólo se debe entregar esta información a mkinitrd.

darkstar:~# mkinitrd -f ext4 -r /dev/sda1

Notese que en la mayoría de los casos, mkinitrd es lo suficientemente listo para determinar esta información por su cuenta, pero nunca está demás especificarlo manualmente. \\Ahora que se ha creado el initrd, hace falta simplemente decirle a LILO dónde encontrarlo. La siguiente sección se encarga de eso.

Buscar todas las opciones de mkinitrd o peor aún, memorizarlas puede ser un verdadero dolor de cabeza, especialmente si prueba constantemente varios kernels. Esto se volvió tedioso para el equipo de desarrollo de Slackware, así que inventaron un archivo simple de configuración mkinitrd.conf(5). Puede encontrar un ejemplo localizado en el directorio /etc/mkinitrd.conf.sample y que puede ser fácilmente modificado para su sistema. El mio es:

darkstar:~# >/prompt>cat /etc/mkinitrd.conf.sample
# See "man mkinitrd.conf" for details on the syntax of this file
#
SOURCE_TREE="/boot/initrd-tree"
CLEAR_TREE="0"
OUTPUT_IMAGE="/boot/initrd.gz"
KERNEL_VERSION="$(uname -r)"
#KEYMAP="us"
MODULE_LIST="ext3:ext4:jfs"
#LUKSDEV="/dev/hda1"
ROOTDEV="/dev/sda1
ROOTFS="ext4"
#RESUMEDEV="/dev/hda2"
#RAID="0"
LVM="1"
#WAIT="1"

Para una descripción completa de cada una de estas líneas y qué es lo que hacen, deberá consultar el manual para mkinitrd.conf.
Copie el archivo de ejemplo a /etc/mkinitrd.conf y edítelo como más le acomode. Una vez que está configurado apropiadamente, sólo deberá ejecutar el comando mkinitrd con el argumento -F. Se construirá e instalará un initrd apropiado sin que tenga que recordar todos esos obscuros argumentos.

Si no está seguro de qué opciones especificar en el archivo de configuración o en la línea de comandos, hay una última alternativa. Slackware incluye una ingeniosa aplicación que indica que opciones son requeridas para el kernel que está ejecutando actualmente /usr/share/mkinitrd/mkinitrd_command_generator.sh. Cuando ejecuta este comando, el resultado es una línea de comando que puede ejecutar y que debería funcionar para su computador pero no está demás revisarla

darkstar:~# /usr/share/mkinitrd/mkinitrd_command_generator.sh
mkinitrd -c -k 2.6.33.4 -f ext3 -r /dev/sda3 -m \
  usbhid:ehci-hcd:uhci-hcd:ext3 -o /boot/initrd.gz

LILO

Dual Booting

Arranque dual con particiones

Dual Booting from Hard Drives

Navegación de secciones

Capítulo previo: Installation

Fuentes

  • Escrito originalmente por: Alan Hicks, Chris Lumens, David Cantrell, Logan Johnson

 es:slackbook:booting ()