はじめに
今まで 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接続のマークも出ている。どうやらうまくいったようだ。
まとめ
イーサネットの不具合は、ドライバをインストールしたら治った。
接続状況はこうなった。