#setlinebreak(off)
#topicpath
*河豚板の複数アーキテクチャ対応 [#k6eb0b25]
RIGHT:EBUG 第59回会合 ~
2016年 11月19日、ながおか市民センター ~
川俣吉広、kaw@on.rim.or.jp

OpenBSD Live System「河豚板」は、2005年初頭の''CD-OpenBSD 3.6''を起源とし、以来 i386アキーテクチャの OpenBSD/i386 をベースとしてリリースを続けてきました。

この度、OpenBSD 6.0をベースとするFuguIta 6.0にて従来のi386アーキテクチャに加え、amd64アーキテクチャに対応版もリリース致しました。

今回の勉強会では、このFuguIta 6.0のamd64対応、およびそれに関連する周辺作業についてご報告致します。

**amd64対応の経緯 [#y2741beb]

- ユーザからの要望で最も多かったのが 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
 
>kaw 2016-03-17 (Thu) 22:25:21
>>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.

上述のように、マンパワー的に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回改版。

**ベースシステムの対応 [#l4803b1a]
手順はFuguIta-4.3-amd64で確立していたので、今回もほぼそれを踏襲した。

-i386とamd64の作業環境は別パーティションに作成し、デュアルブートできるようにした。
--OpenBSD 6.0/amd64は新規にインストール

--ビルドツールは、FuguIta-5.9-i386の作業環境から移植
---ビルドスクリプト, Makefile, /boottmp/rc(起動スクリプト)やusbfadm(管理ユティリティツール)などからアーキテクチャ依存な部分を修正 → 基本的に、i386←→amd64のどちらでも同じになるように修正
---バイナリファイルのリビルド(起動中に使用するクランチバイナリなど)
 FuguIta-5.9-i386                            FuguIta-6.0-i386
 Build Environment                           Build Environment
 +---------------------+                     +---------------------+
 |   +-------------+   | modify              |   +-------------+   |
 |   | 5.9-i386    |=====for==========+=========>| 6.0         |   |
 |   | build tools |   | multi-       |      |   | build tools |   |
 |   +-------------+   | platform     |      |   +-------------+   |
 |+-------------------+|              |      |+-------------------+|
 || OpenBSD 5.9/i386  |==CVS update==========>| OpenBSD 6.0/i386  ||
 |+-------------------+| & build      |      |+-------------------+|
 +---------------------+              |      +---------------------+
                                      |
                                      |
                                      |
                                      |      FuguIta-6.0-amd64
                                      |      Build Environment
                                      |      +---------------------+
                                      |      |   +-------------+   |
                                      +=========>| 6.0         |   |
                                             |   | build tools |   |
                                             |   +-------------+   |
                                Fresh        |+-------------------+|
                                Install======>| OpenBSD 6.0/amd64 ||
                                             |+-------------------+|
                                             +---------------------+
以上の手順で作業環境を準備し、amd64版の河豚板を生成できるようになった。

**複数アーキテクチャに対応した改良 [#sb298201]
前項の手順で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''']-->

--...etc

-実際には、ビルドシステムのMakefile, 河豚板本体内の /boottmp/rc, /boottmp/usbfadm 等に変更を施した。

-これにより、異ったアーキテクチャ用の河豚板が混在しても矛盾なく運用できるようになった。例えば HDD にamd64版、USBメモリにi386版が入っている状態でも、どちらのカーネルで起動するかでシステムの挙動は一意に決まる。

-これの応用として、一つのUSBメモリにi386版とamd64版を両方入れておき、起動時にどちらかを選択して使用することができるようになった。

**その他諸々の作業 [#da08ffee]
-usbfadmの改良 ... 大容量のストレージ対応
--newdrive実行時、dパーティションのサイズによってnewfsのパラメータを変えるようにした。
--- 2ギガバイト未満 → ブロック&フラグメントサイズを小さく/iノード数を大きく取れるようにする。
--- 2ギガバイト以上 → デフォルトのパラメータ

--余った領域は自動的にFATとして割り当てていた → ユーザに尋ねるように改良

-ソフトウェアに関する実作業以外にも、主にドキュメント関連での作業が必要となった
--i386, amd64両アーキテクチャサポートのアナウンス → 実施済み

--Eratta適用時、i386, amd64両アーキテクチャに対し適用・確認・リリース → 実施中

--「河豚板ガイド」の改版 → これから実施

**今後の予定 [#x4d041f5]
-vmm(4)の動作検証

-amd64版のUEFIブート対応

-usbfadmの改良
--non-interactiveに実行できるようにする

-起動モード3でのファイル読込機能の改善

-英語版河豚板ガイドの作成
----
#topicpath
Top Index Search Recent Backups  Help  RSS