[ << ]
[ < ]
[ Inicio ]
[ > ]
[ >> ]
7. Configurando el kernel
Contenido:
7.a. Zona horaria
Primero necesita seleccionar su zona horaria para que su sistema sepa
dónde está ubicado. Busque su zona horaria en /usr/share/zoneinfo,
luego cópiela en /etc/localtime . Por favor, evite las zonas
horarias /usr/share/zoneinfo/Etc/GMT* ya que los nombres no
indican las zonas esperadas. Por ejemplo, GMT-8 es realmente
GMT+8.
Listado de Código 1.1: Configurar la zona horaria |
# ls /usr/share/zoneinfo
# cp /usr/share/zoneinfo/GMT /etc/localtime
|
7.b. Instalar las fuentes
Elegir un núcleo
El centro alrededor de la cual se construyen todas las distribuciones es
el núcleo (kernel) de Linux. Es la capa entre los programas de usuario
y el hardware del sistema. Gentoo proporciona a sus usuarios varias
fuentes de kernel. Una lista completa está disponible en la Guía Gentoo del Kernel.
Sugerimos utilizar en PPC tanto las vanilla-sources como las
gentoo-sources, ambos núcleos 2.6. El último está disponible
para una instalación sin red. Vamos, pues, a continuar con la instalación o
emerge de las fuentes del kernel.
La USE="-doc" es necesaria en este momento para prevenir la instalación
de xorg-x11 u otras dependencias. USE="symlink" no es necesario en una
instalación nueva, pero nos asegura una correcta creación del enlace
/usr/src/linux.
Listado de Código 2.1: Instalar fuentes del kernel |
# USE="-doc symlink" emerge gentoo-sources
|
En /usr/src se encuentra un enlace simbólico llamado
linux apuntando a las fuentes del núcleo actual. En nuestro
caso, el enlace a las fuentes del núcleo instaladas apunta a
gentoo-sources-2.6.15. Tenga en cuenta que su versión puede ser
diferente.
Listado de Código 2.2: Ver el enlace a las fuentes del kernel |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 22 Mar 18 16:23 /usr/src/linux ->
linux-2.6.15
|
Ahora vamos a configurar y compilar las fuentes del núcleo. Puede usarse
genkernel para ello, ya que crea un núcleo genérico como el usado
por el CD de instalación. Sin embardo explicamos primero la configuración
"manual" porque es la mejor manera de optimizar nuestro entorno.
Para configurar manualmente el núcleo, podemos seguir en
Predeterminado: Configuración manual. En cambio,para usar
genkernel podemos leer Alternativa: Usar
genkernel.
7.c. Predeterminado: Configuración manual
Introducción
Configurar manualmente un núcleo se ve frecuentemente como el
procedimiento más difícil al que tiene que enfrentarse un usuario de
Linux. Nada mas lejos de la realidad: después de configurar un par de
núcleos no recordaremos si fue difícil la primera vez ;)
Sin embargo, una cosa es cierta: debemos conocer nuestro sistema
para configurar el núcleo manualmente. Mucha de la información necesaria se
puede recolectar instalando pciutils (emerge pciutils) que contiene
lscpi. Ahora podremos utilizar lscpi en el entorno del chroot.
Se puede ignorar sin riesgo cualquier aviso relativo a pcilib (como
"pcilib: cannot open /sys/bus/pci/devices"). Alternativamente, se puede
ejecutar lscpi desde un entorno no chroot. Los resultados serían
los mismos. También se puede ejecutar lsmod para ver que módulos del
núcleo usa el CD de instalación (puede proporcionar buenos consejos sobre qué
habilitar). Otro lugar para buscar posibles pistas sobre que componentes
habilitar es comprobar los mensajes del kernel que se obtienen durante el
proceso de inicio. Ejecute dmesg para ver los mensajes del kernel.
Ahora hay que ir al directorio de las fuentes, para configurar el núcleo. Se
recomienda incluir inicialmente la configuración por defecto con make
defconfig. Una vez que la configuración por defecto haya sido incluida,
ejecutaremos make menuconfig que lanzará un menú de configuración
basado en ncurses.
Listado de Código 3.1: Invocar a menuconfig |
# cd /usr/src/linux
# make defconfig
# make menuconfig
|
Nos darán la bienvenida varias secciones de configuración. Listaremos
primero algunas opciones que se deben activar (de otro modo Gentoo no
funcionará, o no funcionará adecuadamente sin configuración
adicional).
Activar opciones necesarias
Primero que nada, activaremos el uso de código y dispositivos en
desarrollo y experimentales. Es necesario, porque algunos dispositivos
o código importante no aparecerían:
Listado de Código 3.2: Seleccionar código/dispositivo expremiental |
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
General setup --->
[*] Support for hot-pluggable devices
|
Ahora, en File Systems seleccionaremos el soporte para los
sistemas de ficheros empleados. No deben compilarse como
módulos, en cuyo caso el sistema Gentoo no sería capaz de montar las
particiones. También debe seleccionarse el /proc file system y
Virtual memory.
Listado de Código 3.3: Selecionar los sistemas de ficheros necesarios |
File systems --->
Pseudo Filesystems --->
[*] /proc file system support
[*] Virtual memory file system support (former shm fs)
<*> Reiserfs support
<*> Ext3 journalling file system support
<*> Second extended fs support
<*> XFS filesystem support
|
Si usamos PPPoE o un módem para conectar a Internet, necesitaremos las
siguientes opciones del núcleo:
Listado de Código 3.4: Seleccionar los controladores necesarios para PPPoE |
Device Drivers --->
Networking support --->
<*> PPP (point-to-point protocol) support
<*> PPP support for async serial ports
<*> PPP support for sync tty ports
|
Las dos opciones de compresión no molestan pero no son necesarias. La
opciónPPP over Ethernet tampoco es obligatoria, tal vez solo
sea usada por rp-pppoe cuando se configure PPPoE en modo
núcleo.
Si es necesario, no hay que olvidar incluir el soporte en el núcleo
para la tarjeta ethernet.
Los usuarios de sistemas NewWorld y OldWorld querrán igualmente activar
el soporte HFS. Los usuarios de OldWorld lo necesitan para poder copiar
el núcleo en la partición MacOS. Los usuarios de NewWorld lo necesitan
para configurar la partición especial Apple_Bootstrap:
Listado de Código 3.5: Activar el soporte HFS |
File Systems --->
[*] HFS Support
|
En el momento presente, la característica de núcleo preentivo es todavía
inestable en PPC y puede causar fallos de compilación y de segmentación
aleatorios. Se sugiere encarecidamente no usar esta opción.
Listado de Código 3.6: Asegurarse que la opción Preemptible Kernel está desactivada |
Platform options --->
[ ] Preemptible Kernel
|
Si estamos arrancando desde Firewire, necesitaremos habilitar estas opciones.
Si no queremos compilar el soporte embebido, necesitaremos incluir estos
módulos y sus dependencias en un initrd.
Listado de Código 3.7: Activar soporte para dispositivos firewire en el arranque |
Device Drivers --->
IEEE 1394 (FireWire) support --->
<*> IEEE 1394 (FireWire) support
<*> OHCI-1394 support
<*> SBP-2 support (Harddisks etc.)
|
Si estamos arrancando desde USB, necesitaremos habilitar estas opciones, si
no queremos compilar el soporte embebido, necesitaremos incluir estos módulos
y sus dependencias en un initrd.
Listado de Código 3.8: Activar soporte para dispositivos USB en el arranque |
Device Drivers --->
USB support --->
<*> Support for Host-side USB
<*> OHCI HCD support
<*> USB Mass Storage support
|
No desactivaremos el soporte en el núcleo para el framebuffer porque se
necesita para un arranque satisfactorio. Si utilizamos un chipset basado
en NVIDIA deberemos utilizar el framebuffer de OpenFirmware. Si utilizamos
un chipset basado en ATI, deberemos utilizar el controlador de framebuffer
basado en el chipset (Mach64, Rage128 or Radeon).
Listado de Código 3.9: Elegir un Controlador de Framebuffer |
Device Drivers --->
Graphics support --->
<*> Support for frame buffer devices
[*] Open Firmware frame buffer device support
<*> ATI Radeon display support
<*> ATI Rage128 display support
<*> ATI Mach64 display support
Console display driver support --->
<*> Framebuffer Console support
|
Nota:
Si seleccionamos más de un dispositivo de framebuffer puede que se utilice
por defecto un controlador no óptimo. Podemos tanto utilizar un sólo
framebuffer como especificar el que queremos utilizar pasándolo como
parámetro del núcleo durante el arranque, como por ejemplo
video=radeonfb.
|
Continuaremos con Compilar e instalar al
acabar de configurar el núcleo.
Compilar e instalar
Ahora que ya está configurado el núcleo, es el momento para compilarlo
e instalarlo. Saldremos de la configuración y comenzaremos con el
proceso de compilación:
Listado de Código 3.10: Compilar el núcleo |
# make && make modules_install
|
Cuando el núcleo haya terminado de compilar, se ha de copiar la imagen
a /boot (hay que asegurarse que esté correctamente
montada en ordenadores Pegasos).
Si estamos utilizando BootX para arrancar, copiaremos el núcleo después.
Yaboot y BootX usan un núcleo sin comprimir a diferencia de otros gestores
de arranque. El núcleo sin comprimir se llama vmlinux y se encontrará en
/usr/src/linux una vez que el núcleo haya terminado de
compilarse. Si está utilizando una máquina Pegasos, el microcódigo del
Pegasos necesita un núcleo comprimido llamado zImage.chrp que puede
encontrarse en /usr/src/linux/arch/ppc/boot/images.
Listado de Código 3.11: Instalar el kernel |
cd /usr/src/linux
# cp vmlinux /boot/<kernel-version>
# cp arch/ppc/boot/images/zImage.chrp /boot/<kernel-version>
|
Ahora hay que continuar con Instalar
módulos del núcleo separadamente.
7.d. Instalar módulos del núcleo separadamente
Configurar los módulos
Se deben poner los módulos que queramos cargar automáticamente en
/etc/modules.autoload.d/kernel-2.6. Se pueden agregar
opciones extras a los módulos si así se quiere.
Para ver todos los módulos disponibles, se puede ejecutar el comando
find. No hay que olvidar sustituir "<versión del
kernel>" con la versión del kernel que hemos compilado:
Listado de Código 4.1: Ver todos los módulos disponibles |
# find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko'
|
Por ejemplo, para cargar automáticamente el módulo 3c59x.o, hay
que editar el fichero kernel-2.6 y escribir en él el
nombre del módulo.
Listado de Código 4.2: Editar /etc/modules.autoload.d/kernel-2.6 |
# nano -w /etc/modules.autoload.d/kernel-2.6
|
Listado de Código 4.3: /etc/modules.autoload.d/kernel-2.6 |
3c59x
|
Continuaremos la instalación con Configurar el sistema.
7.e. Alternativa: Usar genkernel
Si hemos llegado a esta sección, es porque habremos elegido usar el
guión genkernel para configurar el kernel.
Ahora que el árbol de las fuentes del núcleo está instalado, es hora
de compilarlo usando el guión genkernel que automáticamente
construirá uno por nosostros. genkernel trabaja configurando un
núcleo prácticamente idéntico al núcleo del CD de instalación. Esto
significa que cuando se usa genkernel para construir el núcleo,
el sistema generalmente detectará todo el hardware durante el
arranque, tal como lo hace el CD de instalación. Debido a que genkernel
no requiere ninguna configuración manual del núcleo, es una solución
ideal para esos usuarios que no se sienten cómodos compilando sus propios
núcleos.
Ahora, veamos como usar genkernel. Primero, hay que hacer emerge al
ebuild de genkernel:
Listado de Código 5.1: Instalar genkernel |
# emerge genkernel
|
A continuación, hay que copiar la configuración del núcleo empleada
por el CD de instalación al sitio donde genkernel busca la
configuración predeterminada del núcleo:
Listado de Código 5.2: Copiar la configuración del kernel del CD de instalación |
# zcat /proc/config.gz > /usr/share/genkernel/ppc/kernel-config-2.6
|
Si estamos usando firewire o USB para arrancar, necesitaremos añadir los
módulos al initrd. Editaremos
/usr/share/genkernel/ppc/modules_load y cambiaremos
MODULES_FIREWIRE="ieee1394 ohci1394 sbp2" para el soporte de firewire
o MODULES_USB="usbcore ohci-hcd ehci-hcd usb-storage" para el soporte
de USB.
Ahora hay que compilar las fuentes del núcleo ejecutando genkernel
--genzimage all. Para Pegasos necesitaremos usar una configuración
diferente y crear una zImage en lugar del núcleo vmlinux usado en las
máquinas Apple. Recordaremos que como genkernel compila un núcleo
que soporta casi todo el hardware, esta compilación ¡tardará un rato en
terminar!
Observaremos que si la partición de arranque no usa ext2 o ext3 como sistema
de archivos, se necesita configurar manualmente el núcleo usando genkernel
--menuconfig --genzimage all para agregar soporte para el sistema de
archivos correspondiente en el núcleo (no como módulo). Los
usuarios de EVMS2 o LVM2 probablemente querrán añadir también los argumentos
--evms2 or --lvm2.
Listado de Código 5.3: Ejecutar genkernel |
# genkernel --genzimage all
|
Listado de Código 5.4: Ejecutar genkernel en el Pegasos |
# genkernel --genzimage --kernel-config=/usr/share/genkernel/ppc/Pegasos all
|
Una vez que genkernel haya terminado, un núcleo, un conjunto
completo de módulos y un disco raíz de inicio (initrd) habrán
sido creados. Usaremos el núcleo e initrd para configurar un gestor de
arranque más tarde en este documento. Escribiremos los nombres del
núcleo y de initrd ya que se necesitarán para el archivo de
configuración del gestor de arranque. initrd se iniciará
inmediatamente después del arranque para realizar la autodetección de
hardware (igual que en el CD de instalación) antes que se inicie el
sistema "real". Nos aseguraremos de escribir también los
parámetros de arranque necesarios, puesto que se requieren para un
arranque correcto con genkernel.
Listado de Código 5.5: Verificar los nombres del kernel e initrd creados |
# ls /boot/kernel* /boot/initramfs*
|
Si queremos que nuestro sistema sea más parecido al CD de instalación
deberemos, cuando la instalación de Gentoo esté hecha, instalar
coldplug. Mientras initrd autodetecta el hardware necesario
para arrancar el sistema, coldplug autodetecta casi todo lo
demás.coldplug está disponible como uno de los paquetes del
Package CD.
Listado de Código 5.6: Instalar y habilitar coldplug |
# emerge -k coldplug
# rc-update add coldplug boot
|
Si queremos que nuestro sistema tenga en cuenta los eventos de hotplug,
deberemos instalar y configurar hotplug así:
Listado de Código 5.7: Instalar y habilitar hotplug |
# emerge hotplug
# rc-update add hotplug default
|
Ahora continuaremos con Configurar el
sistema.
[ << ]
[ < ]
[ Inicio ]
[ > ]
[ >> ]
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|