/ etc / machine-idを変更しても大丈夫ですか?


33

ディスク(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

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


大丈夫のよう
です

1
D-Busはホスト間メカニズムではないため、ホストが同じであるmachine-idかどうかでどのような違いがありますか?
fpmurphy

回答:


28

が、systemd-machine-id-setupsystemd-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ファイル名として使用し、すでに新しく生成されたからマシンIDをコピーします/etc/machine-id

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

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

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


2
物事を理解したように、D-BusマシンIDはに保存されていました/ /var/lib/dbus/machine-id/etc/machine-idあり、systemd-ism(D-Busと互換性があります)です。
スティーブンキット

2
@StephenKitt私はあなたが正しい歴史だが、D-バスがそれを受け入れることを考えると信じて/etcそこに多くのコードはチェックしていることがあります:(ないシンボリックリンクは必要ありません)を直接、今日、それだけで簡単にするためにそこに置かれて/etcいるだけのチェックよりも/var/lib/dbus
hvd

その場合、少なくとも2つのファイルに異なる値が含まれないようにする必要があります。
悲しみ

@grawityこれを行う最も簡単な方法は、そもそも2つの別個のファイルを持たないことです。個別のファイル(つまり、1つの通常ファイルと1つのシンボリックリンクではなく、2つの通常ファイル)を持つディストリビューションを知っていますか?
hvd

オリジナルの投稿systemd-machine-id-setupが元の値のコピーを見つけることを示しているように、どのようなディストリビューションOPでも使用されます。ディストリビューションが特別にシンボリックリンクを作成しない限り、これは基本的にデフォルトの動作です。
荒廃

29

最も簡単なオプションは/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利用可能なシステムでsystemd を使用する場合の推奨アプローチは、代わりにそれを使用することです。

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

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

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


Ubuntu 16.04および17.10 /etc/machine-idでは、削除しても自動的に再作成されず、どちらsystemd-firstbootも使用できないことに注意してください。そのため、そのファイルを削除したら、手動で再作成する必要がありますsystemd-machine-id-setup(おそらく再起動も必要です)。
ゲルロス

別のポイント:多くの場合/var/lib/dbus/machine-id、単にへのシンボリックリンクであるため/etc/machine-id、あるファイルから別のファイルにコンテンツをコピーする必要はありません。
ゲルロス

1
@gerlosはい、したがって「必要な場合がある」。しかし、私もそれを明示しました。ありがとうございます。
スティーブンキット

machine-idD-Busはシステム内IPCメカニズムにすぎないため、なぜD-Busに固有のものが必要なのでしょうか?
fpmurphy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.