Respberry Pi に Raspbian をインストール

自宅で動かしている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を選択
$ 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接続できることを確認して初期導入完了

 

カテゴリー: PC関連, テック パーマリンク

Respberry Pi に Raspbian をインストール への1件のコメント

  1. ピンバック: Redmine を Respberry Pi にインストール | 晴れた日には運河で昼寝

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です