This chapter provides information for understanding the internals of FuguIta and for doing your own development based on FuguIta.

Fuguita technical information

FuguIta is based on OpenBSD, so most of its components are openBSD-related information.
For the specific parts of FuguIta that are different from the official OpenBSD, please refer to List of published documents on the Japan Post top page of this site.
(Please note that some past materials may differ from the current FuguIta.)

FuguIta source code can be found at https://github.com/ykaw/FuguIta.

Make FuguIta a dedicated machine

FuguIta has all writable files in memory, so even if the power is suddenly turned off without performing a shutdown operation, etc., there will be no problem with the file system.
Unless you save files with usbfadm during operation, the system will start up in the same state each time.

Using these characteristics, you can create a dedicated machine (Turn Key System) to run a specific application based on FuguIta.

To build such a system, we use a combination of the techniques described so far;

These detailed procedures can be found on this site Creating a router with Fuguita - Example of making an appliance and Practically used FuguIta to use.

Build Fuguita

FuguIta publishes the tools it uses to build the live system, albeit irregularly. By using this build tool, you can create a FuguIta ISO image file. This section describes how to build a LiveDVD.

[Memo]
This construction method is for FuguIta 7.1 or later.

Before work

Work procedure

From now on, the creation procedure will be explained with an example.
Assuming OpenBSD 7.1 as the target version and amd64 as the platform. In addition, the directory where the build tools are placed is written as FIBLD. Replace this part with the actual directory name.

[Memo]
To update the kernel source tree to the latest state, please refer to "1. Update sources" in the online manual release(8).

All the following operations are performed in the working directory FIBLD.

FuguIta-7.1-amd64-yyyymmddn.iso.gz is created in FIBLD. n is the build count number, which is recorded in the file FIBLD/revcount_cdmaster.

LiveDVD remastering

Creating a LiveUSB according to the capacity of the USB memory created a LiveUSB image file. Describes how to create an image.

[Memo]
Since this operation deals with large size files, the size of mfs must be more than 2 gigabytes.
If mfs isn't enough, mount another recording device and work there.

This master_dvd.sh can be used with either a working FuguIta LiveDVD or FuguIta LiveUSB.
Below is an example of using remaster_dvd.sh.

First, create a working directory and copy the contents of LiveDVD/LiveUSB under sysmedia.

fugu-demo# mkdir work
fugu-demo# cd work
fugu-demo# 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
fugu-demo# ls -l
total 8
drwxr-xr-x  3 root  wheel  432 May 11 09:21 sysmedia

Run remaster_dvd.sh inside the copied sysmedia directory. Basically that's all.

fugu-demo# cd sysmedia
fugu-demo# 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
fugu-demo# 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)

After executing remaster_dvd.sh, an ISO image file will be created in the working directory.

fugu-demo# 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
fugu-demo# 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

There is a file called fuguita-6.9-amd64.ffsimg in sysmedia, which contains the FuguIta file tree. You can customize your LiveDVD by modifying the files in this file tree.

fugu-demo# vnconfig vnd0 fuguita-6.9-amd64.ffsimg
fugu-demo# mount /dev/vnd0a /mnt
fugu-demo# 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
.... (Customization work) ...

Once customization is complete, close the filesystem image and remaster.

fugu-demo# umount /mnt
fugu-demo# vnconfig -u vnd0
fugu-demo# remaster_dvd.sh
mkhybrid 1.12b5.1
Scanning .
Scanning ./etc
  :
  :

LiveUSB disk image remastering

This section introduces how to create a LiveUSB disk image file.

Run 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    ← Specify an unused vnode device

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...
$

A disk image file is created in the current directory by the above operations. The file name will be the same as the distributed one, "FuguIta-OPENBSD_VERSION-PLATFORM-RELEASE.img".



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