{{tag>système partitions}}
----
====== mount et fstab : Le montage des systèmes de fichiers ======
Quand un clé USB est connectée, elle est normalement montée automatiquement. Idem pour la partition qu'on vient de démarrer et qui porte votre OS. Par contre, les autres partitions du disque ne seront pas montées automatiquement.
Il peut être intéressant de monter manuellement ou automatiquement ces partitions. Il peut aussi être intéressant de spécifier des options de montage (mettre une partition en lecture seule, par exemple).
Les montages automatiques (au démarrage) sont définis dans le fichier ''/etc/fstab''. Ce fichier peut-être modifié soit manuellement, soit automatiquement (le logiciel de référence étant [[gnome-disk-utility]], normalement installé par défaut).
Nous allons découvrir ces outils, ainsi que quelques commandes utiles.
Quelques liens : [[montage|montage]], [[:systeme_de_fichiers|les systèmes de fichiers sous Linux]] ainsi que le portail [[:partitions|Partitions]].
Le montage des partitions a un impact sur le système et nécessite donc les [[:sudo|droits d'administration]]. \\ L'utilisation des droits d'administration permet de modifier le système, et risque de l'abîmer. Il est donc préférable de sauvegarder votre fichier ''/etc/fstab'' avant manipulation.\\
Compte tenu des risques, ne faite rien que vous n'ayez pas bien compris.
===== Rappel sur la désignation des partitions =====
Les périphériques sont désignés par le système par des fichiers dans le répertoire ''/dev/''. \\
Les périphériques de stockage seront donc reconnus par ''/dev/sda'', ''/dev/sdb'', etc.\\
Les [[:partitions#regle_de_denomination|partitions]] sont désignées par leur numéro dans le disque (''/dev/sda1'', ''/dev/sda2'', ...)
Les partitions peuvent aussi être reconnues par leur [[:uuid_et_label|UUID ou leur label]].
C'est une partition que l'on monte (sdb1, par exemple), JAMAIS un disque (sdb, par exemple) : cela ne fonctionne pas.
==== Liste des partitions ====
Vous pouvez lister les partitions en lançant la commande : lsblk -o name,fstype,size,fsused,fsuse%,fsavail,label,mountpoint | grep -Ev "loop" ou sudo fdisk -l
Ce qui vous ressortira quelque chose comme :
Disk /dev/sda: 117.3 GB, 117298257920 bytes
255 têtes, 63 secteurs/piste, 14260 cylindres, total 229098160 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x00067e35
Périphérique Amorce Début Fin Blocs Id Système
/dev/sda1 2048 41945087 20971520 83 Linux
/dev/sda2 41945088 58722303 8388608 82 partition d'échange Linux / Solaris
/dev/sda3 58722304 121636863 31457280 83 Linux
/dev/sda4 * 121636864 206187183 42275160 7 HPFS/NTFS/exFAT
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 têtes, 63 secteurs/piste, 60801 cylindres, total 976773168 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Identifiant de disque : 0x000e4fe9
Périphérique Amorce Début Fin Blocs Id Système
/dev/sdb1 2048 976773119 488385536 83 Linux
Vous pouvez alors lire la liste des périphériques de stockage (disques dur, clés usb,…) avec la liste des partitions et leur taille.
==== Note sur les UUIDs ====
L'[[:uuid_et_label|UUID]] est défini pour chaque partition de façon quasi-unique, et assure qu'il n'y aura pas d'ambiguïtés dans votre fstab.\\
Pour obtenir les UUIDs de vos partitions, tapez
sudo blkid
Vous obtiendrez la liste de vos partitions et pour chacune, son chemin d'accès, son UUID, son étiquette, le type de système de fichier qu'elle contient :
/dev/sda1: UUID="8bf33340-e94c-4c4c-981d-35e73f8bc65c" TYPE="ext4"
/dev/sda2: UUID="ac56a704-260b-45f5-85ac-e1b451bb79bc" TYPE="swap"
/dev/sda3: LABEL="Home" UUID="8244710a-5cce-49ad-8b93-a92b5d2e53a0" TYPE="ext4"
/dev/sda4: UUID="DCF041AFF0419126" TYPE="ntfs"
/dev/sdb1: LABEL="Home" UUID="2c313d40-6bdc-4e42-917a-b04f88764aac" UUID_SUB="c21f5351-4022-41af-b504-6b59b455bf23" TYPE="btrfs"
On peut aussi taper la commande :
lsblk -fe7
qui donne sensiblement les mêmes résultats :
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sda
├─sda1 ntfs WIN10 6C8CA3038CA2C6C4
├─sda2 ext4 MINT 727a95e9-70a4-4d6e-a739-cb884c4188df 19,1G 40% /
├─sda3 ext4 HOMEMINT 4bdc4735-801e-43fe-b3f1-58fd832638f5 23,6G 71% /home
└─sda4 ext4 DATAS ca07415a-2704-497f-8091-1d9a4a58f3d0 297,2G 43% /media/DATAS
Ainsi, dans votre fstab, les trois lignes suivantes sont équivalentes :\\
/dev/sda3 /home ext4 defaults 0 0
UUID=8244710a-5cce-49ad-8b93-a92b5d2e53a0 /home ext4 defaults 0 0
LABEL=Home /home ext4 defaults 0 0
La première ligne est déconseillée dans la mesure où le chemin d'accès à la partition (/dev/sda3) dépend du contexte dans lequel le fichier /etc/fstab est exploité ; la seconde est la plus solide, car l'UUID d'une partition n'est qu'exceptionnellement modifiée ; la troisième est la plus claire, mais l'unicité de l'étiquette n'est pas garantie, ni sa pérennité, l'utilisateur ayant tout loisir de nommer ses partitions comme il l'entend (des conflits peuvent survenir du fait de la présence au démarrage de temps à autre de périphériques amovibles).
===== La commande mount =====
Pour monter un périphérique, il faut connaître son nom, qui sera de la forme **/dev/sda1**, par exemple.
La commande **mount** permet de manipuler tous les montages de systèmes de fichier de manière très précise.
Par exemple, pour monter l'unité de stockage **/dev/sdc3** dans le dossier **/media/stock** :
sudo mount /dev/sdc3 /media/stock
Le système de fichier utilisé est détecté automatiquement.
Le point de montage doit être un dossier, quelconque mais **existant** et **vide** au moment du montage (idéalement un sous-répertoire de **/media**, mais ce n'est pas strictement obligatoire).
**__Point de montage dont le nom comporte un espace.__**
__Pour la commande mount :__ l'espace doit être précédé d'un caractère d’échappement **\**, ou le nom du dossier mis entre guillemets **""** .
__Pour Fstab :__ l'espace doit être remplacé par **\040** .
Nous allons voir comment spécifier des options ou le système de fichiers.
==== Format de la partition ====
Le type de fichiers est normalement détecté par la commande ''mount''. Néanmoins il peut être nécessaire de lui imposer un format :
sudo mount -t [type] /dev/sdc3 /media/stock
[type] est le format de système de fichiers ([[:systeme_de_fichiers|Les systèmes de fichiers]]). Voici les plus fréquents : \\
''ext2, ext3, ext4, f2fs, fat'' (Fat16), ''vfat'' (Fat32), ''ntfs, ntfs3'' (plus efficace, depuis 22.04), ''reiserfs, btrfs, tmpfs, iso9660''(Disques)'',…''
Exemples :
mount -t ext4 /dev/sdc3 /media/stock # Système de fichiers en ext4
mount -t vfat /dev/sdc3 /media/partage # Système de fichiers et Fat32
mount -t iso9660 /dev/sdd /media/cdrom # CD
\\
On peut aussi monter des fichiers, comme par exemple des Isos (images disque) :
mount -o loop ubuntu-cdrom.iso /media/cd-installation
==== Droits par défaut du volume ====
=== Système de fichier linux ===
En ce qui concerne les systèmes de fichiers qui ont une gestion des permissions (comme Ext2, Ext3, ReiserFs etc...), si vous souhaitez pouvoir écrire dans cette partition en tant que simple utilisateur, vous devez [[/permissions#modifier_les_permissions|changer les permissions ou l'appartenance du répertoire racine de la partition]].
Dans notre exemple précédent, si ''/dev/sdc3'' est en ext3 :\\
Après avoir monté la partition dans ''/media/stock'' :
sudo chown utilisateur /media/stock
Désormais cette partition appartient à l'utilisateur, peu importe où elle sera montée ensuite.\\
(Les droits sont attachés au répertoire racine de la partition et non au répertoire du point de montage)\\
\\
=== Système de fichier non linux ===
Cas concret : vous avez une partition en vfat sur votre disque dur et vous voudriez, en tant qu'utilisateur lambda, pouvoir lire et écrire dessus. \\ Le système de fichier vfat ne spécifiant aucun droit, nous devons les lui spécifier lors du montage. Il faut alors indiquer à mount la valeur de [[wpfr>umask]] adéquate grâce à l'option homonyme.
sudo mount -o umask=0 /dev/hda7 /media/win_d
Cette méthode a un inconvénient : les autorisations en exécution sont nécessaires pour les répertoires mais pénibles pour les fichiers. On peut alors préciser un umask pour chacun d'eux :
sudo mount -o fmask=111 -o dmask=0 /dev/hda7 /media/win_d
Vous pouvez également restreindre les droits en montant le système de fichier en lecture seule (c'est-à-dire avec aucun droit en écriture). L'option "-o umask=0222" est alors tout indiquée.
==== Autres options ====
D'autres options peuvent être spécifiées au montage comme nous le verrons dans le paragraphe suivant. Les mêmes options (''default'', etc) peuvent être spécifiées avec ''mount'', après "''-o''". Par exemple :
mount -t vfat -o defaults,rw,user,umask=022,uid=1000 /dev/sdc3 /media/stock
===== Le fichier fstab (montage automatique) =====
Le fichier **''/etc/fstab''** liste les partitions qui seront montées __automatiquement au démarrage__ ou à la connexion du périphérique, avec toujours les mêmes options. \\
Il est composé de plusieurs lignes décrivant chacune les conditions de montage de chaque partition / système de fichier.
Le fichier **fstab** est créé lors de l'installation, avec le montage de la partition principale, et de la [[swap|swap]]. Mais on peut y ajouter manuellement des partitions supplémentaires, qui seront alors automatiquement lues par le système au démarrage.
Si le nom d'un point de montage contient un espace, cet espace doit être remplacé dans ''/etc/fstab'' par ''**\040**''
==== Les bases ====
Le fichier /etc/fstab suivant résume une configuration classique :
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#
# / was on /dev/sda7 during installation
UUID=33b870b8-a81e-4203-a4fd-7affa9f412fb / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda5 during installation
/dev/sda5 /boot ext2 defaults 0 2
# /musique was on /dev/sda8 during installation
LABEL=ma-musique /musique ext4 defaults 0 2
# swap was on /dev/sda6 during installation
UUID=2c442228-1991-48c7-bad9-a80dfc8267cf none swap sw 0 0
Ici, le disque principal est sda7, et son swap est sda6. Ces lignes ont été créées par l'installateur. Les partitions additionnelles montées sont sda5 et sda8, et ont été ajoutées à la main.
- la colonne **** indique la partition elle-même. Il y a plusieurs solutions, mais les 4 principales sont :
- l'UUID ([[https://fr.wikipedia.org/wiki/Universal_Unique_Identifier|Universal Unique Identifier]]) de la partition. Celle-ci sera obtenue via un **sudo blkid**, via [[gnome-disk-utility|gnome-disk]], ou via [[gparted|gparted]]. Un UUID ressemble à cela **UUID=2c442228-1991-48c7-bad9-a80dfc8267cf**
- La référence directe à la partition sous la forme **/dev/sda2** ou **/dev/sdb2** (**sd** signifie disque dur, la lettre est l'ordre du disque dans le boot, et le N° est celui de la partition. **/dev/sdb2** est donc la 2e partition du 2e disque dur). Inconvénient de cette méthode : si vous changez le 1er disque de démarrage dans le boot, la signification de sdb2 (par exemple) changera en même temps. l'UUID est donc un identifiant plus stable et plus sûr.
- Le LABEL de la partition à monter. On peut en effet donner un nom (label, ou étiquette) à une partition, même si ce n'est pas obligatoire. Dans ce cas, l'identifiant de la colonne **** prendra la forme **LABEL=nom-partition**, où **nom-partition** est à remplacer par le LABEL réel.
- l'adresse **IP** du disque réseau, collée au nom du répertoire qui s'y trouve et qu'on souhaite monter : **192.168.7.12/rep_a_partager**. Dans ce cas, l'identifiant de la colonne **** prendra la forme **CIFS** (un forme particulière du protocole SMB1).
- la colonne **** indique un répertoire quelconque sur la partition principale, et qui servira de point de montage. Pour la partition principale elle-même, c'est évidemment "**/**" (la racine). Pour une partition montée additionnelle, on choisit en général (ce n'est pas un emplacement obligatoire) un répertoire /media/xxx (où **xxx** est le nom que vous choisissez pour la partition de montage). Vous devez créer manuellement cette partition de montage __une fois pour toutes__ par un **sudo mkdir /media/xxx**. Laissez-la vide, et n'y touchez plus jamais. Elle sert juste d'ancrage au fstab pour son montage.
- La colonne **** donne le type de système de fichiers de la partition montée. Pour une partition linux, c'est souvent ext4.
- La colonne **