はじめに
今まで Ubuntu マシンの nightschool は無線で接続していた。けれどうちの環境(無線LANルータは1階、マシンは2階にある)のせいか、接続が不安定で速度も遅かった。2階にイーサネットのジャックがあるので有線でつないでみたものの、どういうわけかリンクが確立しない(リンクランプが点灯しない、Ubuntu で Ethernet接続が有効にならない)という状況だった。
マシンを買って以来約2年近くもこの状態だったのだけど、ようやく解決するために重い腰を上げた次第。
参考にしたページ
このページが参考になった。
cf. UbuntuでNICを認識しない場合の対応 – RainbowDevilsLand
状況の確認
まずは現在の状況の確認から。ifconfig コマンドで NIC の状況を見てみる。
takatoh@nightschool $ ifconfig eth0 Link encap:イーサネット ハードウェアアドレス f8:bc:12:78:84:ab UP BROADCAST MULTICAST MTU:1500 メトリック:1 RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:0 (0.0 B) TXバイト:0 (0.0 B) lo Link encap:ローカルループバック inetアドレス:127.0.0.1 マスク:255.0.0.0 inet6アドレス: ::1/128 範囲:ホスト UP LOOPBACK RUNNING MTU:65536 メトリック:1 RXパケット:110255 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:110255 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:0 RXバイト:629344324 (629.3 MB) TXバイト:629344324 (629.3 MB) wlan0 Link encap:イーサネット ハードウェアアドレス 54:35:30:bc:ed:f9 inetアドレス:192.168.1.5 ブロードキャスト:192.168.1.255 マスク:255.255.255.0 inet6アドレス: fe80::5635:30ff:febc:edf9/64 範囲:リンク inet6アドレス: 2408:212:ac6:e200:5635:30ff:febc:edf9/64 範囲:グローバル inet6アドレス: 2408:212:ac6:e200:75ec:809a:c077:3ea5/64 範囲:グローバル UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1 RXパケット:46490 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:49384 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:6255035 (6.2 MB) TXバイト:18310646 (18.3 MB)
イーサネットの NIC (eth0)自体は認識しているようだけど、アドレスが割り振られていない。
参考にしたページに書かれているのは、NIC 自体が認識されていない場合の対処法だけど、ダメ元で同じようにドライバをインストールしてみることにした。そこで、NIC のチップの種類を調べる。
takatoh@nightschool $ lspci | grep 'Ethernet\|Network' 02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c) 03:00.0 Network controller: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter (rev 01)
Realtek の RTL8111/8168/8411 っていうチップのようだ。
ドライバのダウンロードとインストール
Realtek のダウンロードセンターから、RTL8111 を検索してダウンロード。0004-r8168-8.041.01.tar.bz2 というファイルだ。
これを展開する。
takatoh@nightschool $ tar xjvf 0004-r8168-8.041.01.tar.bz2
中に含まれている README ファイルを読むと、autorun.sh を実行すればいいようだ。
takatoh@nightschool $ cd r8168-8.041.01 takatoh@nightschool $ sudo ./autorun.sh Check old driver and unload it. rmmod r8169 Build the module and install Can't read private key Backup r8169.ko rename r8169.ko to r8169.bak DEPMOD 3.13.0-79-generic load module r8168 Updating initramfs. Please wait. update-initramfs: Generating /boot/initrd.img-3.13.0-79-generic Completed.
Completed と出ている。うまくいったか?
確認
ふたたび ifconfig コマンドで確認。
takatoh@nightschool $ ifconfig eth0 Link encap:イーサネット ハードウェアアドレス f8:bc:12:78:84:ab inetアドレス:192.168.1.20 ブロードキャスト:192.168.1.255 マスク:255.255.255.0 inet6アドレス: 2408:212:ac6:e200:fabc:12ff:fe78:84ab/64 範囲:グローバル inet6アドレス: fe80::fabc:12ff:fe78:84ab/64 範囲:リンク inet6アドレス: 2408:212:ac6:e200:486:4ce3:78a7:b216/64 範囲:グローバル UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1 RXパケット:13 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:25 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:1993 (1.9 KB) TXバイト:4054 (4.0 KB) 割り込み:45 ベースアドレス:0x4000 lo Link encap:ローカルループバック inetアドレス:127.0.0.1 マスク:255.0.0.0 inet6アドレス: ::1/128 範囲:ホスト UP LOOPBACK RUNNING MTU:65536 メトリック:1 RXパケット:110581 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:110581 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:0 RXバイト:629379076 (629.3 MB) TXバイト:629379076 (629.3 MB) wlan0 Link encap:イーサネット ハードウェアアドレス 54:35:30:bc:ed:f9 inetアドレス:192.168.1.5 ブロードキャスト:192.168.1.255 マスク:255.255.255.0 inet6アドレス: fe80::5635:30ff:febc:edf9/64 範囲:リンク inet6アドレス: 2408:212:ac6:e200:5635:30ff:febc:edf9/64 範囲:グローバル inet6アドレス: 2408:212:ac6:e200:75ec:809a:c077:3ea5/64 範囲:グローバル UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1 RXパケット:58509 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:60687 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:7434710 (7.4 MB) TXバイト:19433795 (19.4 MB)
おお、eth0 にもアドレスが割り振られている。画面右上には Ethernet接続のマークも出ている。どうやらうまくいったようだ。
まとめ
イーサネットの不具合は、ドライバをインストールしたら治った。
接続状況はこうなった。