ADMINISTRACIN DE SISTEMAS OPERATIVOS

Anuncio
1
ADMINISTRACIÓN DE SISTEMAS
OPERATIVOS
CURSO 2007/2008
PRÁCTICA 4 – Recompilación del núcleo de Linux
Nombre 1
Nº Mat. 1
Nombre 2
Nº Mat. 2
1. OBJETIVOS
•
Familiarizarse con el proceso de recompilación del código del núcleo de
Linux. Para ello, se realizará una recompilación del núcleo para añadir una
característica no soportada inicialmente.
2. INTRODUCCIÓN
En esta práctica se va a explicar el proceso de construcción de un nuevo núcleo de
Linux. La recompilación del núcleo a menudo se hace para introducir soporte para
nuevas características o para construir un núcleo más pequeño. Este último objetivo
se consigue ajustando los servicios del núcleo a las necesidades de la instalación
concreta.
Siempre que queramos recompilar el núcleo, debemos conseguir previamente el
paquete que contiene los ficheros fuente del mismo. Este paquete puede conseguirse
en la página oficial del núcleo (www.kernel.org). Además, para poder utilizar el
comando de configuración del núcleo “make menuconfig” en la compilación,
necesitamos otro paquete que se llama ncurses-dev. Para la práctica no hay
problema, ya que ambos paquetes se han cargado previamente.
3. ENUNCIADO
A continuación se guía el proceso de preparación, recompilación y arranque del nuevo
núcleo, y se pide responder a las preguntas formuladas:
1) Vamos a obtener información sobre la versión del núcleo actualmente en
funcionamiento. Para ello, ejecuta el comando “uname -a” y muestra a
continuación la información que aparece por pantalla antes de la fecha.
Antes de recompilar vamos a fijarnos en los ficheros existentes en el directorio /boot
relacionados con el núcleo actual. Para ello, ejecuta el comando “ls –ltr /boot”.
Omitiendo detalles sobre la versión específica, verás los siguientes ficheros:
vmlinuz-2.6
-- Ejecutable del núcleo
initrd.img-2.6 -- Disco RAM con parte del núcleo
System.map-2.6 -- Tabla de símbolos del núcleo
config-2.6
-- Fichero con información de configuración del núcleo
2
Es importante que el trabajo restante se realice bajo el usuario root, ya que no se
puede cambiar el núcleo bajo un usuario normal. Vamos a situarnos en el directorio
donde están los ficheros fuente del núcleo actual:
#cd /usr/src
En este directorio tenemos los ficheros fuente originales, contenidos en el fichero
denominado linux-2.6.24.3.tar.bz2. Para extraer los ficheros fuente del núcleo
ejecutamos:
#tar xjvf linux*.tar.bz2
donde la opción “j” del comando tar sirve para descomprimir el archivo con el
comando bunzip2.
Los ficheros extraídos por el comando tar se despliegan automáticamente en un
directorio llamado:
/usr/src/linux-2.6.24.3
Vamos a crear un enlace /usr/src/linux a dicho directorio mediante el comando
“ln –s /usr/src/linux-2.6.24.3 /usr/src/linux”. Asegúrate de que
sigues en el directorio /usr/src y mira su contenido mediante el comando “ls –l”.
Cada vez que queramos situarnos en el directorio que contiene los fuentes, bastará
con ejecutar el comando “cd /usr/src/linux”.
Ahora comenzaremos el proceso de recompilación. Para acortar el tiempo de
compilación del núcleo, partiremos de un fichero de configuración del núcleo con un
conjunto mínimo de características activas. La única característica adicional que
tendréis que introducir es el soporte para sistemas de ficheros Minix. Llama al
profesor del laboratorio para asegurar que tienes el fichero de configuración de
partida. Para recompilar el núcleo, ejecutaremos la siguiente secuencia de comandos:
; Para indicar las nuevas opciones de compilación, se
; ejecuta el siguiente comando
#make menuconfig
; Para incluir los sistemas de ficheros de tipo Minix
; deberá seleccionarse la sección “File Systems” y,
; dentro de ésta, la subsección “Minix fs support”
; Una vez terminada la configuración, procederemos a la
; construcción del nuevo núcleo
; compilar nuevo núcleo
#make
; instalar módulos
#make modules_install install
3
El núcleo recién generado estará en el fichero:
/boot/vmlinuz-2.6.24.3
2) Indica si se ha generado correctamente, fijándote en la fecha y hora de modificación
de dicho fichero.
3) Mira el contenido del directorio /lib/modules con el comando “ls –ltr” e
indica qué directorio se ha generado en el proceso de compilación.
Si la fecha y hora del fichero vmlinuz y del directorio creado en /lib/modules no
corresponden a las de esta sesión, la compilación del núcleo no ha ido bien. En ese
caso, deberías repetir con más cuidado la secuencia de comandos anteriores.
4) Ejecuta el comando “ls –ltr /boot” e indica el nombre de los ficheros
generados por el proceso de compilación (excluyendo los enlaces).
Todavía nos falta informar al cargador de arranque, GRUB, de cómo arrancar el
núcleo recién compilado. Además, por si hubiera algún problema con la versión que
hemos compilado, queremos que se pueda seguir arrancando la versión original del
sistema. El fichero de configuración de GRUB es “/boot/grub/menu.lst”. Para
modificarlo, utilizaremos algún editor y crearemos un duplicado del conjunto de líneas
que arrancaban la versión original del núcleo. Dado que en la versión compilada no
existe el fichero initrd.img, eliminaremos las líneas correspondientes. El conjunto
de líneas añadidas es el siguiente:
title
Debian GNU/Linux, kernel 2.6.24
root
(hd0,1)
kernel
/boot/vmlinuz-2.6.24.3 root=/dev/sda2 ro
savedefault
boot
title
Debian GNU/Linux, kernel 2.6.24 (recovery mode)
root
(hd0,1)
kernel
/boot/vmlinuz-2.6.24.3 root=/dev/sda2 ro single
savedefault
boot
Para que GRUB lea los cambios realizados y los aplique al arrancar ejecutaremos el
comando:
#grub-install hd0
Con este comando se actualizarán las opciones de GRUB en el MBR (Master Boot
Record). Para probar si el núcleo ha sido compilado con éxito, sólo nos falta arrancar
el ordenador y ver si funciona. LLAMA AL PROFESOR DEL LABORATORIO antes de
arrancarlo.
4
5) Ejecuta el comando “uname -a” y muestra a continuación la información que
aparece por pantalla antes de la fecha.
6) Ejecuta los comandos:
# mount /dev/fd0 /mnt –t minix
# ls /mnt
e indica qué fichero/s ves en el disquete.
Descargar