吉方位確認サービス「楽方位」α版を公開しました。

macOS で microSD カードに Raspbian を書き込み、Raspberry Pi 3 にインストールして起動し、SSH 設定まで

Sponsored Links

はじめに

Raspbian は Raspberry Pi Foundation (ラズベリーパイ財団) の公式 OS です。Debian ベースです。

Raspbian is the Foundation’s official supported operating system.

https://www.raspberrypi.org/downloads/raspbian/

macOS で、microSD カードに Raspbian をインストールし、Raspberry Pi で使用します。

公式ドキュメント

INSTALLING OPERATING SYSTEM IMAGES ON MAC OS

https://www.raspberrypi.org/documentation/installation/installing-images/mac.md

私の環境

  • macOS Mojave 10.14.4
  • microSD カード (32GB)
  • Raspberry Pi 3 Model B

イメージのダウンロード

まず、Raspbian のイメージを ZIP でダウンロードします。2019-05-10 時点で提供されているバージョンは April 2019 です。リリース日は 2018-04-08 で、カーネルは 4.14 です。

https://www.raspberrypi.org/downloads/raspbian/

イメージは 3 種類あります。

  • RASPBIAN STRETCH WITH DESKTOP AND RECOMMENDED SOFTWARE
  • RASPBIAN STRETCH WITH DESKTOP
  • RASPBIAN STRETCH LITE

私は GUI は必要なく、必要最小限のところから始めたいため、RASPBIAN STRETCH LITE を選択します。

microSD カードの確認

ここからは macOS のターミナル上で作業します。

まず、macOS に microSD カードを接続していない状態で、どのようなデバイスが存在しているか確認してみます。私の環境では /dev/disk0 から /dev/disk1 まで存在していました。

ls -al /dev/disk*

コマンドの実行結果です。

brw-r-----  1 root  operator    1,   0  5  4 22:37 /dev/disk0
brw-r-----  1 root  operator    1,   1  5  4 22:37 /dev/disk0s1
brw-r-----  1 root  operator    1,   2  5  4 22:37 /dev/disk0s2
brw-r-----  1 root  operator    1,   3  5  4 22:37 /dev/disk1
brw-r-----  1 root  operator    1,   4  5  4 22:37 /dev/disk1s1
brw-r-----  1 root  operator    1,   7  5  4 22:37 /dev/disk1s2
brw-r-----  1 root  operator    1,   5  5  4 22:37 /dev/disk1s3
brw-r-----  1 root  operator    1,   6  5  4 22:37 /dev/disk1s4

diskutil でも確認してみます。

diskutil list

コマンドの実行結果です。

/dev/disk0 (internal):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                         500.3 GB   disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:                 Apple_APFS Container disk1         500.0 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +500.0 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            345.9 GB   disk1s1
   2:                APFS Volume Preboot                 66.9 MB    disk1s2
   3:                APFS Volume Recovery                1.0 GB     disk1s3
   4:                APFS Volume VM                      3.2 GB     disk1s4

カードリーダー経由で、macOS に microSD カードを接続してみます。私の環境では、/dev/disk2 として接続されました。

ls -al /dev/disk*

コマンドの実行結果です。

brw-r-----  1 root  operator    1,   0  5  4 22:37 /dev/disk0
brw-r-----  1 root  operator    1,   1  5  4 22:37 /dev/disk0s1
brw-r-----  1 root  operator    1,   2  5  4 22:37 /dev/disk0s2
brw-r-----  1 root  operator    1,   3  5  4 22:37 /dev/disk1
brw-r-----  1 root  operator    1,   4  5  4 22:37 /dev/disk1s1
brw-r-----  1 root  operator    1,   7  5  4 22:37 /dev/disk1s2
brw-r-----  1 root  operator    1,   5  5  4 22:37 /dev/disk1s3
brw-r-----  1 root  operator    1,   6  5  4 22:37 /dev/disk1s4
brw-r-----  1 root  operator    1,   8  5 10 00:38 /dev/disk2
brw-r-----  1 root  operator    1,   9  5 10 00:38 /dev/disk2s1
brw-r-----  1 root  operator    1,  10  5 10 00:38 /dev/disk2s2

diskutil でも確認してみます。

diskutil list

コマンドの実行結果です。

/dev/disk0 (internal):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                         500.3 GB   disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:                 Apple_APFS Container disk1         500.0 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +500.0 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            346.0 GB   disk1s1
   2:                APFS Volume Preboot                 66.9 MB    disk1s2
   3:                APFS Volume Recovery                1.0 GB     disk1s3
   4:                APFS Volume VM                      3.2 GB     disk1s4

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *32.4 GB    disk2
   1:             Windows_FAT_32 boot                    46.0 MB    disk2s1
   2:                      Linux                         32.3 GB    disk2s2

microSD カードのフォーマット

diskutil コマンドで、microSD カードをフォーマットします。まず、ヘルプを確認します。

diskutil eraseDisk --help

コマンドの実行結果です。

Usage:  diskutil eraseDisk format name [APM[Format]|MBR[Format]|GPT[Format]]
        MountPoint|DiskIdentifier|DeviceNode
(Re)-partition a whole disk (create a new partition map). This completely
erases any existing data on the given whole disk; all volumes on this disk
will be destroyed. Format is the specific file system name you want to erase it
as (HFS+, etc.). Name is the (new) volume name (subject to file system naming
restrictions), or can be specified as %noformat% to skip initialization
(newfs). You cannot erase the boot disk.
Ownership of the affected disk is required.
Example: diskutil eraseDisk JHFS+ UntitledUFS disk3

というわけで、私は下記のように FAT32 でフォーマットしてみました。デバイス番号は個々の環境で異なるかと思います。この数値を間違えると取り返しの付かないことになる可能性があるため、細心の注意を払う必要があります。

diskutil eraseDisk FAT32 PI MBR /dev/disk2

コマンドの実行結果です。

Started erase on disk2
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk2s1 as MS-DOS (FAT32) with name PI
512 bytes per physical sector
/dev/rdisk2s1: 63240000 sectors in 1976250 FAT32 clusters (16384 bytes/cluster)
bps=512 spc=32 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=2048 drv=0x80 bsec=63270912 bspf=15440 rdcl=2 infs=1 bkbs=6
Mounting disk
Finished erase on disk2

diskutil で確認してみます。/dev/disk5 が FAT32 でフォーマットされています。

diskutil list

コマンドの実行結果です。


(snip)

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *32.4 GB    disk2
   1:                 DOS_FAT_32 PI                      32.4 GB    disk2s1

microSD カードのアンマウント

microSD カードがマウントされている状態では Raspbian のイメージを書き込めないため、アンマウントします。

diskutil unmountDisk /dev/disk2

コマンドの実行結果です。

Unmount of all volumes on disk2 was successful

なお、アンマウントしない状態でイメージを書き込もうとすると、下記のようなメッセージが出力されます。

dd: /dev/rdisk2: Resource busy

microSD カードへのイメージ書き込み

ダウンロードした Raspbian の ZIP ファイルを解凍し、イメージファイルを取得します。

unzip 2019-04-08-raspbian-stretch-lite.zip

解凍された拡張子が img のイメージファイルを dd コマンドで microSD カードに書き込みます。of で指定するデバイス番号は個々の環境で異なるかと思います。この数値を間違えると取り返しの付かないことになる可能性があるため、細心の注意を払う必要があります。

sudo dd bs=1m if=2019-04-08-raspbian-stretch-lite.img of=/dev/rdisk2 conv=sync

コマンドの実行結果です。2分程度で書き込みが完了しました。

1720+0 records in
1720+0 records out
1803550720 bytes transferred in 117.469428 secs (15353363 bytes/sec)

diskutil で確認してみます。

diskutil list

コマンドの実行結果です。この時点では Linux (Raspbian) としては 1.8GB ですが、Raspbian 起動時に microSD カードの容量まで拡張されるため、安心ください。


(snip)

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *32.4 GB    disk2
   1:             Windows_FAT_32 boot                    45.0 MB    disk2s1
   2:                      Linux                         1.8 GB     disk2s2

microSD カードの取り出し

最後に microSD カードを取り出します。

diskutil eject /dev/rdisk2

コマンドの実行結果です。これで macOS から microSD カードを取り外すことができます。

Disk /dev/rdisk2 ejected

Raspbian の起動

Raspberry Pi に

  • キーボード
  • モニタに接続された HDMI ケーブル
  • ネットワークに接続された LAN ケーブル

を接続し、microUSB 経由で電源を供給し、Raspbian を起動します。

モニタにログイン画面が表示されれば Raspbian のインストールに成功しています。

Raspbian のデフォルトのユーザー名は pi、そのパスワードは raspberry です。

Raspbian の各種確認

カーネルのバージョンを確認してみます。

$ uname -a
Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux

ディスク使用状況を確認してみます。今回、32GB の microSD カードを使用していますが、きちんと容量一杯に使用領域が拡張されていることが分かります。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        30G  1.1G   28G   4% /
devtmpfs        460M     0  460M   0% /dev
tmpfs           464M     0  464M   0% /dev/shm
tmpfs           464M   12M  452M   3% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           464M     0  464M   0% /sys/fs/cgroup
/dev/mmcblk0p1   43M   22M   21M  51% /boot
tmpfs            93M     0   93M   0% /run/user/1000

OS の情報を確認してみます。Debian 9 (stretch) ベースですね。

$ cat /etc/os-release 
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

Raspbian の SSH 設定

Raspbian は初期状態で APT で SSH がインストールされています。しかし、Raspbian のデフォルトでは SSH が無効化されています。よって、SSH がインストールされているものの使用できない状態となっています。

リリースノートの 2016-11-25 に記述されています。

http://downloads.raspberrypi.org/raspbian/release_notes.txt

2016-11-25:
* SSH disabled by default; can be enabled by creating a file with name “ssh” in boot partition

http://downloads.raspberrypi.org/raspbian/release_notes.txt

SSH を有効にするために、/boot 下に ssh という名前の空のファイルを作成し、Raspbian を再起動します。

sudo touch /boot/ssh
sudo reboot

Raspbian 再起動後、他のコンピュータから SSH で接続できることを確認します。

その他

ユーザー追加

デフォルトのユーザーである pi の他にユーザーを作成して追加しておきます。sudo コマンドも使用できるようにします。

$ sudo adduser hirooka
Adding user `hirooka' ...
Adding new group `hirooka' (1002) ...
Adding new user `hirooka' (1002) with group `hirooka' ...
Creating home directory `/home/hirooka' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for hirooka
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] 

$ sudo gpasswd -a hirooka sudo
Adding user hirooka to group sudo

ネットワーク

IP アドレスを固定にしてみます。

Raspbian Jessie 以降、/etc/network/interfaces ではなく、/etc/dhcpcd.conf で設定します。

$ cat /etc/network/interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

有線 LAN

有線 LAN を設定します。

sudo sh -c "echo '' >> /etc/dhcpcd.conf"
sudo sh -c "echo 'interface eth0' >> /etc/dhcpcd.conf"
sudo sh -c "echo 'static ip_address=192.168.115.8/24' >> /etc/dhcpcd.conf"
sudo sh -c "echo 'static routers=192.168.115.1' >> /etc/dhcpcd.conf"
sudo sh -c "echo 'static domain_name_servers=192.168.115.1' >> /etc/dhcpcd.conf"

無線 LAN

無線 LAN を設定します。

まず、IP アドレスを設定します。

sudo sh -c "echo '' >> /etc/dhcpcd.conf"
sudo sh -c "echo 'interface wlan0' >> /etc/dhcpcd.conf"
sudo sh -c "echo 'static ip_address=192.168.115.9/24' >> /etc/dhcpcd.conf"
sudo sh -c "echo 'static routers=192.168.115.1' >> /etc/dhcpcd.conf"
sudo sh -c "echo 'static domain_name_servers=192.168.115.1' >> /etc/dhcpcd.conf"

次に、/etc/wpa_supplicant/wpa_supplicant.conf の内容を確認します。

$ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

日本の場合、下記の 1 行を追加します。

sudo sh -c "echo 'country=JP' >> /etc/wpa_supplicant/wpa_supplicant.conf"

さらに、無線 LAN ルータの SSID とパスワードを登録します。SSID の名前が myssd、そのパスワードが mypassword の場合は、下記の通りです。

sudo sh -c "echo '' >> /etc/wpa_supplicant/wpa_supplicant.conf"
sudo sh -c "wpa_passphrase myssid mypassword >> /etc/wpa_supplicant/wpa_supplicant.conf"

再度、/etc/wpa_supplicant/wpa_supplicant.conf の内容を確認してみます。SSID の設定が反映されています。さらに、パスワードの平文はコメントアウトされ、psk の文字列が自動生成されています。

$ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
	ssid="myssid"
	#psk="mypassword"
	psk=xxxxxxxx...
}

OS 再起動後、固定に設定した有線 LAN の IP アドレス、無線 LAN の IP アドレスに接続できることを確認します。

OS を再起動させたくない場合は、dhcpd を reload します。

sudo service dhcpcd reload