イメージの書き込みと起動確認
ビルドが通っても、実機で起動して初めて完成です。ここでは出来上がったイメージ(sdcard.img や .wic)を microSD に書き込む方法と、その最中に一文字の打ち間違いで別のディスクを壊さないための安全確認を扱います。あわせて、画面もキーボードも無い基板と対話するためのシリアルコンソール、そして電源を入れてから U-Boot → カーネル → ログインプロンプトへと進む起動の流れ、動かないときの当たりの付け方まで通します。
ビルドが緑色で通っても、それはまだ半分だ。出来上がったイメージを microSD に書き込み、基板に挿し、電源を入れて、ログインプロンプトが出て——そこでようやく「動いた」と言える。
この最終工程には、独特の緊張がある。書き込み先を1文字打ち間違えるだけで、パソコン本体のディスクを消してしまう事故が現実に起きるからだ。だからこそ、手順より先に「安全確認」を身体に入れておきたい。
💽 sdcard.img/.wic とは
Buildroot や Yocto がビルドの最後に吐き出すのが、書き込み用のイメージファイルだ。Buildroot では sdcard.img、Yocto では .wic という拡張子でよく出てくる。
このファイルは「microSD 1枚まるごとの丸写し」だ。中にはブートローダ・カーネル・rootfs が、パーティションの区切りごと丸ごと詰まっている。だから展開ではなく、まるごと転写する。
🩸 dd は装置名の間違いが即死
イメージを microSD へ丸ごと転写する定番が dd コマンドだ。強力だが無慈悲で、指定した相手に問答無用で書き込む。確認も警告も出さない。
危険なのは of=(出力先)の指定だ。ここに microSD ではなくパソコンの内蔵ディスク(たとえば /dev/sda)を書いてしまうと、OS ごと消える。取り返しがつかない。
🔎 lsblk で三度確認
書き込み先を見極める道具が lsblk だ。接続中のディスクを一覧で見せてくれる。microSD を挿す前と後で lsblk を打ち、「新しく増えた行」が目的の microSD だと特定する。
サイズ表示も強い手がかりになる。32GB の microSD を探しているのに 500GB と出る行があれば、それは内蔵ディスクだ。名前とサイズの両方で照合する。
of= には、パーティション(sdb1)ではなくディスク全体(sdb)を指定する。イメージはカード丸ごとの写しなので、宛先も丸ごとでなければ辻褄が合わない。
🔌 シリアルコンソールで中を見る
書き込んだ基板を挿して電源を入れても、画面もキーボードも無いことが多い。そんなとき基板と話すのが、シリアルコンソール(bs-serial-console)だ。細い USB-UART 変換ケーブルでパソコンとつなぐ。
パソコン側では、その線が /dev/ttyUSB0 のようなデバイスとして見える。ここに picocom や minicom でつなぐと、基板が吐く起動メッセージが流れ、ログインもできるようになる。
決定的に重要なのが速度(ボーレート)だ。基板側とパソコン側で数字が食い違うと、文字化けした記号の羅列しか出ない。組込みでは 115200 が定番なので、まずこれで合わせる。
🚦 U-Boot → カーネル → login:
電源投入後、正常なら画面には決まった順で文字が流れる。まずブートローダの U-Boot(boot-uboot)が起動し、次にそれがカーネルを読み込んで起動させ、最後にログインプロンプト login: が出る。
この3段は、いわば起動のチェックポイントだ。どこまで文字が出て、どこで止まったかを見れば、問題の場所がぐっと絞れる。全体を漠然と眺めるより、段で区切って観察する。
🩺 起動しない時の当たり所
そもそも何も表示されない場合、まず疑うのはコンソール側だ。ボーレート違い、TX/RX の逆、そもそも別の /dev/ttyUSB を見ている——「基板は動いているのに見えていないだけ」がとても多い。
U-Boot までは出るのにカーネルで止まるなら、カーネルや rootfs の書き込み、あるいは起動引数(どのパーティションを root にするか)を疑う。U-Boot は動いている証拠なので、電源や配線は白に近い。
書き込みと起動確認は、地味だが組込みで最も事故が起きる工程だ。lsblk で三度確認し、115200 でコンソールをつなぎ、3段の流れを見る——この型を守れば、ここは怖い工程ではなくなる。