河豚板の複数アーキテクチャ対応†
OpenBSD Live System「河豚板」は、2005年初頭のCD-OpenBSD 3.6を起源とし、以来 i386アキーテクチャの OpenBSD/i386 をベースとしてリリースを続けてきました。
この度、OpenBSD 6.0をベースとするFuguIta 6.0にて従来のi386アーキテクチャに加え、amd64アーキテクチャに対応版もリリース致しました。
今回の勉強会では、このFuguIta 6.0のamd64対応、およびそれに関連する周辺作業についてご報告致します。
amd64対応の経緯†
- ユーザからの要望で最も多かったのが amd64 プラットフォーム対応 ... メール/Wiki共
- 2008年にFuguIta 4.3で実験的に対応
- 「Member of the 2600 Community」より、OpenBSD/amd64ベースのセキュリティツール製作を計画している旨連絡があり、それに対し試作・提供。
- 当時は手元にamd64マシンがなかったため、i386上でqemu-x86_64を走行させ、その上で構築。
- FuguIta-4.3-amd64-200805222alpha.iso.gz
- FuguIta-BuildTools-4.3-amd64.tar.gz
- amd64対応要望の例 (FuguIta/BBSより)
User from Oklahoma U.S.A.
Charlie Ebert (2016-03-17 (Thu) 11:13:45)
I have been using this for several versions on USBDISK.
I just can't wait to see the 5.9 version when it comes out.
There is supposed to be a VM in that version!!! YEAH!!!!
Anyway, thank you for all your work. I do wonder why you don't also
have a 64 bit version of this same FuguIta software?
Thank you very much
Charlie
Thank you for using FuguIta. Also, I'm looking forward to seeing
OpenBSD 5.9, and preparing my PC to build FuguIta 5.9. I agree that a
64 bit version of FuguIta is quite attractive. But I don't have
enough time to build both 64 and 32 bit FuguItas... A 32 bit version
of FuguIta is prior than 64, because one of the main purpose of
FuguIta is to use old and legacy machines effectively.
-- kaw 2016-03-17 (Thu) 22:25:21
上記の要にマンパワー的に2つのアーキテクチャに対応するのは困難
- FuguIta 5.9で試験的にリリース
- FuguIta-5.9-amd64-201608056shrinked.iso.xz
- OpenBSD 6.0本体+FuguIta関連ツールを収録し、それらのサイズを低減したもの。
- FuguIta 6.0からi386、amd64版の両方を正式にリリース
- FuguIta-6.0-i386-201609124
- FuguIta-6.0-amd64-201609153
- ...2つのプラットフォームに対応する替わりに、各種ソフトの同梱や日本語関連の対応は行わないこととした。
- ...その後、11/14現在まででErrata対応等で計4回改版。
ベースシステムの対応†
手順はFuguIta-4.3-amd64で確立していたので、今回もほぼそれを踏襲した。
- i386とamd64の作業環境は別パーティションに作成し、デュアルブートできるようにした。
- OpenBSD 6.0/amd64は新規にインストール
- ビルドツールは、FuguIta-5.9-i386の作業環境から移植
- ビルドスクリプト, Makefile, /boottmp/rc(起動スクリプト)やusbfadm(管理ユティリティツール)などからアーキテクチャ依存な部分を修正 → 基本的に、i386←→amd64のどちらでも同じになるように修正
- バイナリファイルのリビルド(起動中に使用するクランチバイナリなど)
以上の手順で作業環境を準備し、amd64版の河豚板を生成できるようになった。
複数アーキテクチャに対応した改良†
前項の手順でamd64版の河豚板を生成しリリースできるようになったが、この段階ではi386とamd64が区別できない状態となっている。
つまり、このままでは異ったアーキテクチャ用のファイルを読み込むおそれがあるため、i386版とamd64版とを混在して使用することができない。
この状況を改善するため、以下のような改良を施した;
- ファイル名等で、バージョンに引続きアーキテクチャを含めるようにした。
FuguIta-6.0-20161101.iso.gz
↓
FuguIta-6.0-amd64-20161101.iso.gz
- 前項のようなケースは、生成物のファイル名以外にも、以下のような部分で必要になった。
- 起動時にマウントされる全ファイルツリーを含んだイメージファイル
fuguita-6.0.ffsimg → fuguita-6.0-amd64.ffsimg
- /usr/fuguta/versionに格納されているリリース名
FuguIta-6.0-201611011 → FuguIta-6.0-amd64-201611011
- usbfadmでsaveasサブコマンドを使用してファイルを保存する場合の設定名の候補
[6.0-hogehoge]--> → [6.0-amd64-hogehoge]-->
- 実際には、ビルドシステムのMakefile, 河豚板本体内の /boottmp/rc, /boottmp/usbfadm 等に変更を施した。
- これにより、異ったアーキテクチャ用の河豚板が混在しても矛盾なく運用できるようになった。例えば HDD にamd64版、USBメモリにi386版が入っている状態でも、どちらのカーネルで起動するかでシステムの挙動は一意に決まる。
- これの応用として、一つのUSBメモリにi386版とamd64版を両方入れておき、起動時にどちらかを選択して使用することができるようになった。
の作業†
ソフトウェアに関する実作業以外にも、主にドキュメント関連での作業が必要となる;
- i386, amd64両アーキテクチャサポートのアナウンス → 実施済み
- Eratta適用時、i386, amd64両アーキテクチャに対し適用・確認・リリース → 実施中
それ以外の作業†