3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Raspberry Piで設定したこと

Last updated at Posted at 2019-02-25

設定した時のモデルや作業環境

対象モデル:

  • Raspberry Pi 2
  • Raspberry Pi 3 Model B V2
  • Raspberry Pi 4

作業PC:

  • MacBook Pro (Retina, 13-inch, Early 2015), Catalina 10.15.5

0: Operating System(OS)の書き込み

SDcardの初期化やOSインストールは以下の2つの方法が主流だと思われます

  • RaspberryPi Imager を用いる方法 (推奨:かなり楽です)

  • コマンドで設定する方法

RaspberryPi Imager で設定する

SDcardの初期化

従来通りコマンドで処理を行うのもいいですが、「RaspberryPi Imager」を用いてSDcardを初期化したり、OSをインストールした方が手っ取り早いです
スクリーンショット 2020-07-12 15.57.43.png

私の場合は環境がMacなのでRaspberry Pi Imager for macOSを選択しました

スクリーンショット 2020-07-12 15.50.15.png

上記の画面で「CHOOSE OS」をクリックするとインストールしたいOSを選ぶ画面が表示され、スクロールすると下の方にSDcardを初期化する項目が現れます

image.png

「Erase」をクリックした後は、「CHOOSE SD CARD」をクリックして初期化したいSDcardを選んでください(選ぶとは言いましたが、ほとんどの環境で一度に挿入するSDcardの枚数は一枚だと思われるので、多分選択できるのは一つだけ表示されると思います)

後は自動で初期化されるので待てば大丈夫です

OSのインストール

スクリーンショット 2020-07-12 15.50.15.png

上記の画面で「CHOOSE OS」をクリックするとインストールしたいOSを選ぶことができ、「CHOOSE SD CARD」をクリックして挿入しているmicroSD Cardを指定することができます。
2つの項目を決定した後は「WRITE」ボタンが白くなりクリック可能になります
OSは以下の二つに大きく分かれていますのでお好みで選んでください

  • Raspberry Pi OS (以前「Raspbian」と呼称されていたもの)

  • NOOBS (初心者向けで設定しやすいらしい)

スクリーンショット 2020-07-12 16.29.04.png

書き込みが終わると以下のような画面になります

スクリーンショット 2020-07-12 15.57.04.png

後はmicroSDをRaspberryPiに挿入すればデスクトップ画面が立ち上がります

コマンドで設定する

OSイメージの入手

ラズベリーパイ用のOSは公式サイトからダウンロードするのが良いと思われます
https://www.raspberrypi.org/downloads/

2020年7月12日時点では以下の2つの形式でOSが公式から配布されています

  • Raspberry Pi OS (以前「Raspbian」と呼称されていたもの)

  • NOOBS (初心者向けで設定しやすいらしい)

MicroSD初期化

MiroSDcardの初期化はこのサイトを参照
diskutil list コマンドで差し込んだMicroSDを確認する(間違えると作業しているPC本体のデータを吹っ飛ばすことになるので注意)

マウントされれているディスク一覧を表示
$ diskutil list
/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.8 GB    disk2
   1:             Windows_FAT_32 boot                    46.0 MB    disk2s1
   2:                      Linux                         15.8 GB    disk2s2

私の場合では/dev/disk2にマウントされていることがわかったので、diskutil eraseDiskで初期化を行います

$ diskutil eraseDisk フォーマット形式 名前 フォーマット対象ディスク

フォーマット形式は「MS-DOS」、ディスクの名前は好きなものを選んでもいいですがラズベリーパイに関連しているものを名付ける方がいいと思います私は「RPI」としています
フォーマット対象ディスクはdiskutil listで表示されたものを選ぶので、この場合は「/dev/disk2」になります
これは環境によって変わるので注視してください

SDcardを初期化
$ diskutil eraseDisk MS-DOS RPI /dev/disk2
Started erase on disk2
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk2s2 as MS-DOS (FAT) with name RPI
512 bytes per physical sector
/dev/rdisk2s2: 30503616 sectors in 476619 FAT32 clusters (32768 bytes/cluster)
bps=512 spc=64 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=411648 drv=0x80 bsec=30511104 bspf=3724 rdcl=2 infs=1 bkbs=6
Mounting disk
Finished erase on disk2

OSのinstall

次にOSのinstallはこのサイトを参考にしました

ファイルを書き込むdd コマンドでOSをSDcardに書き込んでいきます

$ diskutil list
$ diskutil unMountDisk /dev/disk2
$ sudo dd if=/*ダウンロードしたファイルまでのパス*/[ダウンロードしたOS名].img of=/dev/disk2 bs=1m count=1024

1: ユーザ・グループの設定

一般ユーザ

新ユーザの追加

RaspbianやRaspberryPiOSなどに最初から設定されている「pi」というユーザは初期パスワードが周知されていますし、sudoをパスワード入力なしで実行できてしまうので、セキュリティ面から考えてかなり脆弱だと思われます(私は「pi」をsudoグループから外して、名前を変更するまでネットワーク環境へつなげないようにしています)
ユーザ 「pi」を削除するなり、名前を変更するにしても他のユーザを作ってからの方が作業が楽です(というより私はpiでログイン中にpiを削除したり名前変更する方法を知りません)

ユーザを追加するコマンドは主に「useradd」と「adduser」の2つ存在します。(Debian系列のOSではこの2つのコマンドは異なる挙動をするらしいです)
個人的には対話形式で追加可能なadduserを好んで使っています

ユーザ(例:hoge)を対話的に追加するコマンド

ユーザの追加
$sudo adduser hoge

ユーザをSudoグループに追加

新しいユーザが所属するグループをpiと同じにするため、piの属しているグループを確認する(少なくともSudoが使えるグループには所属させたい)

piが所属しているグループを確認
$groups pi
pi : pi adm dialout cdrom sudo audio video plugdev games users input netdev spi i2c gpio

ユーザ(例:hoge)をsudoグループに追加

hoge(ユーザ)をsudo(グループ)
$sudo gpasswd -a hoge sudo

初期ユーザ : pi

piの名前を変更

一度再起動した後、自分が作成したユーザ(例:hoge)でログインしてpiのユーザ名を変更する
初期ユーザのpiでログインしている場合はプロセスが立ち上がってしまい、変更できない

$sudo usermod -l [新しいユーザ名] [古いユーザ名]

piをSudoのグループから除外

何らかの設定ミスでユーザpiが乗っ取られてしまうことを考慮して、スーパーユーザの権限で処理を実行できないようにします

$sudo gpasswd -d pi sudo 

あと、configの設定も無効にしておく必要があるみたい。

/etc/sudoers.d/010_pi-nopasswd
$sudo nano /etc/sudoers.d/010_pi-nopasswd

下記の行をコメントアウト(先頭に#をおけばコメントアウトできる)。
nanoエディタを使ったことなくて、終了できない時はCtrl+Xで終了できる。細かいことはググってお願い

010_pi-nopasswd
pi ALL=(ALL) NOPASSWD: ALL

スーパユーザ : root

rootのパスワードを変更

初期パスワードでは心許ないので変更する

$sudo passwd root

一応変更できたかログインして確認してみる

$su

2:ネットワーク設定

個人的な感想ですが、上記の設定を行うまではかなり脆弱だと思われますので、ネットワークには接続しないほうがいいと思われます。
ラズベリーパイ公式のドキュメントは下記の通り
https://www.raspberrypi.org/documentation/configuration/tcpip/
https://www.raspberrypi.org/documentation/computers/configuration.html

本来Debian系のLinuxOSであれば/etc/network/interfaceなどにipアドレスなどの設定をするのですが、ラズベリーパイでは/etc/dhcpcd.confにて記述を行うことが推奨されています。

無線の設定

DHCPを利用

周囲のESSID一覧を取得する

$sudo /sbin/iwlist *インタフェース名(例:wlan0)* scan | grep ESSID

ESSIDとpasswordをハードコーディング(本当はハッシュ値にしたりとかするといいみたい)

$ sudo vi /etc/wpa_supplicant

有線の設定

静的なIPアドレス

/etc/dhcpcd.confに存在するファイルの設定を書き加える
多分ですが、「=」の前後に空白が入ると設定が通らないかもしれないです。

interface [インターフェース名(デフォルトなら大抵は、有線がeth0,無線がwlan0)]
static ip_address=[割り当てたいipアドレス]/[サブネットマスク]
static routers=[ルータのipアドレス]
static domain_name_servers=[DNSのIPアドレス]
他のDebian系列のOSでは?
他のDebian系列のOSなら`/etc/network/interfaces`に上記と似たような設定を書くことになります ただ、DNSの設定をどこに記述するかが自分の中ではバラバラな気がします

RaspberryPI OS ->

/etc/dhcpcd.conf
static domain_name_servers=[DNSのIPアドレス]

Ubuntu ->

/etc/network/interfaces
dns-nameservers [DNSのIPアドレス]
dns-search [ドメイン名]

Kali Linux ->

/etc/resolv.conf
nameserver [DNSのIPアドレス]

SSHの設定

OpenSSHの起動

設定ファイルの中身を変更する

$sudo vi /etc/ssh/sshd_config

次の一文を追加しておけば、rootでログインされることはない(Linuxではデフォルトで有効になっているOSもあったりしたような気がする)

/etc/ssh/sshd_config
# Authentication:

PermitRootLogin no

保存後、sshを再起動する

$sudo service ssh restart

または

/etc/init.d/ssh restart
  • 上記の方法以外に 「raspi-config」 -> 「Interfacing Options」 -> 「SSH」 から 「Enable」 を洗濯すればSSHサーバとして機能するようでしょう。

  • また、そもそもsshが入っていない場合はDebian系列であれば「sudo apt install openssh-server」 で対応できるのではないでしょうか

公開鍵の設定

おそらくですが、初期設定を行う場合を除いてラズベリーパイをディスプレイに直で接続して作業することはあまりないでしょう。
今の状態でもクライアント側からSSHでログインすることは可能ですが、それだと以下のようになるでしょう

クライアント側
$ssh ユーザ名@ホストのアドレス

このままだとパスワードを生で入力するので、あまり良くありませんよね。
なのでクライアント側で公開鍵をホスト側に投げる必要があります
まず、公開鍵と秘密鍵を生成します

クライアント側
$ssh-keygen -t rsa -b 2048

次にホストに公開鍵を渡します(秘密鍵は名前の通り誰にも教えないヒ・ミ・ツにしておいてください)

クライアント側
$ssh-copy-id ユーザ名@ホストのアドレス

または

クライアント側
$scp ./.ssh/id_rsa.pub ユーザ名@ホストのアドレス:/home/ユーザ名/任意のディレクトリ
ホスト側
$ cat id_rsa.pub >> .ssh/authorized_keys 

これで公開鍵を用いて安全にSSHを使って接続できるでしょう

3:リポジトリの更新

ここまでである程度の設定が終わりました、しかし今のままではシステムを最新の状態にできていません
そのためにはパッケージマネージャを使う必要があります
RaspberryPiOSはLinuxですが、Linux自体にも様々な種類があり、大きく分けてRedHat系とDebian系が存在します

RaspberryPiOSはDebian系列であり、パッケージマネージャは「apt」が推奨されています
Debianの公式ドキュメントにaptとapt-get、aptitudeに関する短い説明が述べられているのでお暇でしたら眺めてみるのもいいかもしれません

リポジトリの更新
$sudo apt update
$sudo apt upgrade

ちなみに、このaptを実行した時に見ているリポジトリってどこにあるの?
っていうのが私の疑問でしたが、以下で確認できるようです

/etc/apt/sources.list
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
/etc/apt/sources.list.d/raspi.list
deb http://archive.raspberrypi.org/debian/ buster main
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspberrypi.org/debian/ buster main

おまけ

バックアップ&レストア方法

バックアップ方法
$ diskutil list
$ diskutil unmountDisk /dev/disk2
$ sudo dd if=/dev/disk2 of=raspi-backup.dmg bs=1m

上のコマンドを実行すると作業が完了するまで、何も表示されません
そこでDDコマンドの進捗を確認を確認するにはCtrl + Tを押す必要があります

起動時の自動ログインを変更する

設定ファイルを書き換えるよりは対話的に変更するようが楽だと思う

$sudo raspi-config

「boot option」を選択して「Console(CLI)」or「Desktop」で自動的にログインするかどうかを選択できる

RaspberryPiとPCをLANケーブルで直接繋げてログインする

PCとRaspberry PiをLANケーブルで有線接続してください

このサイトを参考にしました

ssh ユーザ名@raspberrypi.local

でログインできるはずです。
raspberrypi.localがなんなのかはこのサイトを見た方がいいかもしれません。

ただし、hostnameを変更している場合は「raspberrypi」の部分を設定したhostnameで書き換える必要があります

教育者向けの公式ドキュメント

教育者向けドキュメント
The Raspberry Pi Foundationは下記のURLにて教育者向けのマニュアルを用意しています。 https://downloads.raspberrypi.org/

問題が起きた時に参考になるページ

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?