Atheros AR8161のLinux用ドライバのインストール

GIGABYTEのGA-Z77X-UD3Hには、AtherosのAR8161というオンボードLANチップが載ってる。

マニュアル記載の仕様表には、「Atheros GbE LANチップ」とだけ書いてあって、型番の記載はない。

AR8161

現物は中央の逆さになってる、この小さなチップ。

これ書いた時点では、これが新しめのチップらしくて、openSUSEでは初期状態で認識できなかったから、compat-driversからドライバをインストールした。その時の手順のメモ。

openSUSE 12.3でやったからそれに合わせて書いてるけど、他のディストロでも同じような手順を踏めばいけると思う。

openSUSEの場合は、ビルドサービスに有志ビルドのパッケージがあるかもしれない。漁ってみるのもいいかも?ただ、これだと更新が来たときにすぐ対応しきれないところがあるから、今回はあえて自力でインストールを試みた。

openSUSE 12.3インストール直後は、YaST上では一応見れるけど、設定させてくれない。

opensuse 12.3インストール直後のYaSTの画面

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)

早く標準ドライバとして入ってくれないかなー。

コメントを残す

メールアドレスは公開されません