ヘッドレスRaspbianの構築
ヘッドレス(モニタやキーボード、マウスなどの入出力装置を接続しない状態)のRaspbianを構築します。
Raspbianのダウンロードとインストール
ヘッドレス環境を構築するので、X Windowシステムを含まないRaspbian Liteをインストールします。
ミラーサイトから最新(2019年10月現在)のRaspbian Buster Liteをダウンロードします。Raspbianのインストール手順については、以前の記事を参考にしてください。
ヘッドレス環境の構築
インストール後のヘッドレス環境の設定は、こちらを参考にしました。
RaspbianをインストールしたSDカードをマウントします。
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アドレスを検索しました。
Windows 10(1803)以降だと、mDNS(マルチキャストDNS)が有効なので、ホスト名raspberrypi.localでのアクセスも可能です。
デフォルトの接続情報は、ユーザ:pi、パスワード:raspberryです。
Raspbianの設定変更
SSHでラズパイに接続できるようになったので、Raspbianの設定を変更していきます。
システムとファームウェアの更新
インストール完了後のシステムの更新をおこないます。
$ sudo apt update $ sudo apt upgrade
apt upgrade
とapt 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