1
2

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 3 years have passed since last update.

Raspberry Piのヘッドレスセットアップ(with mac)

Last updated at Posted at 2019-11-21

#用意するもの

  • 母艦(mac)
  • Raspberry Pi(必要に応じてケースも)
  • ラスパイ用ACアダプタ、コード
  • LANケーブル
  • microSDカード
  • (SDカードリーダー・ライター)

##今回の環境

  • Macbook Pro 13inch early 2015
  • macOS Catalina(10.15.7)
  • Raspberry Pi 3 Model B+
  • Raspbian Buster Lite(2020-02-13)

#Raspbianをダウンロード
 まず、Raspbianのイメージファイルをダウンロードします。
 本家は遅いので日本ミラーからダウンロードしましょう。
  通常版:http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/
  Lite版:http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian_lite/images/
 リンクを開き、一番新しいディレクトリの中にあるzipファイルをダウンロードします。
 (ちなみに、Lite版はデスクトップ環境がありません。そのため、通常版の約1/5のサイズです。)

#Raspbianを焼く
 1. SDカードをMS-DOS(FAT32)でフォーマットする
 2. ダウンロードしたzipファイルを展開
 3. 以下のコマンドを実行する

コマンド
$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         250.8 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +250.8 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            11.1 GB    disk1s1
   2:                APFS Volume Preboot                 104.2 MB   disk1s2
   3:                APFS Volume Recovery                1.0 GB     disk1s3
   4:                APFS Volume VM                      6.4 GB     disk1s4
   5:                APFS Volume Macintosh HD - Data     131.1 GB   disk1s5

/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.9 GB    disk2
   1:                 DOS_FAT_32 UNTITLED                15.9 GB    disk2s1

 容量などから、SDカードがどのパスかを判断しておく(この場合は/dev/disk2)
 ※以下、「disk2」は自分の環境に合わせて読み替えてください

 4. 以下のコマンドを実行し、ディスクをアンマウント、imgファイルを書き込む

コマンド
$ diskutil unmountDisk /dev/disk2
Unmount of all volumes on disk2 was successful
$ sudo dd if=/Users/xxxxx/yyyy-mm-dd-raspbian-xxxxxxxx.img of=/dev/rdisk2 bs=4m
Password:
986+0 records in
986+0 records out
4135583744 bytes transferred in 189.369500 secs (21838700 bytes/sec)
  • ddコマンドのifはimgファイルのパス
  • /dev/rdisk2のように、ディスク名の前に「r」をつけると書き込みが速くなる(らしい)
  • ddコマンドの途中でcontrol + tで進捗状況をみられる

#SSHを有効にしておく
 SDカード(bootパーティション)直下に「ssh」という名前の空ファイルを作成する
 ×「ssh.txt」 ○「ssh」

コマンド
$ touch /Volumes/boot/ssh

#WiFiの設定をする(必要な場合)

boot/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
country=JP
network={
    ssid="SSID"
    psk="パスワード"
}

 ※その他の設定はこちらを参照
 ※セキュリティを気にするならパスワードをwpa_passphraseなどで暗号化しておく
 ※ルーターでmacアドレスのフィルタリングをしている場合(筆者宅)、ルーターの設定からフィルタをオフにするか、起動後に下記の方法でWiFiの設定をする
 ※有線LANと併用したい場合、ここでは設定せず、起動後に設定する

#オーバークロック(必要な場合)
 ※自己責任でお願いします!!!
 boot/config.txtの末尾に以下を追記

boot/config.txt
# overclock
arm_freq_min=900
arm_freq=1200
core_freq_min=400
core_freq=500
over_voltage_min=0
over_voltage=5
gpu_freq=500
temp_limit=80
# sdram overclock
sdram_freq=500
sdram_freq_min=400
sdram_schmoo=0x02000020
over_voltage_sdram_p=6
over_voltage_sdram_i=4
over_voltage_sdram_c=4

 私は怖かったのでやりませんでした。
 そのため、この設定で本当にあっているのかは保証できません。

#起動とSSHでのログイン
 1. SDカードをラズパイにぶっさす
 2. (WiFiを設定してなかったらLANケーブルと)電源を取り付ける
 3. MacにはBonjourがインストールされているので、以下のコマンドをターミナルで実行してssh接続をする

