LoginSignup
1
1

More than 1 year has passed since last update.

Mac で rpiboot を build する

Last updated at Posted at 2021-12-12

Compute Module 4 (CM4) を触ってみたくて reTerminal を手に入れた。

環境をぶっ壊したときに備えて、 OS のインストール手順を確認しておこうと、 OS のインストールをやってみることにした。

reTerminal の CM4 への OS イメージの書き込み手順

reTerminal に付属の CM4 への OS イメージの書き込み手順は、以下のブログ記事を参考にさせてもらった。

手順は以下の通り。

  1. バックパネルを外す
  2. ヒートシンクを外す
  3. CM4 の横のスライドスイッチを切り替える
  4. CM4 に対して OS イメージを書き込む側の環境(以下、作業環境)で rpiboot を動かす
  5. USBで接続する
  6. 作業環境で Compute Module 4 の eMMC 領域をディスクとして認識する
  7. 認識したディスクに OS のイメージを書き込む
  8. (補足:もし起動時に ssh を有効にしたいなら、などのいつもの作業はここでやっておく)
  9. USBでの接続を解除する
  10. CM4 の横のスライドスイッチを戻す
  11. ヒートシンクを装着する
  12. バックパネルを装着する

この中で、「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 でインストールした libusbincludelib は自動的に解決してくれた。 /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
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1