Как изменить файловую систему UUID (2 тех же UUID)?

Это подобно "временному приему файла phunehehe", но использует именованный канал вместо этого, позволяя Вам получить результаты немного ближе к тому, когда они производятся, который может быть удобным для продолжительных команд:

$ mkfifo mypipe
$ command 2> mypipe | grep "pattern" mypipe

В этой конструкции stderr будет направлен к каналу, названному "mypipe". С тех пор grep был назван с аргументом файла, он не будет смотреть на STDIN для своего входа. К сожалению, необходимо будет все еще очистить тот именованный канал, после того как Вы сделаны.

При использовании Bash 4 существует синтаксис ярлыка для command1 2>&1 | command2, который является command1 |& command2. Однако я полагаю, что это - просто ярлык синтаксиса, Вы все еще перенаправляете STDERR к STDOUT.

27
25.01.2017, 11:37
9 ответов

Для генерации случайного нового UUID можно использовать:

$ uuidgen

На самом деле изменить UUID - зависимый файловой системы.

Принятие файловой системы семейства расширения

# tune2fs -U <output of uuidgen> /dev/sdb1

Или если Вы - уверенный uuidgen, собирается работать:

# tune2fs -U $(uuidgen) /dev/sdb1

Принятие btrfs файловая система

# btrfstune -U $(uuidgen) /dev/sdb1

UUID хранится в суперблоке, таким образом, копия байта для байта файловой системы будет иметь тот же UUID.

28
27.01.2020, 19:39
  • 1
    Andy, Вам даже не нужна команда uuidgen: "tune2fs-U случайный/dev/sdb1" должен хорошо работать –  grzuy 21.03.2012, 04:58
  • 2
    Как выполнить его на FAT? –  CMCDragonkai 01.02.2016, 12:15
  • 3
    @CMCDragonkai, см. мой ответ. –  LiuYan 刘研 10.02.2017, 05:42

Для XFS используйте: xfs_admin -U <uuid> <device>

Использовать xfs_admin -u <device> просмотреть UUID (отмечают опцию нижнего регистра просмотреть, по сравнению с прописной опцией установить). Другое сообщение на U&L, на который указывают blkid команда для просмотра всех или некоторых UUID в системе.

6
27.01.2020, 19:39

Использование:

tune2fs -U random /dev/sdb1

Если это Ext ext ext TableSystem, или

xfs_admin -U generate /dev/sdb1

, если это XFS файловая система .


Причина, по которой второй раздел имеет тот же UUID, потому что DD просто копирует данные из одного файла в другое ( dd, если = / dev / sda1 of = / dev / sdb1 = CAT / DEV / SDA1> / dev / sdb1 ); DD не знает, что такое раздел, или как генерировать UUID, поэтому он просто скопировал все данные, в том числе, включая UUID, который хранится в суперблоке FilySystem вблизи начала раздел.


кстати,
Я также думаю, что UUID (универсально уникальный идентификатор) - странное имя. Его следует называться PGUID (возможно, уникально уникальным идентификатором), или даже лучше, просто Arln (достаточно большое количество).

13
27.01.2020, 19:39

Помимо ext2 / ext3 / ex4 и xfs, вы также можете изменить UUID следующей файловой системы или блочного устройства.

Swap

swaplabel -U $ NEW_UUID

Программный RAID (md raid)

Для MD RAID необходимо сначала остановить RAID, а затем обновить UUID при повторной сборке. Поэтому, если ваш RAID смонтирован в / , вам нужно обновить UUID в автономном режиме - используйте для этого live CD.

  1. mdadm --stop $ RAID_DEVICE
  2. mdadm --assemble $ RAID_DEVICE --update = uuid --uuid = $ NEW_UUID $ MEMBER_DEVICES ...

Пример:

  1. mdadm --stop / dev / md127
  2. mdadm --assemble / dev / md127 --update = uuid --uuid = 2A1D2A1D-2A1D-2A1D-2A1D-2A1D2A1D2A1D / dev / sda2 / dev / sdb2

После обновления UUID может потребоваться обновление grub.cfg ( rd.md.uuid = $ NEW_UUID в linux / linuxefi / linux16 командной строке) и / или fstab и / или mdadm.conf и / или update-initramfs (семейство Debian) и / или dracut --force (семейство Red Hat), чтобы вы могли загрузиться успешно в следующий раз.

LUKS (cryptsetup)

cryptsetup luksUUID --uuid = $ NEW_UUID $ LUKS_DEVICE

Пример:

cryptsetup luksUUID --uuid = e0c0e0c0-e0c0-e0c0-e0c0c0-e0KS

FAT / NTFS / exFAT

Это другая история, в настоящее время нет утилит для изменения UUID файловой системы этих файловых систем (см. ответ Райххарта - mlabel tool), но для этого мы можем изменить необработанные данные на диске.

ПРЕДУПРЕЖДЕНИЕ, изменять необработанные данные на диске опасно, это может привести к потере данных без осторожных действий.

Вот подробные инструкции по изменению необработанных данных на диске с помощью hexedit .

  1. blkid , запишите UUID файловой системы на бумагу или запомните его. Строка UUID FAT / exFAT выглядит как 1122-3344 , строка UUID NTFS выглядит как 1122334455667788 .
  2. Откройте устройство раздела с помощью hexedit

    hexedit <устройство раздела, например / dev / sda1>

  3. Нажмите / , введите UUID в обратном порядке (если blkid сообщил 1234-ABCD , затем выполните поиск CDAB3412 ) для поиска данных UUID на диске.
  4. Как только UUID найден, измените их, нажмите F2 для сохранения и выхода.
  5. blkid для проверки UUID.
  6. После изменения UUID вам может потребоваться обновить grub.cfg и / или fstab , чтобы вы могли успешно загрузиться в следующий раз.
  7. Выполните fsck <устройство раздела, такое как / dev / sda1> и увидите сообщение «Есть различия между загрузочным сектором и его резервной копией» . Чтобы решить эту проблему, выберите «1) Копировать оригинал в резервную копию» , и если вас спросят «Выполнить изменения? (Да / нет)» , нажмите y .
21
27.01.2020, 19:39

En Fedora 27, descubrí que el orden de los argumentos juega un papel crucial... Primero debe escribir el dispositivo, de lo contrario, el UUID no cambia. Por ejemplo

tune2fs /dev/sdb1 -U random
0
27.01.2020, 19:39

Частичный ответ для VFAT

Для файловых систем ext *и xfs уже есть хорошие ответы. Но для VFAT я настоятельно рекомендую использовать mlabel пакета mtools. Использование шестнадцатеричных редакторов ОПАСНО.

Используйте что-то подобное, чтобы создать новый UUID:

echo 'drive d: file="/dev/sdb3" exclusive' >>/etc/mtools.conf
mlabel -n d:
4
27.01.2020, 19:39

Чтобы изменить команду dd, которая приводит к дублированию UUID/s разделов диска -Используйте GParted.

В пользовательском интерфейсе GParted выберите диск, выбрать раздел, размонтировать раздел. В «Папке раздела» выберите «НОВЫЙ UUID», повторяйте, пока все дублированные разделы uuid/s диска dd не будут помечены для замены. Для загрузочных дисков не заменяйте uuid раздела UEFI.

Просмотрите выбранную букву диска и раздел(ы) -Все в порядке?...

Щелкните значок «Применить все операции» в пользовательском интерфейсе GParted.
Для загрузочных дисков отредактируйте файл /etc/fstab UUID=string/s и точку монтирования/s.:

1
27.01.2020, 19:39

БТРФС

sudo btrfstune -u /dev/sdaX

sudo btrfstune -U 0de6bd81-7013-49a8-bdc5-d832ed209d2c /dev/sdaX

Запускbtrfsckрекомендуется, поскольку изменение UUID в BTRFS не является атомарной операцией.

2
27.01.2020, 19:39

exFAT

Если вы можете просто изменить метку тома, просто используйте exfatlabel /dev/sda1 newlabel.

Однако я не нашел инструмента, позволяющего легко установить конкретное значение для UUID/VolumeSerialNumber exFAT, и ответ LiuYan мне не помог, так как он оставил вас с неправильной контрольной суммой загрузочного сектора.

Используя спецификацию exFAT , я выяснил, как правильно изменить UUID. Здесь результат в чистом башизме

# set exFAT UUID to aabb-ccdd
$ dd if=/dev/sda1 of=fshead bs=512 count=24
# best keep a backup if something goes wrong
$ cp fshead fshead.bak
# set UUID in main boot sector (in reversed order (little endian))
$ echo "000064: ddccbbaa" | xxd -r - fshead
# set UUID in backup boot sector
$ echo "001864: ddccbbaa" | xxd -r - fshead
# run fsck to get the checksum
$ fsck.exfat fshead
exfatfsck 1.2.5
ERROR: invalid VBR checksum 0x276e3c6f (expected 0x2771966f).
# fix the checksum (again in reversed order (little endian))
$ python -c "print('1600: '+'6f967127 '*64)" | xxd -r -c 256 - fshead
$ python -c "print('1700: '+'6f967127 '*64)" | xxd -r -c 256 - fshead
$ python -c "print('2e00: '+'6f967127 '*64)" | xxd -r -c 256 - fshead
$ python -c "print('2f00: '+'6f967127 '*64)" | xxd -r -c 256 - fshead
# check checksum (then cancel with CTRL-C)
$ fsck.exfat fshead
exfatfsck 1.2.5
WARN: file system is larger than underlying device: 256087425024 > 12288.
^C
# checksum is ok, so lets flash it back
dd if=fshead of=/dev/sda1 bs=512 count=24
0
06.04.2020, 18:22

Теги

Похожие вопросы