* Afinando el sistema
Después de mi larga ausencia por este diario (espero que me
perdonéis el restraso vacacional), retomo el hilo donde lo
dejé.
De momento, tenemos Debian testing (con un núcleo 2.4) y únicamente
el sistema base instalado en nuestra máquina y se trata ahora de hacer
funcionar el hardware hasta donde podamos (Remito al primer
artículo de esta serie para quien quiera refrescar la memoria y
saber lo que se puede y no se puede conseguir por el momento. En el
tiempo transcurrido, las cosas a este respecto siguen igual).
** Resumen de objetivos y requisitos necesarios
Naturalmente, no nos conformamos con la consola a secas,
necesitamos hacer que funcione como mínimo lo siguiente:
- El sistema gráfico (las X).
- El sistema de audio (con ALSA).
- El sistema USB.
- El teclado especial de Apple (control de luminosidad y de sonido).
- El trackpad.
- Y ya que tenemos un portátil, un mínimo control de la frecuencia.
del procesador, para economizar el uso de la batería.
Para lograr todo esto en mi máquina tengo que compilar e instalar
un núcleo 2.6, actualizar la distribución y descargar y configurar las
utilidades necesarias para que todo funcione correctamente.
La primera de las tareas consta de los siguientes pasos:
- Obtener las fuentes adecuadas del núcleo 2.6.
- Descargar las herramientas necesarias para compilarlo.
- Configurar, compilar e instalar el nuevo núcleo.
- Afinar el gestor de arranque para que tenga en cuenta la nueva situación.
Vayamos a ello.
** El núcleo 2.6
*** Obtención de los fuentes
Existen distintas versiones del nuevo núcleo 2.6. Aquí, hay poco que
decir. La más recomendable para esta máquina es la que incluye los
parches y añadidos de Ben Herrenschmidt. Para copiar las fuentes en
nuestro disco, basta con lo siguiente:
mkdir /usr/local/src/benh-kernel # Aquí es donde guardaré las fuentes.
ln -s benh-kernel linux # El clásico enlace simbólico.
apt-get install rsync # Programa de copia rápida de
# archivos remotos.
rsync -avz --delete source.mvista.com::linuxppc-2.5-benh /usr/local/src/linux
[Nota: a día de la escritura de esta entrada la copia que obtenemos
es la del núcleo 2.6.1-rc1]
*** Configuración
Ahora viene la parte más compleja. Primero porque hay que conocer
bien las configuraciones específicas para nuestra máquina, y segundo,
porque las opciones de configuración del núcleo han cambiado
sensiblemente en relación con las existentes en la serie 2.4. Pero no
arrojaré la toalla antes de tiempo. Con paciencia y la ayuda eventual
de los más sabios no habrá problema.
Antes de nada, y tras leer atentamente el README y el
Documentation/Changes que viene en las fuentes, descargo los
siguientes paquetes necesarios para la configuración, compilación e
instalación, que incluyen el resto de los mencionados en el citado
fichero 'Changes':
apt-get install gcc, make, module-init-tools, libncurses5-dev, kernel-package
[libncurses5-dev es opcional, pero necesario si se
quiere realizar la configuración con make menuconfig,
cosa ciertamente recomendable.]
[kernel-package es también opcional. Es el paquete
para la compilación e instalación del núcleo al modo debian.]
Ahora toca la configuración. Me sujeto fuertemente a la silla y me
armo de paciencia y concentración. Vayamos, pues, al asunto:
cd /usr/local/src/linux
cp arch/ppc/configs/pmac_defconfig .config
make menuconfig
La segunda instrucción merece un comentario. Se trata de copiar el
config por defecto específico para nuestra máquina, que
viene en las fuentes y tener así un buen punto de partida para nuestra
configuración. Puede que este paso no sea necesario y que se carge por
defecto el config apropiado cuando hacemos make
menuconfig. [Reconozco que no lo he probado, ni me he mirado
los scripts de las fuentes para confirmar esta suposición.]
Tras ejecutar estas líneas, me sale un menú con muchos submenús y
una gran cantidad de opciones. Es imposible comentar una a una todas
ellas. Mucho de lo que viene activado (o desactivado) por defecto es
adecuado a nuestra máquina. Me limito a referir y comentar, en su
caso, las opciones que, por ser específicas a la arquitectura de mi
computador o por ser novedosas en los núcleos 2.6, creo conveniente
destacar. Espero no dejarme ninguna importante en el tintero. Sobra
decir que, puesto que no soy un experto en los intestinos de estos
ordenadores, puede que algunas de mis suposiciones no sean del todo
correctas. Estoy abierto a la rectificación.
También dejo a disposición de quien así lo quiera mi actual .config. Funciona, pero --cuidado-- es
altamente modularizado, puede que algunos prefieran compilar dentro
del núcleo ciertas opciones que yo he dejado como módulo.
=== Opciones de configuración que hay que tener en cuenta:
### Processor
- Processor type (6xx/7xx/74xx/8260)
Dejarlo como está. Esta máquina tiene un procesador 7457.
- Altivec support
SÍ: los G4 usan las extensiones Altivec.
- Thermal Management Support
NO: Simplemente, no soportado por nuestra CPU.
- Support for Apple PowerBooks
SÍ
- Workarounds for PPC601 bugs
NO: No parece que sea necesario.
### Platform options
- Machine Type (CHRP/PowerMac/PReP)
Dejarlo como está. Nuestro máquina es una PowerMac.
- Preemptible kernel
NO: Desgraciadamente, no funciona, de momento, en los PowerPC. Por
otra parte, tampoco es suficientemente estable en la actualidad en el
resto de arquitecturas.
- Support for Open Firmware device tree
SÍ: Añade a /proc un árbol de dispositivos que contiene una imagen
del árbol de dispositivos que el kernel copiará de nuestro Open
Firmware.
- Support for PReP Residual Data
NO: No es necesario. Nuestra máquina no es PReP.
### Bus options
### ATA/ATAPI/MFM/RLL support
- SCSI emulation support
NO: Ya no es necesario para escribir CDs. Los desarrolladores
del núcleo recomiendan usar el soporte ATAPI nativo.
- Generic PCI chipset support
NO: No parece necesario, habiendo un soporte específico.
- Builtin PowerMac IDE support
SÍ.
- Probe internal ATA/100 first
SÍ
- PowerMac IDE DMA support
SÍ.
- Blink laptop LED on drive activity
SÍ. Pero opcional. Lo que permite esta opción es que el LED de
hibernación funcione como LED de actividad del disco. Bonito.
- Use DMA by default
SÍ: Soporte DMA específico para PowerPC.
### Networking support
- Networking options ---> AppleTalk protocol support
NO. Pero hay que decir SÍ en caso de que se quiera "hablar" con
una red Apple, que no es mi caso.
- Ethernet 10 or 100Mbit ---> Sun GEM Support
SÍ: Soporte para la tarjeta de red ethernet de este ordenador.
### Graphics support
- Support for frame buffer devices
SÍ: Sólo así funcionará el sistema gráfico y las X !!
- ATI Radeon display support (New driver)
SÍ: Idem. Este es el soporte específico para nuestra tarjeta.
- DDC/I2C for ATI Radeon support
SÍ: Así al menos lo recomiendan gurús del sistema gráfico como Michel
Daenzer.
- Console display driver support ---> Framebuffer Console support
SÍ: Soporte framebuffer para nuestra consola.
### Input device support
- (1440) Horizontal screen resolution
- (900) Vertical screen resolution
Modifico ésta y la anterior opción para adecuarlas a las
resoluciones de nuestra pantalla.
- Keyboards
SÍ. Pero no hace falta decir también SÍ a "AT Keyborad ...": nuestro
teclado es ADB.
- Mice
SÍ. Basta con esto dentro de este grupo de opciones sobre el ratón.
### Macintosh device support
SÍ a todo, excepto a:
- Suport for CUDA based PowerMacs
NO: Los nuevos PowerMac no se basan en CUDA, sino en PMU.
- Support for PowerMac floppy
NO: La máquina no tiene disquetera.
- Support for PowerMac serial ports
NO: El soporte para puertos series viene ahora en otro sitio (vid. infra.)
- Include MacIO (CHRP) ADB driver
NO: Nuestra máquina no es CHRP.
- Support for thermal managemente PowerMac G5
NO: Ojalá tuviera un G5. Pero éste es un G4.
### Character devices
- Serial drivers ---> PowerMac z85c30 ESCC support
SÍ: Esta es ahora la opción para el soporte de nuestros puertos serie.
- I2C support ---> I2C support
SÍ: Requerida por "ATI Radeon display support"
- I2C support ---> I2C device interface
SÍ.
- I2C support ---> I2C Algorithms ---> I2C bit-banging support
SÍ: Requerida por "ATI Radeon display support"
- I2C support ---> Hardware Bus support ---> PowerMac Keywest I2C interface
SÍ: Esta es la interfaz I2C de las nuevas máquinas de Apple.
- /dev/agpgart (AGP support)
SÍ: De nuevo, soporte necesario para el sistema gráfico.
- Apple UniNorth AGP support
SÍ: Idem.
- Direct Rendering Manager (XFree86 >= 4.1.0 DRI support)
SÍ: Nos sacará del atolladero de las X.
- ATI Radeon
SÍ: Idem.
### File systems
- Psuedo filesystems ---> /dev file system support
NO: Según los desarrolladores del núcleo esta interfaz está
desfasada y esta siendo sustituida por aplicaciones en espacio
de usuario como 'udev'.
- Miscellaneous filesystems ---> Apple Extended HFS file system support
SÍ: Permite trabajar con particiones HFS+, el sistema de archivos
de nuestra partición Apple.
- Partition types ---> Macintosh partition map support
SÍ: Me permite usar bajo Linux discos particionados desde un Apple.
### Sound
ALSA es la nueva infraestructura de audio por defecto en los
kernels 2.6, que sustituye a OSS.
En esta sección, hay que habilitar las opciones genéricas:
- Sound Card support
SÍ
- PowerMac DMA sound support
SÍ
y, al menos, las siguientes opciones específicas para ALSA:
- Advanced Linux Sound Architecture
SÍ
- OSS API emulation
SÍ
- OSS Mixer API
SÍ
- OSS PCM (Digital audio) API
SÍ
- ALSA PowerMac devices ---> PowerMac (AWACS, ...)
SÍ
### Kernel hacking
=== FIN de opciones de configuración
¡Uf! Fin del peñazo. Quedan secciones sin comentar: USB, FireWire,
etc., que dependen del uso que vayamos a hacer de los periféricos
correspondientes. Más sobre ellas en los capítulos siguientes.
*** Instalación (modo Debian)
Hecha y guardada la configuración, lo que queda es bastante más
sencillo. Helo aquí [Naturalmente, continuo en el directorio
/usr/local/src/linux]:
make-kpkg clean
make-kpkg --revision=custom.1.0 kernel_image
dpkg -i ../kernel-image-2.6.1-rc1-ben1_custom.1.0_powerpc.deb
*** Modificación de yaboot.conf
Y, para terminar, modificaré /etc/yaboot.conf para
adecuarlo a la nueva situación. Esto sucede ahora, porque mientras que
el núcleo que venía en la distro tenía su enlace simbólico en
/, los núcleos construidos desde las fuentes son por
defecto apuntados por enlaces simbólicos que residen en el propio
/boot.
Esto es, si hago un ls en /, tengo lo siguiente:
ls -l /
...
vmlinux -> boot/vmlinux-2.4.22-powerpc ## núcleo de la distribución
Mientras que si lo hago en /boot, aparte de todos los núcleos,
configs, etc. tengo un enlace simbólico que apunta al nuevo núcleo:
ls -l /boot
...
vmlinux -> vmlinux-2.6.1-rc1-ben1 ## el núcleo que acabo de compilar
Por tanto, edito yaboot.conf, para dejar la parte que
se refiere a las imágenes de los núcleos del siguiente modo [Lo que
permitirá elegir al arranque la antigua imagen, si es que falla la
nueva]:
## El núcleo nuevo: 2.6
image=/boot/vmlinux
label=linux-2.6.1
append="video=radeonfb"
read-only
## El núcleo de la distro: 2.4
image=vmlinux
label=linux-2.4.22
read-only
[Nótese la instrucción
append="video=radeonfb"
Con esta instrucción ---la sintaxis es nueva en los 2.6: no basta
radeon--- obligo al núcleo a que utilice el soporte de
framebuffer de Radeon (nuestra tarjeta), que es el quedó compilado
después de la configuración anteriormente descrita.]
Sobra decir que en futuras compilaciones de nuevos núcleos 2.6 la
situación cambiará y habrá que adaptar yaboot.conf de
nuevo como corresponda. [Lo cual sólo será necesario en la segunda
ocasión que compilemos el núcleo desde las fuentes. A partir de ese
momento el proceso será automatizado por 'kernel-package'.]
Tras modificar yaboot.conf, copio la nueva
configuración en la partición de arranque:
ybin
Y ahora, a reiniciar. Y a esperar a que los dioses no nos hayan
abandonado.
Continuará ... :)