LoginSignup
3
3

More than 1 year has passed since last update.

Raspberry Piの初期設定

Last updated at Posted at 2022-01-02

みなさま、新年あけましておめでとうございます。
本年もよろしくお願いします。

Qiita書初めです。
2021年12月31日から2022年1月1日にかけてRaspberry Pi 4B+の初期設定を行っていたので、その方法を記載します。
人によって様々なやり方があり議論の余地はあると思いますが、私の考える限り最小限の労力で動作するRaspberry Piを作り出せる方法をまとめました。
自身の備忘録的な記事ですが、もし良ければご参考にしてください。

ヘッドレスインストール

今回使用したOSはRaspberry PiのOSはRaspbian 10 Busterです。
Raspberry Pi OSのインストール直後はsshが無効化されているので、OSイメージを書き込んだbootパーティーションに空ファイルで拡張子無し
ssh
というファイルを置きます。
そして無線LANにも自動接続できるように、
wpa_supplicant.conf
という名前のファイルも置きます。
拡張子は.confです。
wpa_supplicant.confのファイルの中身は以下のように記載すればSSIDとPSKを設定済みの状態でRaspberry Piを起動できます。

wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
        ssid="SSIDの値"
        psk="PSKの値"
}

このwpa_supplicant.confもsshと同じくbootパーティーションに配置します。

ここまではRaspberry Piにログインせずに行う作業です。
以降はRaspberry Piにssh経由でログインして実施する作業です。

sshログイン

ルーターをはじめDHCPサーバなどからRaspberry PiのMACアドレスを見つけ出し、ARPやRARPでRaspberry PiのMACアドレス宛に付与されたIPアドレスを調べましょう。
Raspberry PiのIPアドレスがわかればTeratermなりPuttyなりでssh経由でRaspberry Piにログインします。

1.Time Zoneの変更

どんなシステム、OSでもログイン直後に私はこの操作を行います。
私はTeratermで作業を行うことが多いのですが、必ずログを取得する設定にしてログインします。
ログ内でコマンド実行時の時間がわかれば検索しやすいので、重要な設定変更時や作業完了時にはdateコマンドを実行しています。
いざ何かあった際にログを解析すると思うのですが、自分の認識している作業時間とログに出力されている時刻とにずれがあると解析の手間が増えます。
ですので極力一番最初にこの設定を行います。
また作業にはraspi-configを使いますので、raspi-config内の作業はコメントに記載しています。

タイムゾーン変更
date
whoami
pwd
sudo raspi-config
##Time ZoneをAsia/Tokyoに変更
date

最初と最後に必ずdateを実行して、ログイン時間の記録とともにUTC0時で動作していたTime Zoneが作業後に日本時間に変更されていることを確認します。
whoamiはログインユーザ、pwdは現在いるディレクトリのフルパス表示ですが、これらも確認のため毎回入力するようにしています。

sudo raspi-configの後はこのような画面が出てきますので、5 Localozation Optionsを選択し、エンターキーを押し、
image.png

L2 Timezoneを選択しエンターキーを押し、
image.png

デフォルトでEuropeになっているところをAsiaを選択してエンターキーを押し
image.png

デフォルトでAdenになっているところをTokyoを選択してエンターキーを押します。
image.png

正常に処理が完了するとraspi-configコマンドの最初の画面に戻ります。
image.png

以上でTime Zoneの変更は完了です。

2.ディスク拡張を行う

Raspbianは自身のインストールされたSDカードの領域を限界まで使い切っていません。
これでは宝の持ち腐れになるので領域拡張を行います。
このディスク拡張の処理だけ単独で行うには以下のコマンドを実行します。
先ほどのTime Zoneと同じくraspi-configコマンドです。

ディスク拡張
date
sudo raspi-config
##ディスク拡張を行う

1.Time Zoneの変更の作業後であればraspi-configコマンドの画面のままだと思いますので、引き続きの作業で問題ありません。
6 Advanced Optionsを選択してエンターキーを押し、
image.png

A1 Expand Filesystemを選択しエンターキーを押します。
image.png
即座にディスク拡張が行われて、以下のようなメッセージが出力されますのでOKを選択します。
image.png

再度raspi-configコマンド実行直後の画面に戻ります。
image.png
ここで一度Finishを選択してエンターキーを押します。
この作業が終了すると再起動を促してきますので、そのまま案内に沿って再起動しましょう。

3.Locale、キーボード、WLANの電波帯を日本に変更する

こちらの作業も主にraspi-configを使います。
初期状態のままではLocale変更時に日本のロケール情報がインストールされていないためエラーが出ますので、このエラーが出ないように予めlocale情報をインストールしておきます。

ロケール変更
date
df -h
sudo apt install -y locales-all
sudo raspi-config
##ロケール、キーボード、WLANを日本に変更
date

