VMwareにFedoraゲストOSがあります。拡大したい/boot
パーティションなので、このVMに別の仮想ディスクを追加し、ディスクのクローンを作成します。
後dd if=/dev/sda1 of=/dev/sdb1
、blkid
は、/ dev/sda1と/ dev/sdb1が同じUUID/GUIDを持っていると報告しています。
ユニバースに同じUUIDが2つあるのは奇妙ですが、そのうちの1つを別のUUID値に変更するにはどうすればよいですか。
サブジェクトが変更されました。ここでのUUIDは、パーティションUUIDではなく、ファイルシステムUUIDを意味します。
これはファイルシステムのUUIDであるため、UUIDを変更したり、hexeditorを使用してディスク上の未加工データを変更したりするには、ファイルシステム固有のユーティリティが必要です(危険、何をしているのかわからない場合はお勧めしません)。
ランダムな新しいUUIDを生成するには、以下を使用できます。
$ uuidgen
UUIDを実際に変更するかどうかは、ファイルシステムに依存します。
# tune2fs -U <output of uuidgen> /dev/sdb1
または、uuidgenが機能すると確信している場合:
# tune2fs -U $(uuidgen) /dev/sdb1
# btrfstune -U $(uuidgen) /dev/sdb1
UUIDはスーパーブロックに格納されるため、ファイルシステムのバイト単位のコピーは同じUUIDを持ちます。
使用する:
tune2fs -U random /dev/sdb1
extファイルシステムの場合、または
xfs_admin -U generate /dev/sdb1
xfsファイルシステムの場合。
2番目のパーティションが同じUUIDを持っている理由は、dd
がファイル間でデータをコピーするだけだからです(dd if=/dev/sda1 of=/dev/sdb1
= cat /dev/sda1 > /dev/sdb1
); dd
はパーティションが何であるか、またはUUIDを生成する方法を認識していないため、パーティションの先頭近くのfilysystemスーパーブロックに格納されているUUIDを含むすべてのデータをそのままコピーしました。
ところで、
また、UUID(Universally Unique IDentifier)は奇妙な名前だと思います。それはPGUID(おそらくグローバルに一意の識別子)、またはそれ以上にARLN(合理的に大きな数)と呼ばれるべきです。
Ext2/ext3/ex4およびxfsの他に、次のファイルシステムまたはブロックデバイスのUUIDを変更することもできます。
swaplabel -U $NEW_UUID
MD RAIDの場合、最初にRAIDを停止してから、再組み立て時にUUIDを更新する必要があります。そのため、RAIDが/
にマウントされている場合は、オフラインモードでUUIDを更新する必要があります。これを行うには、ライブ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-e0c0-e0c0e0c0e0c0 ~/encrypted-LUKS.loop
これは別の話です。 現在、これらのファイルシステムのファイルシステムUUIDを変更するユーティリティはありません ( reichhartの回答 -mlabel
ツールを参照してください)が、これを行うためにディスク上の生データを変更できます。
警告、ディスク上の生データを変更することは危険であり、注意深い操作なしにデータを失う可能性があります。
hexedit
を使用してディスク上の生データを変更する詳細な手順を次に示します。
blkid
、ファイルシステムのUUIDを紙に書き留めるか、覚えておいてください。 FAT/exFATのUUID文字列は1122-3344
のようになり、NTFSのUUID文字列は1122334455667788
のようになります。Hexeditを使用してパーティションデバイスを開く
hexedit <partition device such as /dev/sda1>
blkid
がレポートされた場合1234-ABCD
、次にCDAB3412
を検索します)。ディスク上のUUIDデータを検索します。blkid
はUUIDを確認します。grub.cfg
やfstab
を更新する必要がある場合があります。fsck <partition device such as /dev/sda1>
を実行すると、「ブートセクターとそのバックアップに違いがあります」メッセージが表示されます。この問題を解決するには、 "1)オリジナルをバックアップにコピー"を選択し、メッセージが表示されたら "変更を実行しますか?(y/n)" あなたが押す y。XFSの場合、次を使用します:xfs_admin -U <uuid> <device>
UUIDを表示するにはxfs_admin -u <device>
を使用します(表示する小文字のオプションと、設定する大文字のオプションに注意してください)。 U&Lに関する別の投稿では、システム上のすべてまたは一部のUUIDを表示するためのblkid
コマンドが指摘されています。
Sudo btrfstune -u /dev/sdaX
Sudo btrfstune -U 0de6bd81-7013-49a8-bdc5-d832ed209d2c /dev/sdaX
BTRFSでUUIDを変更することはアトミック操作ではないため、btrfsck
を実行することをお勧めします。
VFATの部分的な回答
Ext *およびxfsファイルシステムの場合、すでに適切な回答があります。ただし、VFATの場合は、mtoolsパッケージのse mlabelを使用することを強くお勧めします。 16進エディターの使用は危険です。
次のようなものを使用して、新しいUUIDを作成します。
echo 'drive d: file="/dev/sdb3" exclusive' >>/etc/mtools.conf
mlabel -n d:
exFAT
ボリュームラベルを変更するだけで問題がなければ、exfatlabel /dev/sda1 newlabel
。
ただし、exFATのUUID/VolumeSerialNumberを特定の値に簡単に設定するためのツールが見つかりませんでした。LiuYanの答えは、ブートセクターのチェックサムが間違っているため、うまくいきませんでした。
exFAT spec を使用して、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
Fedora 27では、引数の順序が重要な役割を果たすことがわかりました...最初にデバイスを作成する必要があります。そうしないと、UUIDが変更されません。例えば
tune2fs /dev/sdb1 -U random
Ddコマンドの結果として重複したディスクパーティションUUID/sを変更するには-GPartedを使用します。
GPartedユーザーインターフェイスから、ドライブを選択し、パーティションを選択して、パーティションをアンマウントします。 「パーティションフォルダー」から「新しいUUID」を選択し、すべてのDDドライブの複製パーティションuuidが交換用としてマークされるまで繰り返します。起動可能なディスクの場合、UEFIパーティションのuuidを置き換えないでください。
選択したドライブ文字とパーティションを確認します-すべて問題ありませんか? ...
GPartedユーザーインターフェイスの[すべての操作を適用]アイコンをクリックします。
起動可能なディスクの場合、/ etc/fstabファイルのUUID = string/sおよびマウントポイント/ sを編集します。