xmodmap

Steve jobs est un génie, mais le coup de faire des claviers differents ça n'est pas à 100% une super idée. En particulier quand on veut faire tourner linux ou windows sur un mac. Comme j'ai encore passé un temps dingue a essayer d'avoir un clavier apple qui se comporte a peu prêt correctement sous linux (et qui permet en prime d'avoir le middle-click avec le clavier), voici le .Xmodmap auquel j'ai abouti:

! dans le xorg.conf je pars de : XkbModel macintosh , XkbLayout fr
! curieusement les touches @# et <> sont inversees
! en prime , j'assigne le middle click a 'ISO_Level3_Shift-<'
keycode  94 = at numbersign periodcentered Ydiaeresis periodcentered Ydiaeresis
keycode  49 = less greater lessthanequal greaterthanequal Pointer_Button2 Pointer_Button2
! je remplace le dead tilde par un tilde pas dead
keycode  57 = n N asciitilde dead_tilde asciitilde dead_tilde
! fait en sorte que les deux touches 'option' fonctionnent comme sous mac
keycode 64 = ISO_Level3_Shift
! utilise la touche 'command' en tant que alt/meta
keycode  115 = Alt_L Meta_L
! je vire les nobreakspace parce que ca pue
keycode  65 = space space space space space space

! pas trop compris la... 
remove mod1 = ISO_Level3_Shift
add mod1 = Alt_L

Ôde à mondorescue

Je voulais clôner une debian Lenny installée dans un petit boitier sur un virtualbox tournant sur le mac. On m'a suggeré que Mondo Rescue pourrait être l'outil idéal pour effectuer la transplantation, et il s'est avéré que c'était vrai. Pas besoin de lire 300ko de man page , pas besoin de comprendre des concepts compliqués, on le lance, il pose quelques questions basiques et hop, les partitions de la machine originale sont compressées (avec bzip2, pouah) et backupées dans des fichiers .iso de 4Go. Je les copie sur le mac, créé une machine virtuelle dans virtual box, monte la premiere iso et boote la VM, et hop c'est parti, la debian est clonée dans la VM. C'est tellement chouette et simple que ça m'a inspiré un haiku au nombre de syllabes incertain:

Mondo Rescue,
Tu me laisses
Sur le cul

Cross-compiler en 32-bit sur une debian 64-bit

Un truc que j'aime bien sur le mac c'est la facilité avec laquelle on compile pour du i386, du x86_64, ou du ppc, voire ppc64 (pour celui là c'est fini depuis Snow Leopard, macos 10.5 a été la seule version qui permette de compiler pour ces 4 architectures). Sous windows, avec visual c++, c'est pas super commode mais MS fournit des platform SDK pour i386 et x64 qui sont suffisants (y'a un milliard de dlls là dedans). En plus aussi bien windows que macos savent executer n'importe quelle appli 32-bit sur la variante 64-bit de l'OS. Par contre sous linux, quand on choisit d'installer une distro 64-bit, c'est qu'on a decidé de bannir le 32-bit (qui pue), parce que le 64-bit saitrogénial. Donc par défaut les paquets du genre ia32-libs ne sont pas installés. Les users ne peuvent pas executer simplement n'importe quelle appli 32-bit sur leur gentoo hyper tunée pour aller trop vite parce que les libs sont manquantes. Et c'est la croix et la bannière pour mettre en place un environnement qui permette de compiler des applis non triviales en i386 sur la distro x86_64. En tout cas moi j'ai pas mal galéré mais comme c'était il y a un bout de temps, sur une debian Lenny, j'ai oublié, du coup je vais noter ici un ou deux trucs pour m'en souvenir.

Le probleme, c'est que ia32-libs et ia32-libs-gtk ça ne fournit qu'un sous ensemble des libs qu'on peut avoir besoin d'utiliser... Par exemple, y'a pas libasound (ALSA), c'est ballot. Y'a pas liblo non plus. Etc. Alors comment qu'on fait ?

Dans l'ordre des trucs que j'ai essayé je crois que j'ai tenté l'approche "je compile le cross compilateur, qui va cross-compiler toutes les libs dont j'ai besoin", tout ça sur un core 2 solo 1.2GHz sous-ventilé autant dire que ça a vite tourné à l'échec critique.

Ensuite j'ai mis en place un chroot dans lequel j'ai installé une debian 32-bits, super pénible, pas pratique (faut chrooter pour aller compiler en 32-bit). Mais ça marche et j'ai utilisé cette méthode pendant un certain temps.

Et puis finalement la methode qui marche et qui est relativement pratique, c'est juste de telecharger les .deb i386 à la main, et de les decompresser directement dans /emul/ia32-linux . Par exemple pour liblo:

wget http://ftp.debian.org/debian/pool/main/libl/liblo/liblo0ldbl_0.23-2.2_i386.deb
dpkg -X liblo0ldbl_0.23-2.2_i386.deb /emul/ia32-linux

(et pareil pour le paquet liblo0-dev )

Et ça roulaize.