SSブログ

そしてeth0がいなくなった [プログラム]

はい、例によってdebianのsidでdist-upgradeしたらトラブル発生です。
そして、いつものように再起動するまで問題が発覚しませんので、「あれっ!?」です。

ネットワークがつながりません。
ネットワークの物理的な接続は問題なしでしたので、OS側の問題です。

    # ifconfig -a
あれれ、eth0がありません。
じゃぁ、Ethernetのチップは見えているのかというと
    # lspci
この中に
    Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02)
があるので、ふむ、そこまではよしと。
なら、ドライバは?
    # lsmod |grep 8
? なにも出てきません。どゆこと? こいつは、8168のドライバだったんじゃなかったっけ? 8169だっけ?
ドライバはどこ?
    # ls -F /lib/modules/3.13-1-686-pae/kernel/drivers/net/ethernet/realtek/
    8139cp.ko 8139too.ko r8169.ko
!!! 8138のドライバがないじゃん。でも、前はr8169のドライバだったような気がする…
    # cat /etc/modprobe.d/r8168-dkms.conf
    # blacklisted by r8168-dkms
    blacklist r8169
なんか知りませんが、blacklist入りしてます。
記憶が確かならr8169で代用がきいたはず。えーい。
    # modprobe r8169
    # ifup eth0
とりあえずは、これでネットにつながるので、やっと検索ができるようになりました。
ググると、8168はバグがあるからデフォルトでインストールを止めたみたいです。
でも、必要な人がいるから(当たり前だ、ばかたれ)、ソースで供給してたらしいです。
で、debianはというと、それを自動化してaptパッケージで出したようです。
    # apt-get install r8168-dkms
あれ、エラーしますね。ひょっとして、kernel headerがない?
    # 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
ちゃんとr8168のドライバが入ってます。

さて、今回の問題は何だったのかなー。
  • 8168をr8169のドライバで代用するのを止めるようになった
  • dist-upgradeでkernelのアップデートのときに、kernel headerがインストールされなかった(なぜかいつもインストールされないので、手動でインストールしてます=面倒)
  • r8168ドライバ(ソースからコンパイルする)のモジュールはアップデートで自動的に選択されてインストールされた(しようとした)
  • しかし、r8168ドライバ(ソースからコンパイルする)はインストールに際してkernel headerを必要とする

ということで、dist-upgradeしたら、kernel headerがないので、r8168ドライバをビルドできなかった、ということみたいです。r8168ドライバのモジュールがkernel headerに依存しているのに、kernel headerをインストールするように設定されないのが問題だったのでしょう。そしてeth0がいなくなった、と。


タグ:Debian

共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。