web-dev-qa-db-ja.com

/ etc / machine-idを変更してもよろしいですか?

ディスク(SSD)を複製し、複製したディスクを別のマシンに配置しました。これで、両方のシステムの/etc/machine-idの値が同じになります。 /etc/machine-idを編集して値を変更するだけでも問題ありませんか?システムの実行中にこれを実行できますか(またはライブ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

新しい値は古い値と同じです。

35
MountainX

systemd-machine-id-setupおよびsystemd-firstbootはsystemdを使用するシステムには最適ですが、/etc/machine-idはタグに関係なくsystemdファイルではありません。 systemdを使用しないシステムでも使用されます。したがって、代わりにdbus-uuidgenツールを使用できます。

rm -f /etc/machine-id

その後

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

Stephen Kittが述べたように、Debianシステムには/etc/machine-idファイルと/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からマシンIDをコピーします。

dbus-uuidgenの呼び出しは、通常のブートシーケンスの一部である場合とそうでない場合があります。起動シーケンスの一部である場合は、ファイルを削除して再起動するだけで十分です。 dbus-uuidgenを自分で実行する必要がある場合は、manページの警告に注意してください。

実行中のシステムで既存のmachine-idを変更しようとすると、おそらく問題が発生します。このファイルを変更しないでください。また、2つの異なるシステムで同じにしないでください。 2つの異なるカーネルが実行されている場合は常に異なる必要があります。

したがって、これを行った後は、再起動せずにシステムを使用し続けないでください。追加の予防策として、代わりに最初に再起動してレスキューモードで起動することもできます(または、提案どおり、ライブUSBスティックから起動します)。ただし、私の経験では、これは必要ありません。悪いことが起こるかもしれませんが、起こる悪いことはとにかく再起動によって修正されます。

31
hvd

最も簡単なオプションは、クローンディスクから/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-firstboot が利用可能です。代わりにそれを使用します。

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

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

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

30
Stephen Kitt