#author("2023-02-14T11:22:33+09:00","default:kaw","kaw")
#navi(河豚板ガイド)
この章では河豚板の部を理解したり、河豚板をベースに自分で開発を行う場合の情報を提供します。

#contents

*河豚板の技術河豚板はOpenBSDをベースにしているので、その構成物のほとんどはOpenBSD関連の報がそのまま利用できます。~

式のOpenBSDとは異なる河豚板特有の部分については、このサイトの日本後トップページに[[公開資料の一覧>河豚板#ebug_doc]]がありますので、そちらをご参照下さい。~
(過去の資料の中には、現状の河豚板と異っている部分もありますので、ご注意下さい)

河豚板のソースコードは https://github.com/ykaw/FuguIta にて参できます。

*河豚板を専用マシンにする [#u1400b56]
河豚板は書込み可能なファイルをすべてメモリ上に持っているため、シャットダウン操作等を行わずいきなり電源を断にしたりしてもファイルシステムに不合が発生することはありません。~
また稼動中にusbfadmによるファイルの保存を行わない限りは、毎回同じ状でシステムが立上ります。

このような特徴を利用して、河豚板をベースにして特定のアプリケーションを実行するための専用のマシン(ターンキーシステム: Turn Key System)などを作成することができます。

このようなシステムを構築するためには、今までに説明してきたテクニックを組合せて使います;

-まず運用環境を整える。~
起動モード0で立ち上げて、各種設定やアプリケーションのインストール等を行い、目的の動作をするように環境構築をする。

-[[構築した環境をusbfadmにてUSBメモリなどに保存する>fg2:usbfadm_sync]]。

-[[モード3で起動し、保存した環境で立ち上がるようにnoasksファイルを設定する>fg3:autorun]]。

-ログイン操作なしでアプリケーションが立ち上がるように [[/etc/ttys>man:ttys.5]] ファイルを編集する。

これらの詳細な手順は、このサイトにある [[河豚板でルータを作る ~ アプライアンスの製作例>EBUG勉強会/20221126_NSHonFuguIta]] や [[実用で使う河豚板>EBUG勉強会/20140507_実用で使う河豚板]] といった資料で説明しておりますのでご参下さい。

#aname(build_fuguita)
*河豚板のビルド [#u95a4ec1]
河豚板は不定期ではありますが、ライブシステム構築のために使用しているツールを開しています。
この構築ツールを使用することで河豚板のISOイメージファイルを作成することができます。
この節ではLiveDVDの構築方法を説明します。
>''【メモ】''~
''⇒''この構築法は、河豚板7.1以降が対象です。

**作業の前に [#j67c3ef4]
-要なもの
--作業用OS (OpenBSDまたは河豚板)

--OpenBSDカーネルのソースツリー

--rsync, rlwrap, pvのパッケージファイル

--河豚板の構築ツール

-作業条件
--前の「必要なもの」で挙げたものはすべてOpenBSDの同じバージョン・同一のプラットフォーム用のものである必要があります。

--ての操作はroot権限で行います。

**作業手順 [#m7e38ed1]
以降、作成手順について例を示しながら解説します。~
対象バージョンとしてOpenBSD 7.1、プラットフォームはamd64を想定しています。
また、構築ツールを置くディレクトリを FIBLD と表記しています。この部分は実際のディレクトリ名で置き換えて下さい。

-OpenBSDカーネルのソースコードを取得・展開
 # tar -xzp -C /usr/src -f sys.tar.gz
>''【メモ】''~
''⇒''カーネルのソースツリーを最新の状にアップデートするには、オンライン・マニュアル release(8) の「1. Update sources」を参照して下さい。

-構築作業用ディレクトリFIBLDに河豚板の構築ツールを展開
 # 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で行います。

-河豚板用のOpenBSDカーネルを生成
 # cd FIBLD
 # make kernconfig
 # make kernclean
 # make kern

-OpenBSDのインストールセットを準備 ~
構築ツールのinstall_setsディレクトリにOpenBSDのインストールセットを置します。
 # ( 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 )

-河豚板に追加するパッケージをセットアップ ~
構築ツールのinstall_pkgsディレクトリにOpenBSDのpackagesからrsync、rlwrap、pv を置します。また、rsyncとpvは、ビルドを行うシステム自身にもインストールします。
 # PKG_CACHE=FIBLD/install_pkgs pkg_add -n rsync rlwrap pv
 # pkg_add install_pkgs/rsync*.tgz install_pkgs/pv*.tgz

-河豚板のファイルツリーを生成し、FuguIta 用に修正
 # make stage
FuguItaをカスタマイズする場合は、make stage実行後、FIBLD/stagingディレクトリの下のファイルツリーに改変を加えます。

-このファイルツリーの容に、河豚板に内蔵させるイメージファイルを等化
 # make sync

-ISOイメージファイルの生成 ~
ルートファイルシステムのイメージとカーネルを統合し、ブートローダを組み込みんでISOイメージファイルを生成します。
 # make iso

-ISOファイルイメージをリリース文字列付きのファイル名でGZIP圧縮
 # make gz

以上でFIBLDにFuguIta-7.1-amd64-yyyymmddn.iso.gzが作成されます。nはビルド回数を示す番号で、FIBLD/revcount_cdmasterというファイル内に記録されます。
///***Makefile ターゲット一覧
///河豚板のISOイメージ構築で用いられるmakeコマンドの引数(ターゲット)は以下の通りです。~
///これらはてディレクトリFI_BUILD_PATH/tools-6.7-amd64上で行う必要があります。
///|make ターゲット|動作|h
///|open-rdroot   |rdroot.imgのファイルシステムをrdrootにマウントします|
///|open-media    |media.imgのファイルシステムをmediaにマウントします|
///|open-fuguita  |media/fuguita-*-*.ffsimgのファイルシステムをfuguitaにマウントします&br;(予めmake open-mediaを行う必要があります)|
///|close-rdroot  |rdrootのマウントを解除します|
///|close-media   |mediaのマウントを解除します&br;(予めmake close-fuguitaを行う要があります)|
///|close-fuguita |fuguitaのマウントを解除します|
///|close-all     |構築環境のてのマウントを解除します|
///|boot          |rdrootをカーネルに組込み、ISOコンテンツにコピーします|
///|hyb           |ISOコンテンツをISOイメージファイルに変換します|
///|cdgz          |ISOイメージファイルを圧縮します|

//>''【メモ】''~
//''⇒''nabekenさんという方が河豚板を基にして[[myFuguita>https://github.com/nabeken/myfuguita]]というライブシステムを作成されています。myFuguitaは、河豚板の構築環境をOpenBSDの標準ビルドシステムに組み込み、amd64アーキテクチャで動作するように改良したものです。

#aname(livedvd_remaster)
*LiveDVDのリマスタリング [#q529c858]
[[USBメモリの容量に合わせてLiveUSBを作成する>fg3:liveusb_remaster]]では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ディスクイメージのリマスタリング [#obdef877]
この節では、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」の形式となります。

#navi(河豚板ガイド)


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