嫁から少し古めのラズパイを貰いました。興味はあったのですが一度も触ったことがなかったので、年末年始休みの機会にちょっと遊んでみようと思います。
1. 必要なものを用意します。
- Raspberry Pi 2 ModelB (「2」とか「モデル」とかなにがあるのかさえよく知りません…)
- 手持ちのPC(Mac)
- ラズパイに刺さってた32GBのMicroSD(つまり元々嫁が使っていたやつ)
- MicroSDをMacに接続できるようななにか
RaspberryPi用のOSをダウンロード
まずはOSをMicroSDに焼く必要があるみたいです。
公式サイトを見てみると、OSはNOOBS,Raspbianの2種類があるようです。

NOOBSは色々なOSがインストール時に選べるようなのですが、よくわからないので、シンプルそうなRaspbianを使うことにします。
またRaspbianにも三種類ありました。withDesktopとかはGUIなのかな?とりあえずCLIが動けばよいので、シンプルで軽いLiteというやつをダウンロードすることにしました。

ダウンロードしたファイルは2019-09-26-raspbian-buster-lite.zipという名前で、約450MB、解凍すると2019-09-26-raspbian-buster-lite.imgという1ファイルだけでした。容量は約2.25GBでした。
MicroSDのフォーマット(初期化)
MicroSDには嫁が使ってたOSが入っているはずですが、導入を最初からやってみたいのでMicroSDをフォーマットしちゃいます。
フォーマットはGUIでもディスクユーティリティで「消去」→「フォーマット(MS-DOS)」で初期化できますが、慣れ親しんだCLIでやっちゃいます。
ディスクの確認
MicroSDをMacに接続した状態でdiskutil listを実行すると、私のMacではMicroSDが/dev/disk6にマウントされていることが確認できました。
$ diskutil list
# ※略disk1〜disk5は関係ないので省略
/dev/disk6 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *32.0 GB    disk6
   1:             Windows_FAT_32 boot                    45.0 MB    disk6s1
   2:                      Linux                         32.0 GB    disk6s2
ディスクのフォーマット
確認が済んだので、次は本番のフォーマットです。上記で確認した/dev/disk6 に対してフォーマットを行います。
ディスクのフォーマットはdiskutil eraseDiskコマンドです。フォーマット形式、ディスクの名前、フォーマット対象ディスクの順に指定します。
$ diskutil eraseDisk MS-DOS RPI disk6
Started erase on disk6
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk6s2 as MS-DOS (FAT) with name RPI
512 bytes per physical sector
/dev/rdisk6s2: 62077280 sectors in 1939915 FAT32 clusters (16384 bytes/cluster)
bps=512 spc=32 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=411648 drv=0x80 bsec=62107648 bspf=15156 rdcl=2 infs=1 bkbs=6
Mounting disk
Finished erase on disk6
これでフォーマット完了です。
RaspberryPiのOSをMicroSDに書き込む
これまたCLIでやってしまいます。GUIでもできるのかも知れませんが、残念ながらやり方知りません…
MicroSDのアンマウント
imgファイルを書き込むにはddコマンドを使用しますが、マウントされていると出来ないので一旦アンマウントします。
$ diskutil unMountDisk /dev/disk6
Unmount of all volumes on disk6 was successful
MicroSDへ書き込む
disk6じゃなくてrdisk6って指定すると書き込み速度が早くなります。なんでかは知らないです。
$ sudo dd if=/Users/tomohiro.b.sasaki/Downloads/2019-09-26-raspbian-buster-lite.img of=/dev/rdisk6 bs=1m
2144+0 records in
2144+0 records out
2248146944 bytes transferred in 51.164256 secs (43939795 bytes/sec)
完成!
※まだMicroSDはMacに接続したままにしてください。
SSHログインができるように設定する
ラズパイは、初期設定だとsshログインが許可されていないようです。sshログインできるようにするには、microSDのルートであるbootにsshという名前の空ファイルを作ればよいようです。
$ touch /Volumes/boot/ssh
wifiの設定をしてみる
ラスパイと無線で通信するために、ラズパイにWi-Fiの設定を書き込みます。
Wi-FiのSSID(ネットワーク名)がhogehoge、パスワードがfugafugaのとき、下記のようなファイルを作成しMicroSDのルートディレクトリbootに配置します。
$ vim /Volumes/boot/wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="hogehoge"
    psk="fugafuga"
}
※ こうやればできるらしいのですが、僕のラズパイは無線機能が無さそうです…。なので家に転がってたBuffaloの無線子機を接続することで無線化しました。
RaspberryPiとMacを物理的に繋ぐ
RaspberryPiのOSを書き込んだMicroSDをMacから引っこ抜いて、RaspberryPi本体にぶっ刺します。あとはなんとかしてLANケーブルでRaspberryPi本体とMacを接続して電源を入れます。
Macからラズパイにsshでアクセスしてみる
ラズパイにsshでログインするために必要な情報は、初期では以下のようになっているようです。
| 項目 | 値 | 
|---|---|
| ホスト名 | raspberrypi.local | 
| ユーザー名 | pi | 
| パスワード | raspberry | 
ということでさっそくログインしてみます。
ssh pi@raspberrypi.local
pi@raspberrypi.local's password:
パスワードを聞かれるので、初期パスワードであるraspberryと入力してreturnキーを押すと
すると下記のように表示され、ラズパイに接続されたことが確認できました。
Linux raspberrypi 4.19.75-v7+ #1270 SMP Tue Sep 24 18:45:11 BST 2019 armv7l
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Sep 26 01:25:13 2019 from fe80::2b:e4a3:d9a7:df66%eth0
SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.
pi@raspberrypi:~ $
ちょっと調べて見る
rootになれる
初期ユーザーのpiでrootになれました。
pi@raspberrypi:~ $ sudo su -
SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.
root@raspberrypi:~#
ipを調べる
普通にip addrでいけます。まあdebianですからね。
pi@raspberrypi:~ $ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:e4:b4:9f brd ff:ff:ff:ff:ff:ff
    inet 169.254.60.194/16 brd 169.254.255.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::7609:ae7c:ea60:d924/64 scope link
       valid_lft forever preferred_lft forever
debianのバージョンを調べる
cat /etc/debian_version
10.1
pythonのバージョンを調べる
pi@raspberrypi:~ $ python --version
Python 2.7.16
pi@raspberrypi:~ $ python3 --version
Python 3.7.3
ちゃんと3系もはいっているようです。
細かめの設定をする
パッケージ類のアップデート
なにはともあれ、はいっているものをアップデートします。
$ sudo apt-get update
$ sudo apt-get upgrade
timezoneの変更
ラズパイ専用のコマンドでもできるようなのですが、今後の設定自動化を考えて非対話式のやり方で実施します。
まずは今のtimezoneを確認
$ sudo timedatectl
               Local time: Sun 2019-12-29 05:01:04 GMT
           Universal time: Sun 2019-12-29 05:01:04 UTC
                 RTC time: n/a
                Time zone: Europe/London (GMT, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
timezoneのAsia/Tokyoをセット
$ sudo timedatectl set-timezone Asia/Tokyo
timezoneの再確認
$ sudo timedatectl
               Local time: Sun 2019-12-29 14:16:34 JST
           Universal time: Sun 2019-12-29 05:16:34 UTC
                 RTC time: n/a
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
pipのインストール
# インストール
$ sudo apt-get install python3-pip
# 最新化
$ sudo pip3 install --upgrade pip
# バージョン確認
$ sudo pip3 install --upgrade pip