-->

2013-04-28

CONFIG_DEVTMPFSのメモ

たぶんudevの更新後に再起動しておかしくなった。
# /etc/init.d/net.br0 start
...
TUN/TAP support present but /dev/net/tun is not
...

たぶんインストール後の追加設定をしていないのが原因だった。
* Messages for package sys-fs/udev-200:

 *   CONFIG_DEVTMPFS:    is not set when it should be.
...

kernelを再インストールする。menuconfigで設定追加。
$ diff .config--2013-04-28--04-56-54.bak .config
1002c1002,1003
< # CONFIG_DEVTMPFS is not set
---
> CONFIG_DEVTMPFS=y
> # CONFIG_DEVTMPFS_MOUNT is not set

/etc/udev/rules.d/以下のファイルを消すと再起動後に再作成されるというのは勘違いだった。
以前はそうだったかもしれない。
/etc/udev/rules.d/70-persistent-net.rules

eth0という名前にするには「MACアドレス=>eth0です」という設定ファイルが必要だった。
書いたこと無いので以前はインストール時とかに勝手に作成されていたのだと思う。
# dmesg | grep -i eth
...
# ifconfig enp2s0





詳細。
udevを更新してからCONFIG_DEVTMPFS=yではない状態でOSを再起動した。
ネットワーク関連のエラーで起動は遅いがログインはできるのでkernelの再作成をする。
genkernel --makeopts="-j8 KCFLAGS=\\\"-O2 -pipe -march=native\\\"" --kernel-config=/etc/kernels/kernel-config-x86_64-3.7.10-gentoo-r1 --menuconfig all
再起動後に起動画面で CONFIG_DEVTMPFS=y ... のようなエラーが出るので再度同じ事をやるが変化がない。
原因は/boot/がマウントできていないのでマウント用の空ディレクトリにkernelのファイルが作成されているため。
なので、CONFIG_DEVTMPFS=yの状態のファイルに更新できていなかった。
# cat /proc/mdstat では表示されるが /dev/md1 がないので # mknod /dev/md1 b 9 1 する。(/dev/md1は/boot/)
udev関連の起動エラーも出ていたので/dev/以下がきっとおかしいのかもしれなかった。
それでmount /boot/でエラーがでなくなったので再度実行して正常に起動できたように思う。

ややこしい部分。
udevを更新したらkernelの設定の追加が必要だが追加していなかった。
起動はできるので追加して再起動しても反映されなかった。
起動した状態では/boot/がmountできない状態で、genkernelコマンドを使っていたのでそれがわからなかった。このコマンドは自動でマウントしてからファイルコピーするので。