2010年8月4日水曜日

やっと「CONFIG_SYSFS_DEPRECATED_V2」を外せました。

長らくLinuxの起動時に、「CONFIG_SYSFS_DEPRECATED_V2」をOffにしなさいというメッセージが出ていたのですが、offにするとカーネルがブートしないので悩んでいました。

2010年8月6日 10:00に本文を修正しました。




これはそのまま放置していても問題がなかったので放置をしていたのですが、遂に問題が発生してしましたTT

問題というのは、/dev/sdaなどのデバイスファイルがなくなってしまうという現象です。ブートはできるのですが、ブート時に認識してマウントしたデバイス以外は、デバイスファイルがないためアクセスできないのです。具体的な問題は、起動時にブートパーティションをマウントしていないので、カーネルを再構築しても、ブートパーティションのカーネルを更新できないのです。
※後で気づきましたが、/etc/fstab/を修正して、ブートパーティションを常にマウントにすればよかったかもね。

先ほど、「gentoo udev CONFIG_SYSFS_DEPRECATED_V2」でググると2chのコメント442で同様の現象が報告されていますね。

しかも、ルートパーティションは、LVMで構成されているので、ブートパーティション以外はgrubがのぞけないという状況で、輪をかけてまずい状況でした。


原因は、udevがVersion149からVersion151になり、/dev/sda*などのデバイスファイルを作成しなくなったためでした。


このため、一時的にlvm2とudevの最新版をマスクして、以前のバージョンに戻して、再起動してデバイスファイルを復活させます。

echo '>=sys-fs/udev-151' >> /etc/portage/package.mask 
echo '>=sys-fs/lvm2-2.02.67-r2' >> /etc/portage/package.mask
emerge -uNDtv world

その上で 、原因追及を行います。

まずは、NeddySeagoon's Rough Guide to libata Migrationを参考にして、「CONFIG_SYSFS_DEPRECATED_V2」をOffにしても大丈夫なようにします。

それでも起動時にルートパーティションを見つけられないというか、LVMが構成ができません。

それでLVMをルートパーティションにした場合のインターネット上の情報をあさっていると、udevをstaticでemergeしなさいという情報がありました。

udevにstaticのUSEフラグを立ててリビルドして、genkernelでカーネルを再構築して再起動したところ、問題なく起動できるようになりました。

これは盲点でした。

ただ、後日他の同環境マシンだと、udevにstaticがUSEフラグに入っているので、これだけ、なぜか外したのでしょうね。。。。

その上で、先ほど設定したlvm2とudevのマスクを剥がして、最新版に更新して、再起動。

こちらも問題なく動作しました。

0 件のコメント: