it-swarm.com.de

Hängen Sie ein externes Laufwerk beim Booten nur ein, wenn es eingesteckt ist

Ich habe einen Eintrag für eine externe Festplatte in meiner fstab:

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

Aber manchmal ist dieses Laufwerk beim Booten nicht angeschlossen. Damit habe ich die Hälfte eines Startvorgangs hinter mir, mit der Aufforderung "Warten Sie weiter, drücken Sie S oder drücken Sie M", aber zu diesem Zeitpunkt hat kein Tastendruck Auswirkungen (einschließlich Ctrl-Alt-Delete, nicht einmal Feststelltaste).

Wie kann ich dieses Laufwerk beim Booten nur einbinden, wenn es vorhanden ist, ohne ein Skript zur Überprüfung der Ausgabe von fdisk -l zu schreiben? Es wäre praktisch, einen fdisk-Eintrag für dieses Laufwerk zu haben, also kann ich einfach mount /jgdata eingeben, anstatt einen Gerätenamen zu benötigen.

68
Jeremy

Sie sind alle auf dem richtigen Weg. Ich habe einen Weg gefunden, der ein bisschen sauberer und besser in Form ist.

Die korrekte Option zum Hinzufügen von fstab ist nofail, muss jedoch nach auto stehen. Wenn Sie es in noauto ändern, wird es während des Startvorgangs nie bereitgestellt. Wenn Sie nobootwait zum Bootloader hinzufügen, können Sie möglicherweise etwas Schwerwiegendes übersehen, z. B. das Mounten der Partition, bevor fsck die Überprüfung abgeschlossen hat, oder das Nichtmounten einer Partition, die im Bootprozess verwendet wird.

Nachdem Sie die oben genannten Änderungen vorgenommen haben, wird das System normal gestartet (und das Volume angehängt), wenn das Gerät beim Herunterfahren des Systems angeschlossen wird. Es wird auch normal gestartet, wenn das Gerät zum Startzeitpunkt nicht vorhanden ist.

Der einzige Nachteil ist, dass das Gerät je nach Konfiguration (zu viele Variablen zum Testen) möglicherweise nicht sofort bereitgestellt wird, wenn Sie das Gerät anschließen, während das System ausgeführt wird. Dies kann mit einem einfachen mount -a oder mount /specific_device oder einem Neustart behoben werden.

70
Bryan Gonzalez

Ich hatte das gleiche Problem - ich habe einen zusätzlichen Schritt getan

Wenn Sie die Option nofail in /etc/fstab verwenden, sucht das System beim Start nach Ihrer Festplatte (und Partition). Wenn das Gerät angeschlossen ist, wird das Dateisystem eingehängt. Andernfalls wird der Startvorgang wie gewohnt fortgesetzt.

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

Beispiel

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

Ich habe versucht, das System mit und ohne angeschlossenem Gerät zu starten, und es funktioniert einwandfrei.

Was ich nicht erreicht habe, ist das automatische Laden, wenn die Festplatte nach dem Booten angeschlossen wird (wenn sie beim Booten nicht angeschlossen wird). Ich muss mount -a als root verwenden, um alle erneut zu mounten.

16
user898384

lässt die Option noauto den Startvorgang fortfahren?

es wird nicht automatisch gemountet, wenn es vorhanden ist, aber es wird bekannt, wenn es vorhanden ist, so dass ein einfaches mount/jgdata funktioniert ... dann würde ein gescriptetes mount/jdata keine Ausgabeprüfung erfordern, fange einfach den Fehler ab und boote weiter

edit: nach einigem weiterlesen ist bootwait wahrscheinlich eine korrektere option zum übergeben ... (normalerweise für netzwerkfreigaben, die erst später im bootprozess vorhanden sein könnten, aber trotzdem einen hang verursachen könnten, idk)

und das Mount-Skript könnte folgendermaßen hinzugefügt werden: 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

arbeitete für mich.

nofail ... Melden Sie keine Fehler für dieses Gerät, wenn es nicht vorhanden ist.
x-systemd.device-timeout = 30 ... Der Startvorgang dauert 30 Sekunden länger, wenn das Gerät nicht vorhanden ist (Standard ist 90) Sekunden).

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

5
user313829

Die empfohlene Methode zum Mounten während des Startvorgangs besteht darin, das System über die Datei fstab anzuweisen. Wenn Sie sich Ihre Frage ansehen, sehe ich, dass Sie fast da sind. Es fehlt nur die Anweisung, mit der das Gerät auf die Verwendung von Automount-Optionen eingestellt wird, sodass Ihr System das Gerät einbinden kann, wenn es verfügbar ist.

Schreiben Sie die Zeile in Ihrer fstab einfach so um, dass sie wie folgt aussieht:

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

Versuchen Sie nach dem Ändern und Speichern, es von Hand zu montieren:

$ Sudo mount -a

Es ist wichtig zu beachten, dass:

  1. sie müssen sich über die UUID des Geräts sicher sein. UUIDs werden von den Dienstprogrammen make-filesystem (mkfs. *) Generiert, wenn Sie ein Dateisystem erstellen.
  2. Diese <options> müssen in einem ganz bestimmten Format geschrieben werden, das durch Kommas, aber keine Leerzeichen nach jedem Komma getrennt ist. Sei vorsichtig damit ;-)
  3. Ich bin nicht sicher, ob dies reibungslos funktioniert, da Sie versuchen, ein NTFS-Dateisystem, das mit den Dienstprogrammen NTFS-3G verwaltet werden kann, automatisch bereitzustellen. Obwohl meine Anweisungen korrekt funktionieren sollen, habe ich noch nie versucht, NTFS automatisch zu aktivieren. Wenn dies fehlschlägt, empfehle ich Ihnen, sich dies anzuschauen Mounten von Windows-Partitionen für alternative Anwendungen von NTFS.

Vielen Dank!

1
crncosta

Ich habe das gleiche Problem. Ich habe fstab bearbeitet, um den Eintrag zu kommentieren, wenn ich weiß, dass das Laufwerk beim nächsten Start nicht vorhanden sein wird. Wenn das Laufwerk vorhanden ist, bearbeite ich einfach fstab, um den Kommentar zu entfernen und mount -a auszugeben. Dies ist keine perfekte Lösung. Es wäre großartig, wenn ich herausfinden könnte, wie das System das Laufwerk automatisch mounten kann, wenn es vorhanden ist, oder es automatisch überspringen kann, wenn es nicht vorhanden ist. Dasselbe Problem tritt auf, wenn Ihre NFS-Freigaben automatisch bereitgestellt werden und der Server nicht vorhanden ist.

0
Detonate