Descargar

Compilación del Kernel de Linux (página 2)

Enviado por jaimemontoya


Partes: 1, 2

A continuación hacer la siguiente instalación: # apt-get install initrd-* Need to get 140kB of archives. After unpacking 492kB of additional disk space will be used. Do you want to continue [Y/n]? Y

Aunque la instalación anterior quizá no sea necesaria por haberse hecho ya antes. Con "# apt-get install initrd-*" se busca instalar el initial ramdisk o initrd, que es un sistema de archivos temporal usado por el kernel de Linux durante el inicio del sistema. El * indica que se instalarán todos los paquetes que inician con las letras establecidas antes del asterisco. El código fuente con extensión tar.bz2 que se descargó debe copiarse al directorio /usr/src. Recuérdese que para realizar esta acción deben haber permisos de escritura para el directorio /usr/src, lo cual se puede hacer con "# chmod 777 /usr/src". La dirección completa del código fuente del kernel comprimido será entonces /usr/src/linux-2.6.22.9.tar.bz2. Ahora se creará un directorio de trabajo en el directorio home del usuario (en este caso el nombre de usuario es "jaimemontoya") con el que se está trabajando (se deben asignar permisos de escritura para el directorio en el que se va a escribir), así: # chmod 777 /home/jaimemontoya # cd /home/jaimemontoya # exit $ mkdir -p $HOME/build/kernel-2.6.22.9

"$HOME/build/kernel-2.6.22.9" equivale a "/home/build/kernel-2.6.22.9". "# exit" se ha utilizado para dejar de ser superusuario y poder crear el directorio como usuario normal, no como superusuario. El parámetro -p se usa para crear el directorio build, si no existiese, para poder luego crear el directorio kernel-2.6.22.9. Posteriormente se debe descomprimir el archivo de código fuente del kernel: $ su Password: # cd /usr/src # pwd # tar -jxvf /usr/src/linux-2.6.22.9.tar.bz2

Esto último como superusuario, para lo cual se ha utilizado el comando "$ su". Antes de descomprimir es necesario ubicarse en /usr/src, lo cual se consigue con "# cd /usr/src" y luego con "# pwd" se puede verificar que ya se está en la ubicación deseada. Si existiese el enlace simbólico /usr/src/linux, eliminarlo así (asumiendo que la ubicación actual es /usr/src): # rm linux Ahora crear el enlace simbólico /usr/src/linux, apuntando a la carpeta recién descomprimida: # ln -s linux-2.6.22.9 linux Todo esto se debe hacer estando en el directorio /usr/src. Ahora moverse al enlace simbólico /usr/src/linux que se creó anteriormente: # cd linux Verificar que todo hasta el momento va bien: # make mrproper Si no aparece ningún error, todo hasta el momento va bien y ya se puede iniciar la compilación del kernel. Se comienza por configurar el kernel con el fín de adaptarlo a las necesidades que se tengan. En este momento se podrán eliminar o aplicar secciones del kernel al antojo del usuario. La mayoría de secciones son intuitivas en el sentido de que se puede comprender sin demasiada complicación qué parte del kernel se manipula. Para llevar a cabo esta configuración se deberá hacer de la siguiente forma (considerando que en este caso el usuario se llama "jaimemontoya"): # make O=/home/jaimemontoya/build/kernel-2.6.22.9 menuconfig El caracter que aparece antes del signo = es la letra O mayúscula. Con esto se creará una estructura de archivos en el directorio especificado, donde se almacenará todo el contenido del kernel compilado. Este paso debe ser hecho cuidadosamente para que se logre conocer mejor todo lo que el kernel de Linux proporcionar. Para que este paso se concluya con éxito, se deberán guardar todos los cambios que se deseen hacer, de manera que al momento de salir aparecerá la pregunta de si se desean guardar los cambios, a lo cual se deberá responder que sí. NOTA: es necesario que al utilizar "# make O=/home/jaimemontoya/build/kernel-2.6.22.9 menuconfig", la ubicación actual sea el enlace simbólico que se creó, es decir "/usr/src/linux". Para confirmar que se ha llegado a dicha ubicación, utilizar "# pwd". Si no se hiciera asín, aparecerá el siguiente mensaje: make: *** No rule to make target `menuconfig'. Stop.