コマンド
$ ssh pi@raspberrypi.local
pi@raspberrypi.local's password:
pi@raspberrypi:~ $

 4. なんかわけわからん英文が出てきて(yes/no)って聞かれたらyesって言っとく
 5. 初期パスワードはraspberryなので、入力したら接続される
 ※以下の設定は個々の環境に合わせて行なってください

##SSHで蹴られたら
 何度も接続していると、接続している母艦PCの中の設定がごっちゃになって蹴られることがある。
 そんな時は、下のコマンドの<remote_host_name>を蹴られてるホスト名やらIPやらにして実行する。

コマンド
$ ssh-keygen -R <remote_host_name>

 あるいは設定ファイルをそのままいじってもいい。
 下のコマンドを実行し、問題になってるホスト名etc.から始まる行をddでごっそり消す。

コマンド
$ vi ~/.ssh/known_hosts

#WiFiの設定をする(必要な場合)
 1.以下のコマンドを実行し、dhcpcdの停止(wicd-curseと競合した)、wicd-cursesをインストール、設定画面を開く

コマンド
pi@raspberrypi:~ $ sudo systemctl disable dhcpcd
pi@raspberrypi:~ $ sudo apt-get -y install wicd-curses
pi@raspberrypi:~ $ sudo wicd-curses

 2.Shift + PPreferencesへ飛び、上の方のAlways〜から始まる二つにEnterXをつける(有線LANが使えるときはそっちを使う設定)
 3.Shift + Sで保存して戻る
 4.繋ぎたいネットワークを選択し、で設定画面へ
 5.Use static IPsにチェックし、IPアドレスを固定する設定をする(有線LANもIPを固定した)

IP:     192.168.x.x
Netmask:255.255.255.0
Gateway:192.168.x.1

DNS server 1:    192.168.x.1
DNS server 2:    8.8.8.8

 6.下の方のUse these settings〜Automatically connect〜にチェック
 7.WPA 1/2 (Passphrase)を選択、下でパスワードを入力
 8.Shift + Qを2回押し、コマンドラインへ戻る
 9.再起動、IPが固定されているか確認する

#swapを無効にする

コマンド
pi@raspberrypi:~ $ sudo systemctl disable dphys-swapfile

#ソフトウェアアップデート
 ※使うサーバーを日本ミラーにしてからアップデートする
 1.以下のコマンドを入力
 2.まったり待つ

コマンド
pi@raspberrypi:~ $ sudo sed -i.bak -e "s%http://raspbian.raspberrypi.org/raspbian/%http://ftp.jaist.ac.jp/raspbian/%g" /etc/apt/sources.list
pi@raspberrypi:~ $ sudo apt update && sudo apt -y upgrade

 ※rpi-updateによるファームウェアの更新は不安定になる可能性があるので、必要がない限りはやらない

#ラズパイの設定

コマンド
pi@raspberrypi:~ $ sudo raspi-config

※上記「ソフトウェアアップデート」を行っていない状態だと、設定項目のナンバリングがずれているかと思います。適宜読み替えてください。

  • 1 System Options → S5 Boot Options → お好みで
  • 5 Localisation Options → L2 Timezone → Asia → Tokyo
  • 5 Localisation Options → L4 WLAN Country → JP Japan
  • 6 Advanced Options → A1 Expand Filesystem

##WiFi Countryの設定
 筆者の環境では上記raspi-configからWifi Countryの設定がうまく反映されなかったのでファイルで直接設定する

コマンド
pi@raspberrypi:~ $ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
pi@raspberrypi:~ $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf 
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
pi@raspberrypi:~ $ sudo reboot

#SSHのホスト鍵を更新

コマンド
pi@raspberrypi:~ $ sudo rm -v /etc/ssh/ssh_host*
pi@raspberrypi:~ $ sudo dpkg-reconfigure openssh-server

 この後、SSH接続をしなおしたら絶対に蹴られるので、上記SSHで蹴られたらを参照

#パス無しsudoの禁止

コマンド
pi@raspberrypi:~ $ sudo rm /etc/sudoers.d/010_pi-nopasswd

