そしてeth0がいなくなった [プログラム]
はい、例によってdebianのsidでdist-upgradeしたらトラブル発生です。
そして、いつものように再起動するまで問題が発覚しませんので、「あれっ!?」です。
ネットワークがつながりません。
ネットワークの物理的な接続は問題なしでしたので、OS側の問題です。
- # ifconfig -a
じゃぁ、Ethernetのチップは見えているのかというと
- # lspci
- Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02)
なら、ドライバは?
- # lsmod |grep 8
ドライバはどこ?
- # ls -F /lib/modules/3.13-1-686-pae/kernel/drivers/net/ethernet/realtek/
8139cp.ko 8139too.ko r8169.ko
- # cat /etc/modprobe.d/r8168-dkms.conf
# blacklisted by r8168-dkms
blacklist r8169
記憶が確かならr8169で代用がきいたはず。えーい。
- # modprobe r8169
# ifup eth0
ググると、8168はバグがあるからデフォルトでインストールを止めたみたいです。
でも、必要な人がいるから(当たり前だ、ばかたれ)、ソースで供給してたらしいです。
で、debianはというと、それを自動化してaptパッケージで出したようです。
- # apt-get install r8168-dkms
- # apt-get install linux-headers-3.13-1-686-pae
- # apt-get install --reinstall r8168-dkms
ともあれ、
- /lib/modules/3.13-1-686-pae/updates/dkms/r8168.ko
一度rebootしてみます。さっきのメッセージに、
- ブートに失敗したら、initrd.img-3.13-1-686-pae.old-dkmsを使ってね
おお、問題なく立ち上がりますよ。
- # lsmod | grep 81
r8168 246337 0
さて、今回の問題は何だったのかなー。
- 8168をr8169のドライバで代用するのを止めるようになった
- dist-upgradeでkernelのアップデートのときに、kernel headerがインストールされなかった(なぜかいつもインストールされないので、手動でインストールしてます=面倒)
- r8168ドライバ(ソースからコンパイルする)のモジュールはアップデートで自動的に選択されてインストールされた(しようとした)
- しかし、r8168ドライバ(ソースからコンパイルする)はインストールに際してkernel headerを必要とする
ということで、dist-upgradeしたら、kernel headerがないので、r8168ドライバをビルドできなかった、ということみたいです。r8168ドライバのモジュールがkernel headerに依存しているのに、kernel headerをインストールするように設定されないのが問題だったのでしょう。そしてeth0がいなくなった、と。
タグ:Debian