Mini COMO de Slackware initrd by Patrick Volkerding, volkerdi@slackware.com Sat Sep 9 01:15:14 CDT 2006 --------- Traduccion al español por: Jorge Armando Medina. email: jmedina@tuxjm.net Este documento describe como crear e instalar un "initrd, el cual puede ser requerido para usar el kernel 2.6. También ver "man mkinitrd". 1 Que es un initrd? 2 Porque necesito un initrd? 3 Como construyo un initrd? 4 Ahora que he construido un initrd, como lo uso? 1. Que es un initrd? 1. What is an initrd? Initrd viene de "disco en ram inicial" (initial ramdisk). Un ramdisk inicial es un sistema de archivos Linux muy pequeño que es cargado en la RAM y montado cuando el kernel inicia y antes de que el sistema de archivos inicial root sea montado. 3. Porque necesito un initrd? 2. Why do I need an initrd? La razon mas usual para usar un initrd es porque necesitas cargar el modulos de el kernel antes de montar la particion raiz ( / ). Usualmente estos modulos son, requeridos para soportar el sistema de archivos usados para la particion raiz (ext3, reiserfs, xfs), o quizas la controladora a la que el disco duro esta instalado (SCSI, RAID, etc). Escencialmente hay diferentes opciones disponibles en kernels Linux modernos que no es practico tratar de incluir tantos kernels diferentes para tratar de cubrir las necesidades de cada uno. Para eso es mucho mas flexible incluir un kernel generico y un conjunto de modulos de el kernel. El kernel generico 2.6 en Slackware soporta el sistema de archivos ext2 (el cual es usado por el initrd), y tambien soporta la mayoria de controladoras IDE (como lo hace el viejo bare.i). Asi que, si tienes un sistema basado en IDE que usa el sistema de archivos ext2, entonces no necesitas usar un initrd para arrancar. De otra manera, sigue leyendo. 3. Como construyo un initrd? La manera mas facil de hacer un initrd es usar el script incluido mkinitrd en el paquete mkinitrd de Slackware. Avanzaremos a traves de el proceso de actualizar a el kernel Linux 2.6.17.13 usando el paquete encontrado en el directorio extra/linux-2.6.17.13/ en Slackware. Primero, asegurate que los paquetes de kernel, modulos de el kernel, y mkinitrd estan instalados ( los numeros de la version actual puede que sean un poco diferentes, asi que esto es solo un ejemplo): installpkg kernel-generic-2.6.17.13-i486-1.tgz installpkg kernel-modules-2.6.17.13-i486-1.tgz installpkg mkinitrd-1.0.1-i486-1.tgz Cambiate al directorio /boot: cd /boot Ahora queras ejecutar "mkinitrd". Yo estoy usando reiserfs como mi sistema de archivos raiz, y puesto que es un sistem IDE el modulo reiserfs sera el unico que necesito cargar: mkinitrd -c -k 2.6.17.13 -m reiserfs Esto debera de hacer dos cosas. Primero, Creara un directorio /boot/initrd-tree conteniendo el sistema de archivos de el initrd. Entonces creara un initrd (/boot/initrd.gz) desde ese arbol de directorios. Si quieres, podrias hacer algunos cambios adicionales en /boot/initrd-tree/ y correr mkinitrd nuevamente sin opciones para reconstruir la imagen. Esto es opcional, aunque, y solo los usuarios avanzados necesitaran pensar en eso. Aqui esta otro ejemplo. Construir una imagen initrd usando los modulos de el kernel Linux 2.6.17.13 para un sistema con una particion raiz ext3 en /dev/hdb3. Note que necesitas ambos el modulo jdb y ext3 para usar ext3: mkinitrd -c -k 2.6.17.13 -m jbd:ext3 -f ext3 -r /dev/hdb3 4. Ahora que he construido el initrd, como lo uso? 4. Now that I've built an initrd, how do I use it? Ahora que tienes un initrd (/boot/initrd.gz), queras cargarlo junto con el kernel al inicio de el sistema. Si usas LILO como tu cargador necesitas editar /etc/lilo.conf y agregar una linea para cargar el initrd. Aqui esta seccion de ejemplo de lilo.conf mostrando mo se hace esto. # Linux bootable partition config begins image = /boot/vmlinuz-generic-2.6.17.13 initrd = /boot/initrd.gz root = /dev/hda6 label = Lnx261713 read-only # Linux bootable partition config ends El initrd es cargado por la linea "initrd = /boot/initrd.gz". Solo agrega la linea justo abajo de la linea para la imagen de el kernel que usas. Guarda el archivo, y entonces corre lilo nuevamente ('lilo', en la linea de comandos). Necesitaras correr lilo cada vez que editas lilo.conf o reconstruyes el initrd. Otros arrancadores como syslinux tambien soportan el uso de initrd. Ve la documentacion de esos programas para ver los detalles en su uso con initrd. --------- Diviertete.