Wi-Fi

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Wi-Fi and the translation is 100% complete.
Resources

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

インストール中の Wi-Fi の使用

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

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

ハードウェア検出

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

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

root #lspci -k

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

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

root #lspci -n

コマンドが生成した PCIID のリストをコピーしてください。

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

user $lsusb

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

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

root #lshw | grep -i driver | perl -pe 's/^.*driver=(\S+).*$/$1/g;' | sort -u

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

カーネル

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

IEEE 802.11

少なくとも cfg80211 (CONFIG_CFG80211) と mac80211 (CONFIG_MAC80211) を有効にしてください。

カーネル linux-4.19 の例
[*] Networking support  --->
    [*] Wireless  --->
        <M>   cfg80211 - wireless configuration API
        [ ]     nl80211 testmode command
        [ ]     enable developer warnings
        [ ]     cfg80211 certification onus
        [*]     enable powersave by default
        [ ]     cfg80211 DebugFS entries
        [ ]     support CRDA
        [ ]     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つです。いくつかのワイヤレスドライバーはこれを有効にしないといけないかもしれません。

重要
wireless configuration API (CONFIG_CFG80211) をモジュールとしてビルド (<M>) するのではなく、カーネルに組み込む (<*>) 場合、ドライバが regulatory.db/lib/firmware からロードできず、規制ドメインサポートが機能しなくなるでしょう。CONFIG_CFG80211=m を設定するか、regulatory.dbregulatory.db.p7s (net-wireless/wireless-regdb にあります) を CONFIG_EXTRA_FIRMWARE に設定してください。

WEXT

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

カーネル
[*] Networking support  --->
    [*] Wireless  --->
        [*]     cfg80211 wireless extensions compatibility

デバイスドライバー

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

カーネル
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 --->
    Accelerated Cryptographic Algorithms for CPU (x86)  --->
       <*> Ciphers: AES, modes: ECB, CBC, CTS, CTR, XTR, XTS, GCM (AES-NI)
重要
ドライバーをモジュールとして (<M>) ではなくカーネル内にビルドする (<*>) 場合には、ファームウェアも同様にカーネル内にビルドする必要があります。
設定を変更した後は、カーネルを再構築するのを忘れないようにしましょう。

LED サポート

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

カーネル
Device Drivers  --->
    [*] LED Support  --->
        <*>   LED Class Support
 
[*] Networking support  --->
    [*] Wireless  --->
        [*] Enable LED triggers

ファームウェア

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

root #emerge --ask sys-kernel/linux-firmware
Wi-Fi デバイス ドライバ ファームウェア 備考
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 を参照
Ralink/MediaTek USB devices 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 に置く必要があります。

ネットワークデバイス名

警告
このセクションの情報は古くなっています。更新された手順については Udev#省略可能: 予測可能なネットワークインターフェース名を無効化または上書きするを参照してください。

カーネルによって提供される eth0 や wlan0 のようなネットワークデバイス名は、通常は /lib/udev/rules.d/80-net-name-slot.rules での udev ルールによってシステムの起動時に変更されます (dmesg 参照)。

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

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

無線サプリカント

無線ネットワークが WPA または WPA2 で設定されている場合には、wpa_supplicant または iwd などの無線サプリカントを使う必要があります。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'

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

トラブルシューティング

インストールされていないファームウェアを探す

システムのブート時に、カーネルは各カードに対して適切なファームウェアを探そうとします。これは、現在のブートの dmesg または journalctl (systemd) の出力を検索することで発見できます。

user $journalctl -b 0 --dmesg | grep -i firmware
Oct 05 14:51:09 maffbook kernel: Spectre V2 : Enabling Restricted Speculation for firmware calls
Oct 05 14:51:09 maffbook kernel: ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
Oct 05 14:51:09 maffbook kernel: sgx: [Firmware Bug]: Unable to map EPC section to online node. Fallback to the NUMA node 0.
Oct 05 14:51:09 maffbook kernel: i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
Oct 05 14:51:09 maffbook kernel: ACPI: video: [Firmware Bug]: ACPI(PEGP) defines _DOD but not _DOS
Oct 05 14:51:09 maffbook kernel: iwlwifi 0000:00:14.3: loaded firmware version 46.6b541b68.0 9000-pu-b0-jf-b0-46.ucode op_mode iwlmvm
Oct 05 14:51:09 maffbook kernel: psmouse serio1: elantech: assuming hardware version 4 (with firmware version 0x5f2001)
Oct 05 14:51:09 maffbook kernel: Bluetooth: hci0: Firmware revision 0.1 build 6 week 12 2021
Oct 06 17:26:26 maffbook kernel: Bluetooth: hci0: Minimum firmware build 1 week 10 2014
Oct 06 17:26:26 maffbook kernel: Bluetooth: hci0: Found device firmware: intel/ibt-17-16-1.sfi
Oct 06 17:26:28 maffbook kernel: Bluetooth: hci0: Waiting for firmware download to complete
Oct 06 17:26:28 maffbook kernel: Bluetooth: hci0: Firmware loaded in 1484394 usecs
Oct 06 17:26:28 maffbook kernel: Bluetooth: hci0: Firmware revision 0.1 build 6 week 12 2021

Wi-Fi アダプタが 5 GHz ネットワークを見つけることができず、接続できない

WPA または WPA2 のネットワークには、接続するために AES ではなく、レガシーな TKIP プロトコルをいまだに使用しているものがあるかもしれません。tkip USE フラグ付きで net-wireless/wpa_supplicant をインストールし、システムを再起動してみてください。

フォーラムのスレッド

関連項目