2019年10月27日日曜日

Raspberry Pi 3B+を64bit版Ubuntuで動かしてWiFiに接続してみた


背景

Raspbian以外のOSでRaspberry Piを動かしたことが無かったので、ROSを利用する際に都合が良いUbuntuの64bit版でRaspberry Piを動かしてみました。

ところどころ詰まるところがあったので、備忘録を兼ねてやったことを共有します。

使ったもの

  • Raspberry Pi 3B+
    スイッチサイエンス、秋月電子などで買えます。
  • 32GB microSDカード
    Ubuntuのimageが3GB弱だったので4GBあれば動かせると思いますが、ソフトウェアをインストールすることを考慮すると8GB以上の容量のものを使うのが良いと思います。
  • Ubuntu 64bit Raspberry Pi向けイメージ(Raspberry PiのページからダウンロードできるMateではありません。)
    下記のページのARM64部分からダウンロードできるRaspberry Pi向けのimgファイルです。
    今回は「ubuntu-18.04.3-preinstalled-server-arm64+raspi3.img.xz」を利用しました。
    ARM/RaspberryPi - Ubuntu
  • イメージを書き込むためのPC
    Ubuntu18.04が動いているノートPCを利用しました。
  • Raspberry Piの電源
    5V3Aの電源を利用しました。
  • Raspberry Piを操作するための、モニタ、キーボード

SDカードにUbuntu 64bit版を書き込み

LinuxだとRaspbianを書き込む時と同様にddコマンドで書き込めます。
ARM/RaspberryPi - Ubuntuからダウンロードしたファイルをファイルを展開して書き込むコマンドはこちらです。
unxz ubuntu-18.04.3-preinstalled-server-arm64+raspi3.img.xz
sudo dd bs=M4 of=/dev/mmbclk0 if=ubuntu-18.04.3-preinstalled-server-arm64+raspi3.img conv=fsync

WindowsやMACの場合は、imgファイルの書き込み方法を調べ書き込んでください。

起動

SDカードができたらRaspberry Piに差し込んで起動します。
初回起動すると/etc/netplan/50-cloud-init.yamlが作られるので、それにWiFi情報を設定します。

初期アカウントのuserはubuntu、パスワードもubuntuです。
初回ログイン時にパスワードの変更を求められるので、パスワードを変えてください。

WiFi情報を設定

初回起動ができたら、Raspberry Piを起動してUbuntuにログインするかSDカードをPCで編集するかして、netplanディレクトリにある50-cloud-init.yamlにwifis以下の行を追加します。
「wifi id」と「wifi password」は接続したいWiFiのidとパスワードに置き換えてください。

/etc/netplan/50-cloud-init.yaml
network:
    version: 2
    ethernets:
        eth0:
            dhcp4: true
            match:
                macaddress: <MAC ADDRESS>
            set-name: eth0
    # ここから下の行を追加
    wifis:
        wlan0:
            optional: true
            dhcp4: true
            access-points:
                "wifi id":
                    password: "wifi password"

Raspberry Piにログインして編集する場合、下記のコマンドで書き込んだ情報が正しいか確認できます。
sudo netplan --debug try
sudo netplan --debug generate

良さそうなら、下記のコマンドで設定情報を適用できます。
sudo netplan --debug apply

入力した情報が合っていれば、再起動するとWiFiに接続できると思います。

Raspberry Piのipはifconfigコマンドを実行すると、wlan0の部分に表示されます。
ifconfig

ipが分かればubuntuユーザーに対してsshでログインできます。

余談: WiFi設定以外の設定

ここの設定は「Raspberry Pi 3にROS2をインストール」を参考にしました。

自動起動を無効化

無効化しておくと「あれ?aptコマンドがなぜかロックされていて欲しいプログラムをインストールできない。」という場面が減ります。

sudo sed -i 's/1/0/g' /etc/apt/apt.conf.d/20auto-upgrades

ネットワーク接続待機を停止

起動が遅い原因の1つなのでインターネットに繋がって無くても待たないようにします。
これが有効だと3分くらいかかりますが、無効にすると1分くらいで起動してくれます。

systemctl disable systemd-networkd-wait-online.service
systemctl mask systemd-networkd-wait-online.service

まとめ

64bit版のUbuntuでRaspberry PiをWiFiに繋げて動かせました。

参考

Raspberry Pi 3にROS2をインストール
How to setup the Raspberry Pi 3 onboard WiFi for Ubuntu Server 18.04 with netplan?
Raspberry Pi 2/3B/B+ Wireless Bridge using Ubuntu Server 18.04 ARM Image and Netplan

0 件のコメント :