Wi-FiがLinuxで機能しない? 修正方法はこちら

Wi-Fiロゴのついたウィンドウの写真

Linuxでユーザーが直面する大きな課題の一つはWi-Fiです。Wi-Fiドライバはカーネルに含まれていないことが多く、その結果、非Intel Wi-FiモジュールがLinuxでうまく動作しない問題が発生します。ここでは、LinuxでWi-Fiが機能しないときに何が起きているのか、そしてどのように修正するかを説明します。

目次

  • ハードウェアとソフトウェアのWi-Fiの問題
  • Ubuntu ISOからドライバをインストールする
  • 問題1: デバイスが検出されない
  • 問題2: ドライバモジュールが欠落している
  • 問題3: DNS
  • 問題4: ネットワークマネージャがない

ヒント:Linuxで保存されたWi-Fiパスワードを見つける方法を学びましょう。

ハードウェアとソフトウェアのWi-Fiの問題

Wi-Fi接続の問題は、ハードウェアの問題またはソフトウェアの問題である可能性があります。ハードウェアの問題は比較的診断が容易です。ターミナルを開き、次のコマンドを入力するだけです:

ping localhost

localhostループバックテストを表示するターミナル

これは、物理ハードウェアが正常に機能しているかどうかを確認する簡単な方法です。localhostは、NICの回路を確認するためのアドレスとして機能します。これが機能しない場合は、ハードウェアの修理が必要です。自分で行うか他の人に依頼してください。

このpingが正常に返されるか、Wi-Fiカードが見えない場合は、ソフトウェアの問題がある可能性が高いです。

それ以外にも、ip addrを実行して、システムがアクティブなネットワークインターフェースを検出しているか確認できます。ほとんどのディストリビューションは、現在アクティブな無線カードを「wl」とラベル付けし、コンピュータのマザーボードのバスおよびスロット番号が続きます。

たとえば、「wlp0s1」というラベルは、バス0、スロット1の無線ネットワークインターフェースであることを意味します。

システム内で現在動作している無線デバイスを強調表示するターミナル

注意:ウェブをブラウジングできない場合は、LinuxマシンでIPv6を無効にする必要があるかもしれません。

Ubuntu ISOからドライバをインストールする

ディストリビューションがWi-Fiネットワークをまったく検出しない場合やエラーが発生している場合は、Ubuntu ISOファイルからWi-Fiドライバをインストールまたは再インストールを試みてください。まず、対応するUbuntuバージョンのUbuntu ISOをダウンロードする必要があります。(おそらく、別のデバイスでダウンロードするか、Ubuntu上のEthernet接続を使用してダウンロードする必要があります。)

ターミナルを開き、次のコマンドを入力してUbuntu ISOを仮想ドライブにマウントします:

sudomkdir/media/cdrom  
sudomount-o loop ~/Downloads/ubuntu-*.iso /media/cdrom

ダッシュボードから「ソフトウェアアップデータ」を開き、ウィンドウの左下隅にある設定ボタンをクリックします。

ソフトウェアアップデータユーティリティの「設定...」ボタンを強調表示するスクリーンショット

追加のドライバタブをクリックし、無線ネットワークアダプタオプションを選択して変更を適用をクリックします。

問題1: デバイスが検出されない

無線デバイスがUbuntu(またはそのディストリビューション)によって検出されない場合は、ターミナルセッションを開き、次のコマンドを入力します:

sudo lsusb

このコマンドは、現在マシンに接続されているすべてのUSBデバイスを表示します。「ワイヤレスアダプタ」または「RTL」を含む行を探します。

sudo lsusb |grep"RTL"

Linuxで現在アクティブなUSB Wi-Fiデバイスを示すターミナル

すべてのUSBアダプタをリストするだけでなく、PCIワイヤレスデバイスについてシステムを調べることもできます。これを行うには、次のコマンドを実行します:

sudolspci

lsusbコマンドと同様に、lspciの出力に「ネットワークコントローラ」または「イーサネットコントローラ」ラベルを含む行を探します。

Ubuntu LinuxのPCIベースのWi-Fiデバイスを強調表示するターミナル

現在、ワイヤレスデバイスが使用している正確なドライバモジュールを次のコマンドを実行して見つけます:

sudo lshw -C network |grep"driver"

「driver」変数の値を強調表示し、クリップボードにコピーします。

現在アクティブなWi-Fiデバイスのドライバを強調表示するターミナル

問題2: ドライバモジュールが欠落している

lsusbおよびlspciのコマンドが成功したことに続いて、Linuxディストリビューションがワイヤレスカードを認識できることを確認すると、ファームウェアが機能していると仮定できますが、システムがデバイスで何をするべきか分かりません。ここでドライバまたはモジュールが必要になります。

次のコマンドを入力し、「modulename」をクリップボードの内容と置き換えます:

sudo modprobe modulename

たとえば、ワイヤレスドライバが「iwlwifi」の場合、次のようになります:

sudo modprobe iwlwifi

その後、sudo lsmod | grep "modulename"を実行して、LinuxカーネルがWi-Fiデバイスを正しく読み込んだかどうかを確認します。

現在のカーネルにWi-Fiモジュールが読み込まれていることを示すターミナル

ブート時にドライバモジュールを自動的に読み込む

珍しいことですが、時々モジュールはブートから持続しません。この場合、永続的に読み込ませることができます。ターミナルに以下のコマンドを入力します:

sudonano/etc/modules

ファイルの一番下にモジュール名を追加し、ファイルを保存します。

ブート時にカーネルモジュールを読み込むことができる構成ファイルを表示するターミナル

