この章では河豚板の内部を理解したり、河豚板をベースに自分で開発を行う場合の情報を提供します。
河豚板はOpenBSDをベースにしているので、その構成物のほとんどはOpenBSD関連の情報がそのまま利用できます。
公式のOpenBSDとは異なる河豚板特有の部分については、このサイトの日本後トップページに公開資料の一覧がありますので、そちらをご参照下さい。
(過去の資料の中には、現状の河豚板と異っている部分もありますので、ご注意下さい)
河豚板のソースコードは https://github.com/ykaw/FuguIta にて参照できます。
河豚板は書込み可能なファイルをすべてメモリ上に持っているため、シャットダウン操作等を行わずいきなり電源を断にしたりしてもファイルシステムに不具合が発生することはありません。
また稼動中にusbfadmによるファイルの保存を行わない限りは、毎回同じ状態でシステムが立上ります。
このような特徴を利用して、河豚板をベースにして特定のアプリケーションを実行するための専用のマシン(ターンキーシステム: Turn Key System)などを作成することができます。
このようなシステムを構築するためには、今までに説明してきたテクニックを組合せて使います;
これらの詳細な手順は、このサイトにある 河豚板でルータを作る ~ アプライアンスの製作例 や 実用で使う河豚板 といった資料で説明しておりますのでご参照下さい。
河豚板は不定期ではありますが、ライブシステム構築のために使用しているツールを公開しています。 この構築ツールを使用することで河豚板のISOイメージファイルを作成することができます。 この節ではLiveDVDの構築方法を説明します。
【メモ】
⇒この構築法は、河豚板7.1以降が対象です。
以降、作成手順について例を示しながら解説します。
対象バージョンとしてOpenBSD 7.1、プラットフォームはamd64を想定しています。
また、構築ツールを置くディレクトリを FIBLD と表記しています。この部分は実際のディレクトリ名で置き換えて下さい。
# tar -xzp -C /usr/src -f sys.tar.gz
【メモ】
⇒カーネルのソースツリーを最新の状態にアップデートするには、オンライン・マニュアル release(8) の「1. Update sources」を参照して下さい。
# mkdir -p FIBLD # cd FIBLD # ftp https://FUGUITA-MIRROR-SITE/tools/tools-7.1-amd64.tar.gz # tar -xzp -C FIBLD -f tools-7.1.tar.gz # mv tools-7.1-amd64 # rmdir tools-7.1-amd64
以下の作業は、全て作業用ディレクトリFIBLDで行います。
# cd FIBLD # make kernconfig # make kernclean # make kern
# ( cd install_sets for f in base comp game man xbase xfont xserv xshare; do ftp $(cat /etc/installurl)/7.1/amd64/${f}71.tgz done )
# PKG_CACHE=FIBLD/install_pkgs pkg_add -n rsync rlwrap pv # pkg_add install_pkgs/rsync*.tgz install_pkgs/pv*.tgz
# make stageFuguItaをカスタマイズする場合は、make stage実行後、FIBLD/stagingディレクトリの下のファイルツリーに改変を加えます。
# make sync
# make iso
# make gz
以上でFIBLD内にFuguIta-7.1-amd64-yyyymmddn.iso.gzが作成されます。nはビルド回数を示す番号で、FIBLD/revcount_cdmasterというファイル内に記録されます。
USBメモリの容量に合わせてLiveUSBを作成するではLiveUSBのイメージファイルを作成しましたが、この節ではremaster_dvd.shコマンドを用いて稼動中の河豚板からLiveDVDのISOイメージを作成する方法を説明します。
【メモ】
⇒この作業は大きなサイズのファイルを扱うので、mfsのサイズは2ギガバイト以上必要です。
mfsでは足りない場合、他の記録デバイスをマウントしてそちらで作業します。
このmaster_dvd.shは、動作中のFuguIta LiveDVD、あるいはFuguIta LiveUSBのどちらでも使用可能です。
以下にremaster_dvd.shの使用例を示します。
まず、作業用ディレクトリを作成し、sysmedia以下にあるLiveDVD/LiveUSBのコンテンツをコピーします。
# mkdir work # cd work # cp -av /sysmedia . /sysmedia -> ./sysmedia /sysmedia/boot -> ./sysmedia/boot /sysmedia/bsd-fi -> ./sysmedia/bsd-fi /sysmedia/bsd-fi.mp -> ./sysmedia/bsd-fi.mp /sysmedia/boot.catalog -> ./sysmedia/boot.catalog /sysmedia/cdboot -> ./sysmedia/cdboot /sysmedia/cdbr -> ./sysmedia/cdbr /sysmedia/etc -> ./sysmedia/etc /sysmedia/etc/boot.conf -> ./sysmedia/etc/boot.conf /sysmedia/etc/random.seed -> ./sysmedia/etc/random.seed /sysmedia/fuguita-6.9-amd64.ffsimg -> ./sysmedia/fuguita-6.9-amd64.ffsimg # ls -l total 8 drwxr-xr-x 3 root wheel 432 May 11 09:21 sysmedia
コピーされたsysmediaディレクトリ内でremaster_dvd.shを実行します。 基本的にはこれだけです。
# cd sysmedia # ls -l total 2008728 -rw-r--r-- 1 root wheel 90496 May 10 20:57 boot -rwxr--r-- 1 root wheel 2048 May 9 12:31 boot.catalog -rw-r--r-- 1 root wheel 10273019 May 10 21:04 bsd-fi -rw-r--r-- 1 root wheel 10302063 May 10 21:04 bsd-fi.mp -rw-r--r-- 1 root bin 91668 May 10 01:31 cdboot -rw-r--r-- 1 root bin 2048 May 10 01:31 cdbr drwxr-xr-x 2 root wheel 96 Apr 17 2014 etc -rw-r--r-- 1 root wheel 1007681536 May 10 21:08 fuguita-6.9-amd64.ffsimg # remaster_dvd.sh mkhybrid 1.12b5.1 Scanning . Scanning ./etc Size of boot image is 4 sectors -> No-emulation CD boot sector Total translation table size: 0 Total rockridge attributes bytes: 1111 Total directory bytes: 2048 Path table size(bytes): 22 502200 extents written (980 Mb)
remaster_dvd.shの実行が完了すると、作業用ディレクトリにISOイメージファイルが作成されています。
# ls -l .. total 2008808 -rw-r--r-- 1 root wheel 1028505600 May 14 02:34 FuguIta-6.9-amd64-202105141.iso drwxr-xr-x 3 root wheel 384 May 14 02:34 sysmedia # ls -l total 2008720 -rw-r--r-- 1 root wheel 90496 May 10 20:57 boot -rwxr--r-- 1 root wheel 2048 May 14 02:34 boot.catalog -rw-r--r-- 1 root wheel 10273019 May 10 21:04 bsd-fi -rw-r--r-- 1 root wheel 10302063 May 10 21:04 bsd-fi.mp -rw-r--r-- 1 root bin 91668 May 10 01:31 cdboot -rw-r--r-- 1 root bin 2048 May 10 01:31 cdbr drwxr-xr-x 2 root wheel 96 Apr 17 2014 etc -rw-r--r-- 1 root wheel 1007681536 May 10 21:08 fuguita-6.9-amd64.ffsimg
sysmedia中にfuguita-6.9-amd64.ffsimgというファイルがありますが、この中にFuguItaのファイルツリーが格納されています。 このファイルツリー内のファイルを修正することで、LiveDVDをカスタマイズすることができます。
# vnconfig vnd0 fuguita-6.9-amd64.ffsimg # mount /dev/vnd0a /mnt # ls -l /mnt total 52 -rw-r--r-- 1 root wheel 578 May 7 17:43 .cshrc -rw-r--r-- 1 root wheel 468 May 7 17:43 .profile drwxr-xr-x 2 root wheel 512 May 7 17:43 altroot drwxr-xr-x 2 root wheel 1024 May 7 17:46 bin drwxr-xr-x 2 root wheel 512 May 8 04:16 dev drwxr-xr-x 23 root wheel 1536 May 8 04:35 etc drwxr-xr-x 2 root wheel 512 May 7 17:43 home drwxr-xr-x 2 root wheel 512 May 7 17:43 mnt drwx------ 3 root wheel 512 May 8 04:35 root drwxr-xr-x 2 root wheel 1536 May 7 17:46 sbin lrwxrwx--- 1 root wheel 11 May 7 17:43 sys -> usr/src/sys drwxrwxrwt 2 root wheel 512 May 8 04:19 tmp drwxr-xr-x 14 root wheel 512 May 8 04:09 usr drwxr-xr-x 23 root wheel 512 May 7 17:43 var .... (カスタマイズ作業) ...
カスタマイズが完了したら、ファイルシステムイメージを閉じ、リマスタリングを行います。
# umount /mnt # vnconfig -u vnd0 # remaster_dvd.sh mkhybrid 1.12b5.1 Scanning . Scanning ./etc : :
この節では、LiveUSBのディスクイメージファイルを作成する方法を紹介します。
usbfadm の newdrive を実行します;
? : ? ->newdrive Please make sure the device inserted. Then press ENTER -> ==== disk(s) and vnode devices ============================ sd0 at scsibus1 targ 0 lun 0: <ATA, Hitachi HTS72757, JF4O> sd0: 715404MB, 512 bytes/sector, 1465149168 sectors sd1 at scsibus2 targ 1 lun 0: <UFD 3.0, Silicon-Power32G, 1.00> sd1: 29624MB, 512 bytes/sector, 60669952 sectors sd2 at scsibus5 targ 1 lun 0: <BUFFALO, USB Flash Disk, 4000> sd2: 7788MB, 512 bytes/sector, 15950592 sectors vnd0: not in use vnd1: not in use vnd2: not in use vnd3: not in use vnd4: not in use vnd5: covering /sysmedia/fuguita-6.4-amd64.ffsimg on sd1a, inode 9 ============================================================ Enter the name of device which FuguIta will be installed->vnd0 ←未使用のvnodeデバイスを指定 Enter size of a vnode device file. You can add suffix K, M, G or T (otherwise considered 'bytes'). ->2g ←イメージファイルのサイズを 指定 2048+0 records in 2048+0 records out 2147483648 bytes transferred in 3.076 secs (698129518 bytes/sec) Disk: vnd0 geometry: 41943/1/100 [4194304 Sectors] Offset: 0 Signature: 0x0 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- 0: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 1: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 3: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused Select partition type: 1: [MBR] 2: GPT 3: Hybrid (not recommended if you wish modify partitioning later) -> ~ 略 ~ ** Phase 5 - Check Cyl groups 3 files, 3 used, 386996 free (20 frags, 48372 blocks, 0.0% fragmentation) ? : ? ->bye Bye bye... $
以上の操作でカレントディレクトリ上にディスクイメージファイルが作成されます。ファイル名は配布されているものと同じ、「FuguIta-OpenBSDバージョン-プラットフォーム-リリース.img」の形式となります。