Wie gehe ich mit nichtdeterminanten Festplattenzuweisungen um?

Wie gehe ich mit nichtdeterminanten Festplattenzuweisungen um?

Ich habe vor Kurzem eine weitere Festplatte in meinen Arch Linux-Computer eingebaut. Beim ersten Hochfahren funktionierte alles einwandfrei. Beim nächsten Neustart des Computers wurde ich jedoch mit einer /dev/sda2 not foundFehlermeldung konfrontiert.

Sehen Sie, im Grunde ist meine Boot-Festplatte manchmal sdaund manchmal ist sie sdb. Es scheint völlig zufällig zu sein und ich sehe im BIOS keine Optionen, um es nicht zufällig zu machen. Wie behebe ich das?

Antwort1

Wenn Ihre beiden Festplatten an unterschiedlichen Schnittstellen angeschlossen sind und von unterschiedlichen Treibern gesteuert werden, benennt Linux sie in der Reihenfolge, in der die Treiber initialisiert werden. Wenn die Initialisierungen parallel erfolgen, kann dies tatsächlich dazu führen, dass die Gerätenamenzuweisungen variieren.

Die Gerätenamen werden vergeben durchudev. Ihr Problem wird im Arch-Wiki erwähnt, aber dort scheint es keine Lösung zu geben.

Da ich mit Arch nicht vertraut bin, erkläre ich, wie dieses Problem in Ubuntu gelöst wird. Die zugrunde liegenden Funktionen werden vom Linux-Kernel bereitgestellt, der derselbe ist, aber es kann Konfigurationseinstellungen geben, die dazu führen, dass diese Funktionen in Arch anders funktionieren.

Anstatt /dev/sda2die Einstellung (die ) als Root-Gerät root=im Bootloader zu verwenden, können Sie eine UUID oder ein Label mit der folgenden Syntax verwenden:

… /boot/vmlinuz root=UUID=01234567-89ab-cdef-0123-456789abcdef ro …
… /boot/vmlinuz root=LABEL=mylabel ro …

Die UUID identifiziert ein Dateisystem eindeutig, Sie benötigen also die UUID des Dateisystems, das sich auf befindet /dev/sda2. Unter Ubuntu /dev/disk/by-uuid/01234567-89ab-cdef-0123-456789abcdefist ein symbolischer Link zu /dev/sda2. Wenn Ihr Dateisystem eine Bezeichnung hat (manuell festgelegt, Sie müssen die Eindeutigkeit erzwingen), gibt es einen symbolischen Link unter /dev/disk/by-label. Die Bezeichnungen und UUID-Links werden durch die folgenden Udev-Regeln generiert:

ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"

Antwort2

Schauen Sie sich anPermanente Benennung von Blockgeräten.

Persönlich halte ich Labels für das Beste, da sie die Einzigartigkeit von UUIDs bieten, aber für Menschen lesbar sind.

Am Ende erhalten Sie eine fstab-Datei, die ungefähr so ​​aussieht:

LABEL=boot /boot ext2 defaults 0 1
LABEL=swap swap swap defaults 0 0
LABEL=root / ext4 defaults 0 1

verwandte Informationen