マシンを再起動して、Linuxカーネルがワイヤレスデバイスを正しく読み込んでいるか確認します。

知っておくべきこと:今日、Ubuntuで自分のカスタムLinuxカーネルをインストールして、コンピュータがハードウェアを管理する方法を学びましょう。

問題3: DNS

DNSが問題になることはまれですが、接続の問題が続く場合は調査する価値があります。ターミナルから次のコマンドを入力して、システムのデフォルトDNSリゾルバを確認します:

nmcli device show INTERFACE-NAME |grep IP4.DNS

デフォルトでは、これはルーターのIPアドレスに設定されています。これが機能しない場合は、「wlp0s1」をワイヤレスで使用しているものに変更する必要があるかもしれません。次のコマンドも使って、デザインationを取得できます:

ip addr|grep": "

この情報を入手したら、あなたのDNSリゾルバのアドレスをpingします。それが機能すれば、GoogleのDNSリゾルバのような外部ネットワークにもpingを送信できます:

ping 8.8.8.8

ネットワーク内のすべてのデバイスがページ読み込みエラーを出している場合は、ルーターのDNSリゾルバをGoogleまたはOpenNICのサーバーに変更してください。これは通常、デバイスの管理コンソールにアクセスすることで実行されます。ほとんどのルーターでは、ウェブブラウザで「192.168.0.1」または「192.168.254.254」にアクセスすることで見つけることができます。

NetworkManagerにカスタムDNSサーバーを追加する

とはいえ、デバイスごとにDNSリゾルバを変更することもできます。Ubuntuでこれを行うには、デスクトップ右上隅のコントロールメニューボタンをクリックし、ギアアイコンを選択します。

Gnomeでの設定ボタンを強調表示するスクリーンショット

Wi-Fiカテゴリをクリックし、次に表示可能なネットワークカテゴリを探します。

Wi-Fiカテゴリの可視ネットワークセクションを強調表示するスクリーンショット

ワイヤレスアクセスポイント名を含む行のギアアイコンを選択します。

小さいウィンドウの上部バーでIPv4タブをクリックします。

アクセスポイント設定メニューのIPv4タブを強調表示するスクリーンショット

DNSセクションに移動し、自動スイッチをオフに切り替えます。

IPv4タブの下にあるDNS「自動」スイッチを強調表示するスクリーンショット

DNSテキストボックスに「8.8.8.8,8.8.4.4」と入力し、適用をクリックして設定を適用します。

現在のWi-Fi接続のカスタムDNSリゾルバを強調表示するスクリーンショット

新しいターミナルを開き、次のコマンドを実行して、以前のDNSリゾルバデータを削除します:

resolvectl flush-caches

次のコマンドを実行して、システムが新しいDNSリゾルバ設定を使用しているか確認します:

resolvectl status |grep"現在のDNSサーバー"

現在のDNS設定がネットワークの問題を解決したかどうかを、ウェブブラウザでウェブページを読み込むことによって確認します。

カスタムDNSリゾルバを使用しているUbuntuマシン上のMakeTechEasierウェブサイトのスクリーンショット

知っておくべきこと:Linuxでdigを使用して、名前サーバーやDNSリゾルバについてもっと学びましょう。

問題4: ネットワークマネージャがない

ネットワークマネージャを削除したり、誤ってアンインストールしたとしましょう。これは本当に厄介な状況で、インターネットもなく、ネットワークマネージャもないのですが、あなたができることがあります。

パッケージがまだキャッシュ内にあると仮定すると、ターミナルで次のコマンドを入力します:

# Debian/Ubuntu  
sudo apt install network-manager  
  
# Fedora  
sudo dnf install NetworkManager  
  
# Arch Linux  
sudo pacman -Syu networkmanager

これが機能しない場合、wpa_supplicantを使用してシステムを無線アクセスポイントに強制的に接続することができます。これは、ネットワークマネージャを使用せずにアクスポイントに接続するためにワイヤレスデバイスのドライバを使用するコマンドラインツールです。

始めに、wpa_supplicantのための設定ファイルをお気に入りのテキストエディタを使って作成します:

sudonano/etc/wpa_supplicant.conf

設定ファイル内に次のコードブロックを貼り付け、「SSID」と「PASSWORD」をルーターのアクセスポイント名とパスワードに置き換えます:

network={  
ssid="SSID"  
password="PASSWORD"  
}

設定ファイルを保存し、次のコマンドをターミナルセッションに貼り付けます:

sudo wpa_supplicant -B-i INTERFACE-NAME -c/etc/wpa_supplicant.conf -D nl80211

「-i」フラグの値をワイヤレスインターフェースの名前で置き換えます。

注意:このコマンドは、新しいワイヤレスカードでのみ機能します。古いWi-Fiカードをリンクしようとしている場合は、「-D」フラグの値を「wext」に置き換えます。

ルーターから新しいIPアドレスを要求するために、DHCPデーモンをリロードします:

sudo dhclient INTERFACE-NAME

外部サイトにpingを送信して、Wi-Fi接続が機能しているかどうかをテストします:

ping-c5 maketecheasier.com

Wi-Fi機能を回復するためにネットワークマネージャを再インストールします:

sudo apt install network-manager

新しいネットワークマネージャのインストールを読み込むためにマシンを再起動します。

Wi-Fiモジュールとカーネルドライバがどのように機能するかを理解することは、Linuxの内部を学ぶための第一歩に過ぎません。このオペレーティングシステムの技術面をさらに探求するには、Shufflecakeを使用して隠しファイルシステムを作成してください。