dbus-uuidgen - UUID を生成するユーティリティである。
dbus-uuidgen コマンドを使うと、世界でただ1つの ID (universally unique ID)を生成したり読み込んだりすることができる。
D-Bus の UUID は RFC 4122 とは関係のないものであり、D-Bus の UUID では同仕様と互換性のある UUID は生成されないことに注意。多くのシステムでは、RFC 4122 と互換性のある UUID を生成するための別のコマンドが用意されている(大抵は「uuidgen」という名前である)。
D-Bus について詳しく知りたければ https://www.freedesktop.org/wiki/Software/dbus/ を見てほしい。
dbus-uuidgen は主に、インストール後に実行されるスクリプト(D-Bus パッケージに含まれている)にて次のような形で使用される。
dbus-uuidgen --ensure
このコマンドによって「/var/lib/dbus/machine-id が存在し、且つ UUID がその中に入っていること」が保証される。このコマンドは既存の UUID を上書きしない。なぜかというと、この ID は、少なくとも次の再起動までは1つのマシンに固定されたままであるべきだからである。
マシン UUID の重要な特性は、(1)次の再起動まで変わらないこと、及び(2)OS カーネルの稼働中インスタンスはどれも別々のマシン UUID を持つことである。つまり、2つのプロセスが同じ UUID を見ている場合、両者は同じ共有メモリ、同じ UNIX ドメイン・ソケット、同じローカル X ディスプレイ、localhost.localdomain の同じ解決結果、同じプロセス ID 等々を見ていることになる。
オプションを指定せずに dbus-uuidgen を実行した場合、同コマンドは何もないところから新しい UUID 作成してそれを表示するだけである。
dbus-uuidgen は、「--get」を指定して実行した場合、デフォルトではマシン UUID を表示するが、さらにファイルをも指定した場合は、指定したファイルに入っている UUID を表示する。
稼働中のシステムにある既存のマシン ID を変更しようとすると、おそらく悪いことが起きるであろう。このファイルの変更を試みてはならない。また、異なる2つのシステムのマシン ID を同一にしてもいけない。即ち、異なる2つのカーネルが動作している場合には、常にマシン ID も異なっていなければならないということである。
異なる2つの仮想マシンにおいては、UUID も異なったものになるべきである。なぜかというと、そこには2つの異なったカーネルが存在するからである。
以下のオプションを使用することができる。
--get[=FILENAME]ファイル名を指定しなかった場合、デフォルト値として localstatedir/lib/dbus/machine-id が使用される(localstatedir は通常「/var」である)。このファイルが存在して内容も妥当である場合、同ファイルに入っている UUID が標準出力(stdout)に表示される。そうでない場合、同コマンドは 0 以外のステータスで終了する。
--ensure[=FILENAME]ファイル名を指定しなかった場合、デフォルト値として localstatedir/lib/dbus/machine-id が使用される(localstatedir は通常「/var」である)。このファイルが存在する場合、同ファイルの内容が妥当なものか検証され、同ファイルの内容が不正であれば失敗を表すコードが返る。このファイルが存在しない場合、新たな UUID の入ったファイルが作成される。コマンドが成功した場合、出力表示は行われない。
--versiondbus-uuidgen のバージョンを表示する。