All Articles

RaspberryPi 4 Model Bに Ubuntu Server 20.04.1 をインストールして netplan で Wifi に接続

はじめに

こんにちは。
およそ半年ぶりの更新です。

先週のAmazonサイバーマンデーセールでこちらのRaspberryPi4を購入しました。

Amazon.co.jp: LABISTS Raspberry Pi 4 4GB キット(技適マーク入)

このRaspberryPi4、RAMが4GBあり、Wifi接続やUbuntuDesktopのインストールも可能ということで、うきうきでセットアップをしていたところ、「netplan apply」の実行に失敗する問題が発生しました。
こちらについては、公式からダウンロードしたUbuntu Server 20.04.1のISOに含まれる「netplan.io」のバグが原因であり、一度有線接続を実施してアップデートすることで問題が解消されました。

今回の記事では、上記のトラブルシューティングも含めて、RaspberryPi4にUbuntu Server 20.04.1をインストールしてWifi接続するまでの手順を備忘録としてまとめておきます。

RaspberryPi4用のOSイメージとイメージライターをダウンロードする

RaspberryPi4用のOSイメージは、こちらの公式ページからダウンロードしました。
本記事執筆時点で推奨されているのは、LTS版のUbuntu Server 20.04.1でしたので、こちらをダウンロードしました。

Install Ubuntu on a Raspberry Pi 2, 3 or 4 | Ubuntu

ちなみに、OSのbit数はインストールするRaspberryPiに合わせて選択してください。
僕が購入したこちらの製品は、RaspberryPi4 Model Bであり、CPUは「BCM2711」というものを使用しているようです。

Amazon.co.jp: LABISTS Raspberry Pi 4 4GB キット(技適マーク入)

「BCM2711」についての詳細は以下のドキュメントにも記載されてます。
documentation/hardware/raspberrypi/bcm2711 at master · raspberrypi/documentation

こちらの説明を見ると、下記のとおり、ARMコアで64bitのCPUであることがわかります。
そのため、32bit版も(おそらく)動くとは思いますが、今回は64bit版をインストールすることにしました。

ARMコアは最大1.5GHzで実行できるため、Pi4はRaspberryPi 3B +よりも約50%高速になります。
新しいVideoCoreVI3Dユニットは最大500MHzで動作するようになりました。
ARMコアは64ビットであり、VideoCoreは32ビットですが、新しいメモリ管理ユニットがあります。
これは、以前のバージョンよりも多くのメモリにアクセスできることを意味します。

参考:documentation/hardware/raspberrypi/bcm2711 at master · raspberrypi/documentation

RaspberryPi公式のイメージライターをインストールする

次に、ダウンロードしたOSをブート用のSDカードに書き込むためのイメージライターをインストールします。

RaspberryPi公式が提供しているイメージライターが、シンプルかつ動作も軽快なのでおすすめです。
下記のリンク先から、Linux/Mac OS/Windows/Chrome OSの各OSに対応したプログラムがダウンロード可能です。

Installing operating system images - Raspberry Pi Documentation

無事にインストールが完了すると、こんな感じの画面が出てくるので、書き込み先と、先ほどダウンロードしたOSイメージを指定します。

img

これでブートメディアの作成が完了しました。

Ubuntuを起動する

RaspberryPi4に先ほどのSDカードを差し込んだら、USB-Cの端子に電源を差し込んで起動しましょう。
この際、外部ディスプレイとキーボードの接続が必要なので注意してください。

外部ディスプレイの端子はMicro HDMIという規格でした。(初めて見た)

OSが起動したら、ログインを求められます。
初期設定はユーザ名、パスワードともに「ubuntu」です。

ログイン後、任意のパスワードの設定が完了したら起動完了です。
おめでとうございます。

Ubuntuのネットワーク設定をする

ここからは普通のLinuxの設定と同じなので、特に困ることはないかもしれません。
面倒なので「sudo su」でルートログインして進めていきます。

まずは、50-cloud-init.yamlをコピーした99-cloud-init.yamlを作成し、それをベースに編集していきます。

50-cloud-init.yamlが何者で、なぜ99-cloud-init.yamlを作成する必要があるのかについては、【Ubuntu】 /etc/netplan/50-cloud-init.yamlを編集するの止めろ - Qiitaが参考になります。

cp /etc/netplan/50-cloud-init.yaml /etc/netplan/99-cloud-init.yaml
vi /etc/netplan/99-cloud-init.yaml

次に、こちらのファイルを以下のように編集します。
ネットワークインターフェースの名称については、おそらくwlan0が初期設定かと思いますが、念のため「/sbin/ifconfig」で確認してもいいかもしれません。

network:
    version: 2
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    wifis:
        wlan0:
            access-points:
                "自分のSSID":
                    password: "パスワード"

            dhcp4: false
            addresses: [固定IP/24]
            gateway4: デフォルトゲートウェイ
            nameservers:
                addresses: [DNSサーバのアドレス]

さて、この設定で「netplan apply」…、を実行するとエラーが発生します。

Warning: The unit file, source configuration file or drop-ins of netplan-wpa-wlan0.service ch
anged on disk. Run 'systemctl daemon-reload' to reload units.
Warning: The unit file, source configuration file or drop-ins of netplan-wpa-wlan0.service ch
anged on disk. Run 'systemctl daemon-reload' to reload units.

上記のエラーについては、冒頭に記載のとおりnetplan.ioのバグなので、「systemctl daemon-reload」では解消されません。

Bug #1874494 “netplan apply does not remove systemd service for …” : Bugs : netplan.io package : Ubuntu

解消のためには、一度有線でインターネットに接続し、アップグレードを実施する必要があります。

sudo apt update && sudo apt upgrade -y

上記のアップグレードを確認すると「netplan.io」モジュールがアップデートされたことが確認できます。
もう一度以下のコマンドを実行します。

netplan apply

これで設定が反映され、RaspberryPi4をWifiに接続することができました。

まとめ

RaspberryPi4は数千円で買えるにも関わらず、かなりのスペックでびっくりですね。
最近は株価解析スクリプトとかを作成しているので、それを動かすサーバ代わりにしようかなと思ってます。

参考