/etc/machine-idを変更できますか?

/etc/machine-idを変更できますか?

ディスク(SSD)を複製し、複製されたディスクを別のコンピュータに挿入しました。これで、両方のシステムで同じ値があります/etc/machine-id。単に値を変更するために編集すること/etc/machine-idに問題はありませんか?システムの実行中にこれを実行できますか(またはLive USBから起動する必要がありますか?)。

はいsystemd-machine-id-setupより良い選択?

無邪気な使用はsystemd-machine-id-setup機能しません。次の手順を試しました。

nano /etc/machine-id (to remove the existing value)
systemd-machine-id-setup
> Initializing machine ID from D-Bus machine ID.
cat /etc/machine-id

新しい値は前の値と同じです。

答え1

systemdを使用するシステムに適していますが、ラベルsystemd-machine-id-setupにもかかわらずsystemdファイルではありません。 systemd を使用しないシステムでも使用されます。したがって、代わりに次のツールを使用できます。systemd-firstboot/etc/machine-iddbus-uuidgen

rm -f /etc/machine-id

それから

dbus-uuidgen --ensure=/etc/machine-id

Stephen Kittが述べたように、Debianシステムにはaファイル/etc/machine-idとa/var/lib/dbus/machine-idファイルの両方があります。どちらも通常のファイルとして存在する場合はその内容が一致する必要があるため、それらも削除してください/var/lib/dbus/machine-id

rm /var/lib/dbus/machine-id

作り直してください。

dbus-uuidgen --ensure

最後のコマンドは暗黙的に/var/lib/dbus/machine-idファイル名として使用され、すでに新しく作成されました/etc/machine-id

このdbus-uuidgen呼び出しは、通常のブートシーケンスの一部であってもなくてもよい。起動順序の一部である場合は、ファイルを削除して再起動すれば十分です。直接実行する必要がある場合は、dbus-uuidgenマニュアルページの警告に注意してください。

実行中のシステムで既存のコンピュータIDを変更しようとすると、悪いことが発生する可能性があります。このファイルを変更しようとしないでください。また、2つの異なるシステムで同じにしないでください。 2つの異なるカーネルが実行されるたびに異なる必要があります。

したがって、この作業を完了した後は、再起動せずにシステムを引き続き使用しないでください。追加の予防策として、最初にリカバリモードで再起動することができます(または提案されているようにライブUSBスティックから起動します)。しかし、私の経験ではこれは必要ありません。悪いことが起こるかもしれませんが、とにかく起こった悪いことは再起動すると解決されます。

答え2

最も簡単なオプションは、/etc/machine-id複製ディスクを削除して再起動することです。systemd-machine-id-setup新しいディスクが作成されます(これが自動的に発生しない場合は手動で実行する必要があります)。/var/lib/dbus/machine-idシンボリックリンクがない場合は削除する必要があります/etc/machine-id。その場合は、新しいファイルが実際に新しいファイルであることを確認し、同じ値を含むようにmachine-idファイルをコピーしてください。/etc/machine-id/var/lib/dbus/machine-id

ご存知のように、systemd-machine-id-setupファイルから起動したシステムで実行すると、起動/etc/machine-id時に使用された識別子(D-BusコンピュータIDから)のみが復元されます。これはリンクしたマンページのオプション1です。ファイルを削除して再起動すると、オプション4が実行されます。

読者の利益のために計画このようにディスクを複製するときは、少なくとも次のシステムではsystemdメソッドを使用することをお勧めします。systemd-firstboot利用可能です。代わりに使用してください。

  1. 複製ディスク
  2. 複製されたルートパーティションをどこかにマウントします(例えば /mnt);
  3. マシンIDの初期化:

    systemd-firstboot --root=/mnt --setup-machine-id
    

systemd-firstboot使用時に他のパラメータ(ホスト名、ルートパスワードなど)を設定できます。

答え3

次の手順が役に立ちます。

  • コンピュータIDの削除
    rm /etc/machine-id
    rm /var/lib/dbus/machine-id
    init 6
    
  • コンピュータIDの再生成
    dbus-uuidgen --ensure
    systemd-machine-id-setup
    
  • 確認する
    cat /etc/machine-id
    hostnamectl
    

答え4

組み込み産業用デバイスのさまざまなディスクが複製され、すべてのディスクが同じになり、後でデバイスにないため、machine-idローカルネットワークで競合が発生する同様の状況に直面しました。MACbridgeethernet

最も簡単な解決策は、machine-idコンピュータが使用するものとコンピュータが使用するものを各コンピュータで再起動することですsystemd

rm /etc/machine-id
systemd-machine-id-setup

関連情報