web-dev-qa-db-fra.com

Montez un lecteur externe au démarrage seulement s'il est branché

J'ai une entrée pour un disque dur externe dans mon fstab:

UUID="680C0FE30C0FAAE0" /jgdata ntfs noatime,rw

Mais parfois, ce lecteur n'est pas branché au démarrage. Cela me laisse à mi-chemin dans un démarrage, avec une invite à "Continuer à attendre, appuyez sur S ou appuyez sur M" mais aucune pression de touche n’a d’effet à ce stade (y Ctrl-Alt-Delete, même pas majuscule).

À court d’écriture d’un script pour vérifier la sortie de fdisk -l, comment puis-je monter ce lecteur au démarrage uniquement s’il est présent? Il serait pratique d’avoir une entrée fdisk pour ce lecteur, je peux donc taper mount /jgdata au lieu d’avoir besoin d’un nom de périphérique.

68
Jeremy

Vous êtes tous sur la bonne piste. J'ai trouvé un moyen un peu plus propre et une meilleure forme.

L'option correcte à ajouter dans fstabest nofailname__, toutefois, elle doit être placée après autoname__. Si vous le changez en noautoname__, il ne sera jamais monté au démarrage. Si vous ajoutez nobootwaitau chargeur de démarrage, vous risquez peut-être de manquer quelque chose de grave, tel que le montage de la partition avant que fsckne la vérifie, ou de ne pas monter une partition utilisée dans le processus de démarrage.

Après avoir apporté les modifications ci-dessus, le système démarrera normalement (et montera le volume) si le périphérique est branché alors que le système est arrêté. Il démarrera également normalement si le périphérique n’est pas présent au moment du démarrage.

Le seul inconvénient est que, si vous connectez le périphérique alors que le système est en cours d'exécution, en fonction de la configuration (trop de variables à tester), le périphérique risque de ne pas être immédiatement monté. Vous pouvez y remédier avec un simple mount -a ou mount /specific_device ou un redémarrage.

70
Bryan Gonzalez

J'ai eu le même problème - j'ai fait une étape supplémentaire

Si vous utilisez l'option nofail dans /etc/fstab, le système recherchera votre disque (et votre partition) au moment du démarrage. Si le périphérique est branché, le système de fichiers sera monté. Sinon, le démarrage se poursuivra normalement.

Voir Arch wiki: https://wiki.archlinux.org/index.php/Fstab

Exemple

UUID=XXXXXXXXXXXXXXX    /myhdd ntfs  auto,nofail,noatime,rw,user    0   0

J'ai essayé de démarrer le système avec et sans le périphérique branché, et tout fonctionne correctement.

Ce que je n’ai pas fait, c’est de monter automatiquement le disque quand celui-ci est branché après le démarrage (quand il n’est pas branché au démarrage). Je dois utiliser mount -a en tant que root pour tout remonter.

16
user898384

l'option noauto laisse-t-elle continuer le processus de démarrage?

il ne monte pas automatiquement s'il est présent, mais il le fait savoir si un présent mont/jgdata fonctionne ... alors un script/un mont/jdata n'aurait pas besoin d'une vérification de la sortie, il suffit de détecter l'erreur et de continuer à démarrer

edit: lors de lectures supplémentaires, bootwait est probablement une option plus correcte à passer ... (généralement utilisé pour les partages réseau qui pourraient ne pas être présents plus tard dans le processus de démarrage, mais qui pourraient quand même causer un blocage, idk)

et le script de montage pourrait être ajouté comme suit: https://stackoverflow.com/questions/2062543/running-a-script-with-the-help-of-grub-and-menu-lst

13
RobotHumans
/dev/xvdh1 /myfs xfs defaults,nofail,x-systemd.device-timeout=30 0 0

a travaillé pour moi.

nofail ... Ne signalez pas d'erreurs pour ce périphérique s'il n'existe pas.
x-systemd.device-timeout = 30 ... Le démarrage durera 30 secondes de plus si le périphérique n'existe pas (90 par défaut) secondes).

Source: https://wiki.archlinux.org/index.php/fstab#External_devices

5
user313829

La méthode de montage recommandée lors du démarrage consiste à informer leur système via le fichier fstab . En regardant votre Ask, je constate que vous y êtes presque, il ne manque que les instructions qui configurent le périphérique pour qu'il utilise les options de montage automatique, ce qui permet à votre système de monter le périphérique lorsqu'il est disponible.

Donc, il suffit de réécrire la ligne dans votre fstab pour qu’elle soit comme ci-dessous:

# <file system>           <dir>       <type>    <options>         <dump> <pass>
UUID="680C0FE30C0FAAE0"   /jgdata      ntfs      user,auto,rw       0     0

Une fois la modification effectuée et sauvegardée, essayez de la monter à la main:

$ Sudo mount -a

Il est important de noter que:

  1. vous devez être sûr de l'UUID du périphérique. Les UUID sont générés par les utilitaires make-filesystem (mkfs. *) Lorsque vous créez un système de fichiers.
  2. Ces <options> doivent être écrits selon un format très spécifique, séparés par des virgules mais sans espaces après chaque virgule. Attention à ça ;-)
  3. Je ne suis pas sûr que cela fonctionne correctement car vous essayez de monter automatiquement un système de fichiers NTFS pouvant être manipulé à l'aide d'utilitaires NTFS-3G . Bien que mes instructions soient censées fonctionner correctement, je n’avais jamais essayé de monter automatiquement NTFS. Donc, en cas d'échec, je vous recommande de regarder ceci Montage de partitions Windows pour d'autres utilisations de NTFS.

Merci!

1
crncosta

J'ai le même problème. J'ai édité fstab pour commenter l'entrée lorsque je sais que le lecteur ne sera pas présent lors de mon prochain démarrage. Ensuite, lorsque le lecteur est présent, je modifie simplement fstab pour supprimer le commentaire et émettre mount -a. Ce n'est pas une solution parfaite. Ce serait formidable si je pouvais trouver un moyen de faire en sorte que le système monte automatiquement le lecteur, le cas échéant, ou l'ignore automatiquement s'il n'est pas présent. Le même problème se produit si vos partages NFS sont montés automatiquement et que le serveur n'est pas présent.

0
Detonate