シングルボードコンピューター「Raspberry Pi」向けにアプリケーションを開発する際、Raspberry Piの実機を使わずに「自分が普段使っているWindowsやMacOSのパソコンで動作確認したい」、「コンパイルやRaspberry Pi OSの各種設定を行った状態でSDカード用のイメージを生成できたら便利だ」と思ったことはないだろうか。
Raspberry Piの実機を使いながらの開発作業は、筆者も常々面倒だと感じている。その悩みは、仮想環境の活用で解決できるかもしれない。今回はWindows 11 Proに「Docker」をインストールしてRaspberry Pi OSの仮想環境を構築。この仮想環境でRustのコードをコンパイルし、その実行ファイルを同梱(どうこん)したOSイメージを作成するところまでを試したので紹介しよう。
コンテナ型仮想環境
Webのサーバーサイドシステムを開発するエンジニアであれば、Dockerを聞いたことがない人は少ないだろう。しかしIoT(Internet of Things)関連のエンジニア、とりわけセンサーやゲートウエイを扱うハードウエアに近いエンジニアにとって、Dockerはあまりなじみがないかもしれない。
IoT関連のエンジニアなら「VirtualBox」や「VMware」を使ったことがある人は多いのではないかと思う。これらは「ホスト型」の仮想環境を提供するソフトウエアだ。ホストOS上でゲストOSが起動しているだけでなく、ゲストOSからホストOSを経由してUSBなどのハードウエアにアクセスできる。ハードウエアからOSまですべてをエミュレートしているため、起動に時間がかかるだけでなくメモリーの消費も大きい。
一方でDockerは「コンテナ型」の仮想環境を提供する。「コンテナ」と言われてもピンと来ないかもしれないが、乱暴に言うと1つのLinuxの上にさまざまなLinuxディストリビューションの仮想環境を作れる。これはDockerの説明として単純化しすぎているのは承知だが、この記事を理解する目的では十分だろう。