Vous arrivez à lire les cartes mémoires SDHC sous Linux? [RÉSOLU] - Hardware - Linux et OS Alternatifs
Marsh Posté le 01-02-2007 à 17:45:09
Apparemment il faut que je patche mon kernel 2.6.19:
http://lkml.org/lkml/2006/12/22/147
Marsh Posté le 01-02-2007 à 19:38:29
Il y a une version plus récente de ce patch ici:
http://groups.google.ci/group/fa.l [...] 4f?&q=sdhc
Mais à la page où ce patch est approuvé, le mainteneur de mmc dit qu'il approuver 2 patches. J'ai raté quelque chose? =>
http://groups.google.ci/group/fa.l [...] f567260a4f
Marsh Posté le 02-02-2007 à 09:42:58
Les sources du 2.6.19 debian ne sont pas disponibles! Je ne peux pas patcher! Enfin je crois. ???
La seule voie: le 2.6.20-mm!
Marsh Posté le 02-02-2007 à 09:55:42
Louvre a écrit : Les sources du 2.6.19 debian ne sont pas disponibles! Je ne peux pas patcher! Enfin je crois. ??? |
Debian caÿsupaÿr
Marsh Posté le 02-02-2007 à 10:21:47
wedgeant a écrit : |
Rira bien qui rira le dernier Super-Slackerman! En fait le 2.6.19 est en experimental, il n'est dans aucune distrib pour l'instant à cause du freeze pour la sortie de Etch qui bloque tout, donc le fait que les sources ne soient pas disponibles n'est pas un scandale. Et si ça se trouve les sources officielles du noyau marchent; mais c'est pas sûr!
Tu fais comment pour lire les cartes SDHC avec ta Slack? Me dis pas que tu ne peux pas toi non plus!
Je vais vérifier si ça marche avec mon 2.6.20-rc6. On ne sait jamais!
Marsh Posté le 02-02-2007 à 10:32:49
Louvre a écrit : Rira bien qui rira le dernier Super-Slackerman! En fait le 2.6.19 est en experimental, il n'est dans aucune distrib pour l'instant à cause du freeze pour la sortie de Etch qui bloque tout, donc le fait que les sources ne soient pas disponibles n'est pas un scandale. Et si ça se trouve les sources officielles du noyau marchent; mais c'est pas sûr! |
Si tu veux les sources du noyal, tu vas sur kernel.org
Et je ne lis pas les SDHC sur ma Slack paske j'en ai pas et que j'en ai pas b'soin
Marsh Posté le 02-02-2007 à 11:07:48
Bon, alors le RC6 c'est la cata chez moi: internet ne marche plus, un de mes disques durs ne marche plus,...et le lecteur de cartes mémoire ne marche plus!!!
Donc je n'ai plus qu'une possibilité: patcher le 2.6.19, mon seul kernel qui marche bien!
Mais je ne sais pas si les sources officielles correspondent à ce kernel debian. Et je n'ai jamais patché un kernel! Je crois qu'il faudrait que je reconstruise un nouveau 2.6.19 à partir des sources officielles, avec un nom différent de mon 2.6.19 debian. J'ai envie de sous-traiter ça en Inde ou en Chine...
Marsh Posté le 02-02-2007 à 14:51:05
J'ai essayé de patcher (test à blanc) les sources officielles du 2.6.19 avec le patch dont j'ai mis le lien plus haut (j'ai mis le texte du message dans un fichier SDHC.patch que j'ai compressé dans un fichier .bz2) et voilà le résultat:
debian: /usr/src/linux-2.6_2.6.19# bzip2 -dc /usr/src/SDHC.patch.bz2 | patch -p1 --dry-run
patching file drivers/mmc/mmc.c
Hunk #1 FAILED at 289.
Hunk #2 FAILED at 591.
Hunk #3 succeeded at 881 with fuzz 1 (offset -1 lines).
Hunk #4 FAILED at 1402.
Hunk #5 FAILED at 1458.
4 out of 5 hunks FAILED -- saving rejects to file drivers/mmc/mmc.c.rej
patching file drivers/mmc/mmc_block.c
Hunk #1 FAILED at 237.
Hunk #2 FAILED at 496.
2 out of 2 hunks FAILED -- saving rejects to file drivers/mmc/mmc_block.c.rej
patching file include/linux/mmc/card.h
Hunk #1 FAILED at 71.
Hunk #2 FAILED at 88.
Hunk #3 FAILED at 96.
3 out of 3 hunks FAILED -- saving rejects to file include/linux/mmc/card.h.rej
patching file include/linux/mmc/mmc.h
Hunk #1 FAILED at 43.
1 out of 1 hunk FAILED -- saving rejects to file include/linux/mmc/mmc.h.rej
patching file include/linux/mmc/protocol.h
Hunk #1 FAILED at 79.
Hunk #2 succeeded at 91 with fuzz 1 (offset -27 lines).
1 out of 2 hunks FAILED -- saving rejects to file include/linux/mmc/protocol.h.rej
debian: /usr/src/linux-2.6_2.6.19#
Ça marche pas on dirait. Que faire, peuple de Linuxie?
Marsh Posté le 02-02-2007 à 15:24:30
Tout à l'heure j'avais essayé avec la version la plus récente du patch (take5); cette fois j'ai tenté le première version:
debian: /usr/src/linux-2.6_2.6.19# bzip2 -dc /usr/src/SDHCtake1.patch.bz2 | patch -p1 --dry-run
patching file drivers/mmc/mmc_block.c
Hunk #1 succeeded at 238 (offset 1 line).
patching file drivers/mmc/mmc.c
Hunk #1 succeeded at 288 (offset -1 lines).
Hunk #2 succeeded at 590 (offset -1 lines).
Hunk #3 succeeded at 610 (offset -1 lines).
Hunk #4 succeeded at 834 (offset -1 lines).
patching file include/linux/mmc/card.h
Hunk #1 FAILED at 71.
Hunk #2 FAILED at 88.
Hunk #3 FAILED at 96.
3 out of 3 hunks FAILED -- saving rejects to file include/linux/mmc/card.h.rej
patching file include/linux/mmc/mmc.h
patching file include/linux/mmc/protocol.h
Hunk #1 FAILED at 79.
Hunk #2 succeeded at 91 with fuzz 1 (offset -27 lines).
1 out of 2 hunks FAILED -- saving rejects to file include/linux/mmc/protocol.h.rej
debian: /usr/src/linux-2.6_2.6.19#
Pas beaucoup mieux!
Marsh Posté le 02-02-2007 à 20:41:59
J'ai téléchargé une autre copie du kernel 2.6.19 sur un mirroir de kernel.org et j'ai patché avec le patch version 5 et cette fois j'obtiens ça:
debianusr/src# bzip2 -dc /usr/src/SDHCtake5.patch.bz2 | patch -p1 --dry-run
can't find file to patch at input line 13
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|
|Signed-off-by: Philipl Langdale <phil...@overt.org>
|---
| drivers/mmc/mmc.c | 138 ++++++++++++++++++++++++++++++++++---------
| drivers/mmc/mmc_block.c | 8 ++
| include/linux/mmc/card.h | 3
| include/linux/mmc/mmc.h | 1
| include/linux/mmc/protocol.h | 13 +++-
| 5 files changed, 134 insertions(+), 29 deletions(-)
|
|--- /usr/src/linux/drivers/mmc/mmc.c 2007-01-04 06:51:58.000000000 -0800
|+++ linux-2.6.19-sdhc/drivers/mmc/mmc.c 2007-01-03 22:16:24.000000000 -0800
--------------------------
File to patch:
Il me demande de lui indiquer le fichier à patcher mais je ne sais pas quoi lui dire, moi, à cet idiot!
Marsh Posté le 02-02-2007 à 22:56:18
Bon, j'ai compris, il fallait remplacer -p1 par -p3 dans le commande.
Finalement, c'est avec la version 4 du patch que j'ai les meilleurs résultats, mais toujours pas parfaits:
debianusr/src# bzip2 -dc /usr/src/SDHCtake4.patch.bz2 | patch -p3 --dry-run
patching file linux/drivers/mmc/imxmmc.c
patching file linux/drivers/mmc/mmc.c
Hunk #1 succeeded at 288 (offset -1 lines).
Hunk #2 succeeded at 590 (offset -1 lines).
Hunk #3 succeeded at 881 (offset -1 lines).
Hunk #4 succeeded at 1152 (offset -251 lines).
Hunk #5 succeeded at 1208 (offset -251 lines).
patching file linux/drivers/mmc/mmc_block.c
Hunk #1 succeeded at 238 (offset 1 line).
Hunk #2 succeeded at 498 (offset 2 lines).
patching file linux/drivers/mmc/omap.c
Hunk #1 succeeded at 155 (offset -51 lines).
patching file linux/drivers/mmc/pxamci.c
patching file linux/drivers/mmc/tifm_sd.c
patching file linux/include/linux/mmc/card.h
Hunk #1 FAILED at 71.
Hunk #2 FAILED at 88.
Hunk #3 FAILED at 96.
3 out of 3 hunks FAILED -- saving rejects to file linux/include/linux/mmc/card.h.rej
patching file linux/include/linux/mmc/mmc.h
patching file linux/include/linux/mmc/protocol.h
Hunk #1 FAILED at 79.
Hunk #2 succeeded at 91 with fuzz 1 (offset -27 lines).
1 out of 2 hunks FAILED -- saving rejects to file linux/include/linux/mmc/protocol.h.rej
Donc j'ai écrit au secours au créateur du patch!
Marsh Posté le 03-02-2007 à 21:00:13
Pourquoi tu passes pas à Vista?
Je déconne En tout cas je salue ta détermination
Marsh Posté le 03-02-2007 à 21:38:28
Vu que patcher automatiquement ne marche pas je suis en train de patcher à la main!
Marsh Posté le 05-02-2007 à 13:31:07
Apparemment il ne faut pas seulement appliquer un patch SDHC, mais aussi un pathc mmc, mais je ne sais pas lequel.
Heureusement...
Mon héro m'a répondu! Il va mettre en ligne un kernel patché SDHC dans quelques jours.
Marsh Posté le 14-02-2007 à 09:23:18
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!
Marsh Posté le 26-02-2007 à 19:14:38
J'avais oublié d'ajouter [RÉSOLU] au titre.
Marsh Posté le 01-02-2007 à 17:41:18
J'arrive à lire les cartes SD mais pas une carte SDHC 4Go Class 2.
Message édité par Louvre le 26-02-2007 à 19:10:56