OpenBSDライブシステム「河豚板」の日本語デスクトップ環境を構築する

## 概要

「河豚板」を開発しております川俣と申します。

河豚板は、OpenBSDをベースにしたライブシステムで、イメージファイルをDVDやUSBメモリに書き込むことで、OpenBSDを手軽に利用できます。

河豚板にはデスクトップ環境の導入を支援するツールが付属しており、これを用いることで、日本語デスクトップ環境を容易に構築することができます。

本記事では、河豚板上で「普段使いできる」日本語デスクトップ環境を構築する方法やTipsについて説明していきます。

----
**更新履歴**
2021年1月1日 - パーティションの拡張機能追加に伴い、別途作成していた作業用メディアは不要となった。説明の該当部分を変更。
2023年8月8日 - 河豚板7.3用に改版。リンク切れを修正。

## 情報源

河豚板のオフィシャルサイトは https://fuguita.org/ です。

オフィシャルサイトの[日本語のトップページ](https://fuguita.org/?%E6%B2%B3%E8%B1%9A%E6%9D%BF)には、河豚板の特徴やリリース情報、関連情報へのリンクなどが掲載されています。

[河豚板ガイド](https://fuguita.org/?%E6%B2%B3%E8%B1%9A%E6%9D%BF%E3%82%AC%E3%82%A4%E3%83%89)は河豚板に関する包括的な情報源です。ダウンロード／メディアの作成から、河豚板のビルド方法に至るまで、様々な情報を掲載しています。

河豚板の[概要や活用事例を紹介した動画](https://www.youtube.com/watch?v=4wPSr1WPH3U)もあります。

以降の作業も、河豚板ガイドの記述を参照しながら説明していきます。

河豚板は、素のOpenBSDになるべく近くなるように作成されていますので、OSの基本的な操作方法になどについては[オンライン・マニュアル](https://man.openbsd.org/)、及び[OpenBSDのオフィシャルページ](https://www.openbsd.org/) などをご参照下さい。

## 本記事で想定する環境

本記事で想定しているPC環境は以下の通りです。

### PC
- インテル又はAMDの64ビットCPU (amd64アーキテクチャ)
- メモリ8GB以上
- インターネット接続可能な有線LAN、又はWi-Fi

:::note info
Wi-Fiデバイスにはファームウェアをインストールしないと動作しないものがありますので、できれば、構築作業は有線LANを用いることをお勧めします。
:::

### ストレージメディア
- 容量8GB以上のUSBメモリ

:::note info
OSを起動できるデバイスなら、USBメモリ以外のメディア、SDカードや外付HDD/SSDなども使用できます
:::

## 構築手順

構築作業は概ね、以下のような手順となります。

1. イメージファイルのダウンロード
1. LiveUSBメディアの作成
1. LiveUSBを起動して、初期設定実施
1. デスクトップ環境を導入
1. 動作確認後、USBメモリへ環境を保存
1. 各種アプリケーションを追加インストール
1. 追加アプリもUSBメモリへ保存

### イメージファイルのダウンロード
(参照: [河豚板ガイド:ダウンロード](https://fuguita.org/?%E6%B2%B3%E8%B1%9A%E6%9D%BF%E3%82%AC%E3%82%A4%E3%83%89/1-%E6%BA%96%E5%82%99%E7%B7%A8#e67236e9))

まず最初に、本番用メディアの作成作業で使用する河豚板のファイルをミラーサイトからダウンロードします。

ダウンロードページ:
https://fuguita.org/index.php?FuguIta%2FDownload

amd64用には、以下のファイルが用意されています。

FuguIta-7.3-amd64-202307271.iso.gz  ...  DVDへの書き込み用
FuguIta-7.3-amd64-202307271.img.gz  ...  USBメモリへの書き込み用

今回は、LiveUSBを作成しますので、FuguIta-7.3-amd64-202307271.img.gz をダウンロードします。

「202307271」の部分はリリース日付です。今後のリリースにともない、この部分は変ってきますので、適宜、現行リリースに読みかえて下さい。

:::note warn
Linuxのディストリビューションなどでは、ISOイメージファイルをDVDとUSBメモリのどちらに書き込めるものが多いですが、河豚板では、\*.iso.gz がLiveDVD用、\*.img.gz がLiveUSB用と別になっています。ご注意下さい。
:::

### LiveUSBメディアの作成

ダウンロードしたファイルはgzip形式で圧縮されていますので、ファイル展開後、メディアへの書込みを行います。
メディアへの書き込み方法は、お使いのOSでの方法に従って下さい。

OpenBSD上でダウンロードした河豚板ファイルをメディアへ書き込む場合は、[河豚板ガイド:LiveUSBの作成](https://fuguita.org/?%E6%B2%B3%E8%B1%9A%E6%9D%BF%E3%82%AC%E3%82%A4%E3%83%89/1-%E6%BA%96%E5%82%99%E7%B7%A8#a6f9358d)を参照して下さい。

### LiveUSBを起動して、初期設定実施
(参照: [河豚板ガイド:起動時の設定](https://fuguita.org/?%E6%B2%B3%E8%B1%9A%E6%9D%BF%E3%82%AC%E3%82%A4%E3%83%89/1-%E6%BA%96%E5%82%99%E7%B7%A8#w2cd2dbe))

今、作成したLiveUSBを起動します。

起動中、色々な初期設定値を訊かれますので、随時入力していきます。

    Using drive 0, partition 3.
    Loading......
    probing: pc0 com0 mem[638K 3838M 4352M a20=on]
    disk: hd0+
    >> OpenBSD/amd64 BOOT 3.53
    /
    >> bsd-fi.mp is for
    >> multiprocessor kernel (default).
    >> Enter 'bsd-fi' for Uniprocessor.

    boot>
    cannot open hd0a:/etc/random.seed: No such file or directory
    booting hd0a:/bsd-fi.mp: 14898456+3384328+2301984+0+1171456\[1084582+128+1170480
    +880608]=0x17bfd38
        :
    ==================================================
    =       ______               __   _
    =      / ____/              |  |_| |__
    =     / /____  ______  __  _|  /_   _/_____
    =    / ___/ / / / __ \/ / / |  | | | /  _  |
    =   / /  / /_/ / /_/ / /_/ /|  | | |_| (_) |__
    =  /_/   \____/\__  /\____/ |__| \___/____/__/
    =              __/ /
    =             /___/
    =
    =  Welcome to FuguIta  -  OpenBSD-based Live System
    =                              https://fuguita.org/
    ===================================================

    scanning partitions: sd0i sd0j sd1a sd1b sd1d sd1i
    FuguIta's operating device(s): sd1a.

    Which is FuguIta's operating device? [default: sd1a] ->  <==河豚板のシステムが
                                                                入っているデバイス
    activating swap partition: /dev/sd1b                        ... ENTERのみ入力
    available memory: 8175 MB
    
    Enter mfs size.
      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: 6131M] ->         <==メモリ上のファイルシステム(MFS)の容量
    set mfs size to 6131MB         ... ENTERのみ入力(自動)
    
    tmpfs 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 maitenance
    -> 0  <==起動モード０を指定
    Running manual setup.
    Copying system files to /ram ... done
    Extracting symlinks from /ram to /fuguita ... done

    Enter keyboard type.

    pc-xt/pc-at keyboard:
    us de de.nodead fr fr.dvorak dk dk.nodead it uk jp sv sv.nodead no
    no.nodead us.declk us.dvorak us.colemak us.swapctrlcaps us.iopener
    uk.swapctrlcaps jp.swapctrlcaps fr.swapctrlcaps fr.swapctrlcaps.dvorak
    be.swapctrlcaps us.swapctrlcaps.dvorak us.swapctrlcaps.colemak
    us.swapctrlcaps.iopener es be ru ua sg sg.nodead sf sf.nodead pt lt la
    br tr tr.nodead pl hu si cf cf.nodead lv nl nl.nodead is is.nodead ee
    ee.nodead
    keyboard type -> jp  <==使用しているキーボードの種類を入力
    kbd: keyboard mapping set to jp

    Changing password for root.
    New password:         <==rootのパスワードを入力 (実際のrootパスワードです。それなりに)
    Retype new password:  <==再入力                  複雑なものを選んで下さい。
    passwd: password updated successfully            ８文字程度以上、英・数・記号文字含む)

    Hostname with domain part (FQDN):
    only host name without domain part is also OK.
    -> fugu-demo.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] ->  <==使用するIPプロトコルバージョン。デフォルト(ENTERのみ)では、
                IPv6、IPv4の両方を使用し、DNSの検索はIPv6優先となります。

    Network Interfaces: Choose one

      NIC    type      Name
    -------- ----- ------------
        bge0 ether Broadcom BCM57765
      urtwn0 wifi  GW-USValue-EZ GW-USValue-EZ
    [bge0] ->  <==設定を行うネットワークインターフェースを指定
                  デフォルトは、一番先頭に表示されたものになります。

    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] ->  <==IPv6アドレスの設定
                  通常は「auto」(自動設定)で問題ありません。
                  ENTERを入力します。

    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] ->  <==IPv4アドレスの設定
                  DHCPによる自動設定を行う場合は「auto」とします。
                  その場合、ENTERのみを入力します。

    writing configured values:
      /etc/netconfs/default/myname
      /etc/netconfs/default/hostname.bge0
      /etc/netconfs/default/resolv.conf

    Do you login with C)onsole or X) Window System?
    [default: C] -> X  <==ログイン方法の設定
                          X Windowで動作するアプリをインストールして
                          デスクトップ環境を作って行くので、
                          「X」を入力します。
                _________________________________________________
               /      Setup for FuguIta ends.         /
              / OpenBSD's boot sequence will follow. /
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Automatic boot in progress: starting file system checks.
        :

固定IPアドレスを設定する場合は、英語での説明にあるように
```IPアドレス[/ネットマスク] デフォルトゲートウェイ```
の形式で入力して下さい。詳細については[河豚板ガイド:ネットワーク関連の設定](https://fuguita.org/?%E6%B2%B3%E8%B1%9A%E6%9D%BF%E3%82%AC%E3%82%A4%E3%83%89/1-%E6%BA%96%E5%82%99%E7%B7%A8#gdfb07c0)を参照願います。

OSの起動が完了すると、X Windowのログイン画面が表示されます。
![xenodm-login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129477/d6a42312-80f4-3e11-e9ad-d7db727a3e8e.png)
起動時に設定したrootのパスワードを使ってログインすると、以下のような画面になります。
![ss-fvwm.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129477/0d21ee65-9aa3-8c14-f4c4-f6a32de5d207.png)
左上のウィンドウはxtermと呼ばれるターミナルソフトです。以降の作業は、このxterm上で行っていきます。

:::note info
xtermはControl+マウスボタンで設定メニューが表示されます。例えば、Control+右ボタンで表示フォントを変更することができます。
:::

今、起動した河豚板LiveUSBは、USBメモリの容量のうち、2GBしか使用しません。そのうち、データの保存領域は約1GBほどです。

今回構築するデスクトップ環境を利用するには、概ね4GB程度の保存領域が必要となります。

そのため、まず、USBメモリ管理ユティリティ「usbfadm」を起動し、データ保存用パーティションの拡張を行います。

    fugu-demo# usbfadm
    
    Welcome to usbfadm.
    USB flash drive administration tool for FuguIta
    
     Version/Arch: 7.3/amd64     (FuguIta-7.3-amd64-202307271)
        Boot mode: manual
    Target device: not set
    Data saved as: not set
    
    readline capability available
    TAB to complete the reserved words
    
    Type ? for help.
    
    ? : ? ->target  <==拡張するパーティションを指定
    
    Searching storage device
    Please make sure the device inserted.
    Then press ENTER ->
    sd0i sd0j sd1a +sd1d  <==検出されたパーテションの一覧。先頭に +記号が
    target device ->sd1d     付いているのがデータ保存用パーティション
    
    sd1d : ? ->info  <==指定したパーティションの容量を見てみる
    
    Filesystem     Size    Used   Avail Capacity iused   ifree  %iused  Mounted on
    /dev/sd1d      1.1G    2.5K    1.1G 0%       5 1287065     0%   /mnt
    
    scanning...
    
    512B        7.3/amd64/noasks
    
    sd1d : ? ->expand  <==expand機能を呼出し
    
    Select the expansion method for sd1d:
      1:  growfs - expands the partition while retaining its contents
      2:  newfs - expand and format the partition
      3: [exit without expansion]
    ->2  <=="newfs"を使ってパーティションを拡張
    
    This makes sd1d as large as possible.
    Note that all contents in sd1d will be removed
    Do you proceed? [y/N] -> y
    
    /dev/rsd1d: 3136.5MB in 6423488 sectors of 512 bytes
    257 cylinder groups of 12.24MB, 3134 blocks, 6272 inodes each
    super-block backups (for fsck -b #) at:
     144, 25216, 50288, 75360, 100432, 125504, 150576, 175648, 200720, 225792,
        :
     6368432, 6393504, 6418576,
    ** /dev/rsd1d
    ** File system is already clean
    ** Last Mounted on
    ** Phase 1 - Check Blocks and Sizes
    ** Phase 2 - Check Pathnames
    ** Phase 3 - Check Connectivity
    ** Phase 4 - Check Reference Counts
    ** Phase 5 - Check Cyl groups
    1 files, 1 used, 5611214 free (14 frags, 701400 blocks, 0.0% fragmentation)
    
    sd1d : ? ->info  <==拡張後の容量を確認
    
    Filesystem     Size    Used   Avail Capacity iused   ifree  %iused  Mounted on
    /dev/sd1d     22.7G    2.5K   22.7G 0%       5 1611897     0%   /mnt  <==容量22.7GBに拡張されている
    
    scanning...
    
    512B        7.0/amd64/noasks
    
    sd1d : ? ->quit
    
    Bye bye...
    fugu-demo#

### 日本語デスクトップ環境の導入
(参照: [河豚板ガイド:日本語デスクトップ環境を導入する](https://fuguita.org/?%E6%B2%B3%E8%B1%9A%E6%9D%BF%E3%82%AC%E3%82%A4%E3%83%89/3-%E9%81%8B%E7%94%A8%E7%B7%A8#dtjsetup))

次に、デスクトップ設定ユティリティ「dtjsetup」を起動し、日本語デスクトップ環境に必要なパッケージのインストールと設定を行います。

    fugu-demo# dtjsetup
    #==========================================
    # Welcome to dtjsetup
    #     Desktop (and Japanese) setup utility
    #
    # for FuguIta-7.3-amd64-202307271
    #==========================================

    Which desktop software will you install?
      1:  no desktop (wm only)
      2: [rox-filer]
      3:  xfce
      4:  mate
      5:  lumina
      6:  lxqt
    ->3  <==デスクトップ環境として「Xfce」を選択してみる

    Will you install extra packages of xfce? [y/N] -> y  <==Xfceの付加パッケージも
                                                            インストール
    Will you setup Japanese language environment? [y/N] -> y  <==日本語環境を
                                                                 インストールする
    Which input method will you install?
      1: [fcitx-anthy]
      2:  uim-gtk
      3:  ibus-skk
      4:  scim-anthy
    ->1  <==日本語入力に「fcitx-anthy」を使う

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

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

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

    *** Installing packages: xfce-extras ja-kterm ja-fonts-funet ja-fonts-gnu
    ja-sazanami-ttf mixfont-mplus-ipa mplus-fonts fcitx-anthy fcitx-gtk3
    Will you continue? [y/N] -> y  <==インストールを実施する
    quirks-4.53 signed on 2021-12-09T09:16:36Z
    quirks-4.53:(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  <==kterm(漢字ターミナル)の種類を選択
        :
    fcitx-gtk3-4.2.9.8p1:(ok)
        :
    You may wish to update your font path for /usr/local/share/fonts/mplus-fonts

    *** Rewrite .xsession configuration file.
    Will you continue? [y/N] -> y  <==X Windowの初期化ファイル .xsession を生成

    Copy this .xsession file to /etc/skel ? [y/N] -> y  <==.xsession を /etc/skelに
                     コピーする。「y」を指定すると、以後、新規にユーザアカウントを
                     作成した際、この .xsessionファイルが使用されます
    *** 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 can set the hardware clock to JST instead of UTC.
    Set hardware clock to JST? [y/N] -> n  <==カーネルの時刻を日本標準時に
                                              設定するか？
                                             (Windowsがインストールされている
                                              PCでは「y」を指定します)
    *** all installation and configuration completed.
    *** Check if your /root/.xsession is OK, then re-login to X.

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

:::note info
X Windowは10分間キーボードやマウスに触らないと画面が真っ暗になりますが、これはスクリーンセーバーです。
何かキーやマウスに触ると表示が復活します。
:::

次に、OpenBSDのadduserコマンドを用いて一般ユーザを登録します。
初回のadduserの実行時のみ、設定ファイルの初期値を色々訊かれますが、すべてENTERでOKです。

    fugu-demo# adduser
    Couldn't find /etc/adduser.conf: creating a new adduser configuration file
    Reading /etc/shells
    Enter your default shell: bash csh git-shell ksh nologin sh
    [ksh]:  <==ENTERを入力
    Your default shell is: ksh -> /bin/ksh
    Default login class: authpf bgpd daemon default pbuild staff unbound xenodm
    [default]:  <==ENTERを入力
    Enter your default HOME partition: [/home]:  <==ENTERを入力
    Copy dotfiles from: /etc/skel no [/etc/skel]:  <==ENTERを入力
    Send welcome message?: /path/file default no [no]:  <==ENTERを入力
    Do not send message(s)
    Prompt for passwords by default (y/n) [y]:  <==ENTERを入力
    Default encryption method for passwords: auto blowfish [auto]:  <==ENTERを入力
    Use option ``-silent'' if you don't want to see all warnings and questions.

    Reading /etc/shells
    Check /etc/master.passwd
    Check /etc/group

    Ok, let's go.
    Don't worry about mistakes. There will be a chance later to correct any input.
    Enter username []: kaw  <==ユーザ名を入力
    Enter full name []: Yoshihiro Kawamata  <==ユーザの名前を入力
    Enter shell bash csh git-shell ksh nologin sh [ksh]:  <==ENTERを入力
    Uid [1000]:  <==ENTERを入力
    Login group kaw [kaw]:  <==ENTERを入力
    Login group is ``kaw''. Invite kaw into other groups: guest no
    [no]: wheel  <==「wheel」を入力。一時的に管理者権限を取得できます。
    Login class authpf bgpd daemon default pbuild staff unbound xenodm
    [default]:  <==ENTERを入力
    Enter password []:        <==パスワードを入力
    Enter password again []:  <==パスワードを再入力

    Name:        kaw
    Password:    ****
    Fullname:    Yoshihiro Kawamata
    Uid:         1000
    Gid:         1000 (kaw)
    Groups:      kaw wheel
    Login Class: default
    HOME:        /home/kaw
    Shell:       /bin/ksh
    OK? (y/n) [y]: y
    Added user ``kaw''
    Copy files from /etc/skel to /home/kaw
    Add another user? (y/n) [y]: n
    Goodbye!
    fugu-demo# 

設定ファイル/etc/doas.confを作成します。
これにより、wheelグループに所属しているユーザがdoasというコマンドで一時的にrootになり、システム管理作業を行えるようになります。

    fugu-demo# echo permit persist :wheel > /etc/doas.conf

ここまでの作業で日本語デスクトップ環境が構築されました。

### デスクトップ環境をUSBメモリへ保存
(参照: [河豚板ガイド:USBメモリにファイルを保存する](https://fuguita.org/?%E6%B2%B3%E8%B1%9A%E6%9D%BF%E3%82%AC%E3%82%A4%E3%83%89/2-%E5%85%A5%E9%96%80%E7%B7%A8#usbfadm_sync))

河豚板はライブシステムなので、今、作成した環境はメモリ上のTMPFSファイルシステムに保持されています。そのため、このままシステムを終了すると、せっかく作成した環境はすべて消えてしまいます。

次回起動後もデスクトップ環境を利用できるようにするため、USBメモリに環境を保存します。

環境保存用パーティションの拡張時に usbfadm というユティリティを利用しましたが、環境の保存にも、このusbfadmを使用します。

    fugu-demo# usbfadm

    Welcome to usbfadm.
    USB flash drive administration tool for FuguIta

      Version/Arch: 7.3/amd64  (FuguIta-7.3-amd64-2023-7271)
         Boot mode: manual
    Data stored in: not set
     Data Saved as: not set

    Type ? for help.

    ?: ? ->target  <==保存先のパーティションを指定

    Searching storage device
    Please make sure the device inserted.
    Then press ENTER ->   <==デバイスの装着を確認してENTERを入力
    sd0i sd0j sd1a +sd1d  <==デバイス／パーティションの一覧
                            (先頭に + がついているものが保存可能なパーティション)
    target device->sd1d   <==パーティションを入力

    sd1d: ? ->saveas      <==保存名を指定
    Name of saved data->fugu-demo  <==保存名を入力

    Your data will be saved as ``fugu-demo''.

    sd1d:fugu-demo ->sync  <==保存を実行

    Sync current tmpfs as ``fugu-demo'' , OK? [y/N] -> y

    copying /ram to /mnt/livecd-config/7.0/amd64/fugu-demo (2396512KB approx.):
        :
    2.64GiB 0:24:04 [1.87MiB/s][=================================]115% ETA 0:00:00
    waiting for pax to finish ... syncing ... done.

    sd1d:fugu-demo ->quit  <==usbfadmを終了

    Bye bye...
    fugu-demo#

:::note info
USBへのファイル書き込み速度はあまり早くないので、保存完了までは数十分ほど時間がかかります。気長に待ちましょう。
:::

保存が完了したら、背景部分で左ボタンをクリックし、「exit」を選択、確認ダイアログが表示されたら再度「Exit」を選択してログアウトします。
![ss-fvwm-exit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129477/30b1edb7-5375-83a6-5fd0-d5c110bcfd48.png)

ログアウト後、再度rootでログインし、インストールしたデスクトップ環境が正常に立ち上がることを確認します。
![ss-xfce4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129477/05451c8a-2f06-5c4c-93db-ddee9f55c13a.png)

登録した一般ユーザでもログインし、同様にデスクトップ環境の動作確認を行います。

### アプリケーションを追加インストール
ここまでの作業で、日本語デスクトップ環境が動作するようになりましたが、アプリケーションソフトはまだあまりインストールされていません。
以降、よく使うアプリケーションの例として、以下のソフトをインストールしてみます。

* ウェブブラウザ: Mozilla Firefox
* メーラ: Mozilla Thunderbird
* オフィスソフト: LibreOffice
* メディアプレーヤ: VLC
* 音楽再生: Audacious

アプリケーションソフトをインストールするには、OpenBSDのpkg_addコマンドを使用します。

    fugu-demo# pkg_add firefox thunderbird libreoffice-i18n-ja vlc audacious
    quirks-4.53 signed on 2021-12-09T09:16:36Z
    firefox-95.0:(ok)
    thunderbird-91.4.0:(ok)
    libreoffice-7.2.1.2v0:(ok)
    vlc-3.0.14p1:(ok)
    audacious-4.1p0:(ok)
    Running tags:*ok
    New and changed readme(s):
            /usr/local/share/doc/pkg-readmes/thunderbird
    fugu-demo# 

:::note info
OpenBSDでは、Firefoxには日本語のパッケージがfirefox-i18n-jaとして提供されていますが、Firefox本体のみをインストールし、日本語設定はFirefoxのメニューから行う方がスムーズです。
Thunderbirdも同様にthunderbird-i18n-jaは入れず、Thunderbirdのメニューから日本語設定を行います。
:::

### アプリケーションの日本語設定など
#### Firefox
河豚板では、Firefoxのファイル選択ダイアログが文字化けします。この不具合の原因は、OpenBSDと河豚板とのファイル・ディレクトリの構造の違いが原因と考えられます。
この文字化けを解消するには、/etc/firefox/unveil.main というファイルを編集します。

        :
    /var/cache/fontconfig r
    /usr/X11R6/lib r
    /fuguita/usr/X11R6/lib r  <==この行を追加します
    /usr/X11R6/share r
    /var/run r
        :

次にユーザインターフェースを日本語表示にします。

:::note info
以下の作業はユーザ毎に設定が必要ですので、一般ユーザ権限で行います。
:::

1. 右上の「≡」アイコン
   → Settings
   → Language
   → 「English (US)」 を「日本語」に変更
![firefox.ja.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129477/de0bbc1f-6914-50be-b6e4-a7a8a203d3d6.png)


#### Thunderbird
Thunderbirdの言語設定も、Firefoxの場合と同様です。
この作業もユーザ毎に設定が必要ですので、一般ユーザ権限で行って下さい。

1. Homeタブをクリック
   → 右上の「≡」アイコン
   → Preferences → Language
   → 「English (US)」 を「日本語」に変更
![thunderbird.ja.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129477/541a6dcc-a25f-8d71-5d09-a192d0b7ecf4.png)

以上でユーザインターフェースが日本語になります。

#### LibreOffice
OpenBSDのソフトウェアパッケージでは、LibreOfficeの日本語用パッケージ(libreoffice-i18n-ja)が提供されていますので、それを使用することで日本語化が可能です。

#### その他のアプリケーション
メディアプレーヤのVLCや音楽プレーヤのAudaciousは、設定作業は特に必要ありません。最初から日本語に対応しています。

今回、インストールしたfcitx-anthyは、Control+Spaceで日本語入力がOn/Offします。
その他の日本語入力ソフトをインストールした場合は、それぞれのドキュメントを参照して下さい。

今回、例として挙げた以外にも多数のパッケージが提供されています。
パッケージシステムの利用方法については、[河豚板ガイド:アプリケーションソフトを追加する](https://fuguita.org/?%E6%B2%B3%E8%B1%9A%E6%9D%BF%E3%82%AC%E3%82%A4%E3%83%89/3-%E9%81%8B%E7%94%A8%E7%B7%A8#pkg_add)を参照して下さい。

### インストールしたアプリをUSBメモリへ追加保存
(参照: [河豚板ガイド:USBメモリにファイルを保存する](https://fuguita.org/?%E6%B2%B3%E8%B1%9A%E6%9D%BF%E3%82%AC%E3%82%A4%E3%83%89/2-%E5%85%A5%E9%96%80%E7%B7%A8#usbfadm_sync))

「USBメモリへ環境を保存」で示した手順により、メモリファイルシステム(TMPFS)上のデスクトップ環境をUSBメモリに保存しましたが、それ以降は保存を行っていません。

そこで、FirefoxなどのアプリケーションソフトをUSBメモリへ追加保存します。
usbfadmはすでに説明したように対話形式での使用が基本ですが、ファイルの再保存はコマンドラインからも行うことができます。

    fugu-demo# usbfadm -r
    
    ========================================
    = Sync current tmpfs as fugu-demo into /dev/sd1d
    =
    sending incremental file list
    skipping non-regular file "root/.gnupg/S.gpg-agent"
    var/log/secure
                297 100%        0.00kB/s    0:00:00 (xfr#2, to-chk=80/111882)
    skipping non-regular file "var/run/ntpd.sock"
    skipping non-regular file "var/run/smtpd.sock"
    fugu-demo# 

:::note warn
「usbfadm -r」は、すでにファイル保存を一回は行っている必要があります。
いきなり「usbfadm -r」を実行した場合、保存先のデバイスや保存名が未設定のため、エラーとなります。
:::

### システムのシャットダウン
システムのシャットダウンの方法はいくつかあります。

- デスクトップ環境からログアウトし、ログイン画面になったら電源ボタンを２〜３秒間押します。
シャットダウンプロセスがバックグラウンドで走り、電源が断になります。

- root権限で「shutdown -h -p now」を実行します。

- 電源ボタンを長押しし、強制的に電源を切ります。

シャットダウンは上記のいずれの方法で行っても問題ありませんが、usbfadmで保存していないファイルは失われることに注意して下さい。

### 構築した環境を読み込んで再起動
(参照: [河豚板ガイド:保存した設定やファイルを読み込む](https://fuguita.org/?%E6%B2%B3%E8%B1%9A%E6%9D%BF%E3%82%AC%E3%82%A4%E3%83%89/2-%E5%85%A5%E9%96%80%E7%B7%A8#boot_mode3))

usbfadmで保存した環境は、以降の起動時に起動モード３を選択すると読み出すことができます。

        :
    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 maitenance
    -> 3  <==起動モード３を選択
    scanning partitions: sd0i sd0j sd1a sd1b sd1d sd1i
    Device(s) found:
      loadable from: sd1d  <==読込み可能なデバイス
    
    Which is FuguIta's storage device? [default: sd1d] ->   <==ENTERのみ入力で
    /dev/sd1d : available data;                                sd1dを指定
    
    fugu-demo  <==保存名の一覧
    
    config name -> fugu-demo  <==「fugu-demo」を指定して読込み
    Copying files from persistent storage to ram ... 
    done
        :

## 構築後のオペレーション
以上の作業で、河豚板LiveUSB上で動作する日本後デスクトップ環境が構築できました。
この状態で普通のPC用途に使えますが、さらに便利に使うには、以下のような設定を行うこともできます。

- シャットダウン時に自動的にファイル保存を行う
→ [河豚板ガイド: 終了時にデータが自動で保存されるようにする](https://fuguita.org/?%E6%B2%B3%E8%B1%9A%E6%9D%BF%E3%82%AC%E3%82%A4%E3%83%89/3-%E9%81%8B%E7%94%A8%E7%B7%A8#autosave)

- 起動時の入力を自動化する
→ [河豚板ガイド: 起動時の設定入力を自動化する](https://fuguita.org/?%E6%B2%B3%E8%B1%9A%E6%9D%BF%E3%82%AC%E3%82%A4%E3%83%89/3-%E9%81%8B%E7%94%A8%E7%B7%A8#autorun)

- 有線LANをWi-Fiに変更する
→ [河豚板ガイド: 複数のネットワーク設定を切り換えて使用する](https://fuguita.org/?%E6%B2%B3%E8%B1%9A%E6%9D%BF%E3%82%AC%E3%82%A4%E3%83%89/3-%E9%81%8B%E7%94%A8%E7%B7%A8#netconf)
→ [河豚板ガイド: ファームウェアのダウンロードが必要なWi-Fiデバイスを使う](https://fuguita.org/?%E6%B2%B3%E8%B1%9A%E6%9D%BF%E3%82%AC%E3%82%A4%E3%83%89/3-%E9%81%8B%E7%94%A8%E7%B7%A8#fwupdate_wifi)

## おわりに
OpenBSDをベースにしたライブシステム「河豚板」上に日本語デスクトップ環境を構築してみました。

構築手順の内容としては、素のOpenBSDとほぼ同じですが、設定ユティリティ「dtjsetup」を使用することで、対話形式で更に簡単に導入することができます。

OpenBSDは、高度なネットワークやセキュリティの機能に注力している面が強調されがちですが、パーソナルユース、いわゆる「普段使い」の用途にも利用できます。

さらに、河豚板を使うと、構築した環境に「名前を付けて保存」できますので、デスクトップ環境以外にもファイアウォールやサーバなどのネットワーク用途、あるいは特定のアプリ専用マシンなど、用途別に構築した環境を一本のUSBメモリに容量が許す限り保存することができ、以降の起動時にそれらを選択して起動することができます。

河豚板に関するご質問やご提案、あるいは活用事例などございましたら、お気軽に[河豚板の掲示板](https://fuguita.org/index.php?FuguIta%2FBBS)にご投稿下さい。

最後になりましたが、デスクトップ設定ユティリティ「dtjsetup」の開発にあたりましては、以下のページを参考にさせて頂きました。御礼を申し上げます。

-[30分でできる OpenBSD 日本語デスクトップ環境](https://yasuoka.net/~yasuoka/openbsd-desktop.html)
-[OpenBSD 6.2 のインストール](https://qiita.com/kinichiro/items/728d61ce75c93b3e4041)