Raspbianのセットアップ1 〜img書き込みからネットワーク設定で躓くまで
これまでのお話と今回やること
前回はRaspberry Pi公式からRaspbian w/ Desktopをダウンロードして解凍しました。
↑ここからダウンロード。ファイルサイズ1.43GB、解凍したimgファイルは4.14GBでした。
ちなみに公式からのダウンロードが途切れがちなときはミラーサイトをりようすると良いようです。
今回はmicroSDに書き込んで、ネットワーク設定とSSHの設定をしたいと思います。
(この記事は実際に作業しながら記事を書きながらやっています←どうでもいい)
VNC(リモートデスクトップ)はラズパイを起動させてからSSH接続してRaspbianのアプデなどが終わった後にしたいと考えています。
ここで勘のいい方は気づいているかと思いますが、まだ一度もラズパイの電源を入れてません。物が届いてから約一週間、写真撮影以外何もしてません。
microSDのフォーマット
ターミナルを起動し、microSDをMacに挿してコマンド"diskutil"でディスクの場所を調べます。ちょっと見切れちゃってますがdisk2なのがわかります。
$ diskutil list
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.3 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_APFS Container disk1 500.1 GB disk0s2
/dev/disk1 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +500.1 GB disk1
Physical Store disk0s2
1: APFS Volume Macintosh HD 184.5 GB disk1s1
2: APFS Volume Preboot 44.8 MB disk1s2
3: APFS Volume Recovery 512.8 MB disk1s3
4: APFS Volume VM 2.1 GB disk1s4
/dev/disk2 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *32.2 GB disk2
1: Windows_NTFS 32.2 GB disk2s1
これまたdiskutilでFAT32にフォーマットします。もう、見切れるのは仕様です。
$ diskutil eraseDisk FAT32 RPI /dev/disk2
Started erase on disk2
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk2s2 as MS-DOS (FAT32) with name RPI
512 bytes per physical sector
/dev/rdisk2s2: 62501024 sectors in 1953157 FAT32 clusters (16384 bytes/cluster)
bps=512 spc=32 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=411648 drv=0x80 bsec=62531584 bspf=15260 rdcl=2 infs=1 bkbs=6
Mounting disk
Finished erase on disk2
フォーマットが終わったらmicroSDをアンマウントします。
$ diskutil unmountDisk /dev/disk2
Unmount of all volumes on disk2 was successful
microSDにimgファイルを書き込む
ラズパイ公式にimgファイルの書き込み方が出ています。とても親切ですね。
Etcherというツールを使うと楽だよと言ってくれてますが、意固地にもターミナルコマンドで作業します。
$ sudo dd bs=1m if=2018-10-09-raspbian-stretch.img of=/dev/disk2 conv=sync
公式によると処理に数分かかると言ってますが、その間ターミナルはうんともすんとも言わないので不安になります。
そんなときはCtrl+Tを押すと進捗を表示してくれるそうです。
$ sudo dd bs=1m if=2018-10-09-raspbian-stretch.img of=/dev/disk2 conv=sync
load: 1.42 cmd: dd 10132 running 0.02u 3.49s
254+0 records in
254+0 records out
266338304 bytes transferred in 129.520093 secs (2056347 bytes/sec)
254+0 records in
254+0 records out
266338304 bytes transferred in 129.520598 secs (2056339 bytes/sec)
load: 1.44 cmd: dd 10132 uninterruptible 0.02u 4.01s
291+0 records in
290+0 records out
304087040 bytes transferred in 148.685007 secs (2045176 bytes/sec)
load: 1.46 cmd: dd 10132 uninterruptible 0.02u 4.56s
329+0 records in
328+0 records out
343932928 bytes transferred in 167.633973 secs (2051690 bytes/sec)
load: 2.05 cmd: dd 10132 uninterruptible 0.06u 10.23s
850+0 records in
849+0 records out
890241024 bytes transferred in 429.465961 secs (2072902 bytes/sec)
不安にかられて何度もCtrl+Tを押します。
430秒ということは7分ちょっと経ってますが全然終わる気配が見られません。
load: 1.62 cmd: dd 10132 uninterruptible 0.18u 26.79s
2280+0 records in
2279+0 records out
2389704704 bytes transferred in 1145.881615 secs (2085473 bytes/sec)
1145秒(≒20分)経ちましたがうんともすんとも言いません。数分なんてウソです。
load: 1.48 cmd: dd 10132 uninterruptible 0.28u 41.61s
3644+0 records in
3643+0 records out
3819962368 bytes transferred in 1826.872562 secs (2090985 bytes/sec)
3944+0 records in
3944+0 records out
4135583744 bytes transferred in 1976.979306 secs (2091870 bytes/sec)
$
気がついたら終わっていました。どうやら32分くらいかかったようです。
後で気づいたのですがddコマンドのbs=1mはブロックサイズ1MB、つまりは一度にSDカードに転送するデータサイズを1MBに抑えましょうという意味だそうで、そりゃぁ転送に時間がかかるよなぁ、、、ということです。
$ diskutil list
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.3 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_APFS Container disk1 500.1 GB disk0s2
/dev/disk1 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +500.1 GB disk1
Physical Store disk0s2
1: APFS Volume Macintosh HD 184.7 GB disk1s1
2: APFS Volume Preboot 44.8 MB disk1s2
3: APFS Volume Recovery 512.8 MB disk1s3
4: APFS Volume VM 2.1 GB disk1s4
/dev/disk2 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *32.2 GB disk2
1: Windows_FAT_32 boot 45.9 MB disk2s1
2: Linux 4.1 GB disk2s2
ドライブ名がbootになって、中身もいい感じになってます。
これでラズパイにmicroSDを入れて起動すればいいのですが、ここから一工夫していきます。
SSH接続の有効化
RaspbianはデフォルトではSSH接続が無効になっています。そこで boot/ 直下にsshという名前のファイルを置きます。これでSSHが有効になります。
$ touch /Volumes/boot/ssh
$ ls -l /Volumes/boot/ssh
-rwxrwxrwx 1 ********* staff 0 11 11 21:08 /Volumes/boot/ssh
中身は空で大丈夫です。lsコマンドでみるとサイズ0byteです。
ネットワークの設定...で躓く
次にWi-FiのSSIDやパスフレーズ、固定IPアドレスを設定ファイルに直接書き込んでやればいいじゃないかということで/etc/wpa_supplicant/wpa_supplicant.confを編sy....見つからない。それどころか/etc/がありません。
$ ls
Macintosh HD Preboot Recovery boot
$ cd boot/
$ ls
COPYING.linux bcm2710-rpi-3-b.dtb issue.txt
LICENCE.broadcom bcm2710-rpi-cm3.dtb kernel.img
LICENSE.oracle bootcode.bin kernel7.img
bcm2708-rpi-0-w.dtb cmdline.txt overlays
bcm2708-rpi-b-plus.dtb config.txt ssh
bcm2708-rpi-b.dtb fixup.dat start.elf
bcm2708-rpi-cm.dtb fixup_cd.dat start_cd.elf
bcm2709-rpi-2-b.dtb fixup_db.dat start_db.elf
bcm2710-rpi-3-b-plus.dtb fixup_x.dat start_x.elf
$
ここまで来てやっと気づきました。遅い。
「今見てるところはFATだけどLinuxが動くのは別ファイルシステムじゃね?!」
そう、今まで見ていたbootはFATだけど、etc等はext4なんですね。そりゃいくら探しても見つかりません。
余談:調べたところラズパイは電源投入時CPUの内蔵ROMのブートローダーで起動し、FAT領域の2次ブートローダーを読み込んでLinuxを起動するそうです。
ラズパイはデフォルトでDHCPクライアントとして立ち上がるので、無理しないで有線LAN接続してしまえばサクッとSSH接続できて...となるのですが、それ他の人がやってることじゃね?面白くなくなくね?
ということで、もう少しだけ頑張ってみるね。[つづく]