- The added line is THIS COLOR.
- The deleted line is THIS COLOR.
#author("2023-02-06T16:32:25+09:00","default:kaw","kaw")
#author("2024-05-05T15:00:50+09:00","default:kaw","kaw")
#navi(河豚板ガイド)
この章では河豚板の内部を理解したり、河豚板をベースに自分で開発を行う場合の情報を提供します。
#contents
*河豚板の技術情報
河豚板はOpenBSDをベースにしているので、その構成物のほとんどはOpenBSD関連の情報がそのまま利用できます。~
式のOpenBSDとは異なる河豚板特有の部分については、このサイトの日本後トップページに[[公開資料の一覧>河豚板#e23f3d8c]]がありますので、そちらをご参照下さい。~
式のOpenBSDとは異なる河豚板特有の部分については、このサイトの日本後トップページに[[公開資料の一覧>河豚板#ebug_doc]]がありますので、そちらをご参照下さい。~
(過去の資料の中には、現状の河豚板と異っている部分もありますので、ご注意下さい)
*河豚板を特定用途専用のマシンにする [#u1400b56]
河豚板のソースコードは https://github.com/ykaw/FuguIta にて参できます。
*河豚板を専用マシンにする [#u1400b56]
河豚板は書込み可能なファイルをすべてメモリ上に持っているため、シャットダウン操作等を行わずいきなり電源を断にしたりしてもファイルシステムに不具合が発生することはありません。~
また稼動中にusbfadmによるファイルの保存を行わない限りは、毎回同じ状態でシステムが立上ります。
このような特徴を利用して、河豚板をベースにして特定のアプリケーションを実行するための専用のマシン(ターンキーシステム: Turn Key System)などを作成することができます。
このようなシステムを構築するためには、今までに説明してきたテクニックを組合せて使います;
-まず運用環境を整える。~
起動モード0で立ち上げて、各種設定やアプリケーションのインストール等を行い、目的の動作をするように環境構築をする。
-[[構築した環境をusbfadmにてUSBメモリなどに保存する>#k57e4ba1]]。
-[[構築した環境をusbfadmにてUSBメモリなどに保存する>fg2:usbfadm_sync]]。
-[[モード3で起動し、保存した環境で立ち上がるようにnoasksファイルを設定する>#b493ab9a]]。
-[[モード3で起動し、保存した環境で立ち上がるようにnoasksファイルを設定する>fg3:autorun]]。
-ログイン操作なしでアプリケーションが立ち上がるように ttys(5) ファイルを編集する。
-ログイン操作なしでアプリケーションが立ち上がるように [[/etc/ttys>man:ttys.5]] ファイルを編集する。
これらの詳細な手順は、このサイトにある [[EBUG勉強会/20140507_実用で使う河豚板]] という資料で説明しておりますのでご参下さい。
これらの詳細な手順は、このサイトにある [[河豚板でルータを作る ~ アプライアンスの製作例>EBUG勉強会/20221126_NSHonFuguIta]] や [[実用で使う河豚板>EBUG勉強会/20140507_実用で使う河豚板]] といった資料で説明しておりますのでご参下さい。
#aname(build_fuguita)
*河豚板のビルド [#u95a4ec1]
*河豚板の構築 [#t980ad46]
河豚板は不定期ではありますが、ライブシステム構築のために使用しているツールを公開しています。
この構築ツールを使用することで河豚板のISOイメージファイルを作成することができます。
この節ではLiveDVDの構築方法を説明します。
この構築ツールを使用することで河豚板の布物と同じものを作成することができます。
この節では、その河豚板の構築手順を説明します。以下の説明では、次のような環境を想定して説明をしています。
-リリース: OpenBSD 7.5
-プラットフォーム: amd64
それ以外の場合は、説明を適宜読み替えて下さい。
>''【メモ】''~
''⇒''この構築法は、河豚板7.1以降が対象です。
''⇒''この構築ツールでは、i386とamd64プラットフォームでは河豚板LiveDVDのISOイメージを、arm64プラットフォームでは河豚板LiveUSB(Raspberry Pi 3/4ではLiveSD)用の生ディスクイメージを生成できます。
**作業の前に [#j67c3ef4]
-要なもの
--作業用OS (OpenBSDまたは河豚板)
**作業手順 [#ld734943]
--OpenBSDカーネルのソースツリー
作業はすべてroot権限で行います。
--rsync, rlwrap, pvのパッケージファイル
***構築環境の準備 [#w7c036c1]
--河豚板の構築ツール
-OpenBSDのオンラインマニュアル[[release(8)>man:release.8]]に従ってOpenBSD体の構築作業を行って下さい。
-作業条件
--前の「必要なもの」で挙げたものはすべてOpenBSDの同じバージョン・同一のプラットフォーム用のものである必要があります。
-また、[[ports(7)>man:ports.7]]を使用して、rsync, rlwrap, pvコマンドのパッケージを作成します。~
--ての操作はroot権限で行います。
河豚板の構築ツールtools-7.5.tar.gzを[[ダウンロード>FuguIta/Download]]し、展開します。
# tar xvzpf tools-7.5.tar.gz
**作業手順 [#m7e38ed1]
以降、作成手順について例を示しながら解説します。~
対象バージョンとしてOpenBSD 7.1、プラットフォームはamd64を想定しています。
また、構築ツールを置くディレクトリを FIBLD と表記しています。この部分は実際のディレクトリ名で置き換えて下さい。
構築ツールのトップディレクトリに移ります。
# cd tools-7.5
-OpenBSDカーネルのソースコードを取得・展開
# tar -xzp -C /usr/src -f sys.tar.gz
>''【メモ】''~
''⇒''カーネルのソースツリーを最新の状にアップデートするには、オンライン・マニュアル release(8) の「1. Update sources」を参照して下さい。
arm64プラットフォームの場合は、tools-7.5.tar.gzと同時に供給されているsysmedia-7.5-arm64.img.gzもダウンロードし、''展開せずに、そのまま''構築ツールのトップディレクトリに置いて下さい。
-構築作業用ディレクトリ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
以下のコマンドを実行し、構築ツールの初期化を行います。
# make init
これにより、構築に要なディレクトリなどが作成されます。
以下の作業は、て作業用ディレクトリFIBLDで行います。
***河豚板の構築 [#a9ad6923]
-河豚板用のOpenBSDカーネルを生成
# cd FIBLD
# make kernconfig
# make kernclean
# make kern
OpenBSDの構築で生成したインストールセット (*75.tgz) を河豚板構築ツールのinstall_setsディレクトリにコピーします。
# cp RELDIR/*75.tgz install_sets
RELDIRは、[[release(8)>man:release.8]]の中で説明されている、生成されたリリースセットが格納されるディレクトリです。
>''【メモ】''~
''⇒''install_setsの下にsite75.tgzというファイルを置くと、河豚板をカスタマイズすることができます。このカスタマイズ方法はOpenBSDのhttps://www.openbsd.org/faq/faq4.html#site に準拠しています。~
install.siteがsite75.tgzに含まれている場合、その容が/etc/rc.firsttimeに追加されます。~
site75.tgzを加えて河豚板を構築した結果、sysmedia/fuguita-7.5-amd64.ffsimgというファイルが2GBをえますと、ISOイメージが正しく作成されなくなります。ご注意下さい。
-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 )
portsツリーから作成したrsync, rlwrap, pv(とその依存物であるgettext-runtimeとlibiconv)をinstall_pkgsディレクトリにコピーします。~
また、rsyncとpvは構築環境自体にもインストールします。
# cp /usr/ports/packages/amd64/all/rsync-*.tgz install_pkgs
# cp /usr/ports/packages/amd64/all/rlwrap-*.tgz install_pkgs
# cp /usr/ports/packages/amd64/all/pv-*.tgz install_pkgs
# cp /usr/ports/packages/amd64/all/gettext-runtime-*.tgz install_pkgs
# cp /usr/ports/packages/amd64/all/libiconv-*.tgz install_pkgs
# pkg_add -D unsigned /usr/ports/packages/amd64/all/rsync-*.tgz
# pkg_add -D unsigned /usr/ports/packages/amd64/all/pv-*.tgz
>''【メモ】''~
''⇒''インストールセット*75.tgzやパッケージファイルrsync-*.tgzなどはOpenBSDのオフィシャルミラーからダウンロードして使用することもできます。~
ただしこの場合、作成される河豚板はそのリリースが開された時点でのOpenBSDがベースになりますので、それ以降のパッチは適用されていません。ご注意下さい。~
また、この方法で河豚板を作成する場合でも、/usr/srcや/usr/xenocara以下にOpenBSDのソースコードを展開しておく要があります。
-河豚板に追加するパッケージをセットアップ ~
構築ツールの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
次に、以下のコマンドを実行し、構築環境をセットアップします。
# make setup
-河豚板のファイルツリーを生成し、FuguIta 用に修正
# make stage
FuguItaをカスタマイズする場合は、make stage実行後、FIBLD/stagingディレクトリの下のファイルツリーに改変を加えます。
最後に、河豚板LiveDVDを構築します。
# make
-このファイルツリーの容に、河豚板に内蔵させるイメージファイルを等化
# make sync
***構築後の調整 [#wfda33a7]
''mode0symlinks.cpio.gzの作成''
-ISOイメージファイルの生成 ~
ルートファイルシステムのイメージとカーネルを統合し、ブートローダを組み込みんでISOイメージファイルを生成します。
# make iso
このファイルは、LiveDVDをモード0で起動した場合の時間短縮を目的としています(このファイルがなくても、河豚板の起動自体に支障はありません)。
-ISOファイルイメージをリリース文字列付きのファイル名でGZIP圧縮
# make gz
mode0symlinks.cpio.gzを作成するには、完成したLiveDVDをモード0で起動し、root権限でgen_mode0sldir コマンドを root で実行します。実行後、/etc/fuguita/mode0symlinks.cpio.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イメージファイルを圧縮します|
このファイルをmode0symlinks.cpio.gz.amd64というファイル名で構築ツールの lib ディレクトリに置し、make を再実行すると、mode0symlinks.cpio.gz入りのISOファイルが作成されます。
//>''【メモ】''~
//''⇒''nabekenさんという方が河豚板を基にして[[myFuguita>https://github.com/nabeken/myfuguita]]というライブシステムを作成されています。myFuguitaは、河豚板の構築環境をOpenBSDの標準ビルドシステムに組み込み、amd64アーキテクチャで動作するように改良したものです。
''fuguita_sys_mbの調整''
河豚板には、/etc/fuguita/global.confというファイルがあり、以下のようにシステム体にかかわる設定を行っています。
fuguita_sys_mb=1122 # size of sysmedia.img
newdrive_defswap=16M # default swap size at usbfadm newdrive
memfstype=mfs # 'mfs' or 'tmpfs'
mfs_max_mb=30720 # mfs hard limit - 30GB
このうち、fuguita_sys_mbは河豚板のシステムを格納するパーティションのサイズを定義しており、河豚板LiveUSBをリマスタリングする場合などにこの値が使われます。
fuguita_sys_mbの設定値は、LiveDVD構築時に生成されるlivecd.isoファイルのサイズに相当しますが、fiupdateユーティリティをによるアップデートを考し、10MBほど余裕をもたせると安全です。
# echo $(( $(wc -c < livecd.iso)/1024/1024+10 ))
このコマンドで表示された値をlib/global.conf.amd64ファイルに書込み、makeを再実行します。
#aname(livedvd_remaster)
*河豚板LiveDVD ISOイメージの作成 [#q529c858]
[[USBメモリの容量に合わせてLiveUSBを作成する>#ld36d7ec]]ではLiveUSBのイメージファイルを作成しましたが、この節ではremaster_dvd.shコマンドを用いて稼動中の河豚板からLiveDVDのISOイメージを作成する方法を説明します。
*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ディスクイメージのリマスタリング [#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(河豚板ガイド)