Debian GNU/Linux en un iBook G4

Introducción y objetivos:

La instalación y configuración de Debian en el iBook G4 está bastante documentada.
Sin embargo, creo que hay detalles que los manuales anteriores no cubren o no todo lo claro que debieran.
O a lo mejor yo he sido muy torpe para encontrar la solución a mis problemas ;)

En la mayoría de manuales encuentro como hacer de nuestra Debian un sistema funcional, en cuanto a la configuración de los dispositivos, pero no cómo hacerlo más cómodo para el uso.

Voy a suponer que quien siga este documento tiene experiencia con Debian y Linux en general, para así poderme saltar las partes más tediosas que ya están muy bien contadas en otros documentos.

Instalación:

En las referencias tenéis disponibles un montón de guías que detallan todos los pasos, así que no voy a duplicar el trabajo ;)
Antes de empezar, os recomiendo que por lo menos os leáis las 3 primeras, y sobretodo la de Debianitas.net, que es la más reciente.

A ellas sólo quiero añadir:

Para todos aquellos que vayáis a mantener Mac OS X, creo que lo más sencillo es que dividáis desde el instalación de OS X el disco en dos particiones. En la primera instaléis OS X y la segunda la dejáis libre para particionar desde el instalador de Debian.

La detección de hardware y el gestor de arranque (yaboot, similar a lilo) funcionan bastante bien.

Por cuestión de software, yo actualizé tras la instalación a testing, así que todo lo que aquí se cuenta funciona está basado en eso.

Además, antes de ponerte a instalar recomiendo que eches un ojo también a los documentos de ahorro de energía de las referencias, para que veas que sistema de fichero te conviene más.

En el iBook yo uso ext2. La razón es que al no tener journaling los accesos a disco duro son mucho menores, con el ahorro de energía que conlleva. Por la pérdida de datos en los cortes de luz no deberíamos preocuparnos, para eso tenemos la batería, ¿no? ;)

Configuración y puesta a punto:

Vamos a aprovechar que mucha gente ya ha trabajado en configurar bien sus iBook para dejar el nuestro tan fino como podamos.

El núcleo:

Aunque nos gusta mucho el nucleo que deja Debian por defecto ;), vamos a pegarle una pequeña actualización.

En http://twolife.free.fr/vrac/ibook/ tenemos disponible (cuando yo redacto esto) un paquete precompilado del núcleo 2.6.12.

Lo bajamos, y con un simple

dpkg -i kernel-image-2.6.12_3_powerpc.deb

nos deja la imagen del núcleo en /boot/initrd.img-2.6.12-powerpc.
Configuramos el /etc/yaboot.conf para arrancar con esa imagen, ejecutamos

ybin

Tenéis esta parte más detallada en el manual de GeeSeCillo.

Este núcleo está bastante bien, pues trae todo lo que necesitamos. Pero (porque siempre hay un pero :P) a mí no me terminaba de convencer.

Por dos razones sobretodo:

Aprovechándome del .config que encontramos en la misma dirección de antes, yo aproveché para añadir mis cambios. Por supuesto, necesitamos las fuentes del nucleo de http://kernel.org de siempre ;). Vamos a compilar un ratillo.

Si no sabes compilar un núcleo te recompiendo que te saltes esta parte. Si no sabes, pero quieres hacer todo esto, te recomendiendo el Kernel 2.6 HOWTO.

Los menús de make menuconfig para quitar el uso del LED:

	Device Drivers  --->   	
 		ATA/ATAPI/MFM/RLL support  ---> 	
 			[ ] Blink laptop LED on drive activity 	
 	

Para añadir el soporte completo de ahorro de energía:

	Platform options  --->  
		[*] Power Management support  
	
	Device Drivers  --->
  		Macintosh device drivers  --->  	 
  			[*] Support for PMU  based PowerMacs
			[*] Power management support for PowerBooks
	

Puedes aprovechar para activar el modo preferente (preemptible kernel) o añadir otros controladores que te puedan hacer falta (como dispositivos USB o Firewire).

En cualquier caso, aquí dejo mi .config para quien quiera basarse en él. Recuerdo que es una modificación del de TwoLife.

Hora de compilar, ya sabéis:

make && make modules_install
cp vmlinux /boot/vmlinux-2.6.12