df -hはディスク拡張が行われているかの確認のコマンドになります。
sudo apt install -y locales-allが正常に完了したら、次にraspi-configコマンドを実行します。
5 Localozation Optionsを選択してエンターキーを押し、
image.png
L1 Localeを選択してエンターキーを押します。
image.png
デフォルトでen_GB.UTF-8 UTF-8が選択されているので、スペースキーでこの選択を解除し、
image.png
スペースキーで解除後の画面はこうなり、*が消えます。
image.png
ja_JP.UTF-8 UTF-8を選択してスペースキーを押してエンターキーを押します。
image.png
Configuring locales画面が出てきますので、ja_JP.UTF-8を選択してエンターキーを押します。
image.png
再度raspi-configコマンド実行直後の画面に戻りますのでもう一度5 Localozation Optionsを選択してエンターキーを押し、
image.png
L3 Keyboardを選択してエンターキーを押します。
image.png
再度raspi-configコマンド実行直後の画面に戻りますのでもう一度5 Localozation Optionsを選択してエンターキーを押し、
image.png
L4 WLAN Countryを選択してエンターキーを押します。
image.png
数ある選択肢の中からJPを選択してエンターキーを押します。
image.png
確認画面が出てきますので、OKを選択してエンターキーを押します。
image.png
再度raspi-configコマンド実行直後の画面に戻りますのでタブキーを2回押してFinishを選択してエンターキーを押します。
image.png
再起動を求める画面が出てきますので、Yesを選択してエンターキーを押します。
image.png

再起動後、次の作業に移ります。

4.piユーザのユーザ名変更

ここは議論の分かれるところとなりますが、私は初期設定のpiのユーザ名を変更することを是としています。
Raspbianは周知のとおりDebianベース動作しているディストリビューションですので、Linuxです。
Linuxの共通仕様としてUIDやsudoersがあり、piユーザを削除するとこれらの設定内容も影響を受けます。
UIDも変更可能で、sudoersももちろん変更可能なのですが、初期設定ユーザのpiを削除してUIDが1000のユーザを手動で作成し、sudoersに新たに追加することでOSの動作に影響がないとは言い切れないのではないか?というのが私の意見です。
ですので私はpiというユーザ名を変更しています。

4-1.ユーザ名変更のため、一時的に別ユーザを追加する

ユーザは自身のユーザ名を変更できません。
ですのでまずは他のユーザを作り、このユーザにpiの名前を変更できる権限を付与してpiというユーザ名を変更します。
しかしこのユーザはあくまで一時的なユーザ、piの名前を変更するためだけのユーザのため、piの名前を変更後はこのユーザを削除します。
今回作成する一時ユーザ名はtempuserとします。

一時ユーザ追加
date
sudo useradd -M tempuser
sudo gpasswd -a tempuser sudo
sudo passwd tempuser
##tempuserのパスワードを設定する
date

useradd -Mのオプションはユーザのホームディレクトリを作成しないというオプションです。
次の作業に移ります。

4-2.ユーザ名変更のため、Raspbianの起動処理を変更する

初期設定ではRasbianはGUIにpiユーザで自動ログインするという設定になっています。
ですのでいきなりpiというユーザ名を変更しようとするとpiというユーザは何か処理してるからユーザ名を変更できないよという旨のエラーメッセージを返してきます。
当然ですね。
piの名前を変更する際にエラーがでないように、このRaspbianの初期設定値、GUIにpiユーザで自動ログインするからCLIで誰もログインしないに変更します。
この起動時にGUIで起動するかCLIで起動するかをRun Level、と言います。
厳密にはRun Levelはアプリケーション毎に設定変更可能なのですが、ここではRaspberry Piが起動した際にGUIで起動するかCLIで起動するかを指定している、くらいの認識で良いと思います。

RaspberryPiの起動時設定変更
date
sudo raspi-config
##起動をDesktop/Auto Loginからcli/no loginに変更する。
##こうしないと初期ユーザ名piがDesktopに自動ログインしてしまうため、
##この後に行うユーザ名変更作業ができない。
date

ここまでの作業と同じくraspi-configを実行し、今回は1 System Optionsを選択してエンターキーを押します。
image.png
S5 Boot / Auto Loginを選択してエンターキーを押します。
image.png
B1 Consoleを選択してエンターキーを押します。
image.png
再度raspi-configコマンド実行直後の画面に戻りますのでタブキーを2回押してFinishを選択してエンターキーを押します。
image.png
再起動を求める画面が出てきますが、いいえを選択してエンターキーを押します。(日本語化されていますが、なぜか選択肢だけ日本語になっています。)
次の作業を行ってから再起動を行います。
image.png

4-3.再起動のついでに64bit化を行う

以前の記事でも記載していますが、使っているRaspberry Piが4GB以上のモデルであれば64bit化した方が良いとも思います。
Raspbianは初期設定が32bitですが、メモリが8GBのRaspberry Piにインストールした直後にfreeコマンドを実行するとちゃんと8GBのメモリを認識してくれています。
何故8BG認識できるか理由は調べていないのですが、8GBのメモリをOSが認識していることと、8GBまでメモリが取り扱えることは別次元で、実際に使ってみると4GBで頭打ちになってしまうのではないか?という疑問が払しょくできませんので64bit化しておきます。

