Monter automatiquement un volume au démarrage avec fstab
Dans beaucoup de cas il est intéressant de pouvoir faire en sorte qu’un volume externe se monte automatiquement à l’allumage de la machine.
Cela peut notamment être utile pour un partage samba ou pour un stockage owncloud par exemple.
Prérequis :
- Savoir utiliser la commande fdisk et mount. Si ce n’est pas le cas je vous invite à consulter les man de ces deux commandes.
- Avoir les droit administrateur bien entendu
- Avoir installé le paquet ntfs-3g si vous souhaitez monter un volume « windows » de type NTFS. (apt-get install ntfs-3g)
Présentation
Nous allons par la suite devoir modifier un fichier assez sensible du système. Pour ma part la première fois que je l’ai fais j’ai bien cru que j’avais cassé mon système. J’ai voulu jouer comme débutant et j’ai perdu. Néanmoins avec linux en cherchant un peu on trouve toujours une solution. bref, passons.
Ce qui nous intéresse se passe dans le fichier /etc/fstab : késako ?
Ce fichier en fait s’occupe de monter les volumes repérés par leur chemin ou par leur UUID (identifiant unique) vers l’emplacement de votre choix avec les options que l’on souhaite.
1/ contenu
Voici comment il se présente :
Il contient 6 champs par ligne :
# **file system** **mount point** **type** **options** **dump** **pass**
- file system : chemin/de/votre/volume
- mount point : chemin/emplacement/final
- type : type_de_systeme_de_fichier (ext4 ntfs etc…)
- options : voir_tableau_ci_dessous
- dump : type_de_verifications (0 ou 1)
- pass : ordre_de_verification (0 1 2)
2/ Options
En rouge les options par défaut.
OPTION | DESCRIPTION |
---|---|
defaults | Options par défaut ⇒ rw, suid, dev, exec, auto, nouser, async. |
rw / ro | Lecture et écriture autorisées / Lecture seule. |
suid / nosuid | Autorise les opérations sur les bits suid et sgid / N’autorise pas. |
dev / nodev | Interprète les noeuds de type caractères ou blocs / N’interprète pas. |
exec /noexec | Autorise l’exécution des fichiers binaires / N’autorise pas. |
auto / noauto | “mounté” automatiquement au démarrage et lors d’un appel mount -a / Ne pourra être monté qu’explicitement. |
nouser / user | Seul “root” sera autorisé à effectuer le mountage dé-mountage / Tous les utilisateurs aussi. |
async / sync | Accès en mode asynchrone / synchrone. |
owner | Seul le propriétaire sera autorisé à “mounter” “démounter”. |
noatime | Optimisation SSD (NO Access TIME): ne pas mettre à jour l’attribut “atime” et limiter le nombre d’accès disques. |
discard | Optimisation SSD : Active le mode TRIM : Gestion des effacements/libération par blocs. |
sw | Pour les partitions de type “swap”. |
nofail | Ne pas renvoyer les messages d’erreur de “mount”. |
comment | Utilisé par les programmes de maintenance de fstab. |
3/ Dump
prend la valeur 1
pour les partitions visées par une sauvegarde au moyen de l’utilitaire dump ou 0
pour les autres.
4/ Pass
- 0 si la partition ne doit pas être vérifiée par fsck (NTFS par exemple)
-
1 pour la partition racine
-
2 pour les autres partitions UNIX
Préparation
1/ Sauvegarde
- Nous allons donc commencer par effectuer une sauvegarde de ce fichier.
sudo cp /etc/fstab /etc/fstab_old
2/ Point de montage
- Puis nous allons créer un point de montage pour notre futur disque.
sudo mkdir /stockage.
sudo mkdir /stockage/nom_de_votre_disque.
3/ UUID
- Branchons notre disque et vérifions s’il est là.
sudo fdisk -l
On repère son montage (sda ou sdb, voir nvme0n1p pour certains SSD).
- maintenant trouvons son UUID afin d’éviter les confusions au montage.
ls -l /dev/disk/by-uuid/
- Si votre volume est déjà monté, démontez le.
sudo umount /dev/votre_volume
Permissions
On va donner les permissions à votre utilisateur d’utiliser le volume.
- Commencez par créer un groupe.
sudo groupadd stockage
- Puis repérez son identifiant « gid ».
sudo cat /etc/group |grep stockage
Retenir l’id de la commande, x:1004 ou 1005 etc.
- Puis on ajoute l’utilisateur #votre_user au groupe stockage.
usermod -a -G stockage votre_user
Ecriture fstab
1/ Ecriture
- On ouvre /etc/fstab.
sudo nano /etc/fstab
- Puis on inscrit la chose suivante.
UUID=Votre_UUID /stockage/nom_de_votre_disque ntfs-3g suid,dev,auto,async,gid=votre_gid,umask=007,nofail,permissions 0 0
2/ Petite explication
- Le « auto » permet de monter le volume automatiquement. Si vous ne souhaitez plus cette fonctionnalité renseignez « noauto ».
- Le « nofail » permet entre-autre d’éviter le plantage de votre machine au boot si le montage ne s’effectue pas bien. Pour les autres options se référer au tableau.
On ferme fstab et on enregistre
Test
Désormais, et avant tout rallumage de votre machine, vous pouvez tester le montage avec la commande :
sudo mount -a
Si tout se passe bien vous pouvez désormais accéder au contenu de votre volume dans le dossier /stockage/votre_volume.
Vous pouvez alors rebooter votre machine et vérifier que le montage s’effectue bien automatiquement.
OWNCLOUD
Une fois les étapes précédentes réalisées il va falloir donner des permissions à votre montage afin que celui-ci puisse être exploité par owncloud.
- On ajoute l’utilisateur www-data au groupe stockage.
sudo usermod -a -G stockage www-data
(www-data est l’utilisateur par defaut de Apache, ici on l’ajoute au groupe « stockage »)
- On donne la propriété du dossier stockage a l’utilisateur et au groupe www-data.
sudo chown -R www-data:www-data /stockage/*
(* pour donner ces droits à tout les dossiers et sous-dossiers)
Merci pour cet article instructif que je viens de lire longtemps après sa parution.
En cas de mise à niveau d’une distribution avec formatage de / on doit reprendre la manip. Avez-vous une stratégie particulière pour l’éviter ou l’alléger. script bash par exemple.
Bonjour. Mes excuses pour le retard…
Je n’ai jamais eu ce besoin. La manip est assez simple au final et cela fait partie pour moi des petites choses à faire en cas de ré-install du système.
Après si l’on veut industrialiser un peu, oui un petit script bash ferait l’affaire. Sinon le mieux serais carrément d’avoir une image clean de la partition système, re-déployable à l’infini..