Top/EBUG勉強会/20240217_BuildFuguIta

河豚板のビルドシステム

EBUG 第88回会合 2024年2月17日
川俣吉広、kaw@on.rim.or.jp

はじめに

河豚板は 2023年12月-2024年1月にMakefileを始めとするビルドツールの全面改良を行い、OpenBSDからスクラッチで生成できるようになりました。
今回は、このビルドツールの内容についてざっくりと紹介します。

おさらい: 河豚板のファイルシステムのレイアウト

以下の説明は起動モード0の場合

それ以外の起動モードについては、河豚板ガイドの「起動モードとファイルシステム」を参照のこと。

fi-filesys-mode0.png

/

/sysmedia

/fuguita

/ram

おさらい: デバイスのパーティション構成

LiveDVD

普通のEl Torito規格のブート構成。UEFIのネイティブブートには未対応、CSMで*2

LiveUSB (amd64の場合)

ビルドシステム

Makefileと数個のシェルスクリプトなどで構成

このビルドシステムで作成できるのは、LiveDVD用のISOイメージファイル。 出来上がったISOイメージで河豚板を起動し、usbfadmユティリティのnewdrive機能を呼び出してLiveUSB用のディスクイメージを生成する。
ビルドシステムのMakefileには、vmm(4)上でISOイメージを起動し、LiveDVDの動作チェックとLiveUSBの生成を行うための dvd2usb ターゲットが存在する。

fiflow.png

ブートローダ

カーネル

/ ... ramdisk root

構成要素

イメージファイル(rdroot.img)として作成し、rdsetroot(8)ユティリティを用いてカーネルと結合する。

fuguita-*.ffsimg ... システムのファイルツリーイメージ

3つのフェーズを経て作成

Makefileの変遷 ... 「秘伝のタレ」を取り除く

当初、MakefileはOpenBSDのErrata適用時に、必要なISOイメージを生成する部分のみサポート。

それ以外の部分はメジャーリリース時に一回だけ行うことがほとんどで、頻繁に実行することがなかったため、毎回手でコマンドを打って処理していた → 秘伝のタレ

その後、以下のように、徐々に処理をMakefileに吸収していった。

2005-

ISOの生成部分廻りをMakefile化

後は手動

2009-

手動操作の中でも頻繁に行う部分をMakefileに追加

2022/01-

ファイルツリーとカーネルの生成部分を追加

2022/04-

追加部分をさらに拡大

2023/12-2024/01

素のOpenBSD上で、ほぼmakeだけで河豚板をビルドできるようになる

以上により、「秘伝のタレ」がなくなり、ビルドツールの配布サイズの縮小と、アーキテクチャ非依存化が実現した。

$ ls -lh tools-7.4.tar.gz old/tools-7.3-*.tar.gz
-rw-r--r--  1 ftpadmin  ftpadmin  28.5M Apr 23  2023 old/tools-7.3-amd64.tar.gz
-rw-r--r--  1 ftpadmin  ftpadmin  38.2M Apr 23  2023 old/tools-7.3-arm64.tar.gz
-rw-r--r--  1 ftpadmin  ftpadmin  25.8M Apr 23  2023 old/tools-7.3-i386.tar.gz
-rw-r--r--  1 ftpadmin  ftpadmin  74.8K Jan  8 12:18 tools-7.4.tar.gz

More Topics


Top/EBUG勉強会/20240217_BuildFuguIta

*1 リマスター時の指定でtmpfsに変更可能
*2 OpenBSD 7.4-currentのmkhybrid(8)にはUEFIブートが取り入れられたようだ。
*3 OpenBSDのsyspatchのものではなく、河豚板独自に作成したtarball
*4 ハードリンクが扱えない&&遅いため、OpenRSYNCは使用不可

Front page   New Page list Search Recent changes   Help   RSS of recent changes