#author("2023-02-09T13:23:33+09:00","default:kaw","kaw") #author("2023-02-09T14:00:51+09:00","default:kaw","kaw") #navi(河豚板ガイド) この章では河豚板の内部を理解したり、河豚板をベースに自分で開発を行う場合の情報を提供します。 #contents *河豚板の技術情報 河豚板はOpenBSDをベースにしているので、その構成物のほとんどはOpenBSD関連の情報がそのまま利用できます。~ 公式のOpenBSDとは異なる河豚板特有の部分については、このサイトの日本後トップページに[[公開資料の一覧>河豚板#ebug_doc]]がありますので、そちらをご参照下さい。~ (過去の資料の中には、現状の河豚板と異っている部分もありますので、ご注意下さい) 河豚板のソースコードは https://github.com/ykaw/FuguIta にて参照できます。 *河豚板を特定用途専用のマシンにする [#u1400b56] *河豚板を専用マシンにする [#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(河豚板ガイド)