Wie ändere ich die UUID eines Datenträgers nach Belieben?

29

Ich habe eine einzigartige Situation, in der ich die UUID des USB-Flash-Laufwerks auf die vorherige UUID ändern muss. Ich habe es formatiert und offensichtlich die Nummer geändert ...

Ich habe Ubuntu-Server-Setup mit 1 TB Festplatte und 4 GB USB-Flash-Laufwerk zum Booten. Grub auf der Festplatte ist für die UUID konfiguriert, die sich geändert hat, als ich das USB-Laufwerk formatiert und den Ubuntu-Server neu installiert habe. Ich habe keinen externen Monitor, also schließe ich USB an einen Laptop an und installiere den Server dort ... dann verschiebe ich ihn auf die Serverhardware.

Wie ich bereits erwähnte, ist mein Problem, dass ich usb brauche, um zur vorherigen UUID zurückzukehren, sonst bootet der Server nicht. Und ich kann bis Montag keinen externen Monitor bekommen! :)

Ich weiß, dass ich diese Dateien später ändern muss:

Die Dateien, für die die UUID am wichtigsten ist:

/boot/grub/menu.lst

/etc/fstab

/etc/initramfs-tools/conf.d/resume

Ich kann jedoch im Internet keine Informationen zum Anpassen der UUID finden.

Jemand?

muru
quelle

Antworten:

37

Wenn Sie ext dafür verwendet haben:

tune2fs /dev/{device} -U {uuid}

Von man tune2fs

-U UUID

Setzen Sie die universell eindeutige Kennung (UUID) des Dateisystems auf UUID. Das Format der UUID besteht aus einer Reihe von Hexadezimalziffern, die durch Bindestriche getrennt sind c1b9d5a2-f162-11cf-9ece-0020afc76f16. Der UUID-Parameter kann auch einer der folgenden sein:

clear  clear the filesystem UUID
random generate a new randomly-generated UUID
time   generate a new time-based UUID

Die UUID kann von mount (8), fsck (8) und / etc / fstab (5) (und möglicherweise anderen) verwendet werden, indem UUID = uuid anstelle eines speziellen Gerätenamens wie / dev / hda1 angegeben wird.

Rinzwind
quelle
Das hat funktioniert! Ich kann jedoch nicht finden: /etc/initramfs-tools/conf.d/resume Ich habe festgestellt, dass /boot/grub/menu.lst
Ich habe ein /etc/initramfs-tools/conf.d/resume auf meinem System. Und grub.cfg ist in der Tat die neue menu.lst (ich glaube , dass man ins Spiel kam mit dem neuen grub2.
Rinzwind
Egal was ich versuche, ich erhalte eine Fehlermeldung, wenn ich versuche, meine eigene UUID einzustellen (tune2fs: Ungültiges UUID-Format). Gibt es eine bestimmte Reihenfolge für die Dinge?
Andrew
tun2fs funktioniert nicht auf meiner ZFS-GPT-Festplatte. Was mache ich dort?
Brian Thomas
Suchen Sie nach der Antwort für XFS (xfs_admin). Ich würde vorschlagen, nach zfs_admin zu suchen. Ist dies nicht zfs Solaris ?! Wie sehen Sie, dass Ubuntu hier helfen kann?
Rinzwind
14

Mir ist klar, dass dies eine Art alte Frage ist, aber ich habe festgestellt, dass es eine neue Änderung gibt, und dies war es, was Google für mich herausgesucht hat. Deshalb werde ich die Antwort, die ich hier gefunden habe, posten.

Als ich versuchte, die UUID meines Root-Dateisystems (auf einen bekannten Anfang und ein Seriennummernsuffix) auf einem neuen Ubuntu der Version 14.04 zu ändern, stellte ich zu meinem Entsetzen fest, dass tunes nicht für gemountete Dateisysteme. Ich bin darauf angewiesen, dass ich ein Vorlagen-Image mit einer bekannten UUID verwenden und jede Installation in eine serialisierte UUID ändern kann. Ich fand das Problem nicht unüberwindbar.

Es gibt ein Flag, das deaktiviert werden muss, um gemountete UUID-Änderungen mit dem neuen tune2fs zuzulassen. So sah mein Prozess aus:

root@ubuntu1404:~# blkid
/dev/sda1: UUID="2ec827b0-72be-4c73-b58a-102a37aa24a3" TYPE="ext4"
root@ubuntu1404:~# uuid="deafcafe-abba-daba-deca-fc0ffee05065"
root@ubuntu1404:~# root_disk=$(df /|grep /|cut -d' ' -f1)
root@ubuntu1404:~# echo $root_disk
/dev/sda1
root@ubuntu1404:~# tune2fs -U $uuid $root_disk
tune2fs 1.42.9 (4-Feb-2014)
The UUID may only be changed when the filesystem is unmounted.
root@ubuntu1404:~# tune2fs -O ^uninit_bg $root_disk
tune2fs 1.42.9 (4-Feb-2014)
root@ubuntu1404:~# tune2fs -U $uuid $root_disk
tune2fs 1.42.9 (4-Feb-2014)
root@ubuntu1404:~# tune2fs -O +uninit_bg $root_disk
tune2fs 1.42.9 (4-Feb-2014)
root@ubuntu1404:~# df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       7.3G  3.9G  3.0G  58% /
root@ubuntu1404:~# blkid
/dev/sda1: UUID="deafcafe-abba-daba-deca-fc0ffee05065" TYPE="ext4"
root@ubuntu1404:~#
kvm-user420
quelle
Vielen Dank. Könnte in Zukunft hilfreich sein, aber ich bin immer noch am 12.04 :)
1
Sie könnten root_disk=$(findmnt -n -o SOURCE /)anstelle von Rohrleitungen zum Greifen und Schneiden verwenden.
Mivk
TUN SIE DAS NICHT, SONST STÖREN SIE IHR DATEISYSTEM. Ich habe es entfernt und dann wieder hinzugefügt uninit_bgund es führte zu einer Beschädigung der Metadaten und einem automatischen Remount mit Lesezugriff beim nächsten Start ( ext4_mb_generate_buddy:757: group 1, block bitmap and bg descriptor inconsistent: 3701 vs 3700 free clustersArt der Fehlermeldungen). Der Grund dafür ist, dass tune2fsdie Festplatte direkt unter den Füßen des Kernels geändert wird und wenn der Kernel die bgMetadaten aktualisiert , die Hälfte der Fälle, in denen die Metadaten tatsächlich beschädigt werden! Fazit: Die UUID des Dateisystems kann nicht sicher geändert werden, ohne das Dateisystem ordnungsgemäß abzuhängen.
Eric
6

Für XFS siehe man xfs_admin

xfs_admin -U {uuid} {device}

{uuid} kann 'generiert' werden, um nur eine neue uuid zu erhalten.

Reiserfs siehe man tunefs.reiserfs

tunefs.reiserfs -i {uuid} {device}

Für btrfs scheint die UUID im gesamten Dateisystem verwendet zu werden, sodass jeder Knoten aktualisiert werden muss. Es gibt noch keinen sicheren Weg, dies zu tun.

Sylwester
quelle