La versión de PowerPC no deja las imágenes en arch/*/boot sino en el mismo directorio de compilación (habitualmente /usr/src/linux).

Con este kernel tenemos soporte para hacer funcionar todo el hardware del iBook, excepto la Airport Extreme, que eso ya no esta en nuestra mano ;)

El arranque con yaboot:

La configuración de yaboot es similar a la de lilo, por lo que probablemente te suene. Algunos nos habíamos acostumbrado a Grub, pero nunca viene mal recordar un poco.

El instalador de Debian lo deja configurado para arrancar por defecto la distribución.
Al arrancar el portátil aparece un menú dando a elegir Mac OS X, Linux o el lector de CD. Si eliges Linux, después podemos seleccionar la imagen del núcleo que queremos.
Si pos alguna razón queréis que se arranque Mac OS X por defecto, teneis que añadir al /etc/yaboot.conf la opción defaultos=macosx (tal cual, no hay que definir ninguna otra etiqueta) antes de definir las imágenes.

El teclado:

Además, debido a su tamaño, los teclados de los portátiles suelen tener teclas de doble función.
Generalmente no molesta demasiado porque suelen ponerse teclas que se usan relativamente poco, pero en el caso del iBook, no tenemos AltGr para escribir cómodamente los # { } [ ] tan usados en nuestros programas ;P

Para poder escribir esos carácteres tendríamos que hacer Fn + Alt + Carácter.
En Mac OS X el Alt funciona a medio camino entre el Alt y AltGr de los que estamos acostumbrados a PCs.

Para la terminal, la solución es tan fácil como elegir correctamente el keymap de teclado.

RaGNaRoK:~# dpkg-reconfigure console-data
Nos aparecerá un cuadro en ncurses, dónde debemos elegir:
Elegir mapa de teclado según arquitectura
qwerty
Spanish
Standard (en vez de Apple USB)
Standard (en vez de CP850)

Mágicamente, el AltGr se ha mapeado a la tecla Comando (la de la manzana). A falta un de AltGr, dos ;)

Esto está muy bien para el terminal, nos falta las X. No me he extendido en la configuración de XFree/X.org porque al final del documento disponéis de un XF86Config-4, además de todas las otras guías ;)

Mi XF86Config-4 pinta así:

	Section "InputDevice"
		Identifier      "Generic Keyboard"
		Driver          "keyboard"
		Option          "CoreKeyboard"
		Option          "XkbRules"      "xfree86"
		#Option         "XkbModel"      "macintosh"
		Option          "XkbLayout"     "es"
	EndSection
	
Es importante que el XkbModel no esté activo para que funcionen bien todas las teclas.
Hasta ahora nos pasa como antes, tenemos que seguir usando Fn + Alt para hacer el AltGr.

Esto lo solucionamos con xmodmap, que nos sirve para mapear unas teclas sobre otras. Con xev podemos ver el código de tecla (keycode) de la Manzana para poder mapearlo. Si usas GNome o KDE lee un poco más adelante.

	valkyr@RaGNaRoK:~$ xev
	Outer window is 0x2800001, inner window is 0x2800002
	[pulsamos la Manzana, cualquiera de las dos]
	KeyRelease event, serial 24, synthetic NO, window 0x2800001,
	root 0x48, subw 0x0, time 2162963, (236,563), root:(240,632),
	state 0x40, keycode 115 (keysym 0xffeb, Super_L), same_screen YES,
	XLookupString gives 0 bytes:  ""
	

Lo importante, keycode 115 y la acción es Super_L. Nosotros vamos a asignar al código 115 la etiqueta del AltGr, que según las reglas que pusimos en el XF86Config-4 es ISO_Level3_Shift.

Comprobamos que funciona:

valkyr@RaGNaRoK:~$ xmodmap -e "keycode 115 = ISO_Level3_Shift"

No debería, pero tu keycode y etiqueta podrían ser diferente, compruébalo con xev.

Pues si funciona, salvamos el cambio en el ~/.Xmodmap añadiendo la línea:

keycode 115 = ISO_Level3_Shift

Si usas un gestor de ventanas completito, como Gnome o KDE, probablemente tengan su propio gestor de teclado. Si es el caso, probablemente te avise al arrancar que no le gusta el .Xmodmap que acabamos de crear y que va a usar su propia configuración.

Es el caso de Gnome, y supongo que el de KDE también. En Gnome, tenemos en Aplicaciones > Preferencias del escritorio > Teclado todas las opciones.

Las mías son:

Ya veis, huímos de Windows, pero las Manzanas se consideran Win-keys también ;)

Teclas de función:

La mayoría usamos pbbuttonsd para configurar las teclas de función. Al principio pbbuttonsd se encargaba sólo de los botones, pero al final han añadido también algunas opciones de gestión de energía. Es un aviso para quien intente instalar pmud y pbbuttonsd a la vez, porque le dirá que los paquetes son incompatibles.
Aquí tenéis más detalles sobre el ahorro de energía.

pbbuttonsd requiere /dev/pmu (por lo del ahorro de energía), pero nuestro núcleo ya esta preparado ;)
Para configurarlo, lo mejor es recurrir al paquete powerprefs, que es una interfaz en GTK.

Si queremos unos avisos visuales como los de Mac OS X cuando pulsamos las teclas de volumen, brillo y expulsión de CD, disponemos de gtkpbbuttons.

El ratón:

Bueno, como bien habréis notado, nuestro trackpad sólo dispone de un botón ;)
En Mac OSX se soluciona pulsando Ctrl a la vez que haces click para simular el segundo botón.

Nosotros vamos a ser un pelín más originales y vamos a mapear directamente las acciones de segundo y tercer botón sobre el teclado. Con sysctl, que configura parámetros del kernel en tiempo de ejecución.
man sysctl.conf y man 8 sysctl para más info ;)

Con editar el /etc/systcl.conf y añadir estas líneas es suficiente:

	dev/mac_hid/mouse_button3_keycode = 96
	dev/mac_hid/mouse_button2_keycode = 87
	dev/mac_hid/mouse_button_emulation = 1
	

Básicamente le decimos que active la emulación de botones y los keycodes a los que debe mapear esas acciones. El botón derecho lo tenemos en el Intro que está entre la tecla Comando izquierda y la flecha de dirección izquierda. El botón central, en el F11.
Si queréis cambiarlos a otro sitio, tan fácil como cambiar el keycode en el /etc/systcl.conf.

Si conectáis cualquier ratón por USB, el kernel ya está preparado para usarlo (al igual que lo estaba para la trackpad).
Aquí ya es como siempre: gpm para el terminal y la configuración adecuada para el XF86Config.
En /etc/gpm.conf:

	device=/dev/input/mice
	responsiveness=
	repeat_type=ms3
	type=autops2
	append=''
	sample_rate=
	
/etc/X11/XF86Config-4:
	Section "InputDevice"
		Identifier      "Configured Mouse"
		Driver          "mouse"
		Option          "CorePointer"
		Option          "Device"                "/dev/input/mice"
		# Si preferis usar el /dev/gpmdata:
		# Option          "Device"                "/dev/gpmdata"
		# Esto dependera del raton:
		Option          "Protocol"              "ImPS/2"
		Option          "Buttons"               "5"
		Option          "ZAxisMapping"          "4 5"
	EndSection
	

El sonido:

Ya tenemos también el núcleo preparado para trabajar con ALSA.
Con instalar los paquetes de ALSA y cargar el módulo es suficiente:

apt-get install alsa-base alsa-utils
modprobe snd-powermac
echo "snd-powermac" >> /etc/modules

Antes de poneos a escuchar música como locos, os recomiendo que ejecutéis alsamixer y juguéis un poco con los controles de sonido porque puede sonar realmente mal al principio.

Ahorro de energía:

El ahorro de energía es un tema bastante extenso, así que para no hacer un ladrillo este documento, lo he separado: Ahorro de energía en iBook G4.

Otros:

Problema con la hora entre Mac OS X y Debian:

Si en la instalación de Debian dijistéis 'No' a la pregunta 'Set hardware clock to GMT', vais a ver que la hora entre Debian y Mac OS X no es la misma. Si corriges la hora en un sistema, lo fastidias en el otro.

Me di cuenta que tenía que ver con el UTC, ya que la diferencia era de 2 horas. En horario de verano, nuestra hora (zona CEST) es UTC+2.

El problema es que Mac OS X almacena en el reloj (hardware) del sistema la hora UTC en vez de la hora local como debería ser (consulta man hwclock para saber más) por compatibilidad.

La solución buena (y complicada) nos la da Benh. Quién si no ;) (quien no lo conozca que se dé algún paseo por penguinppc.org)

Yo opto por la solución fácil que es decir a Debian que nuestro reloj del sistema está en UTC. Para ello muy facilito: editamos el /etc/default/rcS y ponemos la variable UTC=yes.

Gracias a Josep Comas por su ayuda con este problemilla ;)

Invertir teclas de función:

O como hacer que las teclas de función (F1, F2, F3...) se activen directamente sin tener que pulsar Fn.

Muy facilito si instalamos powerprefs (un cliente para configurar pbbuttonsd). En Opciones de control específicas de la máquina > Dispositivo de entrada tenemos la opción "Hotkeys con tecla Fn". De esa forma los F1, F2,... están activados por defecto y son las opciones de volumen y brillo las que se activan al pulsar Fn.

Ficheros:

Os incluyo algunos de mis ficheros de configuración por si os pudieran ser útiles.

Referencias: