自宅で動かしているRaspberry PiのOS(Raspbian)がだいぶ古くなったので新しくするべくことにしたのでインストール手順のメモ
0.前提&準備
- 以下の手順は初代Raspberry Pi Model B, Raspberry Pi 2 Model B とRaspberry Pi 4 Model Bで確認
- SDカードへの書き込みと初回起動時のSSH接続、有線LANのIPアドレスを固定化する作業用にLinuxマシンを用意(作業後は普段の作業PCからSSH接続)
- 初回起動時に楽にSSH接続できるように作業用Linuxマシンにはavahi-daemonを導入(IPアドレスを調べるの面倒だからw)
# apt install avahi-daemon
- インストール時に接続する有線LANにはDHCPが稼働している事
1.OS(Raspbian)入手
- 公式サイトのダウンロードページからイメージを入手
- https://www.raspberrypi.org/downloads/raspbian/
- 以下の手順は、(私が)デスクトップは使わないので”Raspbian Buster Lite”のイメージをダウンロード
- 作業用Linuxマシンで、wgetで最新版のRaspbianイメージをダウンロード
- URLは配布サイトを確認
- ダウンロードしたZIPファイルを解凍
- 確認時点では2019-07-10-raspbian-buster-lite.imgというファイルができる
# wget https://downloads.raspberrypi.org/raspbian_lite_latest
# unzip raspbian_lite_latest.zip
2.OSイメージをSDカードに書込
- ddでイメージファイルを書込み
- 解凍したファイル名は2019-07-10-raspbian-buster-lite.img
- SDカードのデバイスファイル名は/dev/sdc
- ブロックサイズ(bs)は指定しなくても可
# dd if=2019-07-10-raspbian-buster-lite.img of=/dev/sdc bs=8192
3./bootパーティションにssh起動用にファイル作成
- そのままだとsshdが起動しないので、起動時にsshdが起動するように/bootパーティションに”ssh”というファイルを作成
- SDカードにイメージを書込後、/bootパーティションをマウントしてファイルを作成
- 作るファイルは空でOK
# mount /dev/sdc1 /mnt/temp
# cd /mnt/temp/
# touch ssh
# cd ~
# umount /mnt/temp/
4.Raspberri PiにSDカードを差し替えて起動
- Raspberri PiのSDカードスロットにイメージを書きこんだSDカードをセット
- LANケーブルを差し込んでから、電源ケーブルを差して電源オン
- ネットワークにはDHCPが機能していることが前提
5.初回起動後の設定の為のSSH接続
- 作業用Linuxからsshコマンドで接続
- ここで事前にインストールしたavahiが生きてきます
- avahiについて詳細を知りたい人は別途調べてください
- デフォルトで用意されているpiユーザでまずはログイン
- パスワードは raspberry です
$ ssh pi@raspberrypi.local
6.Raspbianの更新
- 本当にリリース直後でなければ更新が出ていると思うので更新
- ついでに(私は)使わないnanoエディタを削除
- vim-tinyで十分
- さらについでに不要なパッケージを削除
- autoremoveで依存関係にはずれたものを削除
$ sudo apt update
$ sudo apt upgrade
$ sudo apt remove nano
$ sudo apt autoremove
7.タイムゾーンとロケールの設定更新
- タイムゾーンを日本(Asia/Tokyo)に設定
- Geographic areaはAsiaを選択
- Time zoneはTokyoを選択
- ロケールをUTF-8に設定
- Locales to be generated
- en_GB.UTF-8 UTF-8を選択解除
- ja_JP.UTF-8 UTF-8を選択
- Default locale for the system environment
- ja_JP.UTF-8 UTF-8を選択
- Locales to be generated
$ sudo dpkg-reconfigure tzdata
$ sudo dpkg-reconfigure locales
8.ホスト名を変更
- /etc/hostnameの内容を新しいホスト名に修正
- 修正後、再起動等を実施して新しいホスト名が有効になったらavahiにも情報が行くので、新しいホスト名でsshなど接続できる
- 修正したホスト名を/etc/hostsの127.0.1.1のホスト名に追加
$ sudo vi /etc/hostname
$ sudo vi /etc/hosts
9.IPアドレスを設定
- IPアドレスを固定する為に/etc/dhcpcd.confを修正
- Example static IP configurationのセクションがあるのでコメント参考に変更
$ sudo vi /etc/dhcpcd.conf
- 例:変更前
- dhcpcd.confの次の部分を修正
# Example static IP configuration:
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1
- 例:変更後
- IPアドレスは192.168.1.11
- ネットワークマスクは/24 (=255.255.255.0)
- デフォルトルートは192.168.1.1
- DNSサーバは192.168.1.1
- IPv6のアドレスは明示しない(無効にはしてない)
# Example static IP configuration:
interface eth0
static ip_address=192.168.1.11/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
10.ユーザ追加
- piユーザをそのまま使うのは色々な理由で避けたいので普段用のユーザを追加
- “yourname”は普段使いするユーザ名に置き換えてください
- 普段使いするシェルがbashを設定(通常bashなので不要と言えば不要な手順)
- piユーザは後ほどログイン出来ないようにするのでsudoを設定
$ sudo useradd -m yourname
$ sudo passwd yourname
$ sudo chsh -s /bin/bash yourname
$ sudo cp /etc/sudoers.d/010_pi-nopasswd /etc/sudoers.d/yourname
$ sudo vi /etc/sudoers.d/yourname
- /etc/sudoers.d/yournameの内容
- NOPASSWD設定つけてます
yourname ALL=(ALL) NOPASSWD: ALL
- 追加したユーザでログインしてsudo設定確認
- su で設定したパスワードを確認
- sudo でsudo設定が意図通りか確認
$ su - baki
$ sudo date
11.piユーザの無効化
- デフォルトで用意されているpiユーザを無効化
- インターネットから接続できるように設定する場合は半ば必須かと
- パスワードをデフォルトから十分な長さ&複雑さのものに変更
- ログイン出来ないようにシェルをログイン不可シェルに変更
$ sudo passwd pi
$ sudo chsh -s /usr/sbin/nologin pi
12.リブート
- 上記設定を再確認後リブート
- 再起動後に追加したユーザでSSH接続できることを確認して初期導入完了
ピンバック: Redmine を Respberry Pi にインストール | 晴れた日には運河で昼寝