Differences

This shows you the differences between two versions of the page.

Link to this comparison view

freebsd:gravure [2010/01/12 13:29] (current)
Line 1: Line 1:
 +Ce tip est destiné à tous les utilisateurs de FreeBSD ayant rencontré certains problèmes lors de la gravure d'une iso. En effet, légèrement excédé par la répétition de messages concernant ce problème notamment sur la mailing list [freebsd-fr],​ j'ai décidé de m'​ateler au secours des utilisateurs (et de ma mbox).
  
 +Tout d'​abord assurez vous que votre kernel a bien été compilé avec les options suivantes dans son fichier de config.
 +
 +<​code>​
 +options P1003_1B
 +options _KPOSIX_PRIORITY_SCHEDULING
 +options _KPOSIX_VERSION=199309L
 +pseudo-device vn
 +</​code>​
 +
 +Ces options permettent la compatibilité avec la norme POSIX.4 (ou 1B) spécifiant les fonctionnalités pour un OS temp réel. Cette norme inclue notamment le scheduling, le time measurement,​ les signaux asynchrones mis en file d'​attente et les I/O asynchrones. Enfin le pseudo device vn correspond au driver vnode permettant de traiter un fichier comme un périphérique
 +
 +Ensuite, vous aurez besoin de plusieurs outils dont la plupart sont compilés dans le port sysutils/​cdrtools que nous installons par un simple
 +<​code>​
 +# cd /​usr/​ports/​sysutils/​cdrtools && make install clean
 +</​code>​
 +Pour être plus précis, ceci installera les programmes suivant
 +
 +  * cdda2wav pour l'​extractions de pistes audios
 +  * cdrecord pour la gravure de cds
 +  * mkisofs pour créer des images selon le système de fichier ISO 9660. Dans ces dernière version, il est possible en option de créer des images dans un format hybride ISO-9660/​Joliet/​HFS assurant la compatibilité sous Unices, Windows et MacOS. Il supporte par ailleurs les extensions RockRidge permettant de founir des informations sur les longs noms de fichiers, les uid/gid, les permissions,​ les symlinks et les périphériques.
 +  * mkhybrid similaire au précédent mais ajoutant la compatibilité HFS (Hierarchical File System) utilisé par Apple en plus du standard ISO 9660.
 +  * quelques outils de diagnostic pouvant s'​avérer utiles
 +  * devdump permet d'​afficher dans un brutal hexdecimal les 256 premiers octets du premier secteur de n'​importe quel système de fichiers ou périphériques.
 +  * isodump effectue quasiment le même travail que devdump mais uniquement pour les système de fichiers ou fichiers au format ISO 9660, affichant la première partie du répertoire racine. Après cela ces 2 utilitaires possèdent quelques commandes sympathiques si vous voulez debugger de l'​hexadécimal (mais dans ce cas je vous conseille aussi le site j-aime-me-faire-fouetter-avec-des-orties-fraiches-en-me-faisant-sodomiser-avec-du-gravier-et-du-verre-pile.com). Voir la man page correspondante.
 +  * isoinfo quant à lui vous permettra de naviguer dans une image ISO 9660 de manière similaire à n'​importe quel système de fichier (par exemple des  options émulent le comportement de find et ls). Ceci s'​avérant particulièrement utiles pour inspecter une image avec de la graver ou de la  mounter. Là aussi reportez vous à la man page.
 +  * isovrfy permet enfin de vérifier l'​intégrité d'une image ISO 9660 à l'aide de plusieurs tests. Ce programme ayant été ajouté suite à quelques anciens bugs de mkisofs, il est possible qu'il ne soit plus d'une grande utilité, mais sait on jamais...
 +  * readcd permet quant à lui de lire et écrire des cds. Il semble être utile comme couteau suisse de la copie sur cd.
 +
 +En sus de ce package, le système de base contient déjà burncd pour la gravure de cds. Cependant, burncd utilise le pilote ATAPI CDROM tandis que cdrecord s'​avère utilisable avec des lecteurs/​graveurs SCSI. Nous présenterons ici ces
 +2 outils.
 +
 +Interessons nous maintenant plus particulièrement à mkisofs. Pour créer une image ISO 9660 des données que nous désirons graver, la commande de base est la suivante:
 +<​code>​
 +# mkisofs -o output input [input ...]
 +</​code>​
 +où output est l'​image et input peut aussi bien être un ou plusieurs fichiers ou chemins. Mais il existe de très nombreuses options pour enrichir votre image.
 +Par exemple plusieurs options de la ligne de commande - qu'il sera plus simple de définir dans .mkisofsrc - permettent de fournir sous forme de fichiers des informations supplémentaires sur l'​image comme le copyright, le contenu de l'​image,​ un sommaire ou encore une bibliographie,​ l'​identité de l'​éditeur ou du prépareur. Vous disposez également des options -dir-mode et -file-mode permettant de réécrire les permissions d'un fichier ou d'un répertoire. Ces options activent implicitement les extensions Rock Ridge que vous pouvez également activer avec l'​option -R ou avec quelques nuances (suppression des uid/gid significatif seulement sur le système d'​origine,​ tous fichiers readables, et world executables si il y a un bit x dans le masque de permission, et aucun writable puisque l'​image sera mounter en read-only) avec l'​option -r. Pour créer une image hybride, ajoutez -hfs pour HFS, et -J pour Joliet.
 +Vous pouvez également spécifier lors de la création de l'​image l'​exclusion de plusieurs fichiers ou chemins à l'aide des options -m suivi d'un glob (forme d'​expression rationnelle pour shell comme *.core) ou -x suivi d'un chemin. Prudence tout de même, -m et -x fonctionnent de manière quasi identique et un fichier se verra exclu aussi bien si le glob matche le chemin que le fichier.
 +Enfin, dernière fonctionnalité que nous détaillerons,​ vous avez la possibilité de rendre votre image bootable avec les options -b suivi de l'​image de boot au format El Torito et -c suivi du boot_catalog. Sous FreeBSD, l'​image de boot se créée en émulant une disquette de boot (1.44Mo conseillé pour éviter les ennuis avec certains BIOS).
 +
 +Avec mkisofs, vous avez également la possibilité de travailler en multisession,​ c'​est-à-dire d'​écrire en plusieurs fois à la suite. Pour ceci nous utilisons l'​option -M suivie de la précédente image iso, et l'​option -C suivie de l'​adresse à partir de laquelle repartir. Cette adresse peut se trouver avec
 +<​code>​
 +# cdrecord -msinfo dev=scsibus,​cible,​lun
 +# burncd -f /dev/acd0c -msinfo
 +
 +# mkisofs -M image.iso -C adresse -r -J input image2.iso
 +</​code>​
 +Pour créer une image à partir d'un cd, vous pouvez utilisez la commande dd de la manière suivante
 +<​code>​
 +# dd bs=2048 if=/​dev/​acd0c of=image.iso
 +</​code>​
 +Où bs correspond au block size, ici 2048 octets, if désigne l'​interface en entrée et of le fichier en sortie.
 +
 +Une fois votre image iso créée, il ne reste plus qu'à la graver à l'aide de burncd si vous possédez un disque ATAPI CDROM. Sa syntaxe est la suivante:
 +<​code>​
 +# burncd -f peripherique -s vitesse commande fichier
 +</​code>​
 +'​peripherique'​ et '​vitesse'​ correspondent bien sûr à votre graveur. '​commande'​ peut être - entre autres - '​blank'​ pour faire paraître un disque comme neuf, '​audio'​ pour graver un cd audio ou '​data'​ pour graver directement. A cela ajoutez '​fixate'​ qui permet d'​utiliser le cd dans un lecteur ordinaire, et qui se rajoute à la fin de la commande puisque burncd s'​arrête après son exécution. '​fichier'​ correspond à votre ou vos images que vous pouvez aussi lister dans un fichier en ajoutant l'​option -l. Vous disposez également de l'​option -m qui permet de clore le disque en multisession vous permettant de graver l'​espace restant plus tard.
 +<​code>​
 +# burncd -f /dev/acd0c -s 4 -m data image.iso fixate
 +</​code>​
 +A l'aide de burncd nous avons également la possibilité de directement dupliquer un cd avec la commande suivante
 +<​code>​
 +# cat /dev/acd0c | burncd -f /dev/acd1c -s 4 data - fixate
 +</​code>​
 +Nous utilisons cat puisque nous faisons de la duplication brut sans modification de format ni création d'​image puis nous utilisons un pipe entre cat et burncd, et stdin ('​-'​) comme input pour burncd.
 +
 +Pour les détenteurs de lecteurs/​graveurs SCSI, il faudra utiliser cdrecord inclut dans le package cdrtools installé plus tôt. Ce programme contient quasiment les mêmes options que burncd mais avec une syntaxe différente,​ reportez vous à la man page pour complément d'​information.
 +<​code>​
 +# cdrecord speed=vitesse dev=scsibus,​cible,​lun image.iso
 +</​code>​
 +Pour connaître les valeurs à placer pour dev, reportez vous à dmesg
 +<​code>​
 +# dmesg | grep ^acd0c
 +</​code>​
 +Où acd0c correspond à votre lecteur/​graveur. Et cela ne fonctionne pas, essayez
 +<​code>​
 +# cdrecord -scanbus
 +</​code>​
 +Et prenez les valeurs correspondant à votre matériel.
 +
 +Pour ailleurs, pour éviter des erreurs sur votre cd en cas de mauvaises valeurs, utilisez l'​option -dummy afin de tester au lieu d'​écrire directement. Notez aussi l'​équivalent à l'​option -m de burncd, qui est ici -multi.
 +
 +Maintenant si vous ne voulez pas ou ne pouvez pas vous encombrer d'une image iso, il vous reste les pipes ! Combiné à '​nice'​ pour ajuster la priorité d'​exécution des commandes, voire à une importante file fifo avec cdrecord, afin d'​éviter toutes erreurs d'​écriture,​ la gravure s'​effectuera depuis l'​entrée standard (toujours '​-'​).
 +<​code>​
 +# nice --18 mkisofs -r -J input | cdrecord fs=8m speed=4 dev=scscibus,​cible,​lun -
 +</​code>​
 +'​fs'​ spécifie la fameuse file fifo qui est ici de 8 Mo.
 +
 +Enfin si vous voulez mounter une image iso, vous devez utilisez le driver vn configuré précédemment en passant par '​vnconfig'​.
 +<​code>​
 +# vnconfig -e vn0c image.iso
 +# mount_cd9660 /dev/vn0c /mnt
 +</​code>​
 +Puis pour unmounter
 +<​code>​
 +# umount /dev/vn0c
 +# vnconfig -u /dev/vn0c
 +</​code>​
 +Voilà, c'est tout ce que j'ai à vous dire quant à la gravure sous FreeBSD. Comme toujours, reportez vous au man pages correspondantes pour plus d'​informations.
 +
 +--eberkut
freebsd/gravure.txt · Last modified: 2010/01/12 13:29 (external edit)