Raspberry Pi4 (Raspbian Buster)のセットアップ
いつか見たRaspbianと違う・・・まだRaspbian Busterに慣れません。
Raspberry Pi4にディスプレイ、キーボードを繋がず、Raspbian Busterをネットワーク経由で(ヘッドレス)インストール、セットアップしました。少しハマって苦戦した所がありましたので、備忘録として書き残しておこうと思います。
1. Raspbianのダウンロード
Raspberry PiホームページのDownloads→Raspbian、またはミラーサイトからRaspbianのイメージファイルをダウンロードします。
JAIST(北陸先端科学技術大学院大学)のミラーサイトでは以下から。
今回は Raspberry Pi4をデスクトップPCとして使うことも考えて、Raspbian Buster with desktop and recommended softwareを使用しました。
2. MicroSDにRaspbianのイメージファイルを書き込む
今回はSAMSUNG製32GB MicroSDカード EVO Plusを購入しました(購入した直後のサイバーマンデーセールで¥820まで安くなっていたのが悔しい)。
MicroSDカードにイメージファイルを書き込むには、従来どおりターミナルを開いてddコマンドで書き込む方法と、balenaEtcherというGUIツールを用いる方法があります。
ddコマンドで書き込む方法では、デバイス名を間違うと関係ないディスクの中身をぶっ壊してしまいますので、慣れない方はbalenaEtcherを使用する事をお進めします。
1) ターミナル上でddコマンドを使用する方法
以下はmacOSでの例です。
$ sudo diskutil list ※MicroSDカードのデバイス名を確認する
/dev/disk0 (internal, physical):
〜略〜
/dev/disk6 (external, physical): ※これがMicroSDカード
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *32.0 GB disk6
1: Windows_FAT_32 NO NAME 32.0 GB disk6s1
$ sudo diskutil unmountDisk /dev/disk6
Unmount of all volumes on disk6 was successful
$ sudo dd if=~/Downloads/2019-09-26-raspbian-buster-full.img of=/dev/rdisk6 bs=8m
$ sudo diskutil unmountDisk /dev/disk6
|
2) balenaEtcherを使用する方法
balenaEtcherからダウンロードし、実行します。使用方法は特に迷うことはないと思いますが、
- 「Select image」でRaspbianのイメージファイルを選択
- 書き込み先ドライブにMicroSDカードを選択
- 「Flash!」をクリック
- 許可を求めるダイアログが出たらパスワードを入力
でMicroSDカードへの書き込みと検証が行われ、無事に完了するとmicroSDカードがアンマウントされます。
3. sshの有効化と、Wi-Fi設定情報の書き込み
Raspbian Busterではセキュリティを考慮してか、初期状態ではsshが無効化されています。また、通信デバイスもWi-Fi(wlan0)のみが有効になっており、有線(eth0)ではネットワークに繋がらないようです。そのため、ディスプレイなしのヘッドレスインストールにはWi-Fi環境が必須になります。実は最初有線だけでやろうと思ったのですが、全然繋がらず結構ハマりました。
手順は以下のようになります。
- MicroSDカードを一旦抜いて刺し直してマウントする
→bootパーティションがマウントされる
- boot直下にsshファイル(中身空)と、"wpa_supplicant.conf"ファイルを作成してWi-Fiの設定情報を書き込む。
$ cd /Volumes/boot
$ touch ssh
$ vi wpa_supplicant.conf
|
"wpa_supplicant.conf"ファイルの中身は、
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="ネットワーク名(SSID)"
psk="暗号化キー"
}
|
- MicroSDカードをアンマウントする
とbootから移動しておいて、bootディスクをゴミ箱にドロップするなどしてアンマウントします。
4. Raspberry Pi4の起動と初期設定
MicroSDカードをRaspberry Pi4に刺して電源を入れます。この時、有線LANポートにはケーブルを繋がないようにします。
赤いLEDが点灯し、緑色のLEDがチカチカと点滅します。緑色のLEDの点滅が止まって消灯したらターミナルからsshで接続します。
$ ssh pi@raspberrypi.local
The authenticity of host 'raspberrypi.local (fe80::26f2:67f8:9650:1130%en0)' can't be established.
ECDSA key fingerprint is SHA256:X/XXXXXXXXX+YYYYYYYYYYYYY+ZZZZZ/ZZZZZZZZZZZ.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'raspberrypi.local,fe80::26f2:67f8:9650:1130%en0' (ECDSA) to the list of known hosts.
pi@raspberrypi.local's password:
Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Sep 26 01:46:19 2019
SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.
|
パスワードは"raspberry"です。このパスワードは必ず変更しておきましょう(次のステップで行います)。先ずは初期設定のため"raspi-config"を実行します。
どんな順番で行っても良いと思いますし、全ての項目を設定する必要もありませんが、自分は以下の順に行いました。
- 「1 Change User Password」
piユーザのパスワードを変更します。
- 「8 Update」
"raspi-config"が最新化されてリロードされます。
- 「2 Network Options」
- N1 Hostname
このRaspberry Pi4の名前をraspberrypiから任意の名前に変更します。
- N2 Wi-fi
先に"wpa_supplicant.conf"ファイルに書き込んだWi-Fi設定情報です。もう設定済みだとは思いますが念のため。
- N3 Network interface names
ネットワークデバイス名の命名ルールに、eth0, wlan0と言ったOSが認識した順番で名前付けするのではなくMACアドレスを使用したような固有の名前付けにするかを指定します。この辺は好みかと思いますが、昔ながらの命名ルールに慣れている人は有効(Enable)にしなくても良いと思います。自分はDisableのままにしました。
- 「3 Boot Options」
- B1 Desktop / CLI
「B3 Desktop」を選択
- B2 Wait for Network at Boot
特に何もせず
- B3 Splash Screen
特に何もせず
- 「4 Localisation Options」
- I1 Change Locale
"en_GB.UTF-8"(選択済み)に加えて、"en_US.UTF-8", "ja_JP.UTF-8"を追加し、"ja_JP.UTF-8"をデフォルトのロケールに設定。
- I2 Change Timezone
"Asia", "Tokyo"に設定
- I3 Change Keyboard Layout
特に何もせず
- I4 Change Wi-fi Country
"JP"に設定
- 「7 Advanced Options」
- A1 Expand Filesystem
MicroSDカードのRootパーティションをMicroSDカードの容量一杯まで拡張します。
AA Overlay FS
オーバレイFSを有効化するとRootパーティションがオーバレイFSになるようです。おそらくRootパーティションをRead Onlyにして不用意に電源を切ったりしてもファイルシステムが壊れないように保護するためだと思われますが、オーバレイ上位の領域(たぶんメモリ上のファイルシステム)の容量不足でパンクが起こるようです。そのため、これは有効化しない方が良さそうです。
これだけ設定したら"<Finish>"を選択して一旦リブートします。Raspberry Pi4が再起動したら、もう一度ssdで接続します。その際のホスト名、パスワードは上で設定した名前にします。
$ ssh pi@NewHostName.local
|
5. rootユーザの有効化とシステムの最新化
rootユーザを有効化して、システム(OS、ファームウェア)を最新化します。
$ sudo passwd root
新しいパスワード:
新しいパスワードを再入力してください:
passwd: パスワードは正しく更新されました
$ su
パスワード:
# apt-get update
ヒット:1 http://archive.raspberrypi.org/debian buster InRelease
ヒット:2 http://raspbian.raspberrypi.org/raspbian buster InRelease
パッケージリストを読み込んでいます... 完了
# apt-get upgrade
# apt-get dist-upgrade
# rpi-update
# reboot
|
6. IPアドレスを固定してネットワークを有線(eth0)に切り替える
Raspberry Pi4は真のGiga-Ethernetになったので、Wi-Fiから有線LANに切り替えます。その際、IPアドレスをDHCPから割り振ってもらうのではなく、静的なIPアドレスを設定します。作業はrootユーザになって行い、"/etc/dhcpcd.conf"ファイルを編集します。
$ su
# cd /etc
# cp -p dhcpcd.conf dhcpcd.conf.org
# vi dhcpcd.conf
|
"dhcpcd.conf"ファイルの最後に以下を書き足します。
interface eth0
static ip_address=192.168.0.xxx/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8
noipv6
|
この時、Wi-Fi(wlan0)の方もIPアドレスを固定しようとは思わないことです。もし同じサブネット(上だと192.168.0.0/24)のIPアドレスをWi-Fi(wlan0)に設定してしまうと通信が不安定になり、最悪Raspberry Pi4に接続できなくなると思います(*1)。
"dhcpcd.conf"ファイルを保存したら再起動して有線LANポートにケーブルを繋ぎ、設定した有線側IPアドレスで接続できるか試します。
$ ssh pi@192.168.0.xxx
The authenticity of host '192.168.0.xxx (192.168.0.xxx)' can't be established.
ECDSA key fingerprint is SHA256:XXXXXXXXXYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZ.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.xxx' (ECDSA) to the list of known hosts.
pi@192.168.0.xxx's password:
Linux Kaus 4.19.86-v7l+ #1283 SMP Fri Nov 29 18:37:40 GMT 2019 armv7l
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Dec 6 14:55:25 2019 from 127.0.0.1
$ ip addr show
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether dc:a6:32:70:2e:9c brd ff:ff:ff:ff:ff:ff
inet 192.168.0.xxx/24 brd 192.168.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::dea6:32ff:fe70:2e9c/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether dc:a6:32:70:2e:9d brd ff:ff:ff:ff:ff:ff
inet 192.168.0.xx/24 brd 192.168.0.255 scope global dynamic noprefixroute wlan0
valid_lft 84858sec preferred_lft 74058sec
inet6 fe80::ccf7:a0af:b248:eb3b/64 scope link
valid_lft forever preferred_lft forever
$
|
IPv6のアドレスは不要(noipv6)にしたつもりなのですが、何か割り当たってますね。まぁ、それは良いとしても、Wi-Fi(wlan0)側に有線(eth0)と同じサブネットのIPアドレスが割り振られているのは良くなさそうなので、Wi-Fi(wlan0)は停止させます。
$ sudo iwconfig wlan0 txpower off
$ ip addr show
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether dc:a6:32:70:2e:9c brd ff:ff:ff:ff:ff:ff
inet 192.168.0.xxx/24 brd 192.168.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::dea6:32ff:fe70:2e9c/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether dc:a6:32:70:2e:9d brd ff:ff:ff:ff:ff:ff
|
それでは通信性能を測定してみましょう。Raspberry Pi3ではGigabit-USBアダプタを使っても200Mbits/sec程度しか出ませんでした。見せてもらおうか、Raspberry Pi4のGigabit Ethernetの性能とやらを。
$ iperf -c 192.168.0.nnn
------------------------------------------------------------
Client connecting to 192.168.0.nnn, TCP port 5001
TCP window size: 122 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.xxx port 47008 connected with 192.168.0.nnn port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.09 GBytes 937 Mbits/sec
|
さすが真のGigabit Ethernetと言ったところでしょう。これならデスクトップPC、サーバー用途にも耐えられそうですね。
7. リモートデスクトップ接続できるようにする
xrdpをインストールしてリモートデスクトップ接続できるようにします。
$ sudo apt-get install xrdp
|
Microsoft Remote Desktopを起動して接続しますと、こんな感じに表示されました。動作もなかなか軽快です。
以上で基本的な設定は完了です。後はお馴染のMicroSDカード延命措置などをボチボチやって行きましょう。
備考(*1):複数のNIC(通信デバイス)に同じサブネットのIPアドレスを設定するには、以前やった ルーティング設定が必要になる筈。と思い、同じように"/etc/network/interfaces", "/etc/dhcpcd.conf" に設定してみたのですが、うまくルーティングされず、再起動するとルーティング設定が消えてしまいまして、ここで2日ほど行き詰まっていました。Raspbian Busterだと何か違うんですかねぇ・・・
|