Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

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 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter