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

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は、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"
すべてのUSBアダプタをリストするだけでなく、PCIワイヤレスデバイスについてシステムを調べることもできます。これを行うには、次のコマンドを実行します:
sudolspcilsusbコマンドと同様に、lspciの出力に「ネットワークコントローラ」または「イーサネットコントローラ」ラベルを含む行を探します。

現在、ワイヤレスデバイスが使用している正確なドライバモジュールを次のコマンドを実行して見つけます:
sudo lshw -C network |grep"driver"「driver」変数の値を強調表示し、クリップボードにコピーします。

問題2: ドライバモジュールが欠落している
lsusbおよびlspciのコマンドが成功したことに続いて、Linuxディストリビューションがワイヤレスカードを認識できることを確認すると、ファームウェアが機能していると仮定できますが、システムがデバイスで何をするべきか分かりません。ここでドライバまたはモジュールが必要になります。
次のコマンドを入力し、「modulename」をクリップボードの内容と置き換えます:
sudo modprobe modulenameたとえば、ワイヤレスドライバが「iwlwifi」の場合、次のようになります:
sudo modprobe iwlwifiその後、sudo lsmod | grep "modulename"を実行して、Linuxカーネルが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でこれを行うには、デスクトップ右上隅のコントロールメニューボタンをクリックし、ギアアイコンを選択します。

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

ワイヤレスアクセスポイント名を含む行のギアアイコンを選択します。
小さいウィンドウの上部バーでIPv4タブをクリックします。

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

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

新しいターミナルを開き、次のコマンドを実行して、以前のDNSリゾルバデータを削除します:
resolvectl flush-caches次のコマンドを実行して、システムが新しいDNSリゾルバ設定を使用しているか確認します:
resolvectl status |grep"現在のDNSサーバー"現在のDNS設定がネットワークの問題を解決したかどうかを、ウェブブラウザでウェブページを読み込むことによって確認します。

知っておくべきこと: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.comWi-Fi機能を回復するためにネットワークマネージャを再インストールします:
sudo apt install network-manager新しいネットワークマネージャのインストールを読み込むためにマシンを再起動します。
Wi-Fiモジュールとカーネルドライバがどのように機能するかを理解することは、Linuxの内部を学ぶための第一歩に過ぎません。このオペレーティングシステムの技術面をさらに探求するには、Shufflecakeを使用して隠しファイルシステムを作成してください。