Как мне изменить UUID диска на то, что я хочу?

29

У меня уникальная ситуация, когда мне нужно изменить UUID флешки на предыдущий UUID. Я отформатировал его и, очевидно, номер изменился ...

У меня есть Ubuntu-сервер с жестким диском емкостью 1 ТБ и USB-флешкой на 4 ГБ для загрузки. Grub на жестком диске настроен для UUID, который изменился, когда я отформатировал USB-накопитель и переустановил сервер Ubuntu. У меня нет внешнего монитора, поэтому я присоединяю usb к ноутбуку и устанавливаю сервер там ... чем я переношу его на серверное оборудование.

Как я уже упоминал, моя проблема в том, что мне нужно usb, чтобы вернуться к предыдущему UUID, иначе сервер не загрузится. И я не могу получить внешний монитор до понедельника! :)

Я знаю, что мне нужно изменить эти файлы потом:

Файлы, для которых UUID наиболее важен:

/boot/grub/menu.lst

/etc/fstab

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

Но я не могу найти в сети информацию о настройке UUID.

Кто угодно?

Мур
источник

Ответы:

37

Если вы использовали для этого ext:

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

От man tune2fs

-У УУИД

Установите универсальный уникальный идентификатор (UUID) файловой системы в UUID. Формат UUID представляет собой ряд шестнадцатеричных цифр , разделенных дефисом, например: c1b9d5a2-f162-11cf-9ece-0020afc76f16. Параметр UUID также может быть одним из следующих:

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

UUID можно использовать в mount (8), fsck (8) и / etc / fstab (5) (и, возможно, в других), указав UUID = uuid вместо специального имени устройства, например / dev / hda1.

Rinzwind
источник
Это сработало! Но я не могу найти: /etc/initramfs-tools/conf.d/resume Я обнаружил, что /boot/grub/menu.lst был преобразован в /boot/grub/grub.cfg
У меня есть /etc/initramfs-tools/conf.d/resume в моей системе. И grub.cfg - действительно новый menu.lst (я думаю, что кто-то вступил в игру с новым grub2.
Rinzwind
Независимо от того, что я пытаюсь, я получаю сообщение об ошибке при попытке установить свой собственный UUID (tune2fs: неверный формат UUID). Есть ли определенный порядок вещей?
Андрей
tun2fs не работает на моем диске ZFS gpt, что мне там делать?
Брайан Томас
Глядя на ответ для XFS (xfs_admin), я бы предложил поискать zfs_admin Но разве не zfs Solaris ?! Как вы видите, Ubuntu может помочь здесь?
Rinzwind
13

Я понимаю, что это своего рода старый вопрос, но я обнаружил, что произошли новые изменения, и это было то, что Google подхватил для меня, поэтому я опубликую ответ, который я нашел здесь.

Когда я попытался изменить uuid моей корневой файловой системы (на хорошо известное начало и суффикс серийного номера) в новой версии 14.04, я обнаружил, что мой ужас tune2fs ответил: я не могу этого сделать для смонтированных файловых систем. Я полагаюсь на возможность использовать образ шаблона с хорошо известным uuid и изменять каждую установку на сериализованный uuid. Я обнаружил, что проблема не была непреодолимой.

Есть флаг, который нужно отключить, чтобы разрешить изменения mount-uuid с новым tune2fs. Вот как выглядел мой процесс:

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:~#
квм-user420
источник
Спасибо. Может быть полезно в будущем, но я все еще на 12.04 :)
1
Вы можете использовать root_disk=$(findmnt -n -o SOURCE /)вместо труб, чтобы grep и сократить.
mivk
1
НЕ ДЕЛАЙТЕ, ЧТО ИЛИ ВЫ НЕ ОШИБИТЕ СВОЮ FILESYSTEM. Я удалил, затем добавил обратно, uninit_bgи это привело к повреждению метаданных и автоматическому перемонтированию только для чтения при следующей загрузке ( ext4_mb_generate_buddy:757: group 1, block bitmap and bg descriptor inconsistent: 3701 vs 3700 free clustersтип сообщений об ошибках). Причина в том, tune2fsчто диск напрямую изменяется под ногами ядра, а когда ядро ​​обновляет bgметаданные, в половине случаев оно фактически портит метаданные! Итог: UUID fileysstem не может быть безопасно изменен без правильного размонтирования файловой системы.
Эрик
6

Для xfs смотрите man xfs_admin

xfs_admin -U {uuid} {device}

{uuid} может быть 'сгенерирован', чтобы просто получить новый uuid.

Для просмотра см. man tunefs.reiserfs

tunefs.reiserfs -i {uuid} {device}

Для btrfs кажется, что uuid используется во всех файловых системах, поэтому каждый узел должен быть обновлен. Безопасного способа сделать это пока нет.

Сильвестер
источник
0

полная информация:

как к извлекать-и-изменения-перегородки-универсально уникальный идентификатор-UUID-на-Linux

tetcas
источник
5
Добро пожаловать в Спросите Ubuntu! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
Peachy