#パスワードを変更
 ※rootはデフォルトで無効なので、sudo passwdとかsudo passwd rootとかしないこと!

コマンド
pi@raspberrypi:~ $ sudo passwd pi

#rootをロック

コマンド
pi@raspberrypi:~ $ sudo passwd -l root

#ユーザー名を変更
 1.作業ユーザーを追加する(ここではtmp)

コマンド
pi@raspberrypi:~ $ sudo useradd -M tmp
pi@raspberrypi:~ $ sudo gpasswd -a tmp sudo
pi@raspberrypi:~ $ sudo passwd tmp
pi@raspberrypi:~ $ exit

 2.作業ユーザーでログインし、以下のコマンドを実行(Lite版は不要)

コマンド
tmp@raspberrypi:~ $ sudo vi /etc/lightdm/lightdm.conf

 3.autologin-user=piをコメントアウト、保存して以下のコマンドを実行

コマンド
tmp@raspberrypi:~ $ sudo vi /etc/systemd/system/autologin@.service

 4.ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERMpiを新しく変更する予定のユーザー名(newuser)にして保存、再起動
 5.下記のコマンドを実行(newuserは読み替えて)

コマンド
tmp@raspberrypi:~ $ sudo usermod -l newuser pi
tmp@raspberrypi:~ $ sudo usermod -d /home/newuser -m newuser
tmp@raspberrypi:~ $ sudo groupmod -n newuser pi
tmp@raspberrypi:~ $ sudo vi /etc/lightdm/lightdm.conf

 6.3.でコメントアウトした行のコメントを解除、pinewuserにして保存(Lite版は不要)
 7.再起動
 8.newuserでSSHログインし、以下のコマンドを実行

コマンド
newuser@raspberrypi:~ $ sudo userdel tmp

#SSHを公開鍵認証にする
 1.Mac上で以下のコマンドを実行

コマンド
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxxx/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/xxxx/.ssh/id_rsa.
Your public key has been saved in /Users/xxxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxx xxxx@xxxx.local
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
+----[SHA256]-----+
$ scp ~/.ssh/id_rsa.pub pi@raspberrypi.local:

 2.ターミナルを2つ立ち上げ(設定変更用(①)と接続確認用(②))、①だけラズパイにSSH接続する
 3.以下のコマンドを①で実行

コマンド
pi@raspberrypi ~ $ mkdir .ssh
pi@raspberrypi ~ $ cat id_rsa.pub >> .ssh/authorized_keys
pi@raspberrypi ~ $ chmod 700 .ssh
pi@raspberrypi ~ $ chmod 600 .ssh/authorized_keys
pi@raspberrypi ~ $ rm id_rsa.pub
pi@raspberrypi ~ $ sudo vi /etc/ssh/sshd_config

 4.以下の設定を変更する(〇〇の部分はお好きにどうぞ。ここを見ると幸せになるかも。)

#Port 22 →→→ Port 〇〇
PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
PasswordAuthentication no

 5.以下のコマンドを①で実行

コマンド
pi@raspberrypi ~ $ sudo /etc/init.d/ssh restart

 6.以下のコマンドを②で実行し、接続できるか確認する

コマンド
$ ssh -i .ssh/id_rsa -p 〇〇 pi@raspberrypi.local

#SSHを便利にする
##SSHの多重接続の設定

コマンド
$ cd ~/.ssh
$ mkdir connections
$ chmod 700 connections/
$ vi config
.ssh/config
Host *
ControlMaster auto
ControlPath ~/.ssh/connections/%r_%h_%p

##SSHの接続コマンドを短縮する

コマンド
$ vi ~/.ssh/config
.ssh/config
Host raspi
	HostName raspberrypi.local
	User pi
	Port 〇〇
	IdentityFile ~/.ssh/id_rsa
コマンド
$ ssh raspi

#ファイアウォールの設定

コマンド
pi@raspberrypi ~ $ sudo apt-get install ufw
pi@raspberrypi ~ $ sudo ufw default deny
pi@raspberrypi ~ $ sudo ufw allow 〇〇
pi@raspberrypi ~ $ sudo ufw enable
1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?