COLUMN
【Linux Tipsシリーズ】平凡なソフトウェア開発者が自分Linuxを作ってみた ⑤
だいぶ間が空いてしまいしたが、今回のコラムもBuildrootを題材にします。
内容としては前回の続きでもありますが、今まで使用してきたBuildrootは、2020年3月でアップデートの提供がされなくなっていますので、Buildrootのアップデートを行い、作成されたRaspberryPi 用イメージは「Raspberry Pi Imager」を使ってマイクロSDに書き込んでみたいと思います。
Buildrootのバージョンを上げる
本コラムで使用している Buildroot のバージョンは buildroot-2019.02.5 ですが、このバージョンのサポート期間は 2020年3月までとなっていますので(Buildrootのニュースにある「2019.02 released」を参照)、既にセキュリティに関する事やその他の重要なアップデートが提供されなくなっている状態と言えます。
Buildrootを使ってみるだけであればBuildrootのバージョンを気にする必要はないと思いますが、作成したシステムをネットワークに接続して使用する場合は、セキュティ対策が施されていたほうが安心できますし、各種アプリケーションのバージョンアップやアプリケーションの追加により、使いやすい状態のシステムイメージを作ることが可能となりますので、可能であれば新しいバージョンの利用をおすすめします。
Buildrootのバージョンを上げる方法として、最初から作り直す方法と、前回からの続きで行う方法の二通りの方法が考えられます。 ここでは、前回からの続きで行います。
使用するBuildrootですが、ダウンロードページを見ると「release : 2020.08.1」が新しいパッケージとなりますが、サポート期間は半年程度であり、後一ヶ月ほどすると次のバージョンとなってしまいますので、一年間サポートが行われる長期間サポート対象の「release : 2020.02.7」を使用します。
Buildrootのダウンロードページから「release : 2020.02.7」をダウンロードし、適当なディレクトリ(ここでは、ホームディレクトリ)に展開します。
~$ cd
~$ tar vxf buildroot-2020.02.7.tar.gz
新しいBuildrootが展開されたので設定の変更を行って行きます。
本コラムでは、「RaspberryPi 3 Model B+」をターゲットデバイスにした64bit OSの構築行い、rootパスワードの設定やカーネル設定の変更等を行ってきました。(表 1 カスタマイズ項目一覧 参照)
表 1 カスタマイズ項目一覧
カスタマイズ項目 | 内容 |
ビルド、インストールするアプリケーション | 軽量sshである「dropbear」をインストール対象に追加。 |
root password | 初期値である「なし」を”admin”に変更。 |
ルートファイルシステムオーバーレイ | 独自アプリケーションをルートファイルシステムに配置。 |
カーネル設定の変更 | IPv6 ドライバを構成から除外。 |
これらを最初から一つずつ設定するのは手間がかかりますので、前回作った「br2-externalツリー」を利用してお手軽に設定してみることにします。
Buildrootのディレクトリに移動して、本コラム用に作成した「br2-externalツリー」が読み込めるか確認し、Buildrootの設定を変更します。
~$ cd ~/ buildroot-2020.02.7
~/buildroot-2020.02.7$ make BR2_EXTERNAL=~/br2-external list-defconfigs
Built-in configs:
aarch64_efi_defconfig – Build for aarch64_efi
acmesystems_aria_g25_128mb_defconfig – Build for acmesystems_aria_g25_128mb
・
・
・
zynqmp_zcu106_defconfig – Build for zynqmp_zcu106
External configs in “br2-external sample for KUMICO”:
column_br_defconfig – Build for column_br
「External configs in ・・・」に「column_br_defconfig」と表示され、「br2-externalツリー」の読み込みが確認できましたのでBuildrootの設定を変更します。
~/buildroot-2020.02.7$ make BR2_EXTERNAL=~/br2-external column_br_defconfig
#
# configuration written to ~/buildroot-2020.02.7/.config
#
~/buildroot-2020.02.7$ egrep “BR2_TARGET_GENERIC_ROOT_PASSWD|BR2_ROOTFS_OVERLAY|BR2_PACKAGE_DROPBEAR” .config
BR2_TARGET_GENERIC_ROOT_PASSWD=”admin”
BR2_ROOTFS_OVERLAY=”~/br2-external/overlay_root”
BR2_PACKAGE_DROPBEAR=y
BR2_PACKAGE_DROPBEAR_CLIENT=y
BR2_PACKAGE_DROPBEAR_DISABLE_REVERSEDNS=y
BR2_PACKAGE_DROPBEAR_SMALL=y
# BR2_PACKAGE_DROPBEAR_WTMP is not set
# BR2_PACKAGE_DROPBEAR_LASTLOG is not set
# BR2_PACKAGE_DROPBEAR_LEGACY_CRYPTO is not set
BR2_PACKAGE_DROPBEAR_LOCALOPTIONS_FILE=”” $
~/buildroot-2020.02.7$ make
INFO: hdimage(sdcard.img): adding partition ‘boot’ (in MBR) from ‘boot.vfat’ …
INFO: hdimage(sdcard.img): adding partition ‘rootfs’ (in MBR) from ‘rootfs.ext4’ …
INFO: hdimage(sdcard.img): writing MBR
「make BR2_EXTERNAL=~/br2-external column_br_defconfig」を実行し、Buildrootの設定を本コラムで設定した状態に変更されたことが確認できましたので、「make」を実行し、RaspberryPi用のディスクイメージを作ります。
~/buildroot-2020.02.7$ sudo apt install ./imager_1.4_amd64.deb
イメージファイルは、Buildrootのディレクトリ配下の「output/images/」に「sdcard.img」というファイル名で生成されています。
公式の書き込みツールを使う
RaspberryPi3用のディスクイメージが生成されたので、マイクロSDに書き込んでRaspberryPiを起動してみます。
マイクロSDに書き込む方法ですが、2020年3月に「Raspberry Pi Imager」というRaspberryPi用OSをマイクロSDに書き込むためのツールがラズベリーパイ財団によりリリースされていますので、今回は「Raspberry Pi Imager」を使ってマイクロSDに書き込みます。
「Raspberry Pi Imager」は、RaspberryPiの公式ホームページのダウンロードページからダウンロードしてきます。
-
※
-
ダウンロードページには、Windows用、macOS用、Ubuntu用と三種類ありますが、Buildrootの環境をUbuntu18.04上に構築しているため、使用する「Raspberry Pi Imager」もUbuntu用(imager_1.4_amd64.deb)を使用します。
ダウンロードしてきたdebパッケージをインストールします。「Raspberry Pi Imager」は依存しているパッケージがあり、それらもインストールする必要がありますが、「apt install」コマンドを使用するか、ファイルマネージャーで「Raspberry Pi Imager」debパッケージを右クリックして「ソフトウェアのインストール」を選択(図 1 「Raspberry Pi Imager」のインストール参照)して依存パッケージごとインストールします。
図 1 「Raspberry Pi Imager」のインストール
インストールができたので「Raspberry Pi Imager」を起動して、マイクロSDにRaspberry ディスクイメージを書き込んでみます。
「Raspberry Pi Imager」を起動すると、書き込むOSを選択するボタン(“CHOOSE OS”)、書き込むSDカードを選択するボタン(”CHOOSE SD CARD”)、書き込み実行ボタン(”WRITE”)が並んだウインドウが表示されます。(図 2 RaspberryPiImager起動画面 参照)
※少々紛らわしいのですが、このアプリケーションのコマンド名は「rpi-imager」となっていて、アクティビティ画面やWindowsでいうスタートメニューといったアプリケーションのランチャーに登録される名称は 「Imager」 となっています。
図 2 RaspberryPiImager起動画面
“CHOOSE OS”をクリックすると“Raspberry Pi OS(32-bit)”や“Ubuntu”等、書き込み可能なOSの一覧が表示されます。(図 3 書き込み可能OS一覧 参照)
今回はBuildrootで作ったイメージを書き込みますので、一覧の最後にある“Use custom”をクリックして、Buildrootのディレクトリ配下にある「sdcard.img」を選択します。
図 3 書き込み可能OS一覧
書き込むイメージの選択が終わったので、書き込み先を指定し書き込みを実行します。 ”CHOOSE SD CARD”をクリックするとSDカードドライブの一覧が表示されますので(図 4 SDカードドライブ一覧 参照)、書き込み先となるSDカードを選択し、”WRITE”をクリックしてイメージを書き込みます。
図 4 SDカードドライブ一覧
“Write Successful”のウインドウ(図 5 書き込み終了画面 参照)が表示されたら書き込み完了です、RaspberryPiを起動してカスタマイズした内容が反映されているか確認します。
図 5 書き込み終了画面
軽量sshである「dropbear」がインストールされているはずなので、sshを使用してRaspberryPiにログインします。ユーザー名は“root”、パスワードは”admin”でログインします。
ログインができたので、「カーネルバージョン」、「IPv6ドライバの除外」、「ルートファイルシステムオーバーレイ」の確認を行います。(図 6 設定内容確認結果 参照)
図 6 設定内容確認結果
IPv6に関する情報が表示されず、「ルートファイルシステムオーバーレイ」で指定した独自アプリケーションが配置済みになっていることも確認できたので、「br2-externalツリー」を使用することで、お手軽にBuildrootの別バージョンへ移行できることが確認できました。
今回は、「br2-externalツリー」の構成ファイルを変更せず使用したためカーネルのバージョンが変わっていませんが(4.14.95のまま)、「release : 2020.02.7」のRaspberryPiカーネルのバージョンは「4.19.97」となっていますので、機会があったらカーネルバージョンの変更に関しても取り上げていこうと思います。
個別相談も承っております。下記よりお申し込みください。