旬なネタが降ってきてくれたおかげで、今年も無事に
Qiita Advent Calendar に参加することができました。-
今年は、ようやく日本で遊ぶことができるようになった
Pi4 を使って戯れてみたいと思います。- 長くなったので、前後編に分割します。
- 前編では、Pi4 に Ubuntu Server 19.10.1 を install し、
初期設定を完了するまでを行います。
-
2020/02/15 追記:
-
Ubuntu 18.04.4 がリリースされ、
Pi4 でも bionic (LTS) が利用可能になったため、
そちらでも通用する内容に一部修正しました。
-
Ubuntu 18.04.4 がリリースされ、
12/13 日のこと
-
今年は Advent Calendar に乗り遅れちゃったなぁなどと思う、
ある日の朝、-
ドーン! → Ubuntu Weekly Topics
- 吉田史さん!いつも旬なニュースをありがとうございます
- 吉田史さん!いつも旬なニュースをありがとうございます
-
ドーン! → Ubuntu Weekly Topics
Pi4 向けの 64 bit OS の選択肢は、これまでにもいくつかありましたが、
4 GB RAM モデルで USB の動作がおかしくなる不具合が報告されており、
今回の Ubuntu Server 19.10.1 では、それが改善されているとのこと。早速、見てみます。
Ubuntu Server 19.10.1 for Pi4
-
- 一応、32 bit OS 版もあるようです。
-
You can install a desktop if you like
- Server なのにこの心遣い…泣けますね。
とりま、download しましょう。
$ export URL='http://ftp.jaist.ac.jp/pub/Linux/ubuntu-cdimage/ubuntu/releases/19.10.1/release'
$ export IMG='ubuntu-19.10.1-preinstalled-server-arm64+raspi3.img.xz'
$ wget -c -t 0 ${URL}/${IMG}
... downloading ... then finished.
$ md5sum $IMG
00a09c3cbf45245dcc43132ba7cf671c
- 19.10.1 ではなく 18.04.4 を利用する場合はこちら
$ export URL='http://ftp.jaist.ac.jp/pub/Linux/ubuntu-cdimage/ubuntu/releases/18.04.4/release'
$ export IMG='ubuntu-18.04.4-preinstalled-server-arm64+raspi3.img.xz'
$ wget -c -t 0 ${URL}/${IMG}
... downloading ... then finished.
$ md5sum $IMG
2d26ee632a949d8a7f4474350d31b303
install to your micro SD (@ Mac)
-
micro SD に image を焼いていきます。
- 基本的には Raspbian と同じなので、
皆様は既に勝手を十分にご存知だと思いますが、
私の Mac 環境での手順を記載しておきます。
- 基本的には Raspbian と同じなので、
micro SD を入れる前に、
disk の device file 名を確認しておきます。
$ ll /dev/disk*
brw-r----- 1 root operator 1, 0 12 14 13:54 /dev/disk0
brw-r----- 1 root operator 1, 1 12 14 13:54 /dev/disk0s1
brw-r----- 1 root operator 1, 2 12 14 13:54 /dev/disk0s2
brw-r----- 1 root operator 1, 3 12 14 13:54 /dev/disk0s3
- micro SD を入れた後、再度 disk の device file 名を確認します。
$ ll /dev/disk*
brw-r----- 1 root operator 1, 0 12 14 13:54 /dev/disk0
brw-r----- 1 root operator 1, 1 12 14 13:54 /dev/disk0s1
brw-r----- 1 root operator 1, 2 12 14 13:54 /dev/disk0s2
brw-r----- 1 root operator 1, 3 12 14 13:54 /dev/disk0s3
brw-r----- 1 root operator 1, 4 12 14 14:46 /dev/disk1
brw-r----- 1 root operator 1, 6 12 14 14:46 /dev/disk1s1
-
/dev/disk1
が新たに現れたので、これが
挿入した SD の device file だと分かります。- image 書き込みの準備のために unmount しておきます。
$ diskutil unmount /dev/disk1s1
- img を SD に焼きます。
-
/dev/rdiskX
の部分は環境によって数字が異なります。
間違えると System Disk や大切なデータを破壊してしまうため、
十分にご注意ください。- Mac では dd の出力先は /dev/disk の代わりに
/dev/rdisk を指定する方が書き込み速度が速いようです。
- Mac では dd の出力先は /dev/disk の代わりに
-
$ export DISK='/dev/rdiskX'
$ unxz -c $IMG | sudo dd of=${DISK} bs=16m; sync; echo finished
- $IMG 変数は先程 download したものを使用しています。
-
finished
と出たら、SD を取り出して Pi4 に挿入します。
Pi4 の起動
-
普通に起動します。
- Ubuntu Server for RasPi では、login name が
pi
ではなくubuntu
なのでご注意ください。
- Ubuntu Server for RasPi では、login name が
-
初期 password も
raspberry
ではなくubuntu
ですが、
初回起動時は打ち込んでも通らない場合があります。- 焦りますが、boot 処理が一段落してから
再トライすると通りますので、ご安心ください。 - ログインに成功すると、新しい password への変更を求められます。
- 焦りますが、boot 処理が一段落してから
WLAN の設定 : netplan.io
Ubuntu Desktop ではおなじみの NetworkManager が、なんと
Ubuntu Server では入っていないということで、少し狼狽しました。どうやら Ubuntu Server の Network Setting は
netplan.io というやつが仕切っているようなので、
無線 LAN の設定をしていきます。
~$ sudo cp -a /etc/netplan/50-cloud-init.yaml /etc/netplan/51-wifi-init.yaml
~$ sudo vi /etc/netplan/51-wifi-init.yaml
- example を参考に必要な変更を行います。
- 以下はルーターが IPv4 で DHCP 運用、
無線 AP が WPA2-PSK の場合の設定例です。 -
wlan0
の行、変えるのを結構忘れがちなのでご注意を。
- 以下はルーターが IPv4 で DHCP 運用、
~$ cat /etc/netplan/51-wifi-init.yaml
network:
wifis:
wlan0:
dhcp4: yes
dhcp6: no
access-points:
"your-ssid":
password: "your-secret-passphrase"
version: 2
- 設定後、変更を適用し、再起動します。
- ↓ exit は ~/.bash_history に
コマンドログを記帳するためにしています。
- ↓ exit は ~/.bash_history に
~$ sudo netplan apply
~$ sudo reboot; exit
- 再起動後、無事に接続できていました。
~$ networkctl list
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 eth0 ether no-carrier configuring
3 wlan0 wlan routable configured
3 links listed.
~$ ip a show wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether dc:a6:32:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.1.117/24 brd 192.168.1.255 scope global dynamic wlan0
valid_lft 85510sec preferred_lft 85510sec
$ netplan ip leases wlan0
# This is private data. Do not parse.
ADDRESS=192.168.1.117
NETMASK=255.255.255.0
ROUTER=192.168.1.1
SERVER_ADDRESS=192.168.1.1
T1=43200
T2=74044
LIFETIME=86400
DNS=192.168.1.1
apt の設定
package を最新にするため、apt の設定を行います。
-
RasPi の CPU は ARM の Cortex-A シリーズなので、
通常の PC とは package server が異なります。CPU architecture package server x86_64 (amd64) jp.archive.ubuntu.com aarch64, armhf ports.ubuntu.com -
default の更新 server である ports.ubuntu.com は
世界中のたくさんの人が利用するので、mirror に変更しましょう。- ※文末に mirror server との response 比較しています。
-
日本の mirror である jp.archive.ubuntu.com でも
ARM 用の ubuntu-ports/ が用意されているのですが、LTS しかない
ので、もっともご近所の台湾の mirror を使わせて頂きます。- 台湾さんありがとうございます!
~$ cd /etc/apt/ && sudo gzip -k sources.list && cd -
~$ sudo vi /etc/apt/sources.list
- こんな感じになれば OK です。↓
~$ cat /etc/apt/sources.list | grep ^deb
deb http://ftp.ubuntu-tw.org/ubuntu-ports eoan main restricted universe multiverse
deb http://ftp.ubuntu-tw.org/ubuntu-ports eoan-updates main restricted universe multiverse
deb http://ftp.ubuntu-tw.org/ubuntu-ports eoan-backports main restricted universe multiverse
deb http://ftp.ubuntu-tw.org/ubuntu-ports eoan-security main restricted universe multiverse
- 続いて apt update, upgrade します。
まだリリースされて間もないので、ほとんど更新はありませんでした。
~$ sudo apt update && sudo apt upgrade
apt install lubuntu-desktop
- せっかく desktop package の案内もされていますし、
まだ LXQt に移行してからの Lubuntu を試したことが無かったので、
ここでは Lubuntu Desktop を入れてみました。
~$ sudo apt install lubuntu-desktop
- deb packages の fetch が終わった頃に、こんな CUI Dialog が出ます。
┌─────────────────────────────────────┤ Configuring gdm3 ├──────────────────────────────────────┐
│ A display manager is a program that provides graphical login capabilities for the X Window │
│ System. │
│ │
│ Only one display manager can manage a given X server, but multiple display manager packages │
│ are installed. Please select which display manager should run by default. │
│ │
│ Multiple display managers can run simultaneously if they are configured to manage different │
│ servers; to achieve this, configure the display managers accordingly, edit each of their │
│ init scripts in /etc/init.d, and disable the check for a default display manager. │
│ │
│ Default display manager: │
│ │
│ gdm3 │
│ sddm │
│ │
│ │
│ <Ok> │
│ │
└───────────────────────────────────────────────────────────────────────────────────────────────┘
-
こちらを参考にし、ここでは gdm3 を選択して進めました。
その後はほったらかしで、40 分ほどで終了。
Processing triggers for libgdk-pixbuf2.0-0:arm64 (2.40.0+dfsg-1build1) ...
Processing triggers for rygel (0.38.1-2ubuntu3.3) ...
Processing triggers for libc-bin (2.30-0ubuntu2) ...
Processing triggers for systemd (242-7ubuntu3.2) ...
Processing triggers for dbus (1.12.14-1ubuntu2) ...
~$
- Lubuntu Desktop を install した後の 16 GB SD の Disk 使用量はこのくらいです。
~$ df -h | sort | grep ^/dev/mmcblk
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk0p1 253M 132M 121M 53% /boot/firmware
/dev/mmcblk0p2 15G 4.9G 8.8G 36% /
8 GB SD でも余裕で入りそうですね!
再起動して、Lubuntu さんが立ち上がるのを待ちます。
~$ sudo reboot; exit
Lubuntu さんのお出まし
-
いつもより少し長めの起動の後、無事に DM が表示されました。
- gdm3 を選択すると、見慣れた Ubuntu ぽいログイン画面が表示されます。
-
- …Windows 95 かな?
-
Ctrl + Alt + t で QTerminal が起動しました。
- うむ、User Interface としては、これで十分ですね!
次回予告
-
次回は、Coral Edge TPU と接続して、
他の環境とのベンチマークを行なっていきたいと思います。
備考
-
Pi4 で作業している際に wlan0 がよく切れました。
- dmesg で error: -110 がたくさん出ていたので、
driver がまだ不安定なのか、はたまた
5V2A の iPad の AC アダプターが力不足なのか…。
- dmesg で error: -110 がたくさん出ていたので、
reboot すると、またゴキゲンに繋がるのですが、
時間が経つとほぼ必ず発生するので、有線 LAN に変更しました…。-
2020/02/15 追記
-
久しぶりに 19.10 で起動すると wlan0 が繋がらなかったのですが、
こちらの対応をすると(?)無事に繋がりました。
$ sudo wpa_cli -i wlan0 > ADD_NETWORK > SET_NETWORK 0 ssid "AP_NAME" > SET_NETWORK 0 psk "passphrase" > ENABLE_NETWORK 0 > quit
- 18.04 では今の所そのようなことは無いので、
安定志向の方は 18.04 をお勧めします…
- 18.04 では今の所そのようなことは無いので、
-
おまけ
ports.ubuntu.com vs ftp.ubuntu-tw.org
- 一応 response を見てみました。
~$ nslookup ports.ubuntu.com 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: ports.ubuntu.com
Address: 91.189.88.150
Name: ports.ubuntu.com
Address: 2001:67c:1360:8001::22
~$ ping -c 4 91.189.88.150
PING 91.189.88.150 (91.189.88.150) 56(84) bytes of data.
64 bytes from 91.189.88.150: icmp_seq=1 ttl=50 time=248 ms
64 bytes from 91.189.88.150: icmp_seq=2 ttl=50 time=263 ms
64 bytes from 91.189.88.150: icmp_seq=3 ttl=50 time=250 ms
64 bytes from 91.189.88.150: icmp_seq=4 ttl=50 time=264 ms
--- 91.189.88.150 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 248.189/256.149/263.774/7.211 ms
~$ nslookup ftp.ubuntu-tw.org 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
ftp.ubuntu-tw.org canonical name = ftp.ubuntu-tw.net.
ftp.ubuntu-tw.net canonical name = ncnu.ftp.ubuntu-tw.net.
Name: ncnu.ftp.ubuntu-tw.net
Address: 163.22.17.70
Name: ncnu.ftp.ubuntu-tw.net
Address: 2001:e10:6840:17::70
~$ ping -c 4 163.22.17.70
PING 163.22.17.70 (163.22.17.70) 56(84) bytes of data.
64 bytes from 163.22.17.70: icmp_seq=1 ttl=47 time=49.7 ms
64 bytes from 163.22.17.70: icmp_seq=2 ttl=47 time=61.9 ms
64 bytes from 163.22.17.70: icmp_seq=3 ttl=47 time=51.0 ms
64 bytes from 163.22.17.70: icmp_seq=4 ttl=47 time=61.2 ms
--- 163.22.17.70 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 49.743/55.976/61.928/5.619 ms
- たぶんこれが一番早いと思います。