Wifi

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Wifi and the translation is 100% complete.

Other languages:
English • ‎español • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Resources

この記事では、無線LANネットワークデバイスのセットアップについて説明します。

インストール中のWifiの使用

Gentooのインストール中にwifi接続が必要な場合には、 Gentoo minimal install CD では限られた数のドライバーしか使えないことや、 WPA/WPA2/Enterprise 接続の設定方法として wpa_cliのみが提供されている(wpa_guiは提供されない)ことに注意してください。

minimal install CD に必要なドライバーが含まれていなかったり、あるいは wpa_supplicant のグラフィカルフロントエンドをお望みの場合は、 System Rescue CD のような別のライブCDを選択してください。Gentoo 以外のライブCDを利用する場合には、いくつかの特別な手順が必要になるかもしれないことに留意してください。

ハードウェアの検出

まずwifiコントローラーを検出します。この作業には、 lspcilsusbといったコマンドラインツールが利用できます。

起動した Linux (LiveCD/USB) でwifi接続が作成された場合:

root #lspci -k

ドライバーは Kernel driver in use: から始まる行で識別できます。

起動したシステムがwifi接続を作成しない場合、現在のシステムからハードウェアIDの完全な一覧を取得します。このリストは、後で適切なドライバーを識別するために使用できます:

root #lspci -n

コマンドが生成した PCIID のリストをコピーし、 http://kmuto.jp/debian/hcl/ にペーストします。

USBデバイスについても、似たようなアプローチをとることができます。最初にシステムで見つかったUSBデバイスのリストを取得します:

user $lsusb

このコマンドは、システムに接続されたすべてのUSBデバイスの PCI ID、メーカー、型式、モデル、そしてチップセットのリストを生成します。これらのうち、チップセットがおそらくもっとも有用な情報です。しばしば、linuxwireless.org <チップセット>とウェブ検索するのが、USB NIC のドライバーやファームウェアの名前を知るためのもっとも手っ取り早い方法です。

代わりに、必要な情報を取得するために lshw を使用することもできます。

root #lshw | grep -i driver

このコマンドは、デバイスがPCIベースかUSBベースかに関わらず、すべてのドライバーのリストを生成します。

カーネル

ドライバーが識別できたら、Linux カーネルの設定をしましょう。

IEEE 802.11

少なくとも cfg80211mac80211 を有功にしてください。