Si todo se ha hecho correctamente, luego de utilizar "# make O=/home/jaimemontoya/build/kernel-2.6.22.9 menuconfig" y aparecerá una pantalla azul donde se deberán elegir las opciones personalizadas que se le quieren dar al kernel. Esto se puede hacer al antojo de cada usuario, de acuerdo a lo que quiera hacer o el objetivo que se persiga con el uso del kernel. NOTA: para que aparezca esa pantalla azul de configuración, la ventana de la consola se debe tener completamente maximizada o en un tamaño suficientemente grande, pues de lo contrario aparecerán estos errores: Your display is too small to run Menuconfig! It must be at least 19 lines by 80 columns. make[2]: *** [menuconfig] Error 1 make[1]: *** [menuconfig] Error 2 make: *** [menuconfig] Error 2

El contenido del menú principal para configurar lo que tendrá o no el kernel que se va a compilar, es el siguiente: .config – Linux Kernel v2.6.22.9 Configuration Linux Kernel Configuration Arrow keys navigate the menu. selects submenus —>. Highlighted letters are hotkeys. Pressing includes, excludes, modularizes features. Press to exit, for Help, for Search. Legend: [*] built-in [ ] excluded module < > module capable

Code maturity level options —> General setup —> Loadable module support —> Block layer —> Processor type and features —> Power management options (ACPI, APM) —> Bus options (PCI, PCMCIA, EISA, MCA, ISA) —> Executable file formats —> Networking —> Device Drivers —> File systems —> Instrumentation Support —> Kernel hacking —> Security options —> Cryptographic options —> Library routines —> — Load an Alternate Configuration File Save an Alternate Configuration File

Habiendo hecho el paso anterior y guardado los cambios que se eligieron, se necesita ahora crear la imagen, así: # make O=/home/jaimemontoya/build/kernel-2.6.22.9 bzImage

Con lo anterior se proporcionará en sí el kernel, que se llamará al momento del arranque y que estará encargado de administrar todos los módulos que se compilarán con él en los pasos que se describirán posteriormente. Cuando este proceso finaliza, aparece al final un mensaje como este:

Root device is (3, 2) Boot sector 512 bytes. Setup is 7537 bytes. System is 1358 kB Kernel: arch/i386/boot/bzImage is ready (#1)

Un kernel modular, para fines prácticos, será más pequeño que uno con todo incluido; por lo tanto, el tipo modular se vuelve propicio por muchas razones. Para crear los módulos del kernel, se deberá realizar la siguiente acción: # make O=/home/jaimemontoya/build/kernel-2.6.22.9 modules

Con eso se crearán la mayoría de opciones contenidas en el kernel, como módulos que serán cargados de manera dinámica cuando sea necesarios utilizarlos. Esto también facilita agregar nuevos módulos. Si la acción anterior se llevó a cabo de manera correcta, entonces se vuelve necesario instalar los módulos en el sistema para que el kernel los pueda usar de forma dinámica. Para esto se deberá realizar la siguiente acción: # make O=/home/jaimemontoya/build/kernel-2.6.22.9 modules_install

Si el paso anterior se realiza de forma correcta, se creará una carpeta en el directorio /lib/modules/, la cual tendrá por nombre la numeración con la que finaliza el kernel, que en este caso será la versión 22.6.22.9. El directorio o carpeta que se habrá creado es entonces "/lib/modules/2.6.22.9". Para confirmar que se acaba de crear, se puede ver la fecha y hora de modificación de dicho directorio y se confirmará que ha sido recién creado mediante "# make O=/home/jaimemontoya/build/kernel-2.6.22.9 modules_install". Esto indica que los módulos han sido colocados correctamente en el sistema Linux. Esta carpeta se utilizará más adelante para crear un archivo de ram disk y levantar el kernel al momento de arranque. Lo único que falta ahora es instalar el kernel, lo cual se puede realizar de dos formas. La primera forma es mediante la ejecución de la siguiente instrucción:

# make O=/home/jaimemontoya/build/kernel-2.6.22.9 install Este primer método genera todas la configuraciones necesarias. Dichas configuraciones (que se encuentran en el GRUB), serán sobreescritas, lo cual no da garantías porque si el kernel recién compilado no corre, no habrá forma de acceder al sistema. La segunda forma de realizar la instalación del kernel es larga pero más segura, lo cual garantiza tener el kernel actual funcionando y crear una nueva configuración para el kernel recién compilado. Para ello se deberá realizar lo siguiente: Copiar la imagen creada anteriormente (/home/jaimemontoya/build/kernel-2.6.22.9/arch/i386/boot/bzImage) al directorio /boot y ponerle un nombre que haga referencia a toda la configuración de GRUB para el kernel: # cp /home/jaimemontoya/build/kernel-2.6.22.9/arch/i386/boot/bzImage /boot/vmlinuz-2.6.22.9-jaimemontoya

Luego se tiene que copiar el archivo de configuración: # cp /home/jaimemontoya/build/kernel-2.6.22.9/.config /boot/config-2.6.22.9-jaimemontoya Respecto al archivo /home/jaimemontoya/build/kernel-2.6.22.9/.config, si se quiere ver de forma gráfica con el navegador Konqueror por ejemplo (presionando F9 desde el navegador y luego en la pestaña Root Folder navegando en los directorios), se deberá activar la opción "Show Hidden Files" o "Mostrar Archivos Ocultos" en el menú View o Ver del navegador Konqueror. Ahora se tiene que copiar el archivo System.map: # cp /home/jaimemontoya/build/kernel-2.6.22.9/System.map /boot/System.map-2.6.22.9-jaimemontoya En este momento se tiene que crear el archivo initrd o randisk para el arranque del kernel. Como se mencionó anteriormente, si los módulos se instalaron correctamente, se tuvo que generar una carpeta en el directorio /lib/modules/, la cual debe corresponder con los últimos números del kernel. En este caso se generó la carpeta /lib/modules/2.6.22.9, la cual contiene los módulos del kernel recién compilado. Para mayor seguridad se debe verificar la fecha de creación. Teniendo la carpeta /lib/modules/2.6.22.9, se debe realizar la siguiente acción: # mkinitrd -o /boot/initrd.img-2.6.22.9-jaimemontoya /lib/modules/2.6.22.9

Esto creará el archivo de ramdisk /boot/initrd.img-2.6.22.9-jaimemontoya, el cual levantará el kernel en el arranque, es decir que cargará el kernel en memoria. En este momento se tiene que verificar que todos los archivos copiados se encuentren en la carpeta /boot, lo cual se puede hacer con "# ls -la /boot" o de manera gráfica con el navegador Konqueror por ejemplo, como se dijo anteriormente. Finalmente se tiene que crear una nueva sección de GRUB en el archivo /boot/grub/menu.lst, similar a la que levanta el kernel inicial Linux, pero haciendo referencia a los archivos que se acaban de crear. Por ejemplo si se tuviera una sección como esta:

title 

 Debian GNU/Linux, kernel 2.6.22.9-jaimemontoya

root 

 (hd0,1)

kernel 

 /boot/vmlinuz-2.6.22.9-jaimemontoya root=/dev/hda2 ro

initrd 

 /boot/initrd.img-2.6.22.9-jaimemontoya

savedefault 

Se debe copiar y reemplazar luego con los datos del nuevo kernel compilado, así:

title 

 Debian GNU/Linux, kernel 2.6.22.9-jaimemontoya

root 

 (hd0,1)

kernel 

 /boot/vmlinuz-2.6.22.9-jaimemontoya root=/dev/hda2 ro

initrd 

 /boot/initrd.img-2.6.22.9-jaimemontoya

savedefault 

Luego se le deben asignar permisos de escritura a /boot/grub/menu.lst para poder guardar las modificaciones en este archivo. El permiso de escritura se puede asignar con "# chmod 777 /boot/grub/menu.lst".

Finalmente se tiene que reiniciar la computadora y ya se podrá trabajar en el nuevo kernel instalado. Para confirmar que realmente se está trabajando en el kernel que se compiló e instaló, se puede utilizar "$ uname -a" o "$ cat /proc/version" y se verá que ya se tiene la nueva versión 2.6.22.9. También aparece la fecha en que se generó esta actualización, de manera que no quedará duda alguna de que realmente ya se tiene el nuevo kernel y que el proceso se realizó satisfactoriamente, pues al utilizar "$ uname -a" el resultado es: Linux jaimemontoya 2.6.22.9 #1 Thu Sep 27 17:42:06 CST 2007 i686 GNU/Linux

Ahora ya se puede disfrutar del nuevo kernel instalado y el proceso se puede repetir las veces que se desee para instalar en el futuro nuevas versiones de los kernel que se desee ya sea por gusto o necesidad específica. Frecuentemente son liberadas nuevas versiones, que siempre se encuentran en y se adquieren por supuesto de forma gratuita.

 

Jaime Montoya

www.jaimemontoya.com

Santa Ana, 29 de septiembre de 2007

El Salvador

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente