FreeBSDでxfce4とglobal menuを使うときのmachine-idが要求されるメッセージについて(dbus起動設定漏れ)

この記事は

 時々FreeBSDでGUI環境を作るときにdbus未起動起因のエラーに遭遇することがあるため、備忘録がてら書いたもの。

状況

=====
Message from xfce4-appmenu-plugin-0.7.6:

--
When using the panel appmenu as an XFCE menu applet, you have to configure
the appmenu to show in the panel applet, rather than on each individual window.

This configuration should remove any 'double' menus you may experience:

# xfconf-query -c xsettings -p /Gtk/ShellShowsMenubar -n -t bool -s true
# xfconf-query -c xsettings -p /Gtk/ShellShowsAppmenu -n -t bool -s true

This configuration will load the appmenu-gtk-module for XFCE:

# xfconf-query -c xsettings -p /Gtk/Modules -n -t string -s "appmenu-gtk-module"

上記をなぞっている時のエラーメッセージとして次のメッセージが出たことがある。

(LANG=Cなどの場合)
Failed to init libxfconf: Cannot spawn a message bus without a machine-id: Unable to load /var/lib/dbus/machine-id or /etc/machine-id: Failed to open file “/var/lib/dbus/machine-id”: No such file or directory.

(LANG=ja_JP.UTF-8)
libxfconf の初期化に失敗しました: machine-id なしでメッセージバスを spawn できません: /var/lib/dbus/machine-id または /etc/machine-id を読み込めません: ファイル“/var/lib/dbus/machine-id”を開くのに失敗しました: そのようなファイルまたはディレクトリはありません.

解決策

これは、dbusのサービスが稼働していない場合に発生するものなので、/var/lib/dbus/machine-idや/etc/machine-idに適当な文字列を突っ込むなどをせず、下記のコマンドで解決できる。

# sysrc dbus_enable="YES"
# service dbus restart

一時的にで良ければ次のコマンドでも良いが、FreeBSDシステムの再起動が走った場合には自動的には立ち上がらないため自分でコマンド投入しなければならない。

# service dbus onerestart

更新

2022/01/07 全体的な校正
2022/11/23 作成

UEFIブートするFreeBSDでloader.efiやgptboot|gptzfsbootを更新する〜2022/11/01のFreeBSD Errata Noticeより〜

freebsd-update fetch installなどによりアップデートを行った後は、ほとんどの場合、再起動するぐらいで特に注意することがない事の多い近年だが、久し振りに注意が必要なものがあったので、記録がてら書いておく。


2022年11月01日に公表されたErrata Notices
FreeBSD-EN-22:27.loader
FreeBSD-EN-22:26.cam
FreeBSD-EN-22:25.tcp
FreeBSD-EN-22:24.zfs
FreeBSD-EN-22:23.vm
FreeBSD-EN-22:22.tzdata
FreeBSD-EN-22:21.zfs


このうち、FreeBSD-EN-22:27.loaderのものが注意が必要なのだが、今回はV. Solutionの Upgrade your system to a supported FreeBSD ... の文を読まないままrebootを行ってしまうとちょっとした対処が必要になる。(ここでは書かない)


引用ここから〜〜〜
V.   Solution

Upgrade your system to a supported FreeBSD stable or release / security
branch (releng) dated after the correction date.  The UEFI system partition will
need to be updated with the new loader.efi.

Perform one of the following:

1) To update your system via a binary patch:

Systems running a RELEASE version of FreeBSD on the amd64, i386, or
(on FreeBSD 13 and later) arm64 platforms can be updated via the
freebsd-update(8) utility:

# freebsd-update fetch
# freebsd-update install
〜〜〜引用ここまで
※2) To update your system via a source code patch: 以降は省略。


今回の場合は何が書いてあるかと言うと、「このアップグレードがサポートされているのはFreeBSD-stable、FreeBSD-Release、セキュリティブランチにあるものだけです。UEFIシステムパーティションを使っている場合、アップデート前に新しいloader.efiの更新が必要です。」(オレオレ訳なのでより正しい文言が必要な場合は原文をご確認ください)


UEFIパーティションのシステムだけはfreebsd-update fetchとfreebsd-update installで終わらないだけであり、その他の例えばMBR形式のシステムではいつもどおりのコマンドで問題ないのだろう。




じゃあ、UEFIシステムパーティションを使ってるのでloader.efiも更新しないといけないね、ということで、おそらく走るであろうコマンド。

# freebsd-update fetch install
〜省略〜

# mount -t msdosfs /dev/ada0p1 /mnt
# mv /mnt/efi/boot/loader.efi /mnt/efi/boot/loader.efi.old
# cp /boot/loader.efi /mnt/efi/boot/loader.efi
# umount /mnt
〜他にEFIパーティションを持つディスクがあればそちらも更新する〜
# reboot
freebsd-update fetch installコマンドの前にloader.efiを更新してもたぶん意味がない。

これは一例なので、手元のシステムではそういう作りになってないかも知れない。その場合はFreeBSD.efiとかbootx64.efiなどを探してみてください。(ただし、EFIローダなどにより複数OSのマルチブートを実現している場合は注意深く操作したほうが良いと思います)
EFIパーティションだけでなくfreebsd-bootパーティションを持っている場合は、ついでに以下のコマンドも走らせておくと幸せになるかも。
※ディスク全体がFreeBSDシステムで占められており、ada0p1がfreebsd-bootパーティションの場合
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
※他OSが共存するディスクでada0p1がfreebsd-bootパーティションの場合
# gpart bootcode -p /boot/gptzfsboot -i 1 ada0

-bと-pの位置は逆に指定しがちなので不安であればちゃんとman gpartコマンドのExamplesのGPTの項目を確認する。[n敗]



修正:2022/11/07 文章の軽微な修正
初版:2022/11/02

以下、参考サイト

FreeBSD Security Advisories
FreeBSD Errata Notices

気になった記事のブックマークなど(2025/11)

  過去ログ   走り書き 2025/11/03 おいしい焼肉♪あおぞら沼田店           確約された大勝利の味。 ...