起動時の dmesg
とかは別に静かにしてるんですけどね。/etc/init.d/rsyslog restart
とかすると大騒ぎするんです。発端はこちら。 rsyslog が udp を受信しなくなった
とりあえず、うどんワールド1)した時の summary.log を眺めてみると、lvm の postinst 近辺で色々と出てます。
>>> Messages generated by process 18974 on 2017-04-02 16:36:08 JST for package sys-fs/lvm2-2.02.145-r2: WARN: setup It's recommended to set an empty value to the following kernel config option: CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" LOG: prepare Notice that "use_lvmetad" setting is enabled with USE="udev" in /etc/lvm/lvm.conf, which will require restart of udev, lvm, and lvmetad if it was previously disabled. QA: prepare This package has a configure.in file which has long been deprecated. Please update it to use configure.ac instead as newer versions of autotools will die when it finds this file. See https://bugs.gentoo.org/426262 for details. WARN: postinst Make sure the "lvm" init script is in the runlevels: # rc-update add lvm boot Make sure to enable lvmetad in /etc/lvm/lvm.conf if you want to enable lvm autoactivation and metadata caching.
……ふむ、この kernel config はそのとおりにしてた気もするんだけど。 ゲスト側だけしかやってなかったかな。
It's recommended to set an empty value to the following kernel config option:CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
# grep 'CONFIG_UEVENT_HELPER_PATH' /usr/src/linux/.config CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
なるほど。じゃあこれは外してカーネルコンパイルしましょう。
# cd /usr/src/linux # make menuconfig
で、[/]キーを押下して CONFIG_UEVENT_HELPER_PATH
を検索します。
Symbol: UEVENT_HELPER_PATH [=/sbin/hotplug] Type : string Prompt: path to uevent helper Location: -> Device Drivers -> Generic Driver Options (1) -> Support for uevent helper (UEVENT_HELPER [=y]) Defined at drivers/base/Kconfig:18 Depends on: UEVENT_HELPER [=y]
Location
を見て、どこにあるのか確認して、言われたとおりに set an empty value します。
設定終わったらコンパイルします。いや最近のマシンはコンパイル早くていいですよねホント。
# make -j7 && make modules_install
コンパイル完了したらカーネルをコピーして grub-mkconfig
して……
# mount /boot # cp /usr/src/linux/arch/x86_64/boot/bzImage /boot/kernel-4.9.6-gentoo-r1.20170406.01 # grub-mkconfig -o /boot/grub/grub.cfg
LOG: prepareNotice that "use_lvmetad" setting is enabled with USE="udev" in /etc/lvm/lvm.conf, which will require restart of udev, lvm, and lvmetad if it was previously disabled.
こんどはこれですね……ふむ。
# emerge -pv lvm2 These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] sys-fs/lvm2-2.02.145-r2::gentoo USE="readline thin udev (-clvm) (-cman) -corosync -device-mapper-only -lvm1 -lvm2create_initrd -openais (-selinux) -static -static-libs -systemd" 0 KiB Total: 1 package (1 reinstall), Size of downloads: 0 KiB kanae boot # grep 'use_lvmetad' /etc/lvm/lvm.conf # See the use_lvmetad comment for a special case regarding filters. # This is incompatible with lvmetad. If use_lvmetad is enabled, # Configuration option global/use_lvmetad. # while use_lvmetad was disabled, it must be stopped, use_lvmetad use_lvmetad = 1
USE="udev"
で use_lvmetad = 1
で、一応条件に一致しているみたいですね、うちの環境。でもこのあとシステムごと再起動するつもりなのでここで daemon の落とし上げはいらないか……。
QA: prepareThis package has a configure.in file which has long been deprecated. Please update it to use configure.ac instead as newer versions of autotools will die when it finds this file. See https://bugs.gentoo.org/426262 for details.
ん~ちょっとこれは置いておこう。放置w
最後のこれですね。
WARN: postinstMake sure the "lvm" init script is in the runlevels: rc-update add lvm boot
これはもともと動いていたものなので設定済みですね。あらためて add する必要はないです。
# rc-status boot Runlevel: boot hwclock [ started ] modules [ started ] lvm [ stopped ] : :
なんだ結局対応したのは kernel config だけじゃないかっていうオチ……再起動します。
# reboot
おやくそく。
ping 返ってくるととりあえずほっとしますよねw
さて結果どうでしょう!?
# rc-status boot Runlevel: boot hwclock [ started ] modules [ started ] lvm [ stopped ] : :
……lvm が起動してませんね。(´・ω・`)
Notice that "use_lvmetad" setting is enabled with USE="udev" in /etc/lvm/lvm.conf,
このあたりを調べてる時にちょっと気になったんですが、そういえば dispatch-conf
した時にやたらと lvm.conf が更新されてたんですよね。その時は、明らかに自分でやった既存設定を潰さない程度に、新しい方の設定を適用していったんですが……あんまり既存設定を覚えてないんですが、もしかしてそこでなんか変更されたかも?
ということで、ちょっと lvm.conf を見直してみました。で、引っかかったのがここ。
# Configuration option devices/global_filter. # Limit the block devices that are used by LVM system components. # Because devices/filter may be overridden from the command line, it is # not suitable for system-wide device filtering, e.g. udev and lvmetad. # Use global_filter to hide devices from these LVM system components. # The syntax is the same as devices/filter. Devices rejected by # global_filter are not opened by LVM. # This configuration option has an automatic default value. # global_filter = [ "a|.*/|" ]
Because devices/filter may be overridden from the command line, it is not suitable for system-wide device filtering, e.g. udev and lvmetad.
……ほう。
ということで、既存の filter
と同じ設定を global_filter
にも施してみました。
global_filter = [ "r|/dev/sd*|", "a|/dev/md113|", "r|.*|" ]
解 決 し た 。
# rc-status boot Runlevel: boot hwclock [ started ] modules [ started ] lvm [ started ]
ちゃんと lvm も起動してます。
恐らく /etc/init.d/rsyslog restart
とかやったときに、前提となる boot
とかの runlevel の状態をチェックするんでしょう。で lvm が [ stopped ]
なので上げようとするも、lvm.conf の filter
が効いていないので /dev 配下を総なめして WARNING 出しまくり。 結局 lvm は何かに引っかかって起動せず……という流れだったのかと。
……しょっぱいオチだなぁ。まぁ kernel config がよりあるべき姿になったということで……納得しておきましょう。