KERNEL linux-4.1
[*] Networking support  --->
    [*] Wireless  --->
        <M/*>   cfg80211 - wireless configuration API
        [ ]     nl80211 testmode command
        [ ]     enable developer warnings
        [ ]     cfg80211 regulatory debugging
        [ ]     cfg80211 certification onus
        [*]     enable powersave by default
        [ ]     cfg80211 DebugFS entries
        [ ]     use statically compiled regulatory rules database
        [ ]     cfg80211 wireless extensions compatibility
        <M/*>   Generic IEEE 802.11 Networking Stack (mac80211)
        [*]   Minstrel
        [*]     Minstrel 802.11n support
        [ ]       Minstrel 802.11ac support
              Default rate control algorithm (Minstrel)  --->
        [ ]   Enable mac80211 mesh networking (pre-802.11s) support
        -*-   Enable LED triggers
        [ ]   Export mac80211 internals in DebugFS
        [ ]   Trace all mac80211 debug messages
        [ ]   Select mac80211 debugging features  ----

Minstrel とその 802.11n サポートはrate control algorithmの1つです。いくつかのワイヤレスドライバーはこれを有効にしないといけないかもしれません。

WEXT

WEXT として知られる "cfg80211 wireless extensions compatibility" オプションは、古い wireless-tools および iwconfig をサポートします。

KERNEL
[*] Networking support  --->
    [*] Wireless  --->
        [*]     cfg80211 wireless extensions compatibility

デバイスドライバー

次に、先ほど調べたハードウェアやドライバーをもとに、該当するカーネルオプションを有功にする必要があります。おすすめの方法は、ドライバーをモジュールとしてビルドすることです。また、ワイヤレスネットワークで WPA や WPA2 暗号化を使用する場合には AES 暗号のサポートを必ず有功にしてください。

KERNEL
    Device Drivers  --->
    [*] Network device support  --->
        [*] Wireless LAN  --->
 
            Select the driver for your Wifi network device, e.g.:
            <M> Broadcom 43xx wireless support (mac80211 stack) (b43)
            [M]    Support for 802.11n (N-PHY) devices
            [M]    Support for low-power (LP-PHY) devices
            [M]    Support for HT-PHY (high throughput) devices
            <M> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi)
            <M>    Intel Wireless WiFi DVM Firmware support                             
            <M>    Intel Wireless WiFi MVM Firmware support
            <M> Intel Wireless WiFi 4965AGN (iwl4965)
            <M> Intel PRO/Wireless 3945ABG/BG Network Connection (iwl3945)
            <M> Ralink driver support  --->
                <M>   Ralink rt27xx/rt28xx/rt30xx (USB) support (rt2800usb)
 
-*- Cryptographic API --->
    -*- AES cipher algorithms
    -*- AES cipher algorithms (x86_64)
    <*> AES cipher algorithms (AES-NI)
Important
ドライバーをモジュールとして(<M>)ではなくカーネル内にビルドする(<*>)場合には、ファームウェアも同様にカーネル内にビルドする必要があります。
設定を変更した後は、カーネルを再構築するのを忘れないようにしましょう。

LED サポート

異なるパケット受信/送信イベントのための LED トリガーを有効にするには、以下のオプションでカーネルをコンパイルします:

KERNEL
Device Drivers  --->
    [*] LED Support  --->
        <*>   LED Class Support
 
[*] Networking support  --->
    [*] Wireless  --->
        [*] Enable LED triggers

ファームウェア

カーネルドライバーに加えて、いくつかのチップセットについてはファームウェアも必要です。必要なら、以下のリストから見つけてインストールしてください:

root #emerge --ask sys-kernel/linux-firmware
Wifi デバイス ドライバー ファームウェア 備考
Atheros AR9271 & AR7010 ath9k_htc sys-kernel/linux-firmware
Broadcom 43xx wireless support b43 / b43legacy sys-firmware/b43-firmware Aircrack-ng 対応、あなたの bcm43xx デバイスがサポートされているならこれがおそらく最良の選択です
Broadcom PCIe and SDIO/USB devices brcmsmac / brcmfmac sys-kernel/linux-firmware 省電力機能、LED サポート、およびその他の機能には非対応
Broadcom 43xx wireless support wl net-wireless/broadcom-sta プロプライエタリ、AP や Monitor モードは非対応、bcm43xx ドライバーの比較
Intel PRO/Wireless 2200BG ipw2200 sys-firmware/ipw2200-firmware
Intel PRO/Wireless 3945ABG/BG iwlegacy sys-kernel/linux-firmware
Intel Wireless WiFi 4965AGN iwl4965 sys-kernel/linux-firmware
All other Intel Wireless devices iwlwifi sys-kernel/linux-firmware 詳細な手順については iwlwifi の記事を参照してください。
Qualcomm Atheros QCA6174 ath10k_pci ath10k-firmware Qualcomm_Atheros_QCA6174#Firmware を参照
Ralink/MediaTek USB devices e.g. rt2800usb sys-kernel/linux-firmware
Realtek RTL8191SE & RTL8192SE rtl8192se sys-kernel/linux-firmware
Realtek 8723AU/8723BU/8191EU/8192EU/8188EU/8188RU rtl8xxxu sys-kernel/linux-firmware すべてのデバイスを見るには、 CONFIG_RTL8XXXU_UNTESTED カーネルオプションが必要かもしれません。デフォルトではカーネル開発者によって検証されたもののみが有効化されています。

ドライバーがファームウェアを要求しているのにリストに載っていない場合、手動でファームウェアをダウンロードして /lib/firmware に置く必要があります。

ネットワークデバイス名

起動時にカーネルが作成する eth0eth1 のようなネットワークデバイス名(dmesg 参照)は、/lib/udev/rules.d/80-net-name-slot.rules での udev ルールを用いて変更可能です。

旧来の命名ルールを維持するには、/etc/udev/rules.d ディレクトリ内に、同じ名称のファイルを空で作成することで上書きします:

root #touch /etc/udev/rules.d/80-net-name-slot.rules

WPA supplicant

無線ネットワークがWPAまたはWPA2で設定されている場合には、wpa_supplicantを使う必要があります。Gentoo Linuxでの無線ネットワーク設定のさらなる情報については、Gentooハンドブックの無線ネットワークの章を読んでください。


テスト

新しいカーネルで再起動するかモジュールを読み込んだ後で、以下の方法を使ってデバイスが利用可能かテストできます:

/sys ファイルシステム

/sys/class/net ディレクトリの内容を ls -al や(app-text/tree パッケージに入っている)tree コマンドで一覧表示させます:

user $tree /sys/class/net
/sys/class/net/
├── enp2s14 -> ../../devices/pci0000:00/0000:00:1e.0/0000:02:0e.0/net/enp2s14
├── lo -> ../../devices/virtual/net/lo
├── sit0 -> ../../devices/virtual/net/sit0
└── wlp8s0 -> ../../devices/pci0000:00/0000:00:1c.0/0000:08:00.0/net/wlp8s0

ip コマンド

デバイス名を取得したりワイヤレスカードが認識されているか検証するには、以下の ip コマンドを実行します:

user $ip addr
3: wlan0:   ...

ifconfig コマンド

ifconfig コマンドは sys-apps/net-tools パッケージを通じて提供されています。まだ有効化されていないものやアクティブになっていないものも含め、認識されているすべてのネットワークカードのリストを表示するには ifconfig -a を使用してください:

user $ifconfig -a
wlan0     ...

以下のようにして、ネットワークカードをアクティブにできます:

root #ifconfig -v wlan0 up
SIOCSIFFLAGS: Operation not possible due to RF-kill
WARNING: at least one error occurred. (-1)

この例では、(通常はベイの電力消費を抑え、また偶然ワイヤレスネットワークに接続してしまわないようにする目的で) radio frequency kill state がセットされているため、ワイヤレスカードの有効化は失敗しています。

iw コマンド

ワイヤレスネットワークカードのドライバーが nl80211 スタックをサポートしていれば、 net-wireless/iw パッケージで提供される iw コマンドで、認識されているワイヤレスカードを表示できます:

root #iw dev
   phy#0
	Interface wlan0
		ifindex 4
		type managed

dmesg

dmesg の出力をチェックしてください。

user $dmesg | grep -i -E 'xx:xx.x|wlan|iwl|80211'

必ず置き換えてください。

トラブルシューティング

さらなる情報

外部の情報