[gull] lecture cd audio iso

Marc SCHAEFER schaefer at alphanet.ch
Sat Nov 11 15:03:39 CET 2006


On Sat, Nov 11, 2006 at 02:46:56PM +0100, Yann Sagon wrote:
> J'ai un cd audio sous forme de fichier iso

Ce n'est pas clair comme description.

   soit c'est un fichier image d'un CD audio (l'entier du CD audio stocké
   sur disque, prêt à être gravé).

   soit c'est un fichier ISO-9660 (éventuellement avec extensions
   RockRidge voire Joliet), qui contient donc un système de fichiers
   au format ISO-9660. Qu'il contienne finalement des fichiers
   informatiques ou audio n'a pas tellement d'importance.

D'après ce que tu dis -- tu parles de mp3 et de ogg -- je supposerai que
tu veux monter un système de fichiers ISO-9660 sous forme d'un gros
fichier, plutôt que le CD ou DVD lui-même.  Sinon regarder p.ex. la
commande cdparanoia(1).

> Existe t'il un programme capable d'utiliser une image iso à la place
> d'un disque physique?

Sous UNIX, ce que tu appelles un `disque physique' est en fait un
`périphérique physique de type bloc':

   schaefer at reliant:/tmp$ ls -la /dev/hda  
   brw-rw---- 1 root cdrom 3, 0 Nov 11 10:24 /dev/hda
   ^
   |
   |

Pour accéder à un `système de fichiers' quelconque (tant qu'il est
supporté par le kernel, voir /proc/filesystems), il suffit de le monter
depuis un `disque physique', via la commande mount(8) bien sûr.

D'autres choses peuvent bien sûr résider dans un périphérique physique
de type bloc: une zone de swap (ce n'est pas un système de fichiers),
p.ex.

Une première idée qui pourrait fonctionner serait d'utiliser une partition
inutilisée pour y déposer temporairement ce fichier.  On pourrait
donc imaginer désactiver le swap, déposer ce fichier ISO-9660 dedans
(avec cp fichier /dev/hda2) puis monter ce périphérique physique via mount,
si la taille de swap est supérieure à la taille du fichiers.

Heureusement pour nous, quelqu'un a développé un truc très utile,
qui transforme tout fichier UNIX (ou presque) en un bloc-device virtuel.  Cela
s'appelle un `loopback mount'.

Heureusement pour nous encore, sauf cas particuliers, l'instanciation
du périphérique type bloc virtuel (/dev/loopX) se fait automatiquement
via la commande mount(8).

Exemple:

   schaefer at reliant:/tmp$ mkisofs -o blabla.iso-9660 /etc/default

   schaefer at reliant:/tmp$ sudo mount -o loop blabla.iso-9660 /mnt

   schaefer at reliant:/tmp$ df /mnt
   Filesystem           1K-blocks      Used Available Use% Mounted on
   /tmp/blabla.iso-9660       430       430         0 100% /mnt

   schaefer at reliant:/tmp$ sudo umount /mnt

Grâce à ce loopback mount (et au loopback device associé), voir
mount(8), losetup(8)) on peut aussi:

   - chiffrer des systèmes de fichiers ou le swap

   - tester des images avant de les utiliser via QEMU, ou de générer
     un floppy ou CD de boot

   - récupérer des disques endommagés

etc.

PS: ne pas confondre avec un `bind mount', cf mount(8)




More information about the gull mailing list