GIGABYTEのGA-Z77X-UD3Hには、AtherosのAR8161というオンボードLANチップが載ってる。
マニュアル記載の仕様表には、「Atheros GbE LANチップ」とだけ書いてあって、型番の記載はない。
これ書いた時点では、これが新しめのチップらしくて、openSUSEでは初期状態で認識できなかったから、compat-driversからドライバをインストールした。その時の手順のメモ。
openSUSE 12.3でやったからそれに合わせて書いてるけど、他のディストロでも同じような手順を踏めばいけると思う。
openSUSEの場合は、ビルドサービスに有志ビルドのパッケージがあるかもしれない。漁ってみるのもいいかも?ただ、これだと更新が来たときにすぐ対応しきれないところがあるから、今回はあえて自力でインストールを試みた。
openSUSE 12.3インストール直後は、YaST上では一応見れるけど、設定させてくれない。
ifconfigではインターフェースとして出てこない。lspciコマンドでもやはり使用ドライバが無い状況。
hostname:~ # ifconfig -a
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:52 errors:0 dropped:0 overruns:0 frame:0
TX packets:52 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4901 (4.7 Kb) TX bytes:4901 (4.7 Kb)
hostname:~ # lspci -knn
(中略)
05:00.0 Ethernet controller [0200]: Atheros Communications Inc. AR8161 Gigabit Ethernet [1969:1091] (rev 10)
Subsystem: Giga-byte Technology Device [1458:e000]
チップの型番でググってみたところ、Linux Foundationのページが引っかかり、alxというドライバを使うことが判明。上で黄色で示してる部分のデバイスIDも合ってる。コレだね。alxドライバはcompat-driversに収録されているようだ。
インストール方法はhttps://backports.wiki.kernel.org/index.php/Documentation/compat-driversを参考にした。
そうそう、ドライバのビルドには、kernel-develとかgccとかmakeが必要。入っていない場合はDVDインストールメディアからインストールする。
kernel- develについては、現在動いてるカーネルと同じバージョンが必要。初期状態でインストールされているカーネル(=3.7.10-1.1- desktop)であれば、DVDインストールメディアにパッケージが入ってる。更新でカーネルが新しいバージョンになっている場合は、そのバージョン用 のkernel-develを拾ってくる必要がある。
compat-driversのリリースページ(http://drvbp1.linux-foundation.org/~mcgrof/rel-html/backports)から、今使ってるカーネルより「新しいバージョン」の、末尾に”u”付きのものを選ぶ。
例)3.7.10-1.1→compat-drivers-3.8.3-2-snpu
今回は~/src/にダウンロードしたドライバを展開している。
注意点として、compat-drivers-xxxxのディレクトリから相対パスで実行しないといけない決まりがあるみたい。
インストールするドライバとして、alxを選択。その後make
user1@hostname:~/src/compat-drivers-3.8.3-2-snpu> ./scripts/driver-select alx
Processing new driver-select request...
Backing up makefile: Makefile.bk
Backup exists: Makefile.bk
Backing up makefile: drivers/net/ethernet/broadcom/Makefile.bk
Backing up makefile: drivers/net/ethernet/atheros/Makefile.bk
Backup exists: Makefile.bk
Backup exists: Makefile.bk
Backup exists: drivers/net/ethernet/broadcom/Makefile.bk
user1@hostname:~/src/compat-drivers-3.8.3-2-snpu> make
./scripts/gen-compat-autoconf.sh /home/user1/src/compat-drivers-3.8.3-2-snpu/.config /home/user1/src/compat-drivers-3.8.3-2-snpu/config.mk > include/linux/compat_autoconf.h
make -C /lib/modules/3.7.10-1.4-desktop/build M=/home/user1/src/compat-drivers-3.8.3-2-snpu modules
make[1]: ディレクトリ `/usr/src/linux-3.7.10-1.4-obj/x86_64/desktop' に入ります
CC [M] /home/user1/src/compat-drivers-3.8.3-2-snpu/compat/main.o
CC [M] /home/user1/src/compat-drivers-3.8.3-2-snpu/compat/compat-3.8.o
LD [M] /home/user1/src/compat-drivers-3.8.3-2-snpu/compat/compat.o
CC [M] /home/user1/src/compat-drivers-3.8.3-2-snpu/drivers/net/ethernet/atheros/alx/alx_main.o
CC [M] /home/user1/src/compat-drivers-3.8.3-2-snpu/drivers/net/ethernet/atheros/alx/alx_ethtool.o
CC [M] /home/user1/src/compat-drivers-3.8.3-2-snpu/drivers/net/ethernet/atheros/alx/alx_hw.o
LD [M] /home/user1/src/compat-drivers-3.8.3-2-snpu/drivers/net/ethernet/atheros/alx/alx.o
Building modules, stage 2.
MODPOST 2 modules
CC /home/user1/src/compat-drivers-3.8.3-2-snpu/compat/compat.mod.o
LD [M] /home/user1/src/compat-drivers-3.8.3-2-snpu/compat/compat.ko
CC /home/user1/src/compat-drivers-3.8.3-2-snpu/drivers/net/ethernet/atheros/alx/alx.mod.o
LD [M] /home/user1/src/compat-drivers-3.8.3-2-snpu/drivers/net/ethernet/atheros/alx/alx.ko
make[1]: ディレクトリ `/usr/src/linux-3.7.10-1.4-obj/x86_64/desktop' から出ます
パッケージ化したかったからcheckinstallが使えないか試してみたけど、ビルド中に競合モジュールを止めるところでコケた。渋々、make install.
user1@hostname:~/src/compat-drivers-3.8.3-2-snpu> su
パスワード:
hostname:/home/user1/src/compat-drivers-3.8.3-2-snpu # make install
Warning:
You may or may not need to update your initramfs, you should if
any of the modules installed are part of your initramfs. To add
support for your distribution to do this automatically send a
patch against ./scripts/update-initramfs. If your distribution does not require this
send a patch against the '/usr/bin/lsb_release -i -s': openSUSE
tag for your distribution to avoid this warning.
(中略)
depmod will prefer updates/ over kernel/ -- OK!
Now run:
sudo make unload to unload all: wireless, bluetooth and ethernet modules
sudo make wlunload to unload wireless modules
sudo make btunload to unload bluetooth modules
Run sudo modprobe driver-name to load your desired driver.
If unsure reboot.
hostname:/home/user1/src/compat-drivers-3.8.3-2-snpu #
この説明文からすると、この時にinitramfsの更新までやってくれてるみたい。
再起動すると、モジュールがロードされる。modprobe alxで再起動せずに使うことも可能。
以下、コマンドラインからの確認。alxドライバがAR8161に割り当てされていて、ネットワークインターフェースとしても認識してる。
user1@hostname:~> lsmod | grep alx
alx 72577 0
compat 17617 1 alx
mdio 13808 1 alx
hostname:~ # lspci -knn
(中略)
05:00.0 Ethernet controller [0200]: Atheros Communications Inc. AR8161 Gigabit Ethernet [1969:1091] (rev 10)
Subsystem: Giga-byte Technology Device [1458:e000]
Kernel driver in use: alx
hostname:/home/user1 # ifconfig -a
eth0 Link encap:Ethernet HWaddr 90:2B:34:XX:XX:XX
inet addr:XXX.XXX.XXX.XXX Bcast:XXX.XXX.XXX.XXX Mask:255.255.255.0
inet6 addr: fe80::922b:XXXX:XXXX:XXXX/64 Scope:Link
inet6 addr: 2408:11:83a0:c300:XXXX:XXXX:XXXX:XXXX/64 Scope:Global
inet6 addr: 2408:11:83a0:c300:XXXX:XXXX:XXXX:XXXX/64 Scope:Global
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:44 errors:0 dropped:0 overruns:0 frame:0
TX packets:86 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9363 (9.1 Kb) TX bytes:15626 (15.2 Kb)
Interrupt:18
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:56 errors:0 dropped:0 overruns:0 frame:0
TX packets:56 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5101 (4.9 Kb) TX bytes:5101 (4.9 Kb)
早く標準ドライバとして入ってくれないかなー。
最近のコメント