Ubuntu ServerでWiFiを使えるようにする手順(MacBook Airでの事例)

Ubuntu ServerでWiFiを使えるようにする手順(MacBook Airでの事例)
カテゴリ
技術
タグ
Ubuntu Server
WiFi
Linux

Ubuntu ServerでWiFiを使えるようにする手順(MacBook Airでの事例)

はじめに

自宅用にServerマシンを構築しようと考えました。k8sを入れたり、色々と使い倒したかったので、少々スペックが欲しかったこともあり、伝手で中古のMacBook Airを安く手に入り、その上にUbuntuをインストールしました。

Ubuntuをインストールすること自体は簡単ですが、WiFiを使えるようにするのが大変面倒でした。ネット上でも同様の苦労が多数見受けられたので、私も事例を残しておきたいと思います。インターネット接続がない状態での作業は、特にWiFiドライバのインストールにおいて苦労することがあります。本記事では、スマートフォンを使ったUSBテザリングを利用して、Ubuntu上でWiFiを使えるようにする手順を紹介します。

環境情報

  • MacBook Air(2017)
    • CPU: Intel Core i5-5350U @ 1.80GHz
    • RAM: 8GB
    • GPU: Intel HD Graphics 6000
    • SSD: 128GB
    • WiFi: Broadcom BCM4360
  • Ubuntu Server 22.04 LTS
    • 上記MacBook Airにインストール済み。

手順

初期状態の確認

ip aコマンドを実行して、WiFiデバイスが認識されていることを確認します。(仮にコマンドを使えない場合は、networkctlコマンドを使ってもOKです。)
下記のような出力になるのではないかと思います。
ip aコマンドの場合。

1ip a
21: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
3    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
4    inet 127.0.0.0/8 scope host lo
5       valid_lft forever preferred_lft forever
6

networkctlコマンドの場合。

1networkctl
2IDX LINK             TYPE               OPERATIONAL SETUP
3  1 lo               loopback           carrier     unmanaged
4

ここでのポイントはwl~始まりのデバイスがないことで、wlはwirelessを表し、つまりWiFiデバイスが認識されていないことです。
通常各種installをしていって解消していくわけですが、そのためのネットワーク接続がなくて困るわけです。
なので、USBテザリングを使ってインターネット接続を確保します。

補足

WiFi以外のネットワーク接続として、他の候補としては以下があります。

  • 有線LAN (→LANコネクタはMacBookにはなく、変換コネクタの類も持っていなかった)
  • Bluetooth (→Bluetoothの設定は面倒そうだったので避けた)

USBテザリングの準備

まず以下の物理的接続を行います。

  1. スマートフォンとMacBookをUSBケーブルで接続し、スマートフォンの設定からUSBテザリングを有効にします。
  2. MacBookにスマートフォンを接続します。

その状態で再度ip aコマンドを実行すると、en~始まりのデバイスが増えているはずです。enはethernetを表す有線接続のデバイスです。
その増えたen~始まりのデバイスをメモしておきます。ちなみにこれは接続するたびに変わるので、毎回確認が必要です。

1ip a
21: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
3    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
4    inet 127.0.0.0/8 scope host lo
5       valid_lft forever preferred_lft forever
62: enp0s20u1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
7    link/ether ab:cd:12:34:56:ef brd ff:ff:ff:ff:ff:ff
8    inet 192.168.119.142/24 brd 192.168.119.255 scope global dynamic noprefixroute enp0s20u1
9       valid_lft 86399sec preferred_lft 86399sec
10

USBテザリングの設定

次に、netplanを使って、USBテザリングを使ってインターネット接続を確保します。

  1. sudo vi /etc/netplan/60-tmp-tethering.yaml(ファイル名は任意)のコマンドを入力して、ファイルを作成します。テキストエディタはここではviを使っていますが、他のエディタでも構いません。
  2. 以下の通りファイルの中身を編集します。viの場合、i でまず入力モードにしたあと escキー:wq で保存して終了します。この時、USBテザリングの準備 で確認したen~始まりのデバイス名を下記例で言うところのenp0s20u1を置き換えてください。
    1 network:
    2   version: 2
    3   renderer: networkd
    4   ethernets:
    5      enp0s20u1:
    6         dhcp4: true
    7
  3. 以下のコマンドを実行して、設定を反映します。
    1 sudo netplan try
    2
    ここで設定不備などあればErrorが出ます。特に問題なければ下記のようになるので、Enterキー を入力して設定を適用します。
    1 Do you want to keep these settings?
    2 
    3 Press ENTER before the timeout to accept the new configuration
    4
    5 Chages will revert in 120 seconds
    6

これで暫定的なインターネット接続が確保されました。sudo apt update などでインターネット接続が確認できるか確認してみてください。

補足: netplanとは

netplanは、Ubuntu 17.10以降で採用されているネットワーク設定ツールです。 /etc/netplan/ にあるYAMLファイルをアルファベット順に読み取ってネットワーク設定を行います。 元々 /etc/netplan/50-cloud-init.yaml があるはずですが、それは編集せずに新しいファイルを作成します。

WiFiドライバのインストール

  1. PCI接続されているであろう内蔵ネットワークカードを lspci コマンドで確認します。grepでNetworkを含む行を抽出すると見やすいです。(ネットワークカードによって表記が違う場合もあるのでその場合はgrep無しで確認してください)
    1lspci | grep Network
    203:00.0 Network controller: Broadcom Inc. and subsidiaries BCM4360 802.11ac Wireless Network Adapter (rev 03)
    3
  2. ターミナルを開き、以下のコマンドを入力して必要なパッケージをインストールします。
    ただし、これはBroadcomのBCM4360の場合であり、他のネットワークカードの場合は適切なドライバをインストールしてください。
    1sudo apt-get update
    2sudo apt-get install firmware-b43-installer
    3sudo reboot
    4
  3. 再起動後、再度ip aコマンドを実行して、wl~始まりのWiFiデバイスが認識されていることを確認します。
    1ip a
    21: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    3    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    4    inet 127.0.0.0/8 scope host lo
    5       valid_lft forever preferred_lft forever
    62: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    7    link/ether zy:xw:98:76:54:vu brd ff:ff:ff:ff:ff:ff
    8    inet 192.168.11.10/24 brd 192.168.11.255 scope global dynamic noprefixroute wlp3s0
    9       valid_lft 167552sec preferred_lft 167552sec
    10
  4. 再びnetplanを使って、WiFi用の設定をsudo vi /etc/netplan/90-wifi.yaml(ファイル名は任意)のコマンドで以下の通りファイルの中身を編集します。
    この時、上記で確認したwl~始まりのデバイス名を下記例で言うところのwlp3s0を置き換えてください。また、{wifi_SSID_name}{your_wifi_password} はそれぞれ、WiFiのSSID名とパスワードに置き換えてください。
    1 network:
    2   version: 2
    3   renderer: networkd
    4   wifis:
    5     wlp3s0:
    6       dhcp4: true
    7       optional: true
    8       access-points:
    9         {wifi_SSID_name}:
    10           password: "{your_wifi_password}"
    11
  5. 再び以下のコマンドを実行して、設定を反映します。
    1 sudo netplan try
    2
    これでWiFiを使えるようになるはずなのですが、私の環境ではうまくいきませんでした。

NetworkManagerに変更

追加対応ですが、networkdからNetworkManagerに変更します。
これらは本来、serverではnetworkdを、desktopではNetworkManagerを使うという想定ですがWiFi利用において私はうまくいかなかったので切り替えてみます。

  1. 以下のコマンドを実行して、NetworkManagerをインストールします。
    1sudo apt install network-manager
    2
  2. netplanの設定をnetworkdからNetworkManagerに変更します。先ほどの 90-wifi.yaml のrendererだけを変えます。
    1 network:
    
    2   version: 2
    
    3   renderer: NetworkManager
    4# 以下略
    5
  3. USBテザリングを外した上でsudo apt update などでインターネット接続が確認できるか確認してみてください。
  4. ネット接続できることが分かったら、テザリング用のnetplan設定は不要なので削除しておいてください。
    1sudo rm /etc/netplan/60-tmp-tethering.yaml
    2

まとめ

本記事では、中古のMacBook AirにUbuntu Serverをインストールし、WiFiを使用できるようにする手順を詳しく解説しました。特に、インターネット接続がない状態でのWiFiドライバのインストールに苦労した経験を共有し、スマートフォンを利用したUSBテザリングを活用する方法を示しました。

この手順が、同様の環境で作業を行う他のユーザーにとって役立つことを願っています。Ubuntuの柔軟性を活かして、快適なサーバーライフを楽しんでください。


関連記事

  1. WindowsからLinuxへのSSH接続

    featured/ssh.webp

    WindowsマシンからLinux(UbuntuServer)への公開鍵を使ったSSH接続 単純なWindowsマシンからLinux(UbuntuServer)へのSSH接続の方法を紹介します。 特別な事はしませんが、よく忘れるので備忘です。 環境 Windows 11 Home…

  2. RaspberryPi4で新型コロナウイルス解析に貢献する

    はじめに 2019年末より、新型コロナウイルス(COVID-19)のパンデミックで世界中が大打撃を受けています。この感染拡大を防ぐべく、エンジニアとして何かできることは無いかと思い、「分散コンピューティングにRaspbe […]

  3. RaspberryPiのインストール中に初期画面に戻ってしまう現象

    Raspberry Pi3のインストールに初っ端からハマりました。インストールが全然進まず、エラーメッセージも無くすぐに初期画面に戻り、無限ループを繰り返すしかなくなります。原因が気付きにくかったのでここに残しておきます […]