A última hora he decidido que hacer con mis vacaciones: me voy al GeekTour ’06. Estoy ya en Barcelona, y mañana saldré para Figueres e iniciar un viaje en bici hasta Jaca. Así que estaré offline unos 10 días. A pasarlo bien 😉
Archivos mensuales: julio 2006
Instalación de GNU/Linux en un Apple MacBook
Desde la semana pasada tengo un ordenador portátil: un Apple MacBook. De momento estoy muy contento con él, aunque hay quien tiene razones para no comprarlo, como que se calienta demasiado como para tenerlo en las rodillas y que a algunos usuarios se les corroído misteriosamente la carcasa (Apple ya las está reemplazando).
Rápidamente instalé Kubuntu, aunque del mismo modo se podría instalar Debian, Gentoo u otra distribución. Esta computadora lleva un procesador Intel Core Duo, así que se puede usar cualquier distro para x86.
Para instalar la Ubuntu, seguí los pasos que indica vud1 en su blog, y que reproduzco a continuación con un par de pequeñas modificaciones, y el añadido de como configurar el teclado español.
Partición del disco
Antes de nada hay que hacer espacio en el disco duro, que tendremos totalmente ocupado por Mac OS X. En vez de usar BootCamp, podemos utilizar la utilidad diskutil, que según creo se incluye a partir de la versión 10.4.6 del sistema (creo que si quisiéramos tener un triple arranque con MS Windows, sí que necesitaríamos BootCamp, pero si alguna vez necesitara usar Hasefroch, recurriría a QEMU o Parallels).
Miramos las particiones de nuestro disco:
# diskutil list
/dev/disk0
#: type name size identifier
0: GUID_partition_scheme *55.9 GB disk0
1: EFI 200.0 MB disk0s1
2: Apple_HFS Macintosh HD 55.6 GB disk0s2
Según entiendo, la primera partición hace la función del BIOS de un PC normal. La partición que debemos redimensionar es la 2. Para ello hago:
# diskutil resizeVolume disk0s2 26624M "Linux" GNU 26624M "Swap" swap 2048M
Started resizing on disk disk0s2 Macintosh HD
Verifying
Resizing Volume
Adjusting Partitions
Finished resizing on disk disk0s2 Macintosh HD
You will need to manually reformat your new partitions.
WARNING: You must now reboot!
Inicialmente indiqué los tamaños en GB, pero no funcionó, mientras que señalándolos en MB curiosamente sí que funciona.
Instalación del gestor de arranque
Tras reiniciar el sistema, instalamos la aplicación rEFIt, que es un gestor de arranque, como LILO, GRUB o yaboot. Una vez descargada la imagen de disco, la abrimos y copiamos el directorio efi al directorio / de Mac OS X, de tal modo que al hacer un
# ls /efi/
nos salgan estos dos directorios:
refit tools
y activamos el rEFIt tal que así:
#cd /efi/refit
#sh ./enable.sh
Instalación de Ubuntu
Insertamos el CD de Kubuntu Dapper y reiniciamos. En principio, para que el MacBook arranque desde CD hay que pulsar la tecla C, aunque creo recordar que rEFIt ya lo hizo innecesario. Una vez arrancado el live-CD, usamos el instalador gráfico basado en Ubiquity de la manera habitual. A la hora de asignar las particiones, no debemos señalar nada para la partición EFI.
La instalación falla en el último paso, la instalación de GRUB, sobre lo que ya hay un bug abierto. Cerramos el instalador y abrimos una consola. Desde la consola lo que tenemos que hacer es montar la partición donde hemos instalado, montamos el dev y el proc y hacemos un chroot. Desde ahí instalamos y configuramos el cargador de Linux:
% sudo -s
# mount /dev/sda3 (o la partición donde hayamos instalado) /mnt
# cp /etc/resolv.conf /mnt/etc/resolv.conf (para tener unos servidores de nombres -DNS- funcionales)
# mount -t proc none /mnt/proc
# mount -o bind /dev /mnt/dev
# chroot /mnt
# vim /etc/apt/sources.list
# aptitude update
# aptitude install lilo
# aptitude dist-upgrade (para actualizar el sistema)
# aptitude install linux-686-smp (para que nos reconozca los dos procesadores del dual core :D )
En mi sources.list tengo activadas estas líneas:
deb http://es.archive.ubuntu.com/ubuntu/ dapper main restricted universe
deb http://es.archive.ubuntu.com/ubuntu/ dapper-updates main restricted universe
deb http://security.ubuntu.com/ubuntu dapper-security main restricted universe
deb http://kubuntu.org/packages/kde-latest dapper main
deb http://kubuntu.org/packages/koffice-stable dapper main
deb http://kubuntu.org/packages/amarok-stable dapper main
Desde esta misma consola editamos el fichero /etc/lilo.conf, dejándolo algo tal que así:
boot=/dev/sda3
default=Kubuntu
map=/boot/map
delay=20
append=”noapic”
image=/vmlinuz initrd=/initrd.img
root=/dev/sda3
label=Kubuntu
read-only
En otra terminal lanzamos lo siguiente para añadir el flag de arranque a la partición de Ubuntu:
#sudo parted
(parted) print
(parted) set 3 (o el número de la partición raíz de la instalación)
(parted) boot
(parted) on
(parted) quit
Volvemos a la terminal donde hemos editado el lilo y ejecutamos:
#lilo -b /dev/sda
Primer arranque
Finalmente reiniciamos la máquina, extrayendo el CD de instalación. Al reiniciar, en la pantalla del rEFIt veremos dos iconos: uno de la manzana, y otra del querido pingüino Tux (o quizás un rombo feote). En las opciones de abajo, las pequeñas, seleccionamos con las teclas cursor el segundo icono empezando por abajo a la izquierda, el del particionador. Al lanzarse sale una consola donde pregunta si queremos sincronizar con el MBR o algo así, y le decimos que sí. Acto seguido reiniciamos, y ya podremos arrancar GNU/Linux.
Mientras que el MacBook Pro creo que lleva una tarjeta gráfica ATI, nuestro MacBook lleva una tarjeta Intel (chipset i950) integrada en placa. Para que la resolución de pantalla tenga unos valores correctos (1280×800, por ejemplo), debemos instalar el paquete 915resolution (está en los repositorios de Ubuntu).
La disposición del teclado no coincide exactamente con la de un PC normal. La tecla AltGr no funciona (con lo que no se pueden escribir arrobas, tuberías (pipes), etc) y las teclas ºª y <> están intercambiadas.
Para solucionarlo en la consola he preparado este mapa de teclado, que se debe poner en /etc/console/boottime.kmap.gz
.
Para solucionarlo en el sistema de ventanas X he creado este fichero .Xmodmap :
!!
!! xmodmap for Apple MacBook, Spanish keyboard
!! xmodmap para el Apple MacBook con teclado español
!! Enrique Matias Sanchez
!!
!! Cada tecla tiene un keycode (que se averigua con xev),
!! y se le asignan hasta 8 keysyms (fichero keysymdef.h):
!! 1) Cuando se pulsa la tecla sin ningún modificador
!! 2) Cuando se pulsa con Shift (mayúsculas)
!! 3) Cuando se pulsa con AltGr
!! 4) Cuando cuando se pulsa junto con AltGr y Shift
!!
! Se intercambian las teclas ºª y <>
keycode 94 = masculine ordfeminine backslash backslash backslash backslash
keycode 49 = less greater bar brokenbar bar brokenbar
!
! Manzana derecha -> AltGr
! Mayúsculas + manzana derecha -> botón central del ratón
keycode 116 = ISO_Level3_Shift Pointer_Button2
! Mayúsculas + Intro numérico -> botón derecho del ratón
keycode 108 = KP_Enter Pointer_Button3
Supongo que ambos se podrían mejorar (espero vuestros parches en los comentarios 😉 ) . El primer fichero será efectivo tras reiniciar la computadora (¡ojo si algún momento hay que reconfigurar console-data!).
Para el segundo hay que hacer xmodmap .Xmodmap cada vez que se arranque el sistema de ventanas X. Para que se haga automáticamente he puesto este script (con permisos de ejecución) en ~/.kde/AutoStart (supongo que habrá mejores maneras de hacerlo):
#!/bin/sh
xmodmap /home/quique/.Xmodmap
Como no siempre se tiene un ratón USB a mano, he emulado los clics derecho y central con pulsaciones del teclado (manzana derecha e intro numérico, en vez de los tradicionales F11 y F12). Para activar esta funcionalidad hay que instalar el paquete xkbset, y ejecutar xkbset m
.
Con la versión actual del paquete del núcleo (linux-image-2.6.15-26-686) parecen funcionar correctamente la tecla Fn, el bluetooth y el sonido.
La tarjeta wireless está basada en el chip Atheros y usa los drivers madwifi, pero de momento no he conseguido ponerla en modo monitor, me escupe este error:
# iwconfig ath0 mode Monitor
Error for wireless request “Set mode” (8B06) :
SET failed on device ath0 ; Invalid argument.
Otros problemas:
- si conecto un ratón al puerto USB que está al lado del puerto FireWire, el puntero va a saltos. En el otro puerto no da problemas.
- La cámara de vídeo integrada todavía no va, aunque Ronald S. Bultje está trabajando para que funcione la iSight sobre Linux
- A veces el teclado no reaccionaba bien, iba lento, ignoraba algunas pulsaciones o lo que es peor, repetía dos o más veces una pulsación. Éste era el principal problema, pues cuando sucedía, era muy difícil trabajar. Tal vez fuese cuestión del SMP (el live-CD funciona bien) o del orden en que se cargan los módulos. Desde hace dos o tres días no me ha sucedido, ¿quizás se haya arreglado de alguna manera?
Creación de una distribución basada en Ubuntu
En este artículo se explica como remasterizar (personalizar) la distribución (K)Ubuntu Dapper GNU/Linux. Es poco más que una traducción de los artículos
Requisitos
Antes de nada, debemos asegurarnos de que tenemos todo lo necesario:
- unos 3-5 GB de espacio libre en disco
- un CD o imagen ISO de (K)Ubuntu Dapper (http://releases.ubuntu.com/dapper/)
- squashfs-utils y mkisofs instalados
- un núcleo que admita squashfs (como el que viene de serie en Kubuntu Dapper
- qemu instalado, para probar las imágenes que creemos
Extracción del CD
Cargamos el módulo squashfs:
$ sudo modprobe squashfs
Montamos la imagen ISO o el CD-ROM
$ sudo mount -o loop kubuntu-6.06-desktop-i386.iso /mnt
ó
$ mount /cdrom
Extraemos el contenido de la imagen en un directorio llamado «extract-cd». En mi caso lo hago en una partición aparte (hdb1), que debe estar montada de modo que permita la ejecución de binarios.
$ mkdir /media/hdb1/extract-cd
$ rsync –exclude=/casper/filesystem.squashfs -ax /mnt/ /media/hdb1/extract-cd
El CD contiene varios subdirectorios, incluyendo uno con una selección de programas libres para Windows. Si lo deseamos podemos borrarlo, ahorrando unos 95 MB.
$ sudo rm -rf /media/hdb1/extract-cd/programs
Igualmente podemos borrar el directorio disctree.
Extracción del sistema
Montamos el sistema de ficheros comprimido con squashfs
$ sudo mkdir /mnt2
$ sudo mount -t squashfs -o loop /mnt/casper/filesystem.squashfs /mnt2/
Extraemos el contenido del squashfs en un directorio llamado edit
$ mkdir /media/hdb1/edit
$ sudo cp -a /mnt2/* /media/hdb1/edit/
Ya podemos desmontar el CD y el sistema comprimido:
sudo umount /mnt2
sudo umount /mnt
sudo rmdir /mnt2
Personalización
Copiamos nuestro fichero /etc/resolv.conf para tener unos DNS que consultar al acceder a Internet
$ sudo cp /etc/resolv.conf edit/etc/
Finalmente entramos en nuestro nuevo sistema:
$ sudo chroot edit
# mount -t proc proc proc
# mount -t sysfs sys sys
Ahora podemos hacer todos los cambios que queramos. Podemos empezar editando el fichero /etc/apt/sources.list para modificar los repositorios, actualizar, y añadir/quitar paquetes.
Por ejemplo podemos eliminar los paquetes de idioma que no nos interesen (esto elimina también el paquete kubuntu-live, pero no lo necesitamos para nada)
# aptitude purge language-pack-ar language-pack-ar-base language-pack-bn language-pack-bn-base language-pack-de language-pack-de-base language-pack-fr language-pack-fr-base language-pack-hi language-pack-hi-base language-pack-nl language-pack-nl-base language-pack-kde-ar language-pack-kde-ar-base language-pack-kde-bn language-pack-kde-bn-base language-pack-kde-de language-pack-kde-de-base language-pack-kde-fr language-pack-kde-fr-base language-pack-kde-hi language-pack-kde-hi-base language-pack-kde-nl language-pack-kde-nl-base language-pack-kde-zh language-pack-kde-zh-base
e instalar otros idiomas que sí nos interesen:
# aptitude install language-pack-an language-pack-an-base
Limpieza
Borramos los ficheros que se hayan ido creando
$ sudo rm ~/.bash_history ~/.viminfo [etc]
$ sudo rm -rf /tmp/*
Los paquetes deb que hayamos descargados y estén en la cache:
$ sudo apt-get clean
Y finalmente desmontamos los sistemas de ficheros especiales y salimos del chroot
$ sudo umount proc
$ sudo umount sys
$ exit
Preparación del CD
Podemos editar el fichero extract-cd/isolinux/isolinux.cfg y añadir
preseed/locale=es_ES kbd-chooser/method=es
a las entradas append para que el CD arranque directamente en castellano.
Le damos un nombre a la imagen en extract-cd/README.diskdefines
$ sudo vim extract-cd/README.diskdefines
Regeneramos el manifest (lista de los paquetes del sistema):
chmod +w extract-cd/casper/filesystem.manifest
sudo chroot edit dpkg-query -W –showformat=’${Package} ${Version}n’ > extract-cd/casper/filesystem.manifest
Cuando se ejecuta el instalador del CD de escritorio, lo copia todo al sistema objetivo, pero después hace limpieza y elimina los paquetes que no estén en un segudo fichero llamado filesystem.manifest-desktop. Así se evita que en la instalación se incluya el propio instalador, por ejemplo.
Podemos filtrar el manifest con un script de sed. Creamos un fichero /tmp/filtro con este contenido:
/casper/d
/libdebian-installer4/d
/os-prober/d
/ubiquity/d
/ubuntu-live/d
/user-setup/d
y ejecutamos
cd /media/hdb1/extract-cd/casper
sed -f /tmp/filtro filesystem.manifest-desktop
rm /tmp/filtro
Comprimimos el sistema de ficheros (esto puede tomar 15-20 minutos, así que podemos salir a echar un café)
$ sudo mksquashfs edit extract-cd/casper/filesystem.squashfs
Calculamos las sumas MD5
$ (cd extract-cd && find . -type f -print0 | xargs -0 md5sum > md5sum.txt)
Y creamos la imagen ISO
$ cd extract-cd
$ mkisofs -r -V «MI_DISTRO» -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../midistro.iso .
Por último, podemos probar la imagen de CD creada con el emulador QEMU
$ qemu -cdrom cdname.iso -boot d