絖綛 N@i.jp  昨日:00058537
 今日:00009248
 総計:00872591
keywords
管理者専用
  Post   Add link   Control Panel 































新しいトピック
最新:10/01 12:07


新しいコメント
最新:07/28 16:47






管理人へMAIL

プライバシーポリシー

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からダウンロードし、実行します。使用方法は特に迷うことはないと思いますが、

  1. 「Select image」でRaspbianのイメージファイルを選択
  2. 書き込み先ドライブにMicroSDカードを選択
  3. 「Flash!」をクリック
  4. 許可を求めるダイアログが出たらパスワードを入力

でMicroSDカードへの書き込みと検証が行われ、無事に完了するとmicroSDカードがアンマウントされます。

3. sshの有効化と、Wi-Fi設定情報の書き込み

 Raspbian Busterではセキュリティを考慮してか、初期状態ではsshが無効化されています。また、通信デバイスもWi-Fi(wlan0)のみが有効になっており、有線(eth0)ではネットワークに繋がらないようです。そのため、ディスプレイなしのヘッドレスインストールにはWi-Fi環境が必須になります。実は最初有線だけでやろうと思ったのですが、全然繋がらず結構ハマりました。

 手順は以下のようになります。

  1. MicroSDカードを一旦抜いて刺し直してマウントする
    →bootパーティションがマウントされる
  2. 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="暗号化キー"
    }
  3. MicroSDカードをアンマウントする
    $ cd

    と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"を実行します。

$ sudo raspi-config

 どんな順番で行っても良いと思いますし、全ての項目を設定する必要もありませんが、自分は以下の順に行いました。

  1. 「1 Change User Password」
    piユーザのパスワードを変更します。
  2. 「8 Update」
    "raspi-config"が最新化されてリロードされます。
  3. 「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のままにしました。
  4. 「3 Boot Options」
    • B1 Desktop / CLI
      「B3 Desktop」を選択
    • B2 Wait for Network at Boot
      特に何もせず
    • B3 Splash Screen
      特に何もせず
  5. 「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"に設定
  6. 「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だと何か違うんですかねぇ・・・


■ このトピックへのコメント投稿フォーム ■
キャンセル
※ HTMLタグは使えません
* 名前
* MAIL
* URL
本文
PASS ※ 半角英数8文字まで
認証 ※ 零零六参四を半角数字で入力して下さい
  * 印の項目をcookieに保存する

2019 calendar
12月
1234567
891011121314
15161718192021
22232425262728
293031


掲示板
最新:08/15 17:19


GsBlog was developed by GUSTAV, Copyright(C) 2003, Web Application Factory All Rights Reserved.