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テザリングの準備
まず以下の物理的接続を行います。
- スマートフォンとMacBookをUSBケーブルで接続し、スマートフォンの設定からUSBテザリングを有効にします。
- 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テザリングを使ってインターネット接続を確保します。
sudo vi /etc/netplan/60-tmp-tethering.yaml
(ファイル名は任意)のコマンドを入力して、ファイルを作成します。テキストエディタはここではviを使っていますが、他のエディタでも構いません。- 以下の通りファイルの中身を編集します。viの場合、
i
でまず入力モードにしたあとescキー
→:wq
で保存して終了します。この時、USBテザリングの準備 で確認したen~
始まりのデバイス名を下記例で言うところのenp0s20u1
を置き換えてください。1 network: 2 version: 2 3 renderer: networkd 4 ethernets: 5 enp0s20u1: 6 dhcp4: true 7
- 以下のコマンドを実行して、設定を反映します。
ここで設定不備などあればErrorが出ます。特に問題なければ下記のようになるので、1 sudo netplan try 2
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ドライバのインストール
- 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
- ターミナルを開き、以下のコマンドを入力して必要なパッケージをインストールします。
ただし、これはBroadcomのBCM4360の場合であり、他のネットワークカードの場合は適切なドライバをインストールしてください。1sudo apt-get update 2sudo apt-get install firmware-b43-installer 3sudo reboot 4
- 再起動後、再度
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
- 再び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
- 再び以下のコマンドを実行して、設定を反映します。
これでWiFiを使えるようになるはずなのですが、私の環境ではうまくいきませんでした。1 sudo netplan try 2
NetworkManagerに変更
追加対応ですが、networkdからNetworkManagerに変更します。
これらは本来、serverではnetworkdを、desktopではNetworkManagerを使うという想定ですがWiFi利用において私はうまくいかなかったので切り替えてみます。
- 以下のコマンドを実行して、NetworkManagerをインストールします。
1sudo apt install network-manager 2
- netplanの設定をnetworkdからNetworkManagerに変更します。先ほどの
90-wifi.yaml
のrendererだけを変えます。1 network: 2 version: 2 3 renderer: NetworkManager 4# 以下略 5
- USBテザリングを外した上で
sudo apt update
などでインターネット接続が確認できるか確認してみてください。 - ネット接続できることが分かったら、テザリング用のnetplan設定は不要なので削除しておいてください。
1sudo rm /etc/netplan/60-tmp-tethering.yaml 2
まとめ
本記事では、中古のMacBook AirにUbuntu Serverをインストールし、WiFiを使用できるようにする手順を詳しく解説しました。特に、インターネット接続がない状態でのWiFiドライバのインストールに苦労した経験を共有し、スマートフォンを利用したUSBテザリングを活用する方法を示しました。
この手順が、同様の環境で作業を行う他のユーザーにとって役立つことを願っています。Ubuntuの柔軟性を活かして、快適なサーバーライフを楽しんでください。