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

70

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 d'un démarrage, avec l'invite «Continuer à attendre, appuyez sur S ou appuyez sur M», mais aucune pression sur la touche n'a d'effet à ce stade (y compris Ctrl- Alt- Delete, même pas majuscule).

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

Jeremy
la source

Réponses:

74

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

La bonne option à ajouter fstabest nofail, cependant, elle doit venir après auto. Si vous le changez en noauto, il ne montera jamais au démarrage. Si vous ajoutez des éléments nobootwaitau chargeur de démarrage, vous risquez peut-être de manquer quelque chose de grave, tel que le montage de la partition avant la fsckfin de la vérification ou le non-montage d'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é. Cela peut être résolu avec un simple mount -aou mount /specific_deviceou un redémarrage.

Bryan Gonzalez
la source
2
Tous les exemples que je peux trouver en ligne montrent nofail avant auto. Existe-t-il une documentation pour le bon ordre?
Hackeron
'man fstab' ne donne pas la précision d'un ordre nécessaire (vérifié dans centos 7 et Ubuntu 14.04). "Nofail ne signale pas les erreurs de ce périphérique s’il n’existe pas". Je me demande si cela aidera à ne pas attendre le délai au démarrage si le volume nfs n'est pas accessible.
tisc0
16

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

Si vous utilisez l' nofailoption 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 en mount -atant que root pour tout remonter.

utilisateur898384
la source
13

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

RobotHumans
la source
Merci d'avoir répondu. Juste pour clarifier, les options doivent être ajoutées à la ligne fstab, n'est-ce pas? (EDIT: Nvm, googlé. On dirait que nobootwait est ce dont j'ai besoin.)
Jeremy
1
J'ai utilisé l'option nobootwait dans fstab, fonctionne parfaitement, merci.
Jeremy
5
/dev/xvdh1 /myfs xfs defaults,nofail,x-systemd.device-timeout=30 0 0

a travaillé pour moi.

nofail ... Ne signalez pas les 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 (la valeur par défaut est 90 secondes).

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

utilisateur313829
la source
C'est la réponse la meilleure et la plus simple. Notez qu’il s’agit de la nouvelle syntaxe pour les versions plus récentes du système d’exploitation qui utilisent systemd, remplaçant l’ancienne nobootwaitsyntaxe
cxrodgers le
Cela a fonctionné pour moi. Key ajoutait le délai d'expiration de l'appareil; en utilisant simplement nofail, le démarrage échouerait en raison du délai d'expiration d'udev. (probablement unique aux périphériques USB)
BobHy
1

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 l'appareil pour qu'il utilise les options de montage automatique, ce qui permet à votre système de monter l'appareil 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. Ceux-ci <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 sais pas si cela fonctionnera sans problème, car vous essayez de monter automatiquement un système de fichiers NTFS pouvant être manipulé à l'aide des 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 d’examiner ce montage de partitions Windows pour des utilisations alternatives de NTFS.

Merci!

Crncosta
la source
Je pense qu'il comprend la majeure partie de ce que vous avez dit, mais il est suspendu lorsque le disque n'est pas détecté. c'est pourquoi j'ai suggéré une solution de contournement à la "bonne" façon
RobotHumans
Merci d'avoir répondu. Pour info, la sudo blkidcommande est un bon moyen de connaître les UUID.
Jeremy
Je viens d'essayer cette ligne exacte dans fstab. Lorsque le disque dur est branché, le système s’amorce normalement. Mais, au démarrage, lorsque le disque dur externe n’est pas branché, il m’incite toujours à attendre / Passer / Récupérer manuellement. Etant donné que cette invite n'expire pas, si je ne suis pas au terminal, la boîte de dialogue ne démarrera pas si le disque dur externe n'est pas branché.
Jeremy
Vous devez ajouter l'option nofail,
kkron
0

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.


la source
1
Découvrez la réponse que j'ai acceptée, ajoutez simplement nobootwait aux options de montage de fstab.
Jeremy