概要
Rasberry Pi 4にUbuntu server 18.04をインストールする方法について説明します。
他にも説明している記事はありますが、自分に必要な情報がまとまっている記事がなかったため、作成しました。
基本的には、公式のインストールガイドの通りです。
(追記)
- 2020/12/05
- Bluetooth, raspi cameraの設定
環境
- Rasberry Pi 4 (8GB)
- Ubuntu server 18.04 (64 bit)
- SDカード : サンディスク 32GB
インストール手順
OSイメージのダウンロード
ここからイメージをダウンロードします。Ubuntu 18.04のDownload 64-bitを選択します。
OSイメージの解凍
$ xz -dv ubuntu-18.04.4-preinstalled-server-arm64+raspi4.img.xz
OSイメージをSDカードに書き込み
公式では、Raspberry Pi Imagerを使っていますが、自分はコマンドで直接書き込みました。
また、書き込みの前にデバイス名をチェックする必要があります。デバイス名を間違えると、HDDのデータ等を上書きしてしまう恐れがあります。
$ df -h # デバイス名のチェック。こちらの環境では/dev/sde1, /dev/sde2でした
$ sudo umount /dev/sde1
$ sudo umount /dev/sde2
$ sudo dd bs=4M if=ubuntu-18.04.4-preinstalled-server-arm64+raspi3.img of=/dev/sde
Raspiの起動
SDカードをRaspiに挿入し、起動します。
起動後、パスワードを変更する必要があります。デフォルトでは、ユーザ名/パスワード共にubuntuです。その後、任意のパスワードを設定してください。
Wifiの設定
自分の環境ではWPA2-PSKかつステルスモードでwifiを使用しているので、この環境の設定を行います。
Network Managerの設定
wifiを使用するためにはNetwork Managerをインストールする必要がります。そのため有線LANを接続し、以下コマンドを実行します。
$ sudo apt update
$ sudo apt install network-manager
netplanの設定
Ubuntu 18.04では、netplanを使ってネットワークの設定を行います。
$ sudo vi /etc/netplan/50-cloud-init.yaml
network:
version: 2
renderer: NetworkManager
ethernets:
eth0:
dhcp4: true
optional: true
wifis:
wlan0:
dhcp4: true
optional: true
access-points:
"{接続するSSID}":
auth:
key-management: psk
password: "{パスワード}"
設定の有効化
$ sudo netplan apply
ネットワークの接続
接続する際に、ネットワークの名前を確認します。
$ sudo nmcli c
NAME UUID TYPE DEVICE
netplan-wlan0-{SSID} (略) wifi
ネットワーク接続
$ sudo nmcli c up netplan-wlan0-{SSID}
ステルス機能使用時にデフォルトで接続するための設定
$ sudo nmcli c mod netplan-wlan0-{SSID} 802-11-wireless.hidden true
$ ifconfig
で確認し、ネットワークに接続できていれば完了です。
sshはデフォルトで使用できるようになっているため、すぐに使用可能です。
Bluetoothの設定
Bluetoothを使うには、pi-bluetooth bluetooth bluez
をインストールすればいいのですが、そのままインストールしようとすると、
$ sudo apt install pi-bluetooth bluetooth bluez
...
dpkg: error processing archive /var/cache/apt/archives/bluez-firmware_1.2-4+rpt1~bionic1.0_all.deb (--unpack):
trying to overwrite '/lib/firmware/brcm/BCM43430A1.hcd', which is also in package linux-firmware-raspi2 1.20200601+arm64-0ubuntu2~18.04.1
Errors were encountered while processing:
/var/cache/apt/archives/bluez-firmware_1.2-4+rpt1~bionic1.0_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
というようなエラーが出てしまいます。
解決策を探したところ、こちらのようにすると、問題なくインストールできました。
pi-bluetoothなどのインストール
$ sudo add-apt-repository ppa:ubuntu-pi-flavour-makers/ppa
$ sudo apt update
$ sudo apt -y remove linux-firmware-raspi2
$ sudo apt -y install pi-bluetooth bluetooth bluez
$ cd /
$ sudo tar czf bluez-firmware.tgz lib/firmware usr/share/doc/bluez-firmware
$ list=$(cat << EOS
lib/systemd/system/bthelper@.service
lib/systemd/system/hciuart.service
lib/udev/rules.d/90-pi-bluetooth.rules
usr/bin/bthelper
usr/bin/btuart
usr/share/doc/pi-bluetooth
EOS
)
$ sudo tar czf pi-bluetooth.tgz $list
$ sudo apt -y remove bluez-firmware pi-bluetooth
$ sudo apt -y install linux-firmware-raspi2
$ sudo apt -y install raspberrypi-sys-mods rfkill
$ sudo tar xf pi-bluetooth.tgz
$ sudo tar xf bluez-firmware.tgz
$ sudo systemctl unmask hciuart
$ sudo systemctl enable hciuart
$ sudo reboot
bluetoothの有効化
一般ユーザを使用している場合は、そのユーザでもbluetoothを使えるように権限を付与します
$ sudo usermod -a -G bluetooth {ユーザアカウント}
$ sudo reboot
この後はbluetoothctl
コマンドからbluetoothデバイスとのペアリングをすることで使用できます
Raspiカメラの設定
Raspberry Pi専用カメラを使えるように設定します
カメラデバイスの有効化
$ sudo vi /boot/firmware/config.txt
start_x=1
gpu_mem=256
ファイルの最後に上記2行を追加し、リブートします。なお、gpu_mem
の値は、256でなくてもかまいません。
userlandのビルド
Ubuntu wikiによると、userlandというリポジトリをcloneしビルドすることでvcgencmd
コマンドが使用可能になります。
ただし64bit版はオフィシャルにはサポートされていないそうです。
自分がcloneしたのは f73fca015d421b763936667a0b58fe5024d59921
でした。
READMEによると64bit OSの場合は./buildme --aarch64とすればビルド可能とあり、それでビルドができたという記事もありますが、上記バージョンをそのままビルドするとエラーが発生しました。
コミットログを確認したところ、f97b1af1b3e653f9da2c1a3643479bfd469e3b74
で64bit用のビルドが設定がRevertされていました。
そのためこのコミットで行われた変更を再度戻し、また、それだけではビルドエラーが出たので修正も行いました。
自分が行った変更はgit hubにあげたので参考にしてください。
ビルド方法は以下になります。
$ sudo apt install build-essential cmake
$ git clone https://github.com/hiro-han/userland.git
$ cd userland
$ ./buildme --aarch64
これで /opt/vc/bin/ にvcgencmd
コマンドがインストールされます。
なお、自分の環境ではこれでvcgencmd
コマンドが動作しましたが、raspistill
コマンドは動作しませんでした。また、他のコマンドについては試していません。
ラズパイカメラを接続した状態で、
$ sudo /opt/vc/bin/vcgencmd get_camera
supported=1 detected=1
となれば成功です。
参考
公式のインストールガイド
Ubuntuのダウンロード
wifiの設定
Ubuntu wiki
bluetoothの設定について