突然消失するかもしれないブログ

”とつきえブログ”

Debian 4.0 Etchでhotplugとudevを同時にインストールして使用することが出来ない

Debian 4.0 EtchをArmadillo-500にインストールしているのですが、いつの間にか/dev以下のファイルが自動的に削除されて、正常に起動できなくなるという問題が発生してしまい、ここしばらくはまっていました。

で、結論から言うと、Debian 4.0 Etchでは、hotplugとudevを同時にインストールして使用することが出来ないからです。

Debian 4.0 Etchでは、デフォルトでudevがインストールされています。hotplugはインストールされていません。少なくともArmadillo-500用にアットマークテクノが配布しているdebianのディストリビューションの構成ではこうなっています。

ここで、apt-get install hotplugをしようとすると、なんと、udevのパッケージが削除されてしまうのです。これが原因で、次回再起動時に/devファイルが削除されてしまう(デバイスファイルが作成されない?)ため、例えば、/dev/hdaなどHDDがマウントできず、ブートが異常停止してしまうのです。

で、LinkStation HD-HGLAN+FreeLink+Webinstallerの環境だと、udevはインストールされていません。なので、hotplugをインストールしても不具合が出ないんですね。

ここらへんの事情は、以下が詳しいです。

udev+D-Bus+Hal Howto (draft)

なんで、hotplugとudevが共存できないのかというと、udevがあればhotplugは必要なくなったからのようです。

hotplug環境だと、/proc/sys/kernel/hotplugに指定されたプログラムが、例えば、USB機器を抜き差しすると呼び出されます。

ところが、udev環境だと、/proc/sys/kernel/hotplugの内容は空になっています。では、、/proc/sys/kernel/hotplugの内容が空なのに、例えばどうしてUSB機器の抜き差しに対応できるのかというと、カーネルからNETLINKを使って、ユーザスペース上にあるudevdと通信しているからのようです。

ちなみに、NETLINKとは、こちらが詳しいです。

NETLINKというのは、カーネルとユーザー空間の通信 (PF_NETLINK)を提供する機構なんですね。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。