Wi-Fi
この記事では、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 コントローラを検出します。この作業には、lspci や lsusb といったコマンドラインツールが利用できます。
起動した 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) を有効にしてください。
[*] 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.db と regulatory.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 ファイルシステムを使用する
- ip コマンドを使用する
- ifconfig コマンドを使用する
- iw コマンドを使用する
/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'
xx:xx.x
を lspci で得られたID(PCIID)に、wlan
をネットワークインターフェース名に、iwl
を 使用中のカーネルドライバに、
必ず置き換えてください。
トラブルシューティング
インストールされていないファームウェアを探す
システムのブート時に、カーネルは各カードに対して適切なファームウェアを探そうとします。これは、現在のブートの 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 をインストールし、システムを再起動してみてください。
フォーラムのスレッド
- Forum thread: BCM4352 wifi not working
- Forum thread: wireless lan can't get ip from access point では、間違ったIPアドレスである 169.254.x.x (リンクローカルアドレス)について説明されています。
- Forum thread: iwlwifi fails to load after upgrade to 3.17.0
- Forum thread: Where is my network !?
- Forum thread: broadcom-sta with BCM4331 issue after world update
- Forum thread: USB nano 0bda:b812 RTL88x2bu [AC1200] driver needed
関連項目
- Handbook:AMD64/Networking/Wireless
- AC1200 Wireless Adapters
- Iproute2 — a tool developed to unify network interface configuration, routing, and tunneling for Linux systems.
- Iwlwifi — Intel の現行の無線チップのための無線ドライバです。
- Qualcomm Atheros QCA6174 — a 802.11ac Wireless Network Adapter which is used in some laptops.