superutilisateur
peut-il monter/démonter des disques ?
La plupart des commandes mount
comprennent une option user.
Si vous ajoutez une entrée de cette nature au fichier /etc/fstab
:
/dev/sbpcd /mnt/cdrom iso9660 user,noauto,ro
alors, un utilisateur ordinaire pourra monter et démonter le disque en utilisant ces commandes :
% mount /mnt/cdrom
% umount /mnt/cdrom
Le disque sera monté avec certaines options qui assurent la sécurité (par exemple, des programmes ne pourront être exécutés, des fichiers de périphériques seront ignorés); dans certains cas, cela peut être trop restrictif.
Une autre méthode consiste à obtenir le paquetage usermount
qui permet à des utilisateurs n'étant pas superutilisateur
de monter et démonter des périphériques amovibles tels que disquettes et CD-ROMs, mais restreint l'accès aux autres périphériques (tels que les partitions du disque dur). Il est disponible sur les principaux site d'archives.
Enfin, vous pouvez écrire un petit programme C qui monte et démonte le CD-ROM et l'installer en tant qu'exécutable setuid.
Le site d'archives ftp.cdrom.com
dispose du fichier source mount.c
qui permet le montage d'un CD-ROM non monté (uniquement) par des utilisateirs ordinaires. Il s'exécute en tant que programme setuid.
device is busy
quand je démonte un CD-ROM ?
Le disque ne peut être démonté s'il y a encore un processus accédant au lecteur, ceci comprend les processus ayant leur répertoire par défaut positionné sur le système de fichiers monté. Si vous ne pouvez pas identifier le processus utilisant le disque, utilisez la commande fuser
, comme dans l'exemple ci-après.
% umount /cdrom
umount: /dev/hdd: device is busy
% fuser -v /cdrom
USER PID ACCESS COMMAND
/mnt/cdrom tranter 133 ..c.. bash
Vous avez besoin d'ajouter une ligne au fichier /etc/exports
. Les utilisateurs sur les autre machines pourront alors monter le périphérique. Consultez la page de manuel de exports(5)
, pour plus de détails.
Quand on installe initialement Linux, la méthode la plus ordinaire est d'utiliser une disquette d'amorçage. Certaines distributions Linux autorisent l'amorçage du noyau Linux sur CD directement de puis le DOS.
Michael Fulbright (
msf@redhat.com) précise qu'avec un bon CD-ROM, une ROM BIOS adaptée et un lecteur de CD-ROM ATAPI, il est possible d'amorcer Linux directement depuis le CD. La dernière version de mkisofs
prends également en charge la création de tels disques. Il y a ajouté des rustines permettant la prise en charge du format standard El Torito pour les CDs amorçables.
Heiko Eissfeldt (
heiko@colossus.escape.de) et Olaf Kindel ont écrit un utilitaire qui lit les données audio-numérique et les enregistre en fichiers son au format .wav
. Le paquetage est intitulé cdda2wav.tar.gz
et peut être trouvé sur sunsite.unc.edu
.
Etant donné que les lecteurs de CD-ROM changent très vite, il est difficile de donner une liste des modèles prenant en charge la lecture de données audio-numériques. Le mieux est d'obtenir le dernier paquetage cdda2wav
et de lire la documentation.
Pour plus d'informations sur le sujet, consultez le site Web http://www.tardis.ed.ac.uk/~psyche/cdda/ et la FAQ du forum alt.cd-rom mentionnée dans la section des références.
find
ne fonctionne-t-elle pas normalement ?
Sur des disques au format ISO-9660, sans les extensions Rock Ridge, vous devez ajouter l'option -noleaf
à la commande find
. Consultez la page de manuel de find(1) pour plus de détails.
(selon mon expérience, virtuellement tous les CDs Linux récents utilisent les extensions Rock Ridge, donc ce problème ne devrait se produire que très rarement.)
Le paquetage X-CD-Roast pour Linux est un frontal graphique pour l'utilisation de graveurs de CD. Ce paquetage peut être trouvé sur sunsite.unc.edu sous /pub/Linux/utils/disk-management/xcdroast-0.95.tar.gz
Consultez également le HOWTO sur le gravage de CD, disponible à l'adresse ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/CD-Writing.html ou http://sunsite.unc.edu/LDP/HOWTO/CD-Writing.html.
Le CD-ROM est un media en lecture seule. Avec certains noyaux précédents, il était possible de monter des CD-ROMs en lecture/écriture; les tentatives pour écrire des données sur le CD était simplement ignorées. À partir de la version 1.1.33 du noyau, ceci a été corrigé de telle manière que les CD-ROMs doivent être montés en lecture seule (par ex. en utilisant l'option -r de la commande mount).
A partir de la version 1.1.38 du noyau, le pilote sbpcd éjecte le CD quand il est démonté. Si vous arrêtez votre système, un CD monté sera démonté, entrainant son éjection.
Cette fonction est une commodité lors du changement de disques. Si le tiroir est ouvert quand vous montez ou lisez un CD, il se fermera aussi automatiqument.
J'ai constaté que cela ne causait des problèmes qu'avec peu de programmes (par ex. cdplay et workbone). A partir de la version 1.1.60 du noyau, vous pouvez contrôler cette fonction par logiciel. Un programme d'exemple est compris dans le fichier de documentation du pilote sbpcd (ou utilisez le programme eject).
Le CD "spécial" a toutes les chances d'être un disque XA (comme tous les CDs Photo ou les pseudos créés en utilisant des graveurs de CD-R). La plupart des pilotes CD-ROM de noyau Linux ne prend pas en charge les disques XA, bien que vous puissiez trouver une rustine qui ajoute cette fonction sur l'un des sites d'archives.
Le pilote sbpcd prend en charge les disques XA. Si vous utilisez ce pilote, vous pouvez déterminer si le disque est au format XA en utilisant la procédure suivante : allez dans le fichier sbpcd.c et activez l'affichage de la table des matières [TDM] ("Table of Contents" DBG_TOC). Construisez et installez un nouveau noyau et amorcez le. A chaque montage, les informations de la TDM seront écrites (soit sur la console, soit dans un fichier de traces). Si la première valeur affichée dans l'entête de la TDM est "20", alors c'est un disque au format XA. Cet octet est "00" pour des disques normaux. Si l'affichage de la TDM montre différentes pistes, c'est aussi un signe qu'il s'agit d"un disque au format XA.
(Remerciements à Eberhard Moenkeberg pour les informations précédentes)
D'autres possibilités pour des CDs illisibles sont :
Plusieurs utilisateurs ont mentionné leur réussite avec des lecteurs multi-CDs SCSI. Vous aurez sans doute besoin d'activer l'option de configuration du noyau "Test de toutes les LUNs sur chaque périphérique SCSI ("Probe all LUNs on each SCSI device"). Au moins un utilisateur a dû aussi augmenter une temporisation SCSI dans le pilote du noyau. Les lecteurs multi-CDs Nakamichi MBR-7 (7 disques) et Pioneer (12 disques) ont été mentionnés comme opérationnels.
Des lecteurs multi-CDs EIDE/ATAPI sont également disponibles. Le noyau 2.0 prend en charge de façon rudimentaire certains lecteurs utilisant la function ioctl CDROM_SELECT_DISC. Le fichier de documentation du pilote IDE-CD du noyau comprend le code source d'un programe permettant de sélectionner l'emplacement disque, ou vous pouvez utiliser une version récente du programme eject
, décrit précédemment.
Certains CDs ont des permissions du répertoir racine telles qu'elles ne permettent qu'au superutilisateur
de les lire. Le coffret de CD Infomagic de Mars 1995 en est un exemple. C'est vraiment un problème.
La rustine suivante, fournie par Christoph Lameter ( clameter@waterf.org) modifie le noyau pour contourner ce problème.
From: clameter@waterf.org (Christoph Lameter) Newsgroups: comp.os.linux.setup Subject: InfoMagic Developers Set: Fix for CD-ROM permissions Date: 12 Apr 1995 20:32:03 -0700 Organization: The Water Fountain - Mining for streams of Living Water NNTP-Posting-Host: waterf.org X-Newsreader: TIN [version 1.2 PL2] Sujet: Coffret pour développeurs Infomagic: Correction pour les permissions du CD-ROM L'édition de Mars 1995 du coffret de CD-ROM pour développeurs d'Infomagic a des problèmes car l'information stockée dans les permissions du répertoire racine provoque les problèmes suivants lors de l'utilisation des CDs : 1. le disque 1 a toujours un propriétaire/groupe de valeur 5101/51 et autorise l'accès en écriture (?) 2. les disques 2 et 3 sont paramétrés rwx pour le superutilisateur et aucun droit pour tous les autres groupes/utilisateurs. Ces disques ne peuvent pas être accédés par un autre utilisateur que le superutilisateur. J'administre un BBS et j'ai besoin de les rendre accessibles à tous en téléchargement. J'ai vu passer de nombreux correctifs pour ce problème un peu partout. Le problème est que ces correctifs changent généralement les droits pour TOUS les répertoires sur le CD. Le correctif donné ici ne change les droits que pour le répertoire racine du CD-ROM. Si vous voulez exécuter des portions de Linux directement depuis le CD, vous pourriez avoir des problèmes si tous les répertoires sont lisibles par tout un chacun et si ils sont tous possédés par le superutilisateur. Ce correctif positionne les droits du répertoire racine en r-xr-xr-x et de propriétaire/groupe les valeurs indiquées dans les options uid/gid de la commande mount. pour l'appliquer: cd /usr/src/linux/fs/isofs patch <**CE MESSAGE** et recompilez votre noyau (vous pourrez avoir à corriger cette rustine à la main suivant votre version de noyau). Cette rustine devrait probablement être incorporée au noyau. Quel besoin de toute façon ont les données sur un CD de mettre la panique avec permissions/propriétaires du point de montage ? --- inode.c.ORIG Wed Apr 12 17:24:36 1995 +++ inode.c Wed Apr 12 17:59:12 1995 @@ -552,7 +552,15 @@ these numbers in the inode structure. */ if (!high_sierra) - parse_rock_ridge_inode(raw_inode, inode); + { parse_rock_ridge_inode(raw_inode, inode); + /* check for access to the root directory rights/owner CL */ + if((inode->i_sb->u.isofs_sb.s_firstdatazone) == inode->i_ino) + { /* Change owner/rights to the ones demanded by the mount command */ + inode->i_uid = inode->i_sb->u.isofs_sb.s_uid; + inode->i_gid = inode->i_sb->u.isofs_sb.s_gid; + inode->i_mode = S_IRUGO | S_IXUGO | S_IFDIR; + } + } #ifdef DEBUG printk("Inode: %x extent: %x\n",inode->i_ino, inode->u.isofs_i.i_first_extent); @@ -805,4 +813,3 @@ } #endif -
Notez que la rustine précédente est un peu vieille et ne s'appliquera probablement pas sans souci sur des noyaux 2.0 récents. Consultez aussi la question relative aux fichiers cachés plus loin dans ce document.
Qu'est ce que cela signifie lorsque j'obtiens un message du pilote IDE CD-ROM tel que : "hdxx: code: xx key: x asc: xx ascq: x" ?
C'est un message de statut/d'erreur du lecteur de CD-ROM IDE. Par défaut, le pilote IDECD donne une information brute, plutôt que de gâcher de l'espace du noyau avec des messages d'erreur. Vous pouvez changer ce défaut et afficher les messages d'erreur réels en allant dans le fichier /usr/src/linux/drivers/block/ide-cd.c
, et en mettant la valeur de VERBOSE_IDE_CD_ERRORS à 1, puis en recompilant le noyau.
Il y a un moyen. Cette commade mesure combien de temps est nécessaire à la lecture de 1500Ko de données du CD:
% time -p dd if=/dev/cdrom of=/dev/null bs=1k count=1500
1500+0 records in
1500+0 records out
real 5.24
user 0.03
sys 5.07
Le taux de transfert d'un lecteur simple vitesse est de 150Ko par seconde, ce qui devrait prendre environ 10 secondes. Au double de la vitesse, cela prendra 5 secondes, au quadruple, 2,5, etc...
Le temps "real" ci-dessus est probablement le meilleur chiffre à regarder -- dans ce cas, il indique un lecteur double vitesse. Vous pouvez augmenter la quantité de données à transférer pour obtenir des valeurs plus précises (au cas où vous vous le demanderiez, les données ne sont pas mises en cache). Vous devriez probablement exécuter cette commande quelques fois et prendre la moyenne.
Le symptome usuel est que la disquette d'amorçage utilisée pour installer initialement Linux reconnaissait votre lecteur de CD-ROM, mais après l'installation de Linux sur votre disque dur ou votre disquette, il ne le reconnait plus.
La cause la plus fréquente de ce problème est qu'avec certaines distributions Linux, le noyau qui est installé sur votre disque dur (ou votre disquette) n'est pas nécessairement le même que celui qui était sur votre disquette d'amorçage. Vous avez choisi une disquette d'amorçage qui correspondait à votre matériel et votre CD-ROM, alors que le noyau qui est installé est un noyau "générique" qui ne prend pas en charge le lecteur de CD-ROM. Vous pouvez vérifier cela en suivant la rubrique "Dépannage" exposée précédemment dans ce document (par ex. en commençant par vérifier /proc/devices
).
La solution est de recompiler votre noyau, en vous assurant que les pilotes pour votre lecteur de CD-ROM et tout autre nécessaire (par ex. le contrôleur SCSI, le système de fichiers ISO-9660) soient inclus. Consultez le Kernel HOWTO si vous ne savez pas comme réaliser cela.
SI vous avez passé des options en ligne de commande à la disquette d'amorçage (par ex. "hdc=cdrom") vous devez ajouter celles-ci au fichier de configuration de votre programme d'amorçage (typiquement /etc/lilo.conf).
Certains CDs ont des fichiers avec le bit "caché" positionné. Normalement, ces fichiers ne sont pas visibles. Si vous montez le CD avec l'option "unhide" (décacher), alors les fichiers devraient être accessibles (cela ne semble pas être documenté quelque part).
Si vous voulez écrire votre propre application, telle qu'une application de platine de lecture de CD audio-numérique, vous aurez besoin de comprendre l'interface de programmation des applications (API) fournie par Linux.
A l'origine, les pilotes CD-ROM du noyau utilisaient leur propres fonctions ioctl() pour fournir les services spécifiques à chaque lecteur. Des fichiers d'entête, tel que /usr/include/linux/sbpcd.h
les décrivent. Etant donné que de nombreux pilotes étaient basés sur d'autres pilotes, les interfaces, bien que non identiques, partageaient beaucoup de choses en commun.
Plus récemment, il y a eu une initiative dirigée par David van Leeuwen (
david@tm.tno.nl) pour standardiser l'API des lecteurs de CD-ROM, en regroupant le code commun en une seule place et en assurant que tous les pilotes se comportent de façon identique. Ceci est documenté dans le fichier /usr/src/linux/Documentation/cdrom/cdrom-standard.tex
. De nombreux pilotes du noyau se comportent ainsi. J'espère que pour la prochaine version majeure du noyau (3.0 ?), tous les pilotes se conformeront à cette API.
Mon livre, Son et images sous Linux, entre plus en détail dans la programmation des lecteurs de CD-ROM, en particulier pour les fonctions audio-numériques. Consultez la fin de la section Références.
Si vous avez un CD-ROM qui dispose de noms de fichiers longs sous Windows mais pas sous Linux, c'est qu'il utilise probablement le format propriétaire Microsoft de système de fichiers Joliet. Consultez la prochaine question pour obtenir une solution.
Microsoft a créé une extension au format ISO-9660 intitulée Joliet. Au moment de l'écriture de ce dodument, la prise en charge du format Joliet est en cours et des rustines sont disponibles à l'adresse http://www-plateau.cs.berkeley.edu/people/chaffee/joliet.html ou ftp://www-plateau.cs.berkeley.edu/pub/multimedia/linux/joliet/.