Compute Module 4 (CM4) を触ってみたくて reTerminal を手に入れた。
環境をぶっ壊したときに備えて、 OS のインストール手順を確認しておこうと、 OS のインストールをやってみることにした。
reTerminal の CM4 への OS イメージの書き込み手順
reTerminal に付属の CM4 への OS イメージの書き込み手順は、以下のブログ記事を参考にさせてもらった。
手順は以下の通り。
- バックパネルを外す
- ヒートシンクを外す
- CM4 の横のスライドスイッチを切り替える
- CM4 に対して OS イメージを書き込む側の環境(以下、作業環境)で rpiboot を動かす
- USBで接続する
- 作業環境で Compute Module 4 の eMMC 領域をディスクとして認識する
- 認識したディスクに OS のイメージを書き込む
- (補足:もし起動時に
ssh
を有効にしたいなら、などのいつもの作業はここでやっておく) - USBでの接続を解除する
- CM4 の横のスライドスイッチを戻す
- ヒートシンクを装着する
- バックパネルを装着する
この中で、「Compute Module 4 に対して OS イメージを書き込む側の環境(以下、作業環境)で rpiboot を動かす」に関して、上記の記事では Windows 環境になっているが、手元の環境は MacBook Air (M1, 2020) だったので、ここだけ手順が大きく異なることになる。
Mac で rpiboot を動かす方法
Seeed Wiki を参考に進める
前述の記事には、「MacやLinuxの場合は、こちらをご参照ください。」とあるので、辿ってみる。
"FOR MAC/LINUX" と書かれているが、完全に Linux を前提にした記述しかないように見える。
rpiboot
のレポジトリを参考に進める
rpiboot
のレポジトリ https://github.com/raspberrypi/usbboot を確認すると、 Readme.md
に macOS の項目 があったので、それに従って進めてみる。
$ git clone --depth=1 https://github.com/raspberrypi/usbboot
$ cd usbboot
$ brew install libusb
$ make
bin2c.c:1:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
^~~~~~~~~
1 error generated.
make: *** [bin2c] Error 1
Readme.md
に書いてある通りにはいかない。まぁ、そんなもんだ。
問題点
解決作に至るまでにエラーを1つずつ解決していったが、問題点を整理すると以下の通り。
- 自分の環境では、シェルの設定で
cc
コマンドが/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
を向いてしまっていて、それが悪影響を与えていたっぽい- この設定、何のために入れたんだろう・・・?
- Homebrew でインストールした
libusb
のヘッダファイルやライブラリファイルが参照できていない
解決策
先に挙げた問題点に対応すれば、問題なく build できた。
以下、上で上げた git clone
から手順の修正版である。
$ git clone --depth=1 https://github.com/raspberrypi/usbboot
$ cd usbboot
$ brew install libusb
$ export CC=/usr/bin/cc
$ export CPATH=$CPATH:/opt/homebrew/include
$ export LIBRARY_PATH=$LIBRARY_PATH:/opt/homebrew/lib
$ make
/usr/bin/cc -Wall -Wextra -g -o bin2c bin2c.c
./bin2c msd/bootcode.bin msd/bootcode.h
./bin2c msd/start.elf msd/start.h
./bin2c msd/bootcode4.bin msd/bootcode4.h
./bin2c msd/start4.elf msd/start4.h
/usr/bin/cc -Wall -Wextra -g -o rpiboot main.c -lusb-1.0
参考 : Intel Mac での手順の例
Intel Mac の場合、自分の環境では同様に cc
が変なところを向いていたので、それだけ修正した。
Homebrew でインストールした libusb
の include
や lib
は自動的に解決してくれた。 /usr/local
配下にインストールされていると、こういうとき楽なのかな。
$ git clone https://github.com/raspberrypi/usbboot
$ cd usbboot
$ brew install libusb
$ export CC=/usr/bin/cc
$ make
/usr/bin/cc -Wall -Wextra -g -o bin2c bin2c.c
./bin2c msd/bootcode.bin msd/bootcode.h
./bin2c msd/start.elf msd/start.h
./bin2c msd/bootcode4.bin msd/bootcode4.h
./bin2c msd/start4.elf msd/start4.h
/usr/bin/cc -Wall -Wextra -g -o rpiboot main.c -lusb-1.0