64bit化
date
sudo cat /boot/config.txt
sudo nano /boot/config.txt
##一番最後の行にarm_64bit=1と追記する。
##追記が終るとctrl Xで記述モードを終了し、書き込み確認が行われるのでYを入力し、
##書き込むファイル名の確認も行われるのでそのままエンターキーを押します。
date
sudo cat /boot/config.txt
sudo reboot

以前の記事でもやったのと同じ方法ではエラーがでるので、nanoコマンドを用いました。
この書き込み作業が終ってから再起動しますので、次の作業はsshの再ログインから始まります。
ここで注意するのは次のsshログインは一時的に作ったユーザ、本記事の例ではtempuserでログインする、ということです。

5.初期ユーザPiのユーザ名を変更する

newuserでログインした直後、最上段の行の最後にaarch64と表記があれば64bit化に成功しています。
image.png

本項目では例としてユーザ名Piをnewuserに変更します。

ユーザ名変更
date
whoami
pwd
sudo cat /etc/passwd
sudo usermod -l newuser pi
sudo groupmod -n newuser pi
sudo cat /etc/passwd
sudo ls /home
sudo usermod -d /home/newuser -m newuser
sudo ls /home
date
sudo reboot

最初のdateコマンドの結果が日本語表示になっていると思います。

sudo cat /etc/passwdコマンドで現在設定されているユーザ一覧が確認できます。
この段階ではpiユーザがUID1000で設定されていることが確認できます。

'sudo usermod -l newuser pi'はユーザ名piをnewuserに変更する、というコマンドです。
これはコマンドの記載順序が逆なのではなく、これで正しい順序です。
私は初めて見たときは記載順序が逆なんじゃないかと思って書き直して実行したのですが、無事エラーが出ました。

2回目のsudo cat /etc/passwdコマンドでUID1000がpiからnewuserに変更されていることが確認できます。

1回目のsudo ls /homeで/home/piが確認できますが、sudo usermod -d /home/newuser -m newuserで変更できます。
2回目のsudo ls /homeで/home/newuserに変更されていることを確認します。

最後に再起動を行い、次はnewuserで再ログインします。

6.一時ユーザを削除する

newuserでログインし、tempuserを削除します。
この作業を忘れてしまうとsudoersに追加されているtempuserが残り続けるのでセキュリティ的に脆弱になってしまいます。
忘れず削除しましょう。

一時ユーザ削除
date
whoami
pwd
sudo cat /etc/passwd
sudo userdel tempuser
sudo cat /etc/passwd
date

はい。
これで一時ユーザが削除作業+削除の確認できました。

7.元々piというユーザ名だった現newuserのパスワードを変更する

この作業も忘れてはいけませんね。

パスワード変更
date
passwd
##newuserのパスワードをpiの初期パスワードから変更

はい。
簡単ですね。

8.Updateを行う

こちらも以前の記事で紹介しているのですが、同じ方法になります。
理屈も同じく、いつパッケージ内のアプリケーションに修正がかかっているかわかりませんので早めにUpdateをしておくことをお勧めします。

update
date
sudo apt-key list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys xxxxxxxxxxxxxxxx
##apt-key listの結果によっては必要。不要な場合もある。
date
sudo apt update --allow-releaseinfo-change
date
sudo apt full-upgrade -y --fix-missing
date
sudo apt autoremove -y
date
sudo apt clean
date
sudo reboot

この作業は時間がかかりますので気長に待ちましょう。
最後に念のため再起動を行います。

9.設定変更した部分を元に戻す

この作業も忘れがちなので記載しておきます。
Run LevelをGUIからCLIに落としているので、これを元に戻します。
GUIを使わない方やメモリ消費、消費電力を気にされる方はCLIのままでも良いと思いますが、念のため元に戻しておきます。
ただし、元に戻す場合でも脆弱になってしまいますのでAuto Logonは避けましょう。

RunLevelを元に戻す
date
sudo raspi-config
##好みにより起動をcli/no loginからDesktopに変更する。GUI操作が不要な場合は設定しなくても良い。
##raspi-config後の案内通り再起動しても良い

ここまでの作業と同じくraspi-configを実行し、今回も1 System Optionsを選択してエンターキーを押します。
image.png
S5 Boot / Auto Loginを選択してエンターキーを押します。
image.png
ここでは例として先ほども言及したDesktopを選択してエンターキーを押します。
image.png
再度raspi-configコマンド実行直後の画面に戻りますのでタブキーを2回押してFinishを選択してエンターキーを押します。
image.png
再起動を求める画面が出てきますので、はいを選択してエンターキーを押します。
image.png

これでRaspberry Piは最新化されて初期ユーザ名、パスワードが変更され、64bit化、ディスク拡張も終わっているので物理的に持っているパフォーマンスを遺憾なく発揮できます。

番外編.xrdpのインストール

VNCも良いのですが、私はWindowsマシンで作業を行っているのでRDPクライアントツールを色々インストールするのも面倒なのでxrdpをRaspberry Piにインストールしています。

xrdpのインストール
date
whoami
pwd
sudo apt install -y xrdp

最後に手元のWindowsマシンからRaspberry PiにRDP接続ができることを確認します。

本日はここまで。

それではみなさま、今年も良いエンジニアライフを!

3
3
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
3