Ceci est une ancienne révision du document !
Lire un DVD de données gravé sous Windows Vista (DVD UDF)
Certaines personnes, lorsqu'elles tentent de lire un DVD de données gravé sous Microsoft® Windows Vista® à l'aide du logiciel de gravure inclus dans Windows, se trouvent confrontés à un problème d'accès au contenu dudit DVD sous Ubuntu. Les plus connaisseurs auront regardé la liste des messages retournés par le système (commande dmesg
) et auront constaté que le message d'erreur suivant apparaît constamment lorsqu'on tente de monter ce DVD :
UDF-fs: No fileset found
Ce problème est connu et très répandu. Il apparaît que Windows Vista utilise un système de fichiers UDF non-standard qui peut seulement être lu par Windows.
Il existe un correctif pour palier à ce problème. Toutefois, prenez avis de ces quelques notes :
- La solution présentée ici fonctionne pour le noyau 2.6.24 de Ubuntu 8.04 LTS "The Hardy Heron". Elle pourrait ne pas fonctionner pour des versions antérieures ou supérieures d'Ubuntu (voire même du noyau) ;
- Cette solution est liée au noyau courant. Lors d'une mise à jour du noyau, vous devrez exécuter de nouveau ce tutoriel pour accéder à vos DVD UDF gravés sous Windows Vista.
Si vous ne désirez pas "mettre les mains dans le cambouis", accédez plutôt à ces DVD sous un ordinateur équipé de Windows Vista, puis transférez les données à l'aide d'un autre périphérique (DVD non-UDF, clé USB, courriel, réseau domestique, etc.) ; cela reste la solution la plus simple et la plus sécuritaire.
Ci-dessous se trouve la procédure pour appliquer un correctif vous permettant d'accéder aux DVD UDF gravés à l'aide de Windows Vista.
Préparation
- Assurez-vous de disposer des versions identiques du noyau et des entêtes. Ceci se fait grâce à votre gestionnaire de paquets (Synaptic). Le paquet contenant le noyau se nomme
linux-image-2.6.24-VERSION-ARCH
, et celui des entêtes estlinux-headers-2.6.24-VERSION-ARCH
. VERSION est le numéro de révision du paquet, et ARCH est le type de compilation qui a été appliqué à ce paquet.
Par exemple, si vous disposez du noyaulinux-image-2.6.24-18-generic
, vous devez absolument utiliser aussi le paquet d'entêteslinux-headers-2.6.24-18-generic
. - Téléchargez le fichier udf-filesystem-2.5.tar.gz. Extrayez le contenu de cette archive dans le dossier
/home/<votre identifiant>/udf-filesystem-2.5
. - Créez un fichier texte nommé vista-patch dans le dossier
/home/<votre identifiant>/udf-filesystem-2.5
. Dans ce fichier texte, copiez-y les instructions de correction suivantes :--- linux-2.6.24-udf/fs/udf/super.c 2008-02-12 17:32:51.000000000 +0100 +++ linux-2.6.24-udf-akw/fs/udf/super.c 2008-02-12 17:22:01.000000000 +0100 @@ -1015,9 +1015,9 @@ UDF_SB_PARTMAPS(sb)[i].s_partition_num, le16_to_cpu(p->partitionNumber)); /* workaround problems caused by Vista */ if (UDF_SB_PARTMAPS(sb)[i].s_partition_num >= UDF_SB_NUMPARTS(sb)) { - udf_debug("Changing parition# from %d to ", UDF_SB_PARTMAPS(sb)[i].s_partition_num); + int old_partnum = UDF_SB_PARTMAPS(sb)[i].s_partition_num; UDF_SB_PARTMAPS(sb)[i].s_partition_num %= (UDF_SB_NUMPARTS(sb)); - udf_debug("%d\n", UDF_SB_PARTMAPS(sb)[i].s_partition_num); + udf_debug("Changing partition# from %d to %d\n", old_partnum, UDF_SB_PARTMAPS(sb)[i].s_partition_num); } else { udf_debug("Keeping partition# %d out of %d partitions\n", UDF_SB_PARTMAPS(sb)[i].s_partition_num, UDF_SB_NUMPARTS(sb)); @@ -1148,6 +1148,7 @@ UDF_SB_PARTTYPE(sb,i) = UDF_VIRTUAL_MAP15; UDF_SB_PARTFUNC(sb,i) = udf_get_pblock_virt15; } else if ((le16_to_cpu(((__le16 *)upm2->partIdent.identSuffix)[0]) == 0x0200) || + (le16_to_cpu(((__le16 *)upm2->partIdent.identSuffix)[0]) == 0x0201) || (le16_to_cpu(((__le16 *)upm2->partIdent.identSuffix)[0]) == 0x0250) || (le16_to_cpu(((__le16 *)upm2->partIdent.identSuffix)[0]) == 0x0260)) { UDF_SB_PARTTYPE(sb,i) = UDF_VIRTUAL_MAP20;
Compilation du correctif
- Appliquez le correctif vista-patch au code source du module de gestion du système de fichiers UDF. Dans une console, exécutez les commandes suivantes :
~$ cd ~/udf-filesystem-2.5/src ~/udf-filesystem-2.5/src$ patch -l <../vista-patch
Si quelque chose ne va pas à cette étape-ci, ne poursuivez pas ce tutoriel et investiguez afin de trouver ce qui n'a pas fonctionné.
- Compilez le module. Ce qui est intéressant par cette méthode est que vous n'avez qu'à recompiler le module UDF, et non pas le noyau Linux en entier !
~/udf-filesystem-2.5/src$ cd .. ~/udf-filesystem-2.5$ make
Si ce processus se termine inopinément, vous disposez probablement de versions non correspondantes du noyau Linux (
linux-image-2.6.24-VERSION-ARCH
) et des entêtes (linux-headers-2.6.24-VERSION-ARCH
).
Tester le tout
- Retirez tout module UDF actuellement chargé :
~/udf-filesystem-2.5$ sudo rmmod udf
- Maintenant, vous devez remplacer le fichier
udf.ko
dans le noyau en cours d'exécution. Nous copierons d'abord le fichier original dans un fichier de sauvegarde, en cas de besoin. Exécutez les commandes suivantes :~/udf-filesystem-2.5$ sudo mv /lib/modules/$(uname -r)/kernel/fs/udf/udf.ko ./udf.ko-old ~/udf-filesystem-2.5$ sudo cp src/udf.ko /lib/modules/$(uname -r)/kernel/fs/udf/udf.ko
- Enfin, chargez le module :
~/udf-filesystem-2.5$ sudo modprobe -v udf
- Éjectez le DVD que vous tentiez de lire, puis réinsérez-le dans votre lecteur DVD. Le DVD devrait automatiquement être accessible depuis votre gestionnaire de fichiers.