IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Utilisation de "-o loop" dans la commande "mount"


Sujet :

Shell et commandes GNU

  1. #1
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 079
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 079
    Par défaut Utilisation de "-o loop" dans la commande "mount"
    Bonjour,

    tout est dans le titre, donc quelques lignes de code pour montrer les détails :

    Création d'un disque virtuel :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    truncate -s 200M /tmp/disk1.img
    mkfs.ext4 /tmp/disk1.img
    ls -lGg /tmp/*.img
    -rw-r--r-- 1 209715200 20 avril 13:16 /tmp/disk1.img
    Montage sans -o loop, pour utilisation
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    mount /tmp/disk1.img /mnt/
    mount | grep mnt # vérif 1
    /tmp/disk1.img on /mnt type ext4 (rw,relatime)
    ls -lGg /mnt/ # vérif 2
    total 12
    drwx------ 2 12288 20 avril 13:16 lost+found
    touch /mnt/essai.txt # travail
    echo "blabla" > /mnt/essai.txt 
    cat /mnt/essai.txt  # vérif 3
    blabla
    Tout va bien, donc démontage et remontage avec -o loop, pour voir :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    umount /mnt/
    mount -o loop /tmp/disk1.img /mnt/
    ls -lGg /mnt/ #  # vérif 4 (= 2)
    total 13
    -rw-r--r-- 1     7 20 avril 13:18 essai.txt
    drwx------ 2 12288 20 avril 13:16 lost+found
    cat /mnt/essai.txt #  # vérif 5 (= 3)
    blabla
    C'est pareil.
    Alors, l'utilité de l'option -o loop ?

    J'ai trouvé ça comme aide, mais un exemple plus clair aurait été le bienvenu :
    Citation Envoyé par manpagesfr
    LE PÉRIPHÉRIQUE LOOP
    Il est possible de faire un montage au travers du périphérique loop (boucle). Par exemple, la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mount /tmp/fdimage /mnt -t msdos -o loop=/dev/loop3,blocksize=1024
    va faire correspondre le périphérique boucle /dev/loop3 au fichier /tmp/fdimage, puis monter ce périphérique sur /mnt. Ce type de montage dispose de trois options, nommées loop, offset et encryption, qui sont en réalité des options pour losetup(8). (Ces options peuvent être utilisées en plus de celles qui sont spécifiques au type du système de fichiers.) Si aucun périphérique loop n'est mentionné explicitement (uniquement l'option « -o loop »), alors mount essayera de trouver une boucle inutilisée et se l'attribuera. Si vous êtes assez casse-cou pour faire de /etc/mtab un lien symbolique sur /proc/mounts alors tout périphérique loop alloué par mount sera libéré par umount. On peut libérer un périphérique boucle manuellement avec « losetup -d », voir losetup(8).
    La question que je me pose : c'est quoi ce "périphérique boucle /dev/loop3" de la première phrase, surtout rapporté à mon exemple d'utilisation ?

    Merci,

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 160
    Par défaut
    L'utilisation des /dev/loopX est lié à losetup.

    Le principe tu crée ton fichier qui deviendra une image disque avec dd par exemple
    Tu appliques losetup dessus exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    losetup /dev/loop0 fichier_image
    sous réserve que /dev/loop0 soit dispo

    Puis ensuite, tu peux créer une table de partition sur le device, puis un FS dans la partition.

    Créer un FS directement dans le fichier image fonctionnera mais c'est moins propre.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 800
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Jipété Voir le message
    C'est pareil.
    Ce n'est pas parce que dans un cas particulier l'option n'a pas été utile qu'elle ne l'est pas dans sa généralité.

    Le montage "loopback" permet de créer une boucle de montage, c'est à dire un second montage (second par rapport à un premier déjà existant).
    Par exemple si tu tapes mount /dev/sda1 /mnt (sous-entendu que "/dev/sda1" soit déjà monté ce qui est généralement le cas car c'est la première partition du premier disque donc c'est celui qui est monté sous "/") ça ne fonctionnera pas.
    Mais si tu rajoutes "-o loop" là ça fonctionnera et le point de montage "/mnt" pointera de façon dupliquée sur le disque /dev/sda1 et tout ce que tu feras dans "/" ou "/mnt" sera la même chose.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 079
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 079
    Par défaut
    Salut les copains,

    et merci.

    Citation Envoyé par chrtophe Voir le message
    Créer un FS directement dans le fichier image fonctionnera mais c'est moins propre.
    Moins propre dans quel sens ? Risque de problèmes à venir ? Lesquels ?

    Citation Envoyé par Sve@r Voir le message
    Le montage "loopback" permet de créer une boucle de montage, c'est-à-dire un second montage (second par rapport à un premier déjà existant).
    Alors là, je vais me faire un sac de nœuds dans la tête je te raconte pas !
    Merci pour ces précisions mais je n'ai pas de besoins allant dans ce sens.

    Citation Envoyé par Sve@r Voir le message
    (sous-entendu que "/dev/sda1" soit déjà monté ce qui est généralement le cas car c'est la première partition du premier disque donc c'est celui qui est monté sous "/")
    Ce qui n'est pas toujours le cas, j'en ai déjà parlé, et la première fois que tu vois ça tu te demandes si c'est du lard ou du cochon en te frottant très fort les yeux...
    Exemple retrouvé dans mes archives :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    df -h
    Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
    /dev/sdb1          192G     38G  144G  21% /            FAUX c''est le ssd dédié au système, sda1
    /dev/sda2          192G    5,0G  177G   3% /reserved    FAUX et VRAI, c''est la 2de partition du ssd, prévue pour le swap
    /dev/sda1          1,7T    241G  1,3T  16% /data        FAUX c''est sdb1 que je monte dans fstab sur /data
    /dev/sdc1          1,7T    186G  1,4T  12% /dbck        ok
    /dev/sdc2          192G     47G  136G  26% /oubliettes  ok
     
    lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   1,8T  0 disk FAUX, c''est le 240 Gb
    ├─sda1   8:1    0   1,6T  0 part /data
    └─sda2   8:2    0 195,3G  0 part /reserved
    sdb      8:16   0 223,6G  0 disk FAUX, c''est un 1,8 Tb
    ├─sdb1   8:17   0 195,3G  0 part /
    └─sdb2   8:18   0  28,3G  0 part 
    sdc      8:32   0   1,8T  0 disk OK
    ├─sdc1   8:33   0   1,6T  0 part /dbck
    └─sdc2   8:34   0 195,3G  0 part /oubliettes
    Mais quand je fais ls -Al / je vois les données de sda1, et pareil pour ls -Al /data qui m'affiche les data stockées dans sdb1, et pareil pour les autres, tout est en ordre.
    Quelqu'un pourrait m'expliquer ces comportements différents selon les outils utilisés ?
    Et là, en général, silence radio...
    Ah, je réalise que cette petite partie devrait se trouver dans l'autre fil mais bon, c'était juste pour illustrer la phrase de Sve@r.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 800
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Merci pour ces précisions mais je n'ai pas de besoins allant dans ce sens.
    Moi non plus. Je me souviens à une époque avoir utilisé le "-o loop" pour monter des images iso mais en fait je n'ai pas essayé sans. Si ça se trouve ça marchait aussi ; ou bien peut-être qu'il le fallait à une époque X pour monter les iso puis suite à évolution ce n'est ensuite plus devenu nécessaire.

    Me semble aussi que snapd utilise les montages loopback (mais je peux pas te confirmer, j'ai désinstallé ce truc qui m'énervait).

    Citation Envoyé par Jipété Voir le message
    Ce qui n'est pas toujours le cas, j'en ai déjà parlé, et la première fois que tu vois ça tu te demandes si c'est du lard ou du cochon en te frottant très fort les yeux......mais bon, c'était juste pour illustrer la phrase de Sve@r.
    En fait il fallait un exemple concret pour avoir au final deux dossiers différents pointant vers le même FS (il me fallait un nom concret pour le premier). Je suis parti donc sur une hypothèse peut-être pas toujours vraie (c'est visible ici) mais qui me semblait plutôt compréhensible (sensée?).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 160
    Par défaut
    Moins propre dans quel sens ?
    Tant que tu n'utilise pas d'outil type fdisk, créer un FS directement sera juste moins propre mais ne posera pas de prob.

    Avoir un fichier image avec une table de partition pourra par exemple permettre de transformer celle-ci en image pour une VM.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 079
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 079
    Par défaut
    Bonjour,

    Citation Envoyé par chrtophe Voir le message
    Tant que tu n'utilise pas d'outil type fdisk, créer un FS directement sera juste moins propre mais ne posera pas de prob.

    Avoir un fichier image avec une table de partition pourra par exemple permettre de transformer celle-ci en image pour une VM.
    merci pour ce retour, qui me met la puce à l'oreille tout en m'inquiétant, résultat, je repars des premières commandes du premier post :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ truncate -s 200M /tmp/disk1.img
    $ mkfs.ext4 /tmp/disk1.img
    mke2fs 1.46.2 (28-Feb-2021)
    Discarding device blocks: done                            
    Creating filesystem with 204800 1k blocks and 51200 inodes
    Filesystem UUID: e1accfd6-2a9c-45bd-b3fa-8fe6e46003b4
    Superblock backups stored on blocks: 
    	8193, 24577, 40961, 57345, 73729
     
    Allocating group tables: done                            
    Writing inode tables: done                            
    Creating journal (4096 blocks): done
    Writing superblocks and filesystem accounting information: done
    et là on pourrait croire que tout va bien, surtout en continuant avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ fdisk -l /tmp/disk1.img 
    Disque /tmp/disk1.img : 200 MiB, 209715200 octets, 409600 secteurs
    Unités : secteur de 1 × 512 = 512 octets
    Taille de secteur (logique / physique) : 512 octets / 512 octets
    taille d''E/S (minimale / optimale) : 512 octets / 512 octets
    Mais effectivement, ça se complique avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ fdisk /tmp/disk1.img 
     
    Bienvenue dans fdisk (util-linux 2.36.1).
    Les modifications resteront en mémoire jusqu''à écriture.
    Soyez prudent avant d''utiliser la commande d''écriture.
     
    Le périphérique contient déjà une signature « ext4 »; elle sera supprimée par une commande d''écriture. Consultez la page man de fdisk(8) et l''option --wipe pour plus de détails.
     
    Le périphérique ne contient pas de table de partitions reconnue.
    Création d''une nouvelle étiquette pour disque de type DOS avec identifiant de disque 0x6b5e8fbc.
     
    Commande (m pour l''aide) : q
    Donc, question : comment se fait-il que j'aie pu écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ mount /tmp/disk1.img /mnt/
    $ mount | grep mnt # vérif 1
    /tmp/disk1.img on /mnt type ext4 (rw,relatime)
    $ ls -lGg /mnt/ # vérif 2
    total 12
    drwx------ 2 12288 20 avril 13:16 lost+found
    $ touch /mnt/essai.txt # travail
    $ echo "blabla" > /mnt/essai.txt 
    $ cat /mnt/essai.txt  # vérif 3
    blabla
    En gros, ces quelques lignes montrent qu'on peut bosser sans table de partitions ! C'est possible, ça ?
    ('tain, tous les jours j'apprends des trucs...)

  8. #8
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 160
    Par défaut
    En gros, ces quelques lignes montrent qu'on peut bosser sans table de partitions ! C'est possible, ça ?
    Avec une image loopback,oui. Mais si dans ton image, quelque chose fait appel à la table de partitions, tu auras un prob.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 800
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jipété Voir le message
    En gros, ces quelques lignes montrent qu'on peut bosser sans table de partitions ! C'est possible, ça ?
    Oui, bien sûr.
    Quand tu as un disque dur, tu peux au choix le partitionner en 1, 2, 3 ou 4 parties physiques (enfin ça a augmenté récemment jusqu'à je crois 64 mais je me souviens plus du nom de la techno qui fait ça) ou pas.
    S'il est partitionné, chaque partition se comporte exactement comme un disque dur en plus réduit. Et sur ce mini-disque dur tu peux alors installer un filesystem (ou pas).
    Mais s'il n'est pas partitionné, ça ne change pas le fait que ça reste un disque et donc que tu peux aussi lui installer un filesystem. En fait, la vraie formulation c'est plutôt dans l'autre sens, c'est que tu peux installer un FS sur tout disque à accès direct ; que ce disque soit un disque physique intégral ou une de ses partition qui se comportera alors elle-même comme un disque.

    Tu as créé une image disque (donc on peut dire "un disque") puis tu lui as installé un FS sans le partitionner, ok pas de souci (ça m'est arrivé à moi aussi d'installer des FS sur des disques non partitionnés). Et maintenant tu appelles fdisk, outil pour le partitionner, fdisk te répond donc "ok je peux le faire mais attention, il y a déjà un truc dessus, si vous le faites ce sera perdu".
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  10. #10
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 079
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 079
    Par défaut
    Ok merci pour tout !



    et

  11. #11
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 160
    Par défaut
    Quand tu as un disque dur, tu peux au choix le partitionner en 1, 2, 3 ou 4 parties physiques (enfin ça a augmenté récemment jusqu'à je crois 64 mais je me souviens plus du nom de la techno qui fait ça) ou pas.
    C'est GPT.

    En MBR, tu as jusqu'à 4 partitions. L'une d'elle peut être une partition dite étendue en opposition aux partitions principale. Une partition étendue va à son tour contenir une table de partitions jusqu'à 4 partitions, dont une peut être étendue, etc. Le fdisk de Linux avec les multiples imbrications, gère jusqu'à 60 partitions, sous dos/Windows je sais pas mais je pense que ça se limite au 2ème niveau. J'ai jamais vu concrètement un 3ème niveau. Seule une partition principale est bootable via le bios.

    Avec GPT, tu as 128 partitions possibles. GPT permet aussi de dépasser la limite des disques à 2,2 To de MBR du au 32 bits. Une copie de la table de partition se trouve en fin de disque.

    Avec MBR, l'amorce se faisait via le code directement écrit dans le MBR. Avec GPT, on utilise EFI, l'amorce se fait depuis un fichier exécutable stocké dans une partition spéciale ESP (qui est en fait une partition FAT32 avec le flag ESP). Il me semble que cette partition ne doit pas forcément être la première mais c'est en général le cas.

    Le 1er bloc d'un disque avec table de partition GPT contient un protective MBR présentant une seule partition recouvrant l'intégralité du disque de façon à ce qu'un outil ne gérant pas GPT n'écrase pas le disque.

    Dans le cadre d'une image disque, tu peux y créer soit une table MBR comme expliqué précédemment via fdisk soit une table GPT via gdisk ou parted, ou créer un FS directement dedans sans table de partition.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/06/2012, 08h54
  2. Problème de quote dans une commande
    Par nicolas_lepot dans le forum Tcl/Tk
    Réponses: 1
    Dernier message: 01/10/2008, 16h44
  3. [MySQL] Pourquoi dois-je utiliser des "quotes penchées" dans mes requêtes?
    Par v4np13 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/02/2008, 23h23
  4. utilisation des quotes
    Par Henry9 dans le forum Oracle
    Réponses: 1
    Dernier message: 13/11/2006, 21h40
  5. [AJAX] Utilisation des quotes
    Par illegalsene dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/10/2006, 09h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo