#用意するもの
- 母艦(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の設定をする(必要な場合)
ctrl_interface=/var/run/wpa_supplicant
country=JP
network={
ssid="SSID"
psk="パスワード"
}
※その他の設定はこちらを参照
※セキュリティを気にするならパスワードをwpa_passphrase
などで暗号化しておく
※ルーターでmacアドレスのフィルタリングをしている場合(筆者宅)、ルーターの設定からフィルタをオフにするか、起動後に下記の方法でWiFiの設定をする
※有線LANと併用したい場合、ここでは設定せず、起動後に設定する
#オーバークロック(必要な場合)
※自己責任でお願いします!!!
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 + P
でPreferences
へ飛び、上の方のAlways〜
から始まる二つにEnter
でX
をつける(有線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 $TERM
のpi
を新しく変更する予定のユーザー名(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.
でコメントアウトした行のコメントを解除、pi
をnewuser
にして保存(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
Host *
ControlMaster auto
ControlPath ~/.ssh/connections/%r_%h_%p
##SSHの接続コマンドを短縮する
$ vi ~/.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