ヘッドレスRaspbianの構築

ヘッドレス(モニタやキーボード、マウスなどの入出力装置を接続しない状態)のRaspbianを構築します。

Raspbianのダウンロードとインストール

ヘッドレス環境を構築するので、X Windowシステムを含まないRaspbian Liteをインストールします。

ミラーサイトから最新(2019年10月現在)のRaspbian Buster Liteをダウンロードします。Raspbianのインストール手順については、以前の記事を参考にしてください。

ヘッドレス環境の構築

インストール後のヘッドレス環境の設定は、こちらを参考にしました。

RaspbianをインストールしたSDカードをマウントします。

f:id:uso59634:20190724003420p:plain
ドライブ一覧

SSHの有効化

インストールしたRaspbianのSSHは無効設定なので、リモート管理できるようにSSHを有効にします。SSH設定を有効にするため、bootパーティション(ここでは、Hドライブ)のルートディレクトリにsshファイルを作成します。

C:\Users\UNKO> H:
H:\> copy con ssh
^Z(CTRL+Zキー)
        1 個のファイルをコピーしました。

無線設定

無線LANに接続できるように設定します。

こちらの記事を参考にして、SDカードのbootパーティション(ここでは、Hドライブ)のルートディレクトリに無線接続用の設定ファイルwpa_supplicant.confを作成します。

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="UNKO"
    psk=1c825eafdb14f8c4e9db1ba01053f1b17574e449f48b56ea6579bd78f7be7a81
}

SSHでの接続確認

設定したSDカードでラズパイを起動します。

無線の接続設定をDHCPクライアント設定にしたので、IP検索ツールを使用してラズパイに割り当てられたIPアドレスを検索しました。

f:id:uso59634:20190806022846j:plain
Advanced IP Scanner

Windows 10(1803)以降だと、mDNS(マルチキャストDNS)が有効なので、ホスト名raspberrypi.localでのアクセスも可能です。

デフォルトの接続情報は、ユーザ:pi、パスワード:raspberryです。

f:id:uso59634:20190806025956p:plain
SSH接続

Raspbianの設定変更

SSHでラズパイに接続できるようになったので、Raspbianの設定を変更していきます。

システムとファームウェアの更新

インストール完了後のシステムの更新をおこないます。

$ sudo apt update
$ sudo apt upgrade

apt upgradeapt dist-upgradeの違いについてはこちらを参照してください。

ファームウェアrpi-updateコマンドを使用せずにapt upgradeコマンドで安定版をインストールします。rpi-updateコマンドを使用したファームウェアインストールについては、こちらを参照してください。

viエディタの変更

デフォルトのviエディタはvim.tinyなのでvim.basicに変更します。

$ sudo apt install vim

ホスト名の変更

ここではホスト名をtamaに変更します。

$ sudo hostnamectl set-hostname tama

/etc/hostsに127.0.1.1で登録されている自身のホスト名も変更します。

$ sudo vi /etc/hosts
 127.0.1.1         tama

hostsファイル編集後、avahi-daemon(mDNSサービス)を再起動します。

$ sudo systemctl restart avahi-daemon

新しいホスト名tama.localでSSH接続できることを確認します。

rootでのログイン

デフォルトではrootにパスワードは割り当てられていないので、rootでログインすることはできません。ここでは、セキュリティを考慮してrootのパスワードは設定しません。

必要であればpasswdコマンドで、ユーザーpiのパスワードを変更します。

IPアドレスの設定

無線LANインターフェイスwlan0のIPアドレスDHCP設定のままとします。

/etc/network/interfacesファイルを確認すると、静的IPアドレス/etc/dhcpcd.confファイルで設定するように書かれています。静的IPアドレスを設定する場合は、/etc/dhcpcd.confファイルを参考に設定します。

時刻設定

現在の時刻設定を確認します。

$ timedatectl status
               Local time: Sun 20xx-xx-xx 10:04:03 GMT
           Universal time: Sun 20Xx-xx-xx 10:04:03 UTC
                 RTC time: n/a
                Time zone: Europe/London (GMT, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

タイムゾーンを設定します。

$ sudo timedatectl set-timezone Asia/Tokyo

タイムゾーンの設定については、こちらを参考にしました。

時刻を同期するNTPサーバーを設定して、時刻同期を有効にします。

$ sudo vi /etc/systemd/timesyncd.conf
 NTP=ntp.nict.jp
$ sudo timedatectl set-ntp true

サービスの再起動をおこない、時刻同期が問題なく動作していることを確認します。

$ sudo systemctl restart systemd-timesyncd
$ sudo systemctl daemon-reload
$ timedatectl status
               Local time: Sun 20xx-xx-xx 19:22:00 JST
           Universal time: Sun 20xx-xx-xx 10:22:00 UTC
                 RTC time: n/a
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

ロケール設定

localeコマンド実行時にエラーが出力されたので対策します。

$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_GB.UTF-8
LANGUAGE=
(省略)

localeコマンドについては、こちらを参照してください。また、ロケール環境変数については、こちらを参照してください。

エラーメッセージの対応は、こちらを参考にしました。 /etc/locale.genファイルを編集して、必要な行のコメントを解除します。

$ sudo vi /etc/locale.gen
 en_GB.UTF-8 UTF-8        #デフォルトで有効
 en_US.UTF-8 UTF-8        #コメント解除
 ja_JP.UTF-8 UTF-8        #コメント解除

locale-genコマンドを実行して、エラーが出なくなったことを確認します。

$ sudo locale-gen
Generating locales (this might take a while)...
  en_GB.UTF-8... done
  en_US.UTF-8... done
  ja_JP.UTF-8... done
Generation complete.
$ locale
LANG=en_GB.UTF-8
LANGUAGE=
(省略)

LANG環境変数がen_GB.UTF-8なのでen_US.UTF-8に変更します。

$ sudo localectl set-locale en_US.UTF-8
$ localectl
   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: gb
       X11 Model: pc105

ログインしなおして、設定が反映されたことを確認します。

$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
(省略)
  値がダブルクォーテーションで囲まれている環境変数はLANGの設定を引き継いでいます。

キーボード設定

SSHでラズパイに接続するので設定する必要はありませんが、直接コンソールでの操作をおこなう場合を考えて設定します。

$ sudo localectl set-keymap jp106
$ localectl
   System Locale: LANG=en_US.UTF-8
       VC Keymap: jp106
      X11 Layout: jp
       X11 Model: jp106
     X11 Options: terminate:ctrl_alt_bksp

設定の反映にはシステムの再起動が必要です。

システムの再起動

システムの再起動をおこない設定の更新を反映させます。

$ sudo reboot