Introduction explained the basic usage procedure of FuguIta.
In this chapter, we will introduce more advanced usage that takes advantage of the features of FuguIta.

[Memo]
This chapter assumes that you continue to use the environment set in Introduction as follows:

  • Assuming fugu-demo.localnet as hostname
  • ready to access internet
  • General user yoshi is created. Since yoshi also belongs to the wheel group, he can become root.

Manage OpenBSD

Add application software

FuguIta can add various software in addition to the software provided by OpenBSD.

The easiest way to add software is to use OpenBSD's ports/packages system.
To add software for packages, run the command pkg_add as root. As an example, here is an example of installing Mozilla Firefox, a web browser.

fugu-demo$ su -
Password:
fugu-demo# pkg_add firefox
quirks-4.53 signed on 2021-12-19T13:27:04Z
quirks-4.53:(ok)
firefox-95.0.1:libiconv-1.16p0:(ok)
firefox-95.0.1:gettext-runtime-0.21p1:(ok)
    :
    略
    :
firefox-95.0.1:dconf-0.40.0:(ok)
firefox-95.0.1:gtk+3-3.24.30:(ok)
firefox-95.0.1:(ok)
Running tags:ok
The following new rcscripts were installed: /etc/rc.d/messagebus
See rcctl for details.
New and changed readme(s):
        /usr/local/share/doc/pkg-readmes/dbus
        /usr/local/share/doc/pkg-readmes/firefox
        /usr/local/share/doc/pkg-readmes/glib2
        /usr/local/share/doc/pkg-readmes/gtk+3
fugu-demo# exit
fugu-demo$

In the above example, we temporarily became root using the su command. Of course, you can log out of yoshi, log back in as root, and execute pkg_add there. Executing pkg_add will also add other software required to run the target application. In the firefox example above, these are libiconv, gettext-runtime, dconf, gtk+3, etc. It is displayed that there is a document about the installed software under the directory /usr/local/share/doc/pkg-readmes, so it is a good idea to read it.

Applications can be added in a manner similar to the example above.
See https://ftp.jaist.ac.jp/pub/OpenBSD/7.2/packages/amd64/ with a web browser to see what software can be pkg_added from ports/packages.

[Memo]
The ports/packages system is explained in detail at https://www.openbsd.org/faq/faq15.html. Also, in the above example, we used ftp.jaist.ac.jp as the download source, but there are other download sites, and you can see the list at https://www.openbsd.org/ftp.html. increase.
It is also possible to directly compile and install the source code released by the software developer without using ports/packages, so-called "stray build".

On FuguIta, the software added by pkg_add is also subject to data save/restore by the usbfadm command.

Server setting example - change the NTP server that refers to the time

NTP (Network Time Protocol) is a protocol (communication protocol) for synchronizing the time of each computer while communicating on the network.
OpenBSD has a function to synchronize its own time with the time reference on the Internet using NTP, and this function can also be used in FuguIta.

OpenBSD configures whether to use NTP during installation. On the other hand, FuguIta has this feature enabled by default.

The NTP function is implemented by the program ntpd, and to see the operating status of ntpd, execute the command ntpctl increase.

[Memo]
The NTP software used by OpenBSD is called ``OpenNTPD'' and was created by the OpenBSD developers.
Linux and FreeBSD use different implementations of the same ntpd.

fugu-demo$ ntpctl -s status
4/4 peers valid, constraint offset 0s, clock synced, stratum 3

If "clock synced" is displayed as in the above example, ntpd communicates with the external NTP server that serves as the time reference, and as a result, you can see that the time is synchronized. on the other hand,

fugu-demo$ ntpctl -s status
0/1 peers valid, clock unsynced

If it is "clock unsynced" like this, the time has not been synchronized for some reason.

On OpenBSD, if the NTP function is enabled during installation, it will refer to a group of servers called pool.ntp.org as the time reference, and FuguIta's settings follow that.

On corporate LANs, etc., communication with external NTP servers such as pool.ntp.org may not be possible due to security concerns. In such a case, if an NTP server is operated on the company LAN, the local host's time can be kept accurate by referring to that server.

Here is how to configure the NTP server;

ntpd is configured by the file /etc/ntpd.conf, so edit ntpd.conf with root privileges.

fugu-demo$ doas -s
Password:
fugu-demo# vi /etc/ntpd.conf
 ntpd.conf内のこの3行を
  ↓
servers pool.ntp.org
sensor *
constraints from "https://www.google.com"
  ↓
 以下の一行に変更
  ↓
server ntp.localnet

In the above example, the settings are changed to refer to the NTP server "ntp.localnet".

After editing the configuration file, restart ntpd to reflect the changes.
A program like ntpd that runs in the background and provides services is called a daemon in Unix, but OpenBSD uses the command rcctl to operate the daemon can.

fugu-demo# rcctl restart ntpd
ntpd(ok)
ntpd(ok)
fugu-demo# 

Since the setting change work is completed above, return to the general user from root. After that, monitor the behavior of ntpd with ntpctl.

fugu-demo# exit
fugu-demo$ ntpctl -s status
1/1 peers valid, clock unsynced

If it looks like the above, it is not synchronized (yet), but you can see that one peer (peer, referring NTP server) is valid.

fugu-demo$ ntpctl -s status
1/1 peers valid, clock synced, stratum 3

After a while, it was confirmed that the time was synchronized.

ntpctl can also display the state of ntpd in more detail. Inaddition, ntpd itself leaves operation records in log files such as/var/log/daemon and /var/log/messages.
For details, refer to the manual page of each command and configuration file.

[Memo]
ntpd corrects the time drift very slowly. This is because a sudden big change in the time may adversely affect the operation of the system. Therefore, if the time difference is large, it may take a long time to synchronize.

Change OS settings

In the previous section, How to change the NTP server settings.

This section describes the configuration of services running on OpenBSD. Because it's not realistic to give a detailed description of every configuration method, I'll divide the configuration into categories and explain each of those categories.

kernel parameters

Functions of the OpenBSD kernel can be controlled in a number of ways, one of which is using the sysctl command.

fugu-demo$ sysctl -a | less
kern.ostype=OpenBSD
kern.osrelease=5.8
kern.osrevision=201510
kern.version=OpenBSD 5.8-stable (RDROOT.MP) #2: Wed Nov 11 13:18:48 JST 2015
    root@nimbus5.localnet:/opt/fi/5.8/sys/arch/i386/compile/RDROOT.MP

kern.maxvnodes=44152
kern.maxproc=1310
  ~以下略~

The example above shows all kernel parameters.
Since the display content does not fit on one screen, the display data is piped to the pager program less and displayed.

If you know in advance which parameter you want to display, you can specify its name to display it.
The example below shows the maximum amount of memory to allocate for file I/O buffering.

fugu-demo$ sysctl kern.bufcachepercent
kern.bufcachepercent=20
$

From this display, you can see that the buffer is set to allocate up to 20% of the installed memory capacity.

To change this value: Root privileges are required to change settings, so sysctl commands are executed via the doas command.

fugu-demo$ doas sysctl kern.bufcachepercent=50
Password:
kern.bufcachepercent: 20 -> 50
$

You can also set it automatically at system startup instead of manually running the sysctl command. For that, write the contents you want to set in a file called /etc/sysctl.conf.

[Memo]
In addition to changing kernel settings Rewrite kernel by

  • config command
  • Change at boot time with UKC (User Kernel Config)
  • kernel recompile

There are methods such as, but the contents that can be set and the difficulty of work differ for each. For details, please refer to each manual page and FAQ on the official site.

Network Basic Settings

As explained above, network-related settings are made when FuguIta starts up, so if you can communicate without any problems, you don't need to change any settings.
If you operate FuguIta as a server or network gateway, you may need to change or add settings.

Interface Settings
Settings related to network interfaces such as IP addresses and netmasks are set in the file /etc/hostname.<interface name>. The format of this file can be found at hostname.if(5).

[Memo]
What kind of network interfaces your PC has is displayed with "ifconfig -a".

route control
default route is described in /etc/mygate. For other route control, run the route control daemon or describe the execution of the route command in /etc/hostname.if or /etc/rc.local.
Name resolution
/etc/resolv.conf
Packet filtering
PF is a packet filter developed by OpenBSD, but it has a lot of functions other than filtering such as network bandwidth control and address conversion. . For PF, there are online manuals such as pfctl(8) and pf.conf(5) [[PF - User's Guide>https See http://www.openbsd.org/faq/pf/index.html]].

Daemon start/stop and setting

OpenBSD comes with various daemons installed, including some that don't run by default. Change the NTP server that refers to the time explained how to start, stop, and change the settings of the NTP daemon as an example. Follow similar steps for other daemons.

On OpenBSD, /etc/rc.conf.local controls the startup of such daemons. and options to be given to the daemon at startup.

[Memo]
Actually, all daemons are specified in /etc/rc.conf, and rc.conf.local is rc.conf works to override the settings of

To control the behavior of various daemons, the contents of rc.conf.local are changed, so edit it with a text editor.In addition, the command rcctl can be used to control starting/stopping daemons and to change settings. Like ntpd is configured via ntpd.conf, other daemons also have their own configuration files, many of which reside directly under /etc. In addition, the directory /etc/examples contains sample files for setting various daemons, so you can refer to, copy, or edit these files as actual setting files.

Other settings

/etc/rc.local is a shell script executed during the final stages of system startup. If you want to perform processing other than what has been explained so far, describe the processing in this file.

Please refer to rc(8) for how OpenBSD starts up and shuts down.

FuguIta boot mode

Boot Mode 1 - Faster boot time / Saves memory usage

If you specify mode 1 when starting FuguIta, the time required for the system to complete booting will be shortened.
Various setting items are the same as mode 0.

Select boot mode;
  0: fresh boot (normal)
  1: fresh boot (lower memory, faster boot than mode 0)
  2: fresh boot (works only on mfs)
  3: retrieve user data from USB flash memory
  4: retrieve user data from floppy disk
  5: interactive shell for debugging
->1

Memory usage (mfs size) after startup is also less than mode 0.
As a guideline, it will be possible to operate from a machine with about 64 MB of mounted memory;

File usage (mode 0)
fugu-demo$ df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/rd0a      1.6M    729K    833K    47%    /
/dev/cd0a      697M    697M      0B   100%    /sysmedia
/dev/vnd5a     676M    664M   11.9M    98%    /fuguita
mfs            698M   25.5M    673M     4%    /ram
File usage (mode 1)
fugu-demo$ df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/rd0a      1.6M    730K    832K    47%    /
/dev/cd0a      697M    697M      0B   100%    /sysmedia
/dev/vnd5a     676M    664M   11.9M    98%    /fuguita
mfs            713M    6.8M    706M     1%    /ram

However, boot mode 1 has the advantage of requiring fewer resources than the standard boot mode, mode 0, but has the disadvantage of not being able to change files and directories under /usr. In other words, you cannot add applications using pkg_add or the like.

Start mode 1 can be used when operation is possible only with the software included in FuguIta. The above situation will be inherited even if you restart in mode 3 after starting in mode 1 and saving the file with usbfadm.

Boot Mode 2 - Operation in memory

Boot mode 2 is a mode in which all files are transferred on mfs and everything operates in memory.

Select boot mode;
  0: fresh boot (normal)
  1: fresh boot (lower memory, faster boot than mode 0)
  2: fresh boot (works only on mfs)
  3: retrieve user data from USB flash memory
  4: retrieve user data from floppy disk
  5: interactive shell for debugging
->2

In mode 2, DVD and USB memory are unmounted when the system boot is completed, so you can remove those devices and operate. Since program execution and file reading and writing are all performed in memory, it can be expected to operate faster than modes 0 and 1.

fugu-demo$ df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/rd0a      1.6M    730K    832K    47%    /
mfs            813M    736M   76.7M    91%    /ram

However, as explained at the beginning, in this mode 2, all system files on the DVD or USB memory are copied to mfs, so the amount of installed memory on the PC should be approximately 800MB or more as a guide.

Even in mode 2, if the file is saved with usbfadm and then restarted in mode 3, the state at the time of file saving is restored.

[Memo]
Please note that the device cannot be removed in the following cases.

  • if virtual memory usage is greater than real memory and swap partition cannot be disabled (warning message is displayed)
  • If you are using encrypted partition (you will get a warning message)
  • If you additionally mount partitions in that device

boot mode and file system

What is the difference in file system structure between boot mode 0 and boot mode 1? The differences are explained below.

fi-filesys-mode0.png

The diagram on the right shows the file layout in startup mode 0 (click the diagram to enlarge). Example path for /bin/ed, /usr/bin/vi, pkg_added /usr/local/bin/emacs.

Root filesystem is RAM DISK, rd. This device is built into the kernel and has already been mounted since system boot. Under root is an unfamiliar directory called "boottmp". It contains commands that are necessary at the very beginning of system startup and utilities specialized for FuguIta.

The FuguIta device is actually a DVD or USB memory that stores the boot loader, OS kernel, and file system image p. It is mounted read-only at /sysmedia. The file system image on /sysmedia is mapped to /dev/vnd4 and mounted at /fuguita. This is the OpenBSD file tree. It's pretty much the original OpenBSD, except for a few changes to match the live system. This file system is also read-only. Therefore, files cannot be created, modified, or deleted under this.

/ram is a memory file system called mfs (memory file system) and is both readable and writable. Files that need to be changed, such as /etc/*.conf, user data under /home, and software added by pkg_added, are placed above this. Also, files that rarely change are replaced with symlinks to equivalent files in /fuguita. This will reduce the memory usage of mfs.

fi-filesys-mode1.png

Next is boot mode 1. In boot mode 1, /usr is symbolically linked to /fuguita/usr. This makes booting faster and using less memory than mode 0 by not copying or linking /usr to /ram. However, /usr/local is not writable, so pkg_add is not possible.

fi-filesys-mode2.png

The file layout for boot mode 2 is shown on the right. This is much simpler than modes 0 and 1, only / and /ram are mounted and all external devices are unmounted. Of course, all files can be changed.

Management of FuguIta

Install the Japanese desktop environment

On Fuguita, you can install the Japanese desktop environment by executing the command dtjsetup. Below is an example of running dtjsetup.

fugu-demo# dtjsetup                          ← Start dtjsetup
                                               (Both root and general users can use it)
#==========================================
# Welcome to dtjsetup
#     Desktop (and Japanese) setup utility
#
# for FuguIta-6.6-amd64-202001171
#==========================================

Which desktop software will you install?     ← Choosing a desktop environment
  1:  no desktop (wm only)
  2: [rox-filer]
  3:  xfce
  4:  mate
  5:  lumina
  6:  lxqt
->                                           ← If you enter only [ENTER],
                                                the You have selected the item.
Which window manager will you install?       ← Select a window manager if you selected
  1:  cwm                                       1 or 2 in the previous section.
  2:  fvwm                                      
  3:  twm                                       
  4: [icewm]
  5:  fluxbox
  6:  jwm
->

Will you setup Japanese language environment? [y/N] -> y
Which input method will you install? 
  1: [scim-anthy]
  2:  uim-gtk
  3:  fcitx-anthy
  4:  ibus-skk
->

*** You selected icewm as desktop software.
*** Installing Japanese environment is YES.
*** Japanese input method is scim-anthy.

*** Checking your root authorization...
*** OK.

*** Checking network accessibility...
*** OK.

*** Installing packages: rox-filer icewm ja-kterm ja-sazanami-ttf mixfont-mplus-ipa mplus-fonts scim-anthy
Will you continue? [y/N] -> y
quirks-3.183 signed on 2020-01-31T18:21:51Z
rox-filer-2.11p3:libiconv-1.16p0:ok
rox-filer-2.11p3:xz-5.2.4:ok
    :
icewm-1.6.1:libsndfile-1.0.28:ok
icewm-1.6.1:ok
Ambiguous: choose package for ja-kterm
a	0: <None>
	1: ja-kterm-6.2.0p9
	2: ja-kterm-6.2.0p9-xaw3d
Your choice: 1
ja-kterm-6.2.0p9:ok
    :
scim-anthy-1.2.7p11:ok
Running tags:
New and changed readme(s):
	/usr/local/share/doc/pkg-readmes/glib2
	/usr/local/share/doc/pkg-readmes/gtk+2
	/usr/local/share/doc/pkg-readmes/scim
--- +ja-sazanami-ttf-20040629p3 -------------------
You may wish to update your font path for /usr/local/share/fonts/sazanami
--- +mixfont-mplus-ipa-20060520p7 -------------------
You may wish to update your font path for /usr/local/share/fonts/mixfont-mplus-ipa
--- +mplus-fonts-063 -------------------
You may wish to update your font path for /usr/local/share/fonts/mplus-fonts

*** /root/.xsession already exists.
*** This will be replaced with a new file.
*** and the old one will be renamed to /root/.xsession_20200206_170903.

*** Rewrite .xsession configuration file.
Will you continue? [y/N] -> y

Copy this .xsession file to /etc/skel ? [y/N] -> y    ← Once copied, this setting will be
                                                         inherited when a new user account is
                                                         created.
*** Japanese environment and related software have been set up.
*** However, the time zone has not yet been set to JST.
Set timezone to JST? [Y/n] -> y

*** When you use this machine both running OpenBSD and Windows.
*** You may set the hardware clock to JST instead UTC.
Set hardware clock to JST? [Y/n] -> n

*** all installation and configuration completed.
*** Check your /root/.xsession and login to X if OK.

*** Note: You can save this configuration and addtionally installed softwares
***	  by using usbfadm utility.
***	  And can reload them at next boot time by selecting boot mode 3.
DeskTop.jpg

After the above settings have been made, log out and log back in from the xenodm login screen to launch the installed desktop environment.

In the desktop environment, various applications can be added using the pkg_add command.

[Memo]
Detailed explanation from installing FuguIta to installing various applications /ca008a34d73d5f1f6dd8]] has been published on the technical information sharing site Qiita. See also

Enable login screen for X

As described in Login method selection in FuguIta's startup settings, you can choose between the method of logging in from the console screen and the method of logging in from the X Window System login screen(xenodm). Select.

Even if you choose to log in from the console screen, you can later change the method to log in from the X Window System login screen (xenodm).
To do this, modify the contents of the /etc/rc.conf.local file as described in Changing OS configuration.

The following example uses the rcctl command to enable xenodem.

fugu-demo$ doas rcctl enable xenodm  
fugu-demo$ doas rcctl ls on
check_quotas
cron
library_aslr
ntpd
pf
pflogd
slaacd
smtpd
sndiod
sshd
syslogd
xenodm
#

If you enable xdm with the rcctl command, you can see that the line "xdm_flags=" is added to rc.conf.local.

fugu-demo$ cat /etc/rc.conf.local
xenodm_flags=
$

After changing the settings, save with usbfadm, and then start xdm in mode 3.

[Memo]
When xdm is displayed, press <Control>+<Alt>+<F1> to switch to the normal text login screen. This virtual console has 12 faces in total, <Control>+<Alt>+<F1> to <Control>+<Alt>+ Allocated up to <F12>. The X display is bound to the 5th virtual console, so pressing <Control>+<Alt>+<F5> will return you to the X screen.

Update FuguIta

OpenBSD has a major release every six months, and at that time the version changes like OpenBSD 7.1 → OpenBSD 7.2.
And in half a year, fixes related to security and stability improvements have been made, and the fix information is provided on the official OpenBSD website at http://www.openbsd.org/errata72.html.

FuguIta also follows this modified information, and the currently published version has all the modified information applied so far (actually, application work and operation check Therefore, there is a time lag of several days after the correction information is released.)

In addition, to check the version of the OS currently in operation on FuguIta, execute the command as follows.

fugu-demo$ uname -a                                       ← version of OS
OpenBSD fugu-demo.localnet 5.8 RDROOT.MP#2 i386
fugu-demo$ sysctl kern.version                            ← version of kernel
kern.version=OpenBSD 5.8-stable (RDROOT.MP) #2: Wed Nov 11 13:18:48 JST 2015
    root@nimbus5.localnet:/opt/fi/5.8/sys/arch/i386/compile/RDROOT.MP

fugu-demo$ cat /usr/fuguita/version                       ← version of FuguIta
5.8-201512272

This section explains how to update your current version ofFuguIta to the latest version;

When a major release of OpenBSD is upgraded

This is when a major release of OpenBSD, on which FuguIta is based, is made. for example,

Fuguita-5.8-amd64-201504161
    ↓
Fuguita-5.9-amd64-201510255

However, the OS that FuguIta is based on has changed from OpenBSD 5.8 to OpenBSD 5.9.

It is difficult to update the system if OpenBSD major release changes.
The reason is that when OpenBSD is upgraded, system call specifications are changed, shared libraries are not compatible with version upgrades, commands are added/deleted, and specifications are changed significantly. This is because it is not realistic to migrate versions while maintaining them.

To migrate across OpenBSD major releases, the following methods are recommended;

  1. Create a new LiveDVD or LiveUSB.
  2. Start the new version of FuguIta and migrate various settings and user-created files from the old version of FuguIta.

Unchanged OpenBSD major release

this is,

Fuguita-6.0-amd64-201511297
   ↓
Fuguita-6.0-amd64-201512051

You can check that the "6.0" part, which indicates the OpenBSD version like, has not changed.

In this case, the system changes are only partial, so there is no need to migrate user data. To migrate the system, follow the steps below.

LiveDVD migration procedure
In the case of LiveDVD, partial rewriting of the media is not possible, so we will create a new version of LiveDVD version FuguIta and use it.
The data saved in the USB memory can be read and used as it is in startup mode 3.

LiveUSB migration procedure
For LiveUSB, you can update the active LiveUSB by using the command fiupdate (Fuguita update). To use fiupdate, boot the LiveUSB to be updated in mode 0, 1 or 2.
Then download the ISO image and SHA256 file of the new version from the distribution site, then launch fiupdate.

[Memo]
Use LiveUSB for update is ISO image file. Please note that these are not *.img files.
The SHA256 file is used by fiupdate to check that the contents of the downloaded file are not corrupted.

fugu-demo# ls -l
total 606752
-rw-r--r--  1 root  wheel  310651490 Oct  7 01:12 FuguIta-6.7-amd64-202010071.iso.gz
-rw-r--r--  1 root  wheel	 562 Oct  8 06:25 SHA256

fugu-demo# cat /usr/fuguita/version
6.7-amd64-20209041

fugu-demo# fiupdate 202010071

fiupdate - Live Updater for FuguIta LiveUSB
  Version/Arch: 6.7/amd64  (FuguIta-6.7-amd64-20209041)

Checking...
     environment: ok

Note: This software is currently in beta testing.
      Use this at YOUR OWN RISK.

      We recommend that you run this command in fresh boot (boot mode
      0, 1, or 2).
      Alternatively, you must quit all application software and save
      all your data before updating this FuguIta device.

      All daemons, including xenodm, will be stopped before the update.
      Please note that all X sessions will be aborted.

Do you proceed? [y/N] -> y

Checking...
	checksum: (SHA256) FuguIta-6.7-amd64-202010071.iso.gz: OK
     file layout: liveusb
  existing files: ok

decompressing FuguIta-6.7-amd64-202010071.iso.gz...
9296MiB 0:00:31 [9.51MiB/s] [================================>] 100% ETA 0:00:00
Now ready to update FuguIta-6.7-amd64-20209041 to FuguIta-6.7-amd64-202010071.

This machine will reboot immediately after update completed.

Do you proceed? [y/N] -> y

stopping all daemons...
cron(ok)
ntpd(ok)
pflogd(ok)
slaacd(ok)
smtpd(ok)
sndiod(ok)
sshd(ok)
syslogd(ok)

overwriting uniprocessor kernel...
8.66MiB 0:00:06 [1.37MiB/s] [================================>] 100% ETA 0:00:00
overwriting multiprocessor kernel...
8.69MiB 0:00:04 [1.84MiB/s] [================================>] 100% ETA 0:00:00
overwriting filesystem image...
9864MiB 0:05:30 [3.05MiB/s] [================================>] 100% ETA 0:00:00

update completed.
now rebooting...
syncing disks... done

After the update is complete, the PC will restart automatically.
Operation after the LiveUSB update is the same as before, and there is no need to migrate data.

[Memo]
When fiupdate is run over the network or on the X Window System, the following warning is displayed.

It seems you are running this script on X Window System,
via network or something like this.
In this situation, during update, corresponding processes
will be killed and then update may fail.

Running this on direct console device is highly recommended.

Continue anyway? [y/N] ->

fiupdate stops all daemons before updating system files. At this time, the network may be disconnected or the X session may be terminated, causing the update to fail.
So fiupdate should be run directly on the console device.

Using FuguIta in a mobile environment

In order to use FuguIta as a terminal in a mobile environment, the basic part is not much different from operation in a fixed environment.

However, considering the unique circumstances of the mobile environment, there are aspects that can be operated more efficiently by adding settings.

In this section, we will explain the power supply related items of the notebook PC as such setting items.

Power related settings

Current PCs, especially laptops, have mechanisms called ACPI (Advanced Configuration and Power Interface) and APM (Advanced Power Management), which can monitor and control power supplies such as batteries.
In OpenBSD, these mechanisms are implemented as acpi(4) and apm(4), and through administrative commands can access.

acpi and apm are managed by a daemon called apmd.
Check status and configure apmd:

fugu-demo$ doas -s
Password:
fugu-demo# rcctl get apmd
apmd_class=daemon
apmd_flags=NO      ← apmd is disabled
apmd_timeout=30
apmd_user=root

Enable apmd:

fugu-demo# rcctl enable apmd
fugu-demo# rcctl set apmd flags -A  ← Automatically change the CPU clock frequency
fugu-demo# rcctl start apmd            according to the CPU load
fugu-demo# rcctl get apmd
apmd_class=daemon
apmd_flags=
apmd_timeout=30
apmd_user=root
fugu-demo# 

After completing the settings, usbfadm command to save and reboot in mode 3 Fuguita.

When apmd is running, you can monitor and control its status with the command apm.

fugu-demo$ apm
Battery state: high, 89% remaining, 57 minutes life estimate
A/C adapter state: not connected
Performance adjustment mode: auto (1000 MHz)

In the example below, I gave the apm command the -L flag to set the CPU to always run at low clock

fugu-demo$ apm -L
fugu-demo$ apm
Battery state: high, 88% remaining, 42 minutes life estimate
A/C adapter state: not connected
Performance adjustment mode: manual (1000 MHz)

The status of hardware such as the battery can also be monitored using the sysctl command and the systat command.

fugu-demo$ sysctl hw.sensors
hw.sensors.acpitz0.temp0=55.50 degC (zone temperature)
hw.sensors.acpiac0.indicator0=Off (power supply)
hw.sensors.acpibat0.volt0=14.80 VDC (voltage)
hw.sensors.acpibat0.volt1=15.30 VDC (current voltage)
hw.sensors.acpibat0.current0=1.19 A (rate)
hw.sensors.acpibat0.amphour0=1.12 Ah (last full capacity)
hw.sensors.acpibat0.amphour1=0.21 Ah (warning capacity)
hw.sensors.acpibat0.amphour2=0.07 Ah (low capacity)
hw.sensors.acpibat0.amphour3=0.92 Ah (remaining capacity), OK
hw.sensors.acpibat0.amphour4=2.15 Ah (design capacity)
hw.sensors.acpibat0.raw0=1 (battery discharging), OK
hw.sensors.acpibtn0.indicator0=On (lid open)
hw.sensors.acpidock0.indicator0=Off (not docked), UNKNOWN
hw.sensors.cpu0.temp0=55.00 degC
fugu-demo$ systat sensors
    3 users    Load 0.40 0.42 0.37                     Wed Dec 30 04:18:11 2015

SENSOR                                 VALUE  STATUS  DESCRIPTION
acpitz0.temp0                     56.50 degC          zone temperature
acpiac0.indicator0                       Off          power supply
acpibat0.volt0                    14.80 V DC          voltage
acpibat0.volt1                    15.26 V DC          current voltage
acpibat0.current0                     1.08 A          rate
acpibat0.amphour0                    1.12 Ah          last full capacity
acpibat0.amphour1                    0.21 Ah          warning capacity
acpibat0.amphour2                    0.07 Ah          low capacity
acpibat0.amphour3                    0.90 Ah    OK    remaining capacity
acpibat0.amphour4                    2.15 Ah          design capacity
acpibat0.raw0                          1 raw    OK    battery discharging
acpibtn0.indicator0                       On          lid open
acpidock0.indicator0                     Off unknown  not docked
cpu0.temp0                        56.00 degC

By default, the systat command updates the status every 5 seconds and continues to display it. Type 'q' to exit.

The apm command can also hibernate your PC.
In addition to the apm command, commands such as zzz and ZZZ can also be used to hibernate. In addition, depending on the PC model, some keys are assigned to pause operations.
The method of resuming from hibernation differs depending on the model, but it seems that there are many that press the power button briefly or press the hibernation key again.

[Caution]
!!Hibernation actions such as standby, sleep, and hibernate will disconnect the USB device and reconnect it on wakeup. Therefore, please note that the LiveUSB version of FuguIta, which mounts the file system on the USB device, will not work properly after the system is restored.
!!Depending on the model of the PC, hibernation operation may not work well (standby can be performed but suspend or hibernate cannot be performed, it cannot be resumed from hibernation, or the operation is unstable and sometimes resume fails, etc.). Please check the operation before using.

When using X, you can control the display with the xset command. Add the following line in .xinitrc under your home directory:

xset s on   ← enable screensaver
xset s 180  ← Screen saver operation start time (seconds)
xset +dpms  ← Switch display to power saving mode

With this example setting, the display will go into power saving mode if there is no mouse or keyboard activity for 180 seconds or more.

Switch between multiple network settings

As explained in Basic network settings, network settings are made in several files under the /etc directory. can be generated.
In addition, you can have multiple network settings, and you can switch between them with the chnetconf command.

In Fuguita, network-related configuration files are stored in subdirectories under /etc/fuguita/netconfs, and before starting the network, the files in that subdirectory are copied to /etc, and then the network is is set.
Settings made at initial boot are in /etc/fuguita/netconfs/default.

As an example, let's add two settings, "home" for home and "office" for work.

First, from the office. It is intended for use with Ethernet connections and fixed address settings. To add a new configuration, invoke gennetconfs with the configuration name "office".

fugu-demo# gennetconfs office
===================================================
= gennetconfs: generate network configuration files
===================================================

Hostname with domain part (FQDN):
only host name without domain part is also OK.
-> fuguita.office.local

IP protocol version(s) to be enabled: 4, 6, 46, 64 or "none"
  4: enable only IPv4
  6: enable only IPv6
  46: give priority to IPv4 name resolution
  64: give priority to IPv6 name resolution
  none: operate as standalone
[64] -> 4

Network Interfaces: Choose one

  NIC	 type	   Name
-------- ----- ------------
    bge0 ether Broadcom BCM57765
  urtwn0 wifi  GW-USValue-EZ GW-USValue-EZ
[bge0] -> bge0

IPv4 - address and routing:
  Enter "auto" or "IPv4_address[/mask] [default_gateway]"
  "auto" is an automatic setting by DHCP.
  The "/mask" part can be specified in either format, such as "/255.255.255.0" or "/24".
  If there is no default gateway, set the second field to "none" or leave it blank.
[auto] -> 192.168.20.115/24 192.168.20.254

DNS servers: up to 3 IP addresses, separated by spaces
-> 192.168.20.254

writing configured values to:
  /etc/fuguita/netconfs/office/myname
  /etc/fuguita/netconfs/office/mygate
  /etc/fuguita/netconfs/office/hosts
  /etc/fuguita/netconfs/office/hostname.bge0
  /etc/fuguita/netconfs/office/resolv.conf

======================================================
= end of gennetconfs:
= Use chnetconf utility to activate this configuration
======================================================

When setting with gennetconfs is completed, a setting file is created in "/etc/fuguita/netconfs/setting name".

fugu-demo# cd /etc/fuguita/netconfs/
fugu-demo# ls -l
total 24
drwxr-xr-x  2 root  wheel  144 Nov 25 05:46 default
drwxr-xr-x  2 root  wheel  240 Nov 25 07:00 office
drwxr-xr-x  2 root  wheel   96 Nov 18 05:49 templ.head
drwxr-xr-x  2 root  wheel    0 Nov 18 05:49 templ.tail
fugu-demo# ls -l office
total 40
-rw-r-----  1 root  wheel  23 Nov 25 07:00 hostname.bge0
-rw-r--r--  1 root  wheel  36 Nov 25 07:00 hosts
-rw-r--r--  1 root  wheel  15 Nov 25 07:00 mygate
-rw-r--r--  1 root  wheel  21 Nov 25 07:00 myname
-rw-r--r--  1 root  wheel  56 Nov 25 07:00 resolv.conf
fugu-demo# ls -l /etc/ | grep netconfs
lrwxr-xr-x  1 root  wheel	  28 Nov 25 06:56 myname -> /etc/fuguita/netconfs/default/myname
drwxr-xr-x  6 root  wheel	 192 Nov 25 06:59 netconfs

Use the chnetconf utility to actually apply these settings.
After executing chnetconf, after copying the specified configuration file to /etc, it internally executes "sh /etc/netstart" to change the network settings.

[Memo]
Of the configuration files, only the myname file will be a symbolic link instead of a copy. This is to indicate which settings in /etc/fuguita/netconfs are used by the network settings in /etc.

fugu-demo# chnetconf -l    ← Show all settings
*default                   ← This settng is active.
 office
fugu-demo# chnetconf office
fuguita# chnetconf -l
 default
*office              ← This configuration is active now.
fuguita# ifconfig    ← Check interface settings
bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	lladdr 10:9a:dd:6c:11:0c
	index 1 priority 0 llprio 3
	groups: egress
	media: Ethernet autoselect (100baseTX full-duplex,rxpause,txpause)
	status: active
	inet 192.168.20.115 netmask 0xffffff00 broadcast 192.168.20.255
urtwn0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
	lladdr 00:22:cf:46:6d:e6
	index 4 priority 4 llprio 3
	groups: wlan
	media: IEEE802.11 autoselect (OFDM54 mode 11g)
	status: no network
	ieee80211: nwid ""
fugu-demo# ping www.google.com    ← 疎通を確認
PING www.google.com (172.217.175.68): 56 data bytes
64 bytes from 172.217.175.68: icmp_seq=0 ttl=115 time=28.318 ms
64 bytes from 172.217.175.68: icmp_seq=1 ttl=115 time=25.842 ms
64 bytes from 172.217.175.68: icmp_seq=2 ttl=115 time=26.137 ms
^C
--- www.google.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 25.842/26.765/28.318/1.104 ms

Continue to create the setting "home" in the same way. This assumes that the address can be automatically set using a Wi-Fi connection using SLAAC for IPv6 and DHCP for IPv4.

fuguita# gennetconfs home
===================================================
= gennetconfs: generate network configuration files
===================================================

Hostname with domain part (FQDN):
only host name without domain part is also OK.
-> fuguita.home.local

IP protocol version(s) to be enabled: 4, 6, 46, 64 or "none"
  4: enable only IPv4
  6: enable only IPv6
  46: give priority to IPv4 name resolution
  64: give priority to IPv6 name resolution
  none: operate as standalone
[64] ->

Network Interfaces: Choose one

  NIC	 type	   Name
-------- ----- ------------
    bge0 ether Broadcom BCM57765
  urtwn0 wifi  GW-USValue-EZ GW-USValue-EZ
[bge0] -> urtwn0

Wi-Fi settings:
  SSID -> my-wifinet
  WPA Key -> my-wpa-secret-key

IPv6 - address and routing:
  Enter "auto" or "IPv6_address[/prefixlen] [default_gateway]"
  "auto" is an automatic setting by SLAAC.
  The "/prefixlen" part can be an integer between 0 and 128.
  If there is no default gateway, set the second field to "none" or leave it blank.
[auto] ->

IPv4 - address and routing:
  Enter "auto" or "IPv4_address[/mask] [default_gateway]"
  "auto" is an automatic setting by DHCP.
  The "/mask" part can be specified in either format, such as "/255.255.255.0" or "/24".
  If there is no default gateway, set the second field to "none" or leave it blank.
[auto] ->

writing configured values to:
  /etc/fuguita/netconfs/home/myname
  /etc/fuguita/netconfs/home/hostname.urtwn0
  /etc/fuguita/netconfs/home/resolv.conf

======================================================
= end of gennetconfs:
= Use chnetconf utility to activate this configuration
======================================================
fuguita# chnetconf -l
 default
 home
*office
fuguita# chnetconf home
fuguita# chnetconf -l
 default
*home
 office
fuguita# ifconfig
bge0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
	lladdr 10:9a:dd:6c:11:0c
	index 1 priority 0 llprio 3
	media: Ethernet autoselect (100baseTX full-duplex,rxpause,txpause)
	status: active
urtwn0: flags=a48843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF6TEMP,AUTOCONF6,AUTOCONF4> mtu 1500
	lladdr 00:22:cf:46:6d:e6
	index 4 priority 4 llprio 3
	groups: wlan egress
	media: IEEE802.11 autoselect (OFDM54 mode 11g)
	status: active
	ieee80211: nwid my-wpa-secret-key chan 10 bssid 1c:b1:7f:27:5c:de -62dBm wpakey wpaprotos wpa2
       wpaakms psk wpaciphers ccmp wpagroupcipher ccmp
	inet6 fe80::222:cfff:fe46:6de6%urtwn0 prefixlen 64 scopeid 0x4
	inet 192.168.10.113 netmask 0xffffff00 broadcast 192.168.10.255
	inet6 2409:........:8d47 prefixlen 64 autoconf pltime 604795 vltime 2591995
	inet6 2409:........:1974 prefixlen 64 autoconf temporary pltime 77241 vltime 172795
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33136
	index 5 priority 0 llprio 3
	groups: pflog

Now, 3 network settings are created, including the traditional default.

These settings can be toggled at any time using the chnetconf utility.

Use a Wi-Fi device that requires a firmware download

This section describes how to deploy Wi-Fi devices as an application of the gennetconfs and chnetconf commands.

OpenBSD supports a variety of Wi-Fi devices, some of which are not available out of the box and require firmware download and installation.

[Memo]
The OpenBSD site has the following description about the reasons why you need to download the firmware;

OpenBSD FAQ - Wireless Networking
https://www.openbsd.org/faq/faq6.html#Wireless

In order to use some wireless cards, you will need to acquire firmware files with fw_update. Some manufacturers refuse to allow free distribution of their firmware, so it can't be included with OpenBSD.

Such Wi-Fi devices

can be used. Here are the specific steps:

1. Set up a firmware-free device and connect to the internet
At startup, configure the device to connect to the Internet using a firmware-free device as follows.
Most wired LAN (Ethernet) devices and some WiFi devices do not require firmware. [Listen]

Network Interfaces: Choose one

  NIC	 type	   Name
-------- ----- ------------
    bge0 ether Broadcom BCM57766
  urtwn0 wifi  GW-USValue-EZ GW-USValue-EZ
[bge0] -> bge0

2. Download and install the firmware
Log in as root and execute the fw_update command. Download and install firmware.

fugu-demo# fw_update -v
Path to firmware: http://firmware.openbsd.org/firmware/7.0/
Installing: inteldrm-firmware intel-firmware urtwn-firmware
inteldrm-firmware-20201218:100%|OK
intel-firmware-20210608v0:100%|OK
urtwn-firmware-20180103p0:100%|OK
fugu-demo# 

[Memo]
fw_update is automatically executed at startup, but just in case, it is manually executed again.

3. Change the connection settings to the Wi-Fi device you want to use
Once the firmware is installed, change the connection setting to Wi-Fi Device and check the operation.

fugu-demo# gennetconfs wifi  ← generate configuration file
===================================================
= gennetconfs: generate network configuration files
===================================================
~ omitted ~
Network Interfaces: Choose one

  NIC	 type	   Name
-------- ----- ------------
    bge0 ether Broadcom BCM57766
  urtwn0 wifi  GW-USValue-EZ GW-USValue-EZ
[bge0] -> urtwn0                ← select Wi-Fi device

Wi-Fi settings:
  SSID -> my-wifinet            ← enter Wi-Fi SSID
  WPA Key -> my-wpa-secret-key  ← and password
~ omitted ~
======================================================
= end of gennetconfs:
= Use chnetconf utility to activate this configuration
======================================================
fugu-demo# chnetconf wifi       ← change the network to the settings
                                   you just made
fugu-demo# ping www.google.com  ← check connection
PING www.google.com (216.58.220.100): 56 data bytes
64 bytes from 216.58.220.100: icmp_seq=0 ttl=114 time=33.656 ms
64 bytes from 216.58.220.100: icmp_seq=1 ttl=114 time=28.933 ms
64 bytes from 216.58.220.100: icmp_seq=2 ttl=114 time=26.193 ms
64 bytes from 216.58.220.100: icmp_seq=3 ttl=114 time=21.949 ms
^C
--- www.google.com ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 21.949/27.683/33.656/4.253 ms

This completes the Wi-Fi firmware installation. Save using the usbfadm command the last modified content. If you specify this setting Reboot in mode 3, you can continue to use this setting.

fugu-demo# usbfadm -r

========================================
= Sync current mfs as fugu-demo into /dev/sd1d
=
    :
    :

Manage LiveUSB

LiveUSB remastering

This section describes how to create a new FuguItaLiveUSB with another USB memory using FuguIta that is already running.
With this method, you can allocate a swap partition, a data storage area, a FAT partition for data exchange with other OS, etc. by specifying the size of each. You can also specify data storage encryption.
The example below assumes that you are installing to a USB memory with a size of 4GB.

First, start FuguIta in mode 0 or mode 1. You can use either the LiveDVD version or the LiveUSB version of FuguIta to start.

Once booting is complete, run the usbfadm command with root privileges.

fugu-demo$ doas usbfadm
doas (yoshi@fugu-demo.localnet) password:

Welcome to usbfadm.
USB flash drive administration tool for FuguIta

 Version/Arch: 7.2/amd64  (FuguIta-7.2-amd64-202302081)
    Boot mode: usbflash
Target device: /dev/sd1d
Data saved as: fugu-demo

readline capability available
TAB to complete the reserved words

Type ? for help.

sd1d : fugu-demo ->newdrive    ← Instruct LiveUSB creation

Please make sure the device inserted.
Then press ENTER ->    ← After confirming that the USB memory is installed,
                          press <Enter>.
      A list of recognized disk devices is displayed in chronological order.
               ↓
==== disk(s) and vnode devices ============================
sd0 at scsibus1 targ 0 lun 0: <VirtIO, Block Device, >
sd0: 65536MB, 512 bytes/sector, 134217728 sectors
sd1 at scsibus2 targ 0 lun 0: <VirtIO, Block Device, >
sd1: 4096MB, 512 bytes/sector, 8388608 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-7.2-amd64.ffsimg on cd0a, inode 48172
============================================================
Enter the name of device which FuguIta will be installed->sd1    ← Specify device to create LiveUSB
swapctl: no swap devices configured

Disk: sd1      geometry: 522/255/63 [8388608 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 boot method:
  1:  Legacy BIOS
  2: [UEFI]
  3:  none (only for save data)
  4:  Hybrid
->

Select partition type:
  1: [MBR]
  2:  GPT
->

Type of /ram:
  1: [MFS]
  2:  TMPFS
->

Enter sizes for swap, user data and extra FAT.
  You can add suffix K, M, G or T (otherwise considered 'bytes').
  '*' implies 'all'
  '0' doesn't make this partition.

3GB (3085MB) (6319040sectors) free
swap->0    ← If 0, do not create a swap partition.
               0の場合はスワップパーティションを作成しない。

3GB (3085MB) (6319040sectors) free
user data->2g        ← Allocate 3 gigabytes with "2g"
                          Type "*" to assign all the rest.

user data encryption? [y/N] ->    ← See another section for details

Create an extra FAT partition? [y/n] -> y

target disk: sd1
  partition type=MBR
       boot type=UEFI

-------------------- : ------
           partition :   size
-------------------- : ------
          whole disk :    4GB
    partition tables :   32KB
         UEFI system :  512KB
      FuguIta system : 1010MB
        FuguIta swap :     0B
   FuguIta user data :    2GB
           MSDOS FAT :    1GB
-------------------- : ------

***THIS IS THE LAST CHANCE***
If you type 'Y' now, all the data on sd1 will be lost.
Are you sure to modify disk sd1? [y/N] -> y
========================================
= Clearing MBR, GPT and BSD disklabel
=
1+0 records in
1+0 records out
1048576 bytes transferred in 0.009 secs (110136197 bytes/sec)

========================================
= Setting up fdisk partitions
=
  ~ omitted ~
** /dev/rsd1d
** File system is already clean
** Last Mounted on /mnt
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
5 files, 5 used, 1012714 free (18 frags, 126587 blocks, 0.0% fragmentation)

sd1d : fugu-demo ->quit

Bye bye...
fugu-demo$

The above will write the Fugu board system to the specified device and it will be ready for use.

[Caution]
!!Please check the device name of the write destination. Writing to the wrong device will result in the loss of data stored there.

fuguita-usb-uefi.png

If you make a diagram of what you have explained so far, it will look like the one on the right.

The i partition at the beginning of the media is created when UEFI is selected as the boot method.
In the a partition at the beginning of the media, the system of FuguIta is written. If you select "none" for "Select boot method:", the i partition and a partition will not be created because the media will be used exclusively for saving data.

Next, a d partition with the size you entered in "Enter size for saving User Data" will be created and used as the data destination for usbfadm.

If there is still unused space after allocating space for the above partitions, you will be asked "Create an extra FAT partition? [y/n] ->".
If you answer y to this, the j partition will be reserved. This partition is formatted as a FAT file system and can be accessed by other operating systems such as Windows. OpenBSD can also mount FAT, so it can be used to exchange data between FuguIta and other OS.

[Memo]
The remastering of FuguIta described in this section can be used not only for USB memory but also for all recording devices that can be written from OpenBSD. For example, you can write to SD cards, compact flash, memory sticks or even ATA and SATA hard disks.

[Memo]
Currently, there are two types of boot methods for PCs, "BIOS" and "UEFI". The methods described so far work for both boot methods.
If you specify "Legacy BIOS" as the boot method and "MBR" as the partition format, the media will support the "BIOS-only boot method.

fuguita-usb.png

The partition configuration in this case is as shown in the left figure. The UEFI boot partition is not created, and the FAT area becomes the i partition.

[Memo]
Even if you specify the boot method "Hybrid", you can create a USB memory that can boot with either BIOS or UEFI.
However, "Hybrid" is a non-standard creation method. In addition, please note that changing the partition with the fdisk command after creation will cause problems (Hybrid format is left for compatibility with past releases).

Automate setting input at startup

FuguIta requires the following settings during startup:

There is a function to automate the input for the above 5 items.
For that, write the settings to a file called noasks in the ``d'' partition of the LiveUSB version of FuguIta.

fugu-demo$ doas -s 
doas (yoshi@fugu-demo.localnet) password: 
fugu-demo# mount /dev/sd0d /mnt
fugu-demo# cd /mnt
fugu-demo# ls -l
total 4
drwxr-xr-x  5 root  wheel  512 Oct 23 19:29 livecd-config
fugu-demo# cd livecd-config/7.0/amd64                                           
fugu-demo# ls -l
drwxr-xr-x  11 root  wheel  512 Nov 10 17:08 fugu-demo
-rw-r--r--   1 root  wheel  422 Nov  9 22:19 noasks

[Memo]
Directory livecd-config is a directory for saving data by usbfadm.

In noasks, the setting value template is written in the form of comments, so use a text editor to uncomment the setting line and write the value you want to set.

fugu-demo# vi noasks
#
# noasks - parameter settings for non-interactive boot
#
# Make statements uncommented
# Then assign real values
#
#
# FuguIta system device
#   - Use one of two lines                    ← FuguIta's system device:
#noask_rdev=sd2a  # device name format             Uncomment specifying either
#noask_rdev=f24c0ae78bb7e0e4.a  # DUID format      a regular device name or a DUID format.
#                                              
# mfs size in MB
#noask_umem=75%  ← Specifies the amount of memory to allocate to MFS from the on-board
                    memory. (Only numbers are in megabytes, % is installed memory, %% is
                    percentage of installed memory + swap)
#               
# boot mode
#noask_setup_rw_mode=3  ← boot mode for auto start
#
# storage device
#   - Use one of two lines
#noask_confdev=sd2d  # device name format
#noask_confdev=f24c0ae78bb7e0e4.d  # DUID format
#
# data set name in USB flash drive
#noask_confdir=fugu-demo

[Memo]
Please do not put spaces before and after "=" in the setting value assignment statement (the noasks file is interpreted as a shell script).

After editing, unmount the d partition and reboot the system.

fugu-demo# cd
fugu-demo# umount /mnt
fugu-demo# /sbin/shutdown -r now

If the value is set by the noasks file, you will see the following

============================================
=     ______               __   _
=    / ____/              |  |_| |__
=   / /____  ______  __  _|  /_   _/_____
=  / ___/ / / / __ \/ / / |  | | | /  _  |
= / /  / /_/ / /_/ / /_/ /|  | | |_| (_) |__
=/_/   \____/\__  /\____/ |__| \___/____/__/
=            __/ /
=           /___/
=
= Welcome to FuguIta!  -  OpenBSD Live System
=                 http://fuguita.org/?FuguIta
=============================================
scanning partitions: wd0i wd0j sd0a sd0d
FuguIta's operating device(s): sd0a.
Press ^C to cancel non-interactive boot

Wait 5 seconds after this "Press ^C to cancel non-interactive boot" is displayed and automatic boot will be performed.
If you enter ``<Control>-C'' within 5 seconds, the automatic startup by the noasks file will be aborted and normal operation will resume.

[Memo]
If there is an unconfigured item in the noasks file, wait for input from the user at the item configuration during autostart.

[Memo]
Among the setting items, noask_rdev and noask_confdev can be specified by DUID (Disklabel Unique IDentifiers) in addition to normal device names such as sd0a. A DUID is a random, unique hexadecimal string automatically attached to a disk device.
The DUID can be found from the output of the disklabel command.

fugu-demo# disklabel sd0
# /dev/rsd0c:
type: ESDI
disk: ESDI/IDE disk
label: QEMU HARDDISK   
duid: eac6323f6d34c465  ←DUID
flags:
~ omitted ~

For example, when specifying the FuguIta boot device in the noasks file, instead of writing

noask_confdev=sd0d

you can specify "DUID.partition" like

noask_confdev=eac6323f6d34c465.d

With normal device name specification, if the connection status of the disk device changes, sd0 will change to sd1, etc., and automatic startup may fail, but with DUID specification, the same disk is always specified regardless of the device connection status. can do.

Automatically save data on exit

In the previous section Make it possible to omit the setting input at startup, automation at FuguIta startup was explained, but it is also possible to automatically save data at the end.

OpenBSD runs a script called /etc/rc.shutdown when the system shuts down.
FuguIta describes the process of saving data in /etc/rc.shutdown.

force_umount=No  # set Yes for forced umount /ram at shutdown
force_resync=No  # set Yes to re-sync at shutdown
~ omitted ~

By changing the setting value of force_resync on the second line of the file from "No" to "Yes", data will be saved at the end.

[Memo]
In this process, if the save process fails repeatedly, a shell will be launched. Use this shell to remove the cause of the failure and manually run usbfadm -r.
When you exit the shell, the save process is re-executed.

[Caution]
! ! If important processing is performed during operation, it is recommended to manually save thedata separately before shutting down.

Encrypt data storage

As explained in Save settings and files in the Basics section, FuguIta's USB memory has a partition for saving data.

By using the function to encrypt the storage area, the information stored in the USB memory can be protected from accidents such as theft or loss.

[Creating a LiveUSB with the usbfadm command >#liveusb_remaster]] When using the newdrive function of the usbfadm command, You can create an encrypted partition by specifying as follows.

fugu-demo# usbfadm

Welcome to usbfadm.
USB flash drive administration tool for FuguIta

  Version/Arch: 6.7/amd64  (FuguIta-6.7-amd64-202006142)
     Boot mode: manual
Data stored in: not set
 Data Saved as: not set

Type ? for help.

? : ? ->newdrive
~ omitted ~ 
Enter sizes for swap, user data and extra FAT.
  You can add suffix K, M, G or T (otherwise considered 'bytes').
  '*' implies 'all'
  '0' doesn't make this partition.

589MB (604128KB) (1208256sectors) free
swap->64m


525MB (538592KB) (1077184sectors) free
userrdata->*

user data encryption? [y/N] -> y       ← Specify data storage encryption

Enter passphrase twice. They'll be not echoed.

//// CAUTION ////////////////////////////
////   If you lost this passphrase,
////   you'll never access sd0d.
/////////////////////////////////////////

Passphrase:           ← Your input will not be displayed
Passphrase:           ← again for confirmation
~ omitted ~ 

To store data in an encrypted partition, there are two steps as below.

  1. Specify the encrypted partition with the target function of usbfadm and enter the passphrase.

  2. If the passphrase is entered correctly, a new disk will appear, so call the target function again and specify this disk.
  1. Specify boot mode 3, specify an encrypted partition, and enter a passphrase.

  2. If the passphrase input is correct, a new disk will appear, so call mode 3 again and specify that disk.
    ============================================
    =     ______               __   _
    =    / ____/              |  |_| |__
    =   / /____  ______  __  _|  /_   _/_____
    =  / ___/ / / / __ \/ / / |  | | | /  _  |
    = / /  / /_/ / /_/ / /_/ /|  | | |_| (_) |__
    =/_/   \____/\__  /\____/ |__| \___/____/__/
    =            __/ /
    =           /___/
    =
    =  Welcome to FuguIta  -  OpenBSD Live System
    =                         http://fuguita.org/
    =============================================
    
    scanning partitions: sd0a sd0b sd0d cd0a
    FuguIta's operating device(s): sd0a cd0a.
    Which is FuguIta's operating device? -> sd0a
    activating swap partition: /dev/sd0b
      user memory: 239 MB
    Enter mfs size in MB. (0MB is auto)
    [default: 0MB] ->
    mfs size will be automatically allocated
    Boot modes:
      0: fresh boot - standard mode as a live system
      1: fresh boot - less memory, faster boot (/usr is non-writable, can't pkg_add)
      2: fresh boot - works using only RAM (about 1GB or more of RAM required)
      3: boot with retrieving saved files from storage device
         or enter passphrase for an encrypted volume
      4: boot with retrieving saved files from floppy disk
      5: interactive shell for debugging
    ->3                                    ← select boot mode 3
    scanning partitions: sd0a sd0b sd0d cd0a
    Device(s) found:
          encrypted: sd0d
    Which is FuguIta's storage device? -> sd0d
    Passphrase:
     ↓ If the passphrase is correct, a new disk will appear.
    sd1 at scsibus3 targ 1 lun 0: <OPENBSD, SR CRYPTO, 006>
    sd1: 525MB, 512 bytes/sector, 1076656 sectors
    softraid0: CRYPTO volume attached as sd1
    Passphrase successful: Select boot mode again...
    Boot modes:
      0: fresh boot - standard mode as a live system
      1: fresh boot - less memory, faster boot (/usr is non-writable, can't pkg_add)
      2: fresh boot - works using only RAM (about 1GB or more of RAM required)
      3: boot with retrieving saved files from storage device
         or enter passphrase for an encrypted volume
      4: boot with retrieving saved files from floppy disk
      5: interactive shell for debugging
    ->3                                    ← Specify boot mode 3 again
    scanning partitions: sd0a sd0b sd0d cd0a sd1d
    Device(s) found:
      loadable from: sd1d                  ← You can read from the newly appeared disk.
          encrypted: sd0d
    Which is FuguIta's storage device? [default: sd1d] -> sd1d
    /dev/sd1d : available data;
    
    fugu-demo
    
    config name -> fugu-demo
    Copying files from flash to ram ...
    done
    ~ omitted ~ 
    This disk will be visible after boot completes, so you don't need to enter the passphrase again when saving data.

Enable swap partition

Usually, FuguIta does not use swap and runs only in main memory, but in an environment like normal OpenBSD and FuguIta coexisting, the OpenBSD swap partition is detected. , and also enable it.

Which is FuguIta's operating device? -> wd0a
activating swap partition: /dev/wd0b
activating swap partition: /dev/wd1b

In this example, we found two swap partitions /dev/wd0b and /dev/wd1b and both are enabled.
Swap partitions are enabled upon detection. There is no setting to disable/enable this.

[Memo]
If you don't want to use swap for some reason (e.g. your swap partition might have bad sectors that might cause the process to crash, you don't want to leave a memory image on disk, etc.) In this case, select startup mode 5 "interactive shell for debugging".
After selection, execute the swapctl command with the -d option to disable the swap when the shell starts up.
After exiting the shell, the boot mode will be selected again, so select the original boot mode and resume processing.

Add partition to mount

Usually in Unix OS, the partition to be mounted is specified in a file called /etc/fstab.
So if a user wants to add or change which partitions are mounted, change what is written in fstab.

However, in FuguIta, even if you change the contents of the fstab file and restart, the contents will not be reflected in the mount status of the file system.

During startup initialization, FuguIta probes all disk devices connected to the PC to detect system partitions, etc. It also receives specifications from users as needed.
Finally, the resulting fstab is automatically generated, based on which the filesystem is mounted.
Therefore, even if the user changes and saves fstab, the contents will be overwritten at the next boot.

If you want to add a partition to mount, write it in the file /etc/fuguita/fstab.tail.
As an example, if you want to additionally mount the e partition of the disk named sd2 to the directory named /ram/opt, the procedure is as follows.

[Memo]
The mount point must be created inside mfs (under the /ram directory).
/ram The directories and files directly under the /ram directory are automatically symbolically linked from the root directory at startup. Thus /ram/opt can be accessed as /opt.

Other

Using multiple Fuguita

Until now, most of the explanations have been based on the assumption that either the LiveDVD version or the LiveUSB version of Fuguita is used, but what happens if both the LiveDVD and LiveUSB are installed in the PC and booted? Huh? Or what if you make two LiveUSBs, insert them both and boot?

FuguIta is designed to work well in such cases.

I will explain the case where both LiveDVD and LiveUSB are installed and booted.

First, whether the DVD or USB boot immediately after turning on the power depends on the setting of the PC's BIOS menu as described in Boot settings.

Next is the operational device (the device mounted in the directory /fuguita and used as the OS).

scanning partitions: wd0i wd0j cd0a sd0a sd0d
FuguIta's operating device(s): cd0a sd0a.
Which is FuguIta's operating device? ->

enumerates the available devices like and asks the user which one to use.

[Memo]
In the above example, wd0i and wd0j are assumed to be internal hard disks. If Windows is installed on the internal hard disk and there are two partitions, C drive and D drive, it will be displayed like this.

When reading the saved data, if there are multiple candidates, ask the user which one to use. For example, if you select boot mode 3 with two LiveUSBs inserted, two candidates sd0d and sd1d are displayed as follows;

Boot modes:
  0: fresh boot - standard mode as a live system
  1: fresh boot - less memory, faster boot (/usr is non-writable, can't pkg_add)
  2: fresh boot - works using only RAM (about 1GB or more of RAM required)
  3: boot with retrieving saved files from storage device
     or enter passphrase for an encrypted volume
  4: boot with retrieving saved files from floppy disk
  5: interactive shell for debugging
->3
scanning partitions: wd0i wd0j sd0a sd0d sd1a sd1d
Device(s) found:
  loadable from: sd0d sd1d
Which is FuguIta's storage device?  -> 

When saving data with the usbfadm command, you can specify the destination device using the target command of usbfadm as described in Saving settings and files.

By applying the above, the following operations are possible.

Operation with the SD card version of FuguIta
Create a LiveUSB according to the capacity of the USB memory You can install it.
There are almost no PCs that support booting from an SD card, but if you install both the LiveDVD version and the SD card version of FuguIta and start the PC, the system will start up with LiveDVD and operate. By using an SD card as the device, it is possible to operate with the SD card version of FuguIta.
Start the LiveDVD version of FuguIta in mode 3
Data cannot be saved/restored with the LiveDVD version of FuguIta alone, but by using it in combination with LiveUSB, etc., you can save the data and finish it while operating on DVD, and next time. You can use it to restore at startup.

[Memo]
The USB memory is mounted only when saving/restoring data, so you can remove it at other times.

This feature of FuguIta that "startup and operation can be performed on separate devices" can be further utilized to OpenBSD and FuguIta coexist and [[Windows or Linux and FuguIta coexist> #coexist_other]] is also possible. These will be introduced in the following sections.

[Memo]
Note that the automation of setting input described in Make it possible to omit setting input at startup is only possible when there is only one noasks file in all partitions. It will be executed. If two or more noasks files are detected, the automatic execution will stop for safety and shift to manual input.

Let OpenBSD and FuguIta coexist

If OpenBSD is already installed on the PC on which you are going to run FuguIta, you can start FuguIta by placing the FuguIta files in the installed OpenBSD even if LiveDVD or LiveUSB is not attached. can.

The principle is to put the FuguIta kernel and ISO image on an existing OpenBSD partition and use the existing bootloader to boot the FuguIta kernel.

Here's how to install and start.
First start your existing OpenBSD and login as root.

Next, create a directory called "ISO" directly under the root directory.

Download the ISO image from the FuguIta site to this /ISO directory and expand it.
fugu-demo# mkdir /ISO
fugu-demo# cd /ISO
fugu-demo# ftp http://mirror.ginzado.ne.jp/pub/FuguIta/FuguIta-6.0-amd64-201612251.iso.gz
Trying 110.92.1.251...
Requesting http://mirror.ginzado.ne.jp/pub/FuguIta/FuguIta-6.0-amd64-201612251.iso.gz
100% |**************************************************|   322 MB    07:48

338634465 bytes received in 468.48 seconds (705.90 KB/s)
fugu-demo# ls -l
total 661632
-rw-r--r--  1 root  wheel  338634465 Dec 29 00:55 FuguIta-6.0-amd64-201612251.iso.gz
fugu-demo# gunzip FuguIta-6.0-amd64-201612251.iso.gz
fugu-demo# ls -l
total 1427648
-rw-r--r--  1 root  wheel  730744832 Dec 29 00:55 FuguIta-6.0-amd64-201612251.iso

Copy the FuguIta kernel included in the ISO image directly under the root directory. vnconfig is a command that allows you to access ISO or USB memory image files as storage devices.

fugu-demo# vnconfig vnd0 FuguIta-6.0-amd64-201612251.iso
fugu-demo# vnconfig -l
vnd0: covering FuguIta-6.0-amd64-201612251.iso on wd0a, inode 25986
vnd1: not in use
vnd2: not in use
vnd3: not in use
fugu-demo# mount -r /dev/vnd0a /mnt
fugu-demo# ls -l /mnt
total 1427119
-r-xr-xr-x  1 root  bin        71452 Apr  4  2015 boot
-rwxr--r--  1 root  wheel       2048 Dec 27 11:59 boot.catalog
-rw-r--r--  1 root  wheel    5569179 Dec 27 19:19 bsd-fi
-rw-r--r--  1 root  wheel    5577796 Dec 27 19:19 bsd-fi.mp
-r-xr-xr-x  1 root  wheel      72328 Dec 27 19:19 cdboot
-r-xr-xr-x  1 root  wheel       2048 Dec 27 19:19 cdbr
drwxr-xr-x  2 root  wheel       2048 Apr 18  2014 etc
-rw-r--r--  1 root  wheel  719388672 Dec 27 19:19 fuguita-5.8.ffsimg
fugu-demo# cp -p /mnt/bsd-fi /mnt/bsd-fi.mp  /
fugu-demo# umount /mnt
fugu-demo# vnconfig -u vnd0
fugu-demo# vnconfig -l
vnd0: not in use
vnd1: not in use
vnd2: not in use
vnd3: not in use
fugu-demo#

The installation is now complete.

[Memo]
If you want to save and restore data, create a directory called livecd-config. However, it cannot be created in the same location as the ISO directory. This is because the partition where the ISO directory is created is mounted as non-writable while FuguIta is running. Therefore, a suitable partition for creating a livecd-config is directly under another partition's mount point, eg /home or /var.

Next is the boot method, the PC boots and the "boot>" prompt is displayed for a few seconds just before the kernel message is displayed.
If you do nothing here, the existing OpenBSD system will boot, but if you enter the kernel you want to boot, that kernel will boot.

boot> bsd-fi.mp

This "bsd-fi.mp" is the FuguIta kernel for multiprocessors. Enter "bsd-fi" if you want to launch the FuguIta kernel for a single processor.

[Memo]
In the above explanation, the ISO directory and livecd-config directory were created directly under the root directory, but if it is directly under the partition where the OpenBSD file system is created, it is not directly under the root directory. also works.

Let FuguIta coexist with Windows or Linux

FuguIta can also use partitions formatted with Windows NTFS or FAT, Linux EXT-2, EXT-4 file systems as operating devices.
This method is almost the same as the procedure explained in OpenBSD and FuguIta coexisting. in short,

However, when using FuguIta from a Windows or Linux file system, there are the following limitations.

Change /ram file system to TMPFS

On FuguIta, MFS is created as a file system on memory and mounted on /ram, but this MFS can be changed to TMPFS.

Both MFS and TMPFS hold files in memory, but there are differences as follows.

MFSTMPFS
file holdinguser processkernel space
Memory usageOnce acquired, it is not released even if the file is deleted
(It is reused in subsequent file creation)
Memory is dynamically acquired and released by creating and deleting files
Capacity upper limitThere is a maximum value for each architecture
(i386:1GB, arm64:15GB, amd64:30GB)
Depends on amount of memory + swap
WorksStableMay be unstable (see below)

FuguIta adopts MFS because it emphasizes the stability of operation, but by specifying it when remastering, it is possible to create a media of FuguIta that uses TMPFS. To create a LiveDVD, use a tool called remaster_dvd.sh, where you can specify the file system to use with the -m option.

fugu-demo# cp -pR /sysmedia .
fugu-demo# cd sysmedia
fugu-demo# remaster_dvd.sh -h
/usr/fuguita/sbin/remaster_dvd.sh: -h: unknown option
Usage: remaster_dvd.sh [-m mfs|tmpfs]
fugu-demo# remaster_dvd.sh -m tmpfs
Changing file system of /ram: from mfs to tmpfs
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: 1028
Total directory bytes: 2048
Path table size(bytes): 22
512760 extents written (1001 Mb)
fugu-demo# cd ..
fugu-demo# ls -l
total 2053057
-rw-r--r--  1 root  wheel  1050132480 Mar 14 03:57 FuguIta-7.2-amd64-202303133.iso
drwxr-xr-x  3 root  wheel	  512 Oct 22 17:09 sysmedia
fugu-demo#

When remastering LiveUSB, specify the newdrive subcommand of usbfadm as follows.

fugu-demo$ doas usbfadm
doas (yoshi@fugu-demo.localnet) password:

Welcome to usbfadm.
USB flash drive administration tool for FuguIta

 Version/Arch: 7.2/amd64  (FuguIta-7.2-amd64-202302081)
    Boot mode: usbflash
Target device: /dev/sd1d
Data saved as: fugu-demo

readline capability available
TAB to complete the reserved words

Type ? for help.

sd1d : fugu-demo ->newdrive
~ abbreviated ~
Type of /ram:
1: [MFS]
2:  TMPFS
->2
~ abbreviated ~

In FuguIta media with TMPFS enabled, the file system capacity settings at startup are as follows.

Enter tmpfs size (0 is auto).
  You can add suffix K, M, or G.
  % is a percentage of memory size.
  and %% is a percentage of the total memory and swap.
  otherwise considered "megabytes"

[default: 0M] -> 

In this way, the default setting value is "0", and if this is specified, the capacitance value is automatically set.

[Memo]
Switching between MFS and TMPFS does not affect system operation. You can also save data by usbfadm sync on MFS, then start up in mode 3 on the system switched to TMPFS and read the data. The reverse (TMPFS → MFS) is also possible.

[Memo]
Note that TMPFS is not completely stable as documented in man page. TMPFS can cause a kernel panic under frequent page-out/page-in situations.



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