Enfin, ça marche! Et les transferts sont beaucoup plus rapides qu'avec mon appareil-photo! Ça valait le coup!
J'ai téléchargé les sources du kernel 2.6.20 pour chez debian experimental:
http://kernel-archive.buildserver. [...] rig.tar.gz
Puis les modifications que les mainteneurs de debian ont apportées à ce kernel:
http://kernel-archive.buildserver. [...] 97.diff.gz
J'ai extrait ces fichiers dans /usr/src/.
J'ai patché les sources 2.6.20 avec ce fichier diff (ceci est un test grâce à l'option --dry-run):
patch -p0 --dry-run -s < linux-2.6_2.6.20-1~experimental.1~snapshot.8297.diff
S'il n'y a pas d'erreur, patcher pour de vrai:
patch -p0 -s < linux-2.6_2.6.20-1~experimental.1~snapshot.8297.diff
Je suis allé chercher le gros paquet de patches de Morton post kernel 2.6.20:
ftp://ftp.fr.kernel.org/pub/linux [...] 59.tar.bz2
J'en ai extrait le patch mmc (les drivers mmc s'occupent des cartes MMC, SD et SDHC) : git-mmc.patch que j'ai copié dans /user/src/
linux-2.6-2.6.20 est le nom du dossier où se trouvent les sources du kernel 2.6.20 dans /usr/src . Mais dans ce patch le nom du dossier où se trouvent les sources à patcher est a et b.
J'ai donc ouvert ce patch dans un éditeur de textes; j'ai remplacé automatiquement toutes les chaînes de caractères a/MAINTAINERS/ par linux-2.6-2.6.20/MAINTAINERS/ , b/MAINTAINERS/ par linux-2.6-2.6.20/MAINTAINERS/, a/drivers/ par linux-2.6-2.6.20/drivers/, b/drivers/ par linux-2.6-2.6.20/drivers/, a/include/ par linux-2.6-2.6.20/include/, b/include/ par linux-2.6-2.6.20/include/
J'ai sauvegardé.
J'ai patché la source de mon kernel (ceci est un test grâce à l'option --dry-run):
patch -p0 --dry-run -s <git-mmc.patch
S'il n'y a pas d'erreur, patcher pour de vrai:
patch -p0 -s <git-mmc.patch
Ensuite j'ai suivi ce guide pour compiler un kernel pour debian, et en faire un .deb au passage:
http://www.howtoforge.com/kernel_compilation_debian
A taper en root dans une console:
make clean && make mrproper
cp /boot/config-`uname -r` ./.config
make menuconfig
Le menu de configuration du kernel apparaît:
Dans Load an Alternate Configuration File, choisir:
.config
Dans General Setup ---> () Local version - append to kernel release, j'ai tapé:
-sdhc-1
Avec ce nom de kernel tout va bien; s'il n'y a aucun nombre dans le nom ça ne passe pas à la fin de la compilation. Heureusement que j'ai un Core2Duo et que ça m'a pris moins d'une heure pour recommencer!
Choisir l'option Exit en bas de l'écran, puis à la question Do you wish to save your new kernel configuration?
répondre: Yes
Puis taper dans la console:
make-kpkg clean
fakeroot make deb-pkg
Une fois la compilation terminée, un fichier .deb apparaît dans /usr/src/ nommé:
/usr/src/linux-2.6.20-sdhc-1-686_2.6.20-sdhc-1-686_i386.deb
On tape dans la console:
dpkg -i linux-2.6.20-sdhc-1-686_2.6.20-sdhc-1-686_i386.deb
On ouvre le fichier /boot/config-2.6.20-sdhc-1-686, puis on commente la ligne CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
en mettant un # devant:
# CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
On sauvegarde.
Puis dans une console en root on tape:
mkinitrd.yaird -o /boot/initrd.img-2.6.18.3-default1 2.6.18.3-default1
update-grub
Surprise: l'image du kernel dans /boot ne fait que 1,3 Mo, contre 4,3 Mo pour les images des autres kernel!
Je reboote quand même, m'attendant à des problèmes.
Ça marche!
---------------
Travailler plus pour vivre moins. Ou partager le travail et la richesse, pour vivre plus et plus sagement? C'est toi qui vois.