3
4

More than 3 years have passed since last update.

Busterヘッドレスセットアップ

Last updated at Posted at 2019-07-28

【前提】

  • 母艦はWindows10(一部 Linux上で作業)
  • Pi は 3B、3B+
  • Image は Raspbian Buster with desktop
  • 各種ツールはインストール済みであるものとする
  • インタネート、LAN環境は構築済みであるものとする
  • ヘッドレスセットアップ、運用
  • Stretch からのアップグレードではなく、新規インストール

【準備】

  • 各種設定ファイルバックアップ

    既に Stretch などで運用している場合、microSDカードのバックアップは当然だが、各種設定ファイルのバックアップも残しておくと、後で迷わない。

    ファイル 内容
    /etc/fstab mount設定
    /etc/dhcpcd.conf 固定IP化してある場合
    /etc/rsyslog.conf ログ設定
    /boot/config.txt OS設定
    /etc/samba/smb.conf samba設定
    /etc/hostname ホスト名
    /etc/hosts ホスト名
    /etc/rc.local 起動時の自動実行設定
    df -h パーティション確認
    crontab -l ジョブスケジュール確認

    その他スクリプトファイル等、各自の独自設定も。

  • SSH、Wi-Fi接続設定ファイル用意

    ファイル名 内容
    ssh サイズ0の空ファイル
    wpa_supplicant.conf Wi-Fi設定

    有線LAN 接続の場合、「wpa_supplicant.conf」は不要。
    作成方法は他の解説サイト参照。

  • Image のダウンロード

    以下からダウンロード。
    https://www.raspberrypi.org/downloads/raspbian/

    新規で始める人は、Pi 購入を決めた時点でダウンロードしておくが吉。
    Pi、microSDカード等の用意ができ、いざインストール作業となった時、Image のダウンロードに時間がかかり、出鼻をくじかれるのは初心者あるある。

    選択 Image は desktop版がお勧めだが、Stretch 辺りから「recommended software」(推奨ソフト)同梱版が用意されるようになり、どちらを導入すべきか最初迷う。
    https://www.raspberrypi.org/blog/buster-the-new-version-of-raspbian/
    で中の人が言うところによれば、「recommended software」同梱版とは、非インタネート接続環境での運用を想定しているようで、そのような特別な理由が無ければ通常の desktop版で良いとのこと。
    サイズもその方が小さいし。必要になれば後から推奨ソフトのインストールはできるし。

【新規インストールが望ましい理由】

色々と独自の設定を施している場合、新規インストールとなると設定の再構築が面倒。
そこで Stretch からアップグレードを、と考えがち。
上記の公式の Buster公開告知でもアップグレードの方法が紹介されている。

しかし、Stretch からのアップグレードの場合、問題点がある。
https://www.raspberrypi.org/forums/viewtopic.php?t=243438
上記の公式フォーラムにその議論がある。
ポイントとして、bootパーティションが Buster では 256MB に拡張されていること。(Stretch では60MB)
それだけ、Buster では bootパーティション内の使用量が増えている。

従って、Stretch のパーティション構成のまま Buster を導入運用すると bootパーティションがパンクする可能性がある。この問題を回避するには、bootパーティションのサイズを増やす必要があり、その手順紹介サイトもインターネット上に散見される。
https://dbpro.xyz/7693
しかしパーティションサイズの変更は初心者には敷居が高い。
その点も含めて考えるに、新規インストールの方が確実で手っ取り早いという結論となる。

【手順】

1. Image焼き

公式サイトで紹介されているmicroSDカードライティングツールは以下。

  • balenaEtcher
  • Win32DiskImager

https://www.raspberrypi.org/documentation/installation/installing-images/windows.md
後は「DD for Windows」ぐらいか。
balenaEtcher がシンプルでカッコいいので最近はそれを紹介しているサイトが多い印象。

私の環境では以前、起動時にエラーを吐いて動かなくなる事象が発生したことがあった。
色々と調べるも問題解決できず。
そうこうしている内にバージョンアップがあり導入したら正常に動くようになった、という経緯があり、個人的には安定していな印象があるけど、どうなんだろう?

とにかく焼ければツールは何でも良い。
但し、これも私の環境だけかもしれないが、ツール上では正常に書き込み完了していても、中身がおかしい場合がある。microSDカード、USB の接続不良が原因か?
そんな訳で、焼いた後は中身を確認。以下のようになっていれば正常。パーティションが二つ作成されていること。

準備手順で用意した 2ファイルを bootドライブにコピー。

準備手順にもある通り、有線LAN 接続の場合、「wpa_supplicant.conf」は不要。
また、sshファイルは、空の sshディレクトリでも良いらしい。
これらは Pi起動時の初期設定で削除されるので、後で使いまわせるよう母艦環境側に残しておくこと。

2. Pi 本体設定

  • 上記手順で作成した microSDカードを Pi 本体にセット
  • 有線LAN 使用の場合は LANケーブル接続
  • USB電源ケーブル接続

赤LEDの点灯を確認。

3. 母艦からの設定

  • Pi に割り当てられた IPアドレスの特定

    セキュリティの関係でデフォルトで SSH接続はオフになっているが、前述手順で sshファイルをコピーしてあれば SSH接続は有効になっている。
    しかし母艦からターミナル接続等を行う為には、Pi に割り当てられた IPアドレスが分からなければ始まらない。
    調べ方は色々あるので詳細は他の解説サイトを参照して貰うとして、最も簡単と思われる方法だけ記す。

    Windows10 環境なら、「Bonjour」が標準で入っている。
    デフォルトの Pi のホスト名は「raspberrypi」なので、そこから名前解決で IPアドレスが引ける筈。
    コマンドプロンプトを起動し、ping を打ってみる。

    ビンゴ、応答あり。IPアドレス判明。

  • ターミナル接続確認

    IPアドレスが分かったら、TeraTerm 等のターミナルソフトで接続。
    というか、名前解決できているなら、ホスト名で接続できる。

    ホスト名の最後に「.local」を付けるが吉。

    pi/raspberry で接続。

    初回起動時に表示されるダイアログ。

    ログイン完了。

  • VNC有効化

    ターミナル接続による CUI環境が基本ながら、VNCでも接続できれば何かと便利なので有効にする。

    以下コマンドで raspi-config 起動。

    sudo raspi-config
    

    5 Interfacing Options 選択。

    P3 VNC 選択。

    <Yes> 選択。

    <Ok> 選択。

    <Finish> 選択。

  • 初期設定ウィザード

    上記設定により再起動不要で即 VNC接続が有効になる。
    VNC Clientソフトで接続。初回起動時なら初期設定ウィザードが起動している筈。
    Stretch から導入されたこの機能は滅茶苦茶便利なので利用する。
    https://www.raspberrypi.org/blog/raspbian-update-june-2018/
    尚、何らかの理由でこの機能が利用できなかった場合は以下のコマンドで再実行可能。

    sudo piwiz
    

    SSH接続の Warning は取り合えずスルーし、初期設定を進める。

    「Next」クリック。

    因みに IPアドレスが二つ表示されているのは、有線LAN と Wi-Fi接続が有効になっているから。

    初期状態で Country は United Kingdom になっている。流石英国製ざんす。

    大英帝国に敬意を表しつつ、Country項目は Japan に変更。そうすれば他の項目も連動して変更される。

    「Next」クリックで少し待たされる。これは他の設定も連動して変更している模様。
    以前は raspi-config でちまちまと設定していたけど、初期設定ウィザードでは色々とよきにはからってくれるので便利になった。

    新しいパスワードを入力し「Next」クリック。

    そのまま「Next」クリック。

    Wi-Fi設定画面は必要に応じて設定。

    現時点では色々と問題のあるアップデート機能。一応「Next」クリックで実行してみる。

    少々待たされる。

    うーん、失敗。後回しとする。

    「Restart」クリックで即再起動でもいいが、ついでに他の初期設定も行いたいので「Later」クリック。

    メニューから「Raspberry Pi の設定」選択。

    解像度変更。

    ホスト名変更。

    因みに、Wi-Fi接続でかつ NFSクライアント設定をしている場合、起動時にネットワーク接続が確立される前に NFSサーバディレクトリをマウントしようとしてコケる場合がある。
    対処法として、「ネットワークを待つ」にチェックを入れると上手くいく(かもしれない)。

    画面が見切れていて「Ok」ボタンが見えない・・・。という場合は右下の「無効」までフォーカスを移動し、更に TABキーを二回押下。これで「OK」ボタンにフォーカスが合う筈なので ENTERキー押下。目論見通りなら「再起動が必要です」メッセージボックスが表示されるので「はい」クリックで再起動。

  • IPアドレス固定

    名前解決できるなら IPアドレス固定は不要、という話もあるが、Linux環境やらスマホ、タブレットからの接続も考慮すれば、やはりやっておくと使い勝手が良い。

    以下コマンドで /etc/dhcpcd.conf を編集する。

    sudo vi /etc/dhcpcd.conf
    

    ファイルの最後に以下コード追加。

    interface eth0
    static ip_address=192.168.11.110/24
    static routers=192.168.11.1
    static domain_name_servers=192.168.11.1
    

    「ip_address」が固定したい任意の IPアドレス。その他の IPアドレスは自分の環境を設定すること。
    又、「interface eth0」を「interface wlan0」とすれば、無線LAN の設定となる。

  • 各種アップデート

    前述の初期設定ウィザードでアップデートが成功していても、一応各種アップデートをかけておくが吉。少々時間がかかる作業なので気長に進めること。

    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get dist-upgrade
    

    うーん、また失敗するがな。

    再実行、今度は成功。まだまだ不安定な感じ。

    各種アップデートで確認メッセージが表示された場合は yキー押下。

    いちいち確認されるのが面倒なら yスイッチを指定するが吉。

    sudo apt-get update -y
    sudo apt-get upgrade -y
    sudo apt-get dist-upgrade -y
    

    最後の rpi-update は firmware の更新問い合わせなので、更新が発生した場合は再起動すること。

    2020/04/11 編集

    rpi-update は非推奨。




余計な物は削除したい場合は以下実行。

    sudo apt-get autoremove -y
    sudo apt-get clean -y
    sudo apt-get autoclean -y
  • SDカード延命

    「SDカード 延命」でググるだけで(raspberry pi の文言が含まれていなくても)対応方法が出てくる。それぐらい基本中の基本的な設定。
    先人の築いたノウハウを参考にする。
    https://azriton.github.io/2017/03/16/Raspbian-Jessie-Lite%E3%81%AESD%E3%82%AB%E3%83%BC%E3%83%89%E5%BB%B6%E5%91%BD%E5%8C%96/
    取り合えず最低限以下は設定する。

    • Swap 領域無効化
    • テンポラリ領域を RAM へ配置
    • rsyslog ログ出力抑制
  • NFSクライアント設定

    NFSサーバを利用している場合はクライアント設定する。追加パッケージは不要。
    まず NFSサーバのマウント情報を確認。IPアドレスは NFSサーバ。

    showmount -e 192.168.11.101
    

    NFSサーバが正常に機能していれば以下のような情報が表示される。

    Export list for 192.168.11.101:
    /media/pi/a7ec2739-c469-442a-916d-f4ef391545ee 192.168.11.0/24
    

    以下コマンドで /etc/fstab 編集。

    sudo vi /etc/fstab
    

    以下追記。

    192.168.11.101:/media/pi/a7ec2739-c469-442a-916d-f4ef391545ee  /mnt/nfs/a7ec2739-c469-442a-916d-f4ef391545ee  nfs  rw,defaults,nfsvers=3  0   0
    

    マウント用ディレクトリ作成。

    sudo mkdir /mnt/nfs/
    sudo mkdir /mnt/nfs/a7ec2739-c469-442a-916d-f4ef391545ee
    sudo chown pi:pi /mnt/nfs/a7ec2739-c469-442a-916d-f4ef391545ee
    

    マウント実行。

    sudo mount -a
    

    マウント状態確認。

    df -h
    

    正常にマウントされていれば以下のように表示される。

    pi@raspberrypi3:~ $ df -h
    ファイルシス                                                  サイズ  使用  残り 使用% マウント位置
    
    (中略)
    
    192.168.11.101:/media/pi/a7ec2739-c469-442a-916d-f4ef391545ee   3.6T  2.0T  1.5T   58% /mnt/nfs/a7ec2739-c469-442a-916d-f4ef391545ee
    pi@raspberrypi3:~ $
    

    マウントに失敗している場合、手動でのマウントを試みる。

    sudo mount -t nfs -o nfsvers=3 192.168.11.101:/media/pi/a7ec2739-c469-442a-916d-f4ef391545ee /mnt/nfs/a7ec2739-c469-442a-916d-f4ef391545ee
    

    それでも失敗する場合はスイッチ指定を見直す。
    ググるとファイアーウォールが云々といった情報も出てくるが、Pi に限って言えばデフォルトでファイアウォールは入っていないので関係ない。

  • FTPサーバ設定

    入れておけば役に立つ場合がある(かもしれない)。

    以下コマンドでインストール。

    sudo apt-get install -y vsftpd ftp
    

    エクスプローラーから接続を確認。

    ftp://192.168.11.110/
    

    以下のような「ログオン方法」ダイアログが表示されたらユーザー名、パスワードを入力しログオン。※ ここだけ後から画面キャプチャを取り直したので IPアドレスが異なる

    接続に成功すれば /home/pi 直下が表示される。

  • sambaサーバ設定

    Windows環境からの接続ならこちらの方が一般的か。

    以下コマンドでインストール。

    sudo apt-get install -y samba
    

    途中の確認は「いいえ」選択。

    インストールが完了したら以下コマンドで設定ファイル編集。

    sudo vi /etc/samba/smb.conf
    

    ファイルの最後に以下追記。

    [pi]
       comment = pi
       path = /home/pi
       read only = No
       guest ok = Yes
       force user = pi
    

    エクスプローラから接続確認。

  • heartbeat設定

    起動中も shutdown 後も赤LED は点灯で状態が分かりにくい。そこで設定を変更する。

    以下コマンドで設定ファイル編集。

    sudo vi /boot/config.txt
    

    ファイルの最後に以下を追記。

    # turn power LED into heartbeat
    dtparam=pwr_led_trigger=heartbeat
    #
    

    以下コマンドで再起動。

    sudo reboot
    

    再起動したら、赤LED が点滅していることを確認。

  • Watchdog Timer設定

    Pi を NAS 代わりに 24時間運用していると、年に数回アクセス不能に陥る場合がある。
    たまにハングアップするのは仕方がないとして、その場合は自動で再起動して欲しい。
    そこで Watchdog Timer を設定する。

    以下コマンドでインストール。

    sudo apt-get install -y watchdog
    

    以下コマンドで設定ファイル編集。

    sudo vi /lib/systemd/system/watchdog.service
    

    最終行をコメントアウトし、以下を追記。

    WantedBy=multi-user.target
    

    以下コマンド実行。(自動起動、モジュール追加)

    sudo update-rc.d watchdog enable
    sudo modprobe bcm2835_wdt
    

    以下コマンドで設定ファイル編集。

    sudo vi /etc/watchdog.conf
    

    以下を編集。

    #max-load-1 = 24    ①先頭のコメント削除
    
    #watchdog-device = /dev/watchdog    ②先頭のコメント削除
    
    watchdog-timeout = 10   ③追記
    

    以下コマンドで再起動。

    sudo reboot
    

    以下コマンド実行。※ ハングアップコマンドにて取扱注意

    :(){ :|:& };:
    

    自動で再起動されることを確認。

  • screenコマンドインストール

    Wi-Fi接続でのターミナルからアップデート作業を行うのは実は危険。
    アップデート処理中にネットワークの瞬断が発生し、ターミナルが落ちると、アップデート関連のファイルが壊れてしまう場合がある。
    そうなると修復に手間がかかったり、最悪修復不能だったりで面倒。
    それを回避するには以下。

    1. Pi 本体側で作業する
    2. VNC接続しデスクトップ上でターミナルを開いて作業する
    3. nohupコマンドでバックグラウンド実行する
    4. 仮想端末ソフトを利用する

    そんな訳で仮想端末ソフトを入れておくと色々と捗るので以下コマンドでインストール。

    sudo apt-get install -y screen
    

    使い方は以下が分かりやす。
    http://edosha.hatenablog.jp/entry/2017/11/10/142855

  • HDMI off設定

    ヘッドレス運用なら HDMI 出力は不要。省電力も考慮し以下コマンドで止める。

    /opt/vc/bin/tvservice --off
    

    しかしこれでは再起動で元に戻ってしまう。
    crontab の reboot 設定等で上記コマンドを設定。再起動後も off になっていること確認。

    pi@raspberrypi3:~ $ /opt/vc/bin/tvservice -s
    state 0x2 [TV is off]
    pi@raspberrypi3:~ $
    

    省電力に関しては、モバイルバッテリでの運用を目指す省電力ガチ勢が情報を公開しているのでそちらを参照。
    https://rabbit-note.com/2017/04/29/raspberry-pi-3-model-b-power-save/

4. デスクトップ設定

  • Bluetooth

    ヘッドレス運用なら不要なので省電力を考慮し止める。
    デスクトップ上で止めれば、再起動後もその状態が維持される。

    Bluetoothアイコン上でマウス右ボタンクリック、プルダウンメニュー「Turn Off Bluetooth」選択。

  • CPU 使用量モニタ

    Buster ではデフォルトで非表示となったが、必要な場合は表示設定する。

    タスクバー上でマウス右クリック、プルダウンメニュー「パネルのアイテムの追加・削除」選択。

    「パネルの設定」ダイアログで「追加」ボタンクリック。

    「CPU 使用量モニタ」を選択、「追加」ボタンクリック。

    「上へ」ボタンクリックで表示位置調整。

    パーセンテージも表示したい場合は以下。

    「CPU 使用量モニタ」上でマウス右クリック、プルダウンメニュー「CPU 使用量モニタ Settings」選択。

    「Show usage as percentage」チェックボックスON、「OK」ボタンクリック。

  • Ejecter

    こちらも必要であれば「CPU 使用量モニタ」と同様の手順で追加する。

5. パーティション縮小

必須ではないが、パーティションは縮小しておくことが望ましい。理由は以下。

他の microSDカードにバックアップイメージを書き戻す際、同じ容量の microSDカードを選んでも、微妙にサイズが異なる(少ない)場合があり、処理に失敗することがある。
それと、16~32G の microSDカードのバックアップは時間がかかる。

実質は数G しか使用していないので、適度にパーティションを縮小する。
作業は他の Pi 等、Linux環境を想定。GParted を使用。
まだ入れていない場合は以下コマンドでインストール。

sudo apt-get install -y gparted

GParted起動。パスワードの入力が求められるので入力、「OK」ボタンクリック。

右上のデバイス選択で対象を選択。(/dev/sdb)

鍵アイコンが表示されている場合、マウントされていることを示していて操作できないので解除する。
/dev/sdb2 でマウス右クリック、プルダウンメニュー「アンマウント」選択。

アンマウント中。

鍵アイコンが消えていることを確認。

ツールバー上のリサイズボタン(赤四角枠の箇所)クリック。

「新しいサイズ」エディットボックスに任意の容量を入力、TABキー押下でフォーカスが外れると「リサイズ/移動」ボタンが有効になるのでクリック。

画面下に変更内容が表示されることを確認。

ツールバー上の確定ボタン(赤四角枠の箇所)クリック。

確認メッセージボックスが表示されるので「適用」ボタンクリック。

適用作業中。

以下のような正常終了を表す画面が表示されることを確認。「閉じる」ボタンクリック。

6. バックアップ

一連の設定作業が終わったら、microSDカードをバックアップ。ツールは Win32DiskImager を使用。
「Read Only Allocated Partitions」チェックボックスは ON にすること。

作成されたイメージのサイズを確認。パーティションを縮小していれば相応のサイズになっている。

7. 補足

パーティション縮小は Windows環境でもディスクの管理でできる筈。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4