Это подобно "временному приему файла phunehehe", но использует именованный канал вместо этого, позволяя Вам получить результаты немного ближе к тому, когда они производятся, который может быть удобным для продолжительных команд:
$ mkfifo mypipe
$ command 2> mypipe | grep "pattern" mypipe
В этой конструкции stderr будет направлен к каналу, названному "mypipe". С тех пор grep
был назван с аргументом файла, он не будет смотреть на STDIN для своего входа. К сожалению, необходимо будет все еще очистить тот именованный канал, после того как Вы сделаны.
При использовании Bash 4 существует синтаксис ярлыка для command1 2>&1 | command2
, который является command1 |& command2
. Однако я полагаю, что это - просто ярлык синтаксиса, Вы все еще перенаправляете STDERR к STDOUT.
Для генерации случайного нового UUID можно использовать:
$ uuidgen
На самом деле изменить UUID - зависимый файловой системы.
# tune2fs -U <output of uuidgen> /dev/sdb1
Или если Вы - уверенный uuidgen, собирается работать:
# tune2fs -U $(uuidgen) /dev/sdb1
# btrfstune -U $(uuidgen) /dev/sdb1
UUID хранится в суперблоке, таким образом, копия байта для байта файловой системы будет иметь тот же UUID.
Для XFS используйте: xfs_admin -U <uuid> <device>
Использовать xfs_admin -u <device>
просмотреть UUID (отмечают опцию нижнего регистра просмотреть, по сравнению с прописной опцией установить). Другое сообщение на U&L, на который указывают blkid
команда для просмотра всех или некоторых UUID в системе.
Использование:
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 (достаточно большое количество).
Помимо ext2 / ext3 / ex4 и xfs, вы также можете изменить UUID следующей файловой системы или блочного устройства.
swaplabel -U $ NEW_UUID
Для MD RAID необходимо сначала остановить RAID, а затем обновить UUID при повторной сборке. Поэтому, если ваш RAID смонтирован в /
, вам нужно обновить UUID в автономном режиме - используйте для этого live CD.
mdadm --stop $ RAID_DEVICE
mdadm --assemble $ RAID_DEVICE --update = uuid --uuid = $ NEW_UUID $ MEMBER_DEVICES ...
Пример:
mdadm --stop / dev / md127
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), чтобы вы могли загрузиться успешно в следующий раз.
cryptsetup luksUUID --uuid = $ NEW_UUID $ LUKS_DEVICE
Пример:
cryptsetup luksUUID --uuid = e0c0e0c0-e0c0-e0c0-e0c0c0-e0KS
Это другая история, в настоящее время нет утилит для изменения UUID файловой системы этих файловых систем (см. ответ Райххарта - mlabel
tool), но для этого мы можем изменить необработанные данные на диске.
ПРЕДУПРЕЖДЕНИЕ, изменять необработанные данные на диске опасно, это может привести к потере данных без осторожных действий.
Вот подробные инструкции по изменению необработанных данных на диске с помощью hexedit
.
blkid
, запишите UUID файловой системы на бумагу или запомните его. Строка UUID FAT / exFAT выглядит как 1122-3344
, строка UUID NTFS выглядит как 1122334455667788
.Откройте устройство раздела с помощью hexedit
hexedit <устройство раздела, например / dev / sda1>
blkid
сообщил 1234-ABCD
, затем выполните поиск CDAB3412
) для поиска данных UUID на диске. blkid
для проверки UUID. grub.cfg
и / или fstab
, чтобы вы могли успешно загрузиться в следующий раз. fsck <устройство раздела, такое как / dev / sda1>
и увидите сообщение «Есть различия между загрузочным сектором и его резервной копией» . Чтобы решить эту проблему, выберите «1) Копировать оригинал в резервную копию» , и если вас спросят «Выполнить изменения? (Да / нет)» , нажмите y . 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
Частичный ответ для VFAT
Для файловых систем ext *и xfs уже есть хорошие ответы. Но для VFAT я настоятельно рекомендую использовать mlabel пакета mtools. Использование шестнадцатеричных редакторов ОПАСНО.
Используйте что-то подобное, чтобы создать новый UUID:
echo 'drive d: file="/dev/sdb3" exclusive' >>/etc/mtools.conf
mlabel -n d:
Чтобы изменить команду dd, которая приводит к дублированию UUID/s разделов диска -Используйте GParted.
В пользовательском интерфейсе GParted выберите диск, выбрать раздел, размонтировать раздел. В «Папке раздела» выберите «НОВЫЙ UUID», повторяйте, пока все дублированные разделы uuid/s диска dd не будут помечены для замены. Для загрузочных дисков не заменяйте uuid раздела UEFI.
Просмотрите выбранную букву диска и раздел(ы) -Все в порядке?...
Щелкните значок «Применить все операции» в пользовательском интерфейсе GParted.
Для загрузочных дисков отредактируйте файл /etc/fstab UUID=string/s и точку монтирования/s.:
sudo btrfstune -u /dev/sdaX
sudo btrfstune -U 0de6bd81-7013-49a8-bdc5-d832ed209d2c /dev/sdaX
Запускbtrfsck
рекомендуется, поскольку изменение UUID в BTRFS не является атомарной операцией.
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