FreeBSD (13.0) を VirtualBox にインストールする覚書 / 環境構築編

「Oracle VM VirtualBox マネージャー」の画面で、「fb130」が選択された状態で『起動』押す!

● FreeBSD を最新に更新

root でログイン。

freebsd-update fetch を実行する。

(なおこれはインストール後も定期的に行った方が良いもの。後述)

root@fb130:~ # freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 2 mirrors found.
Fetching public key from update1.freebsd.org... done.
Fetching metadata signature for 13.0-RELEASE from update1.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata files... done.
Inspecting system... done.
Preparing to download files... done.

No updates needed to update system to 13.0-RELEASE-p0.

今回、FreeBSD 13.0-RELEASE がリリースされて間もないこともあり、何も更新が無かった。

もし何か更新が表示された場合、次に freebsd-update install を実行する。 再起動も必要かもしれない。

ちなみに、ここで uname -a を実行した所、以下のようであった。

root@fb130:~ # uname -a
FreeBSD fb130.magic.or 13.0-RELEASE FreeBSD 13.0-RELEASE #0 releng/13.0-n244733-ea31abc261f: Fri Apr  9 04:24:09 UTC 2021
     root@releng1.nyi.freebsd.org:/usr/obj/usr/src/amd64.amd64/sys/GENERIC  amd64

● ネットワークインターフェイスの残りを設定

root@fb130:~ # vi /etc/rc.conf

以下を追記。 (上の方に似たような行があるのでそれをコピーすると入力の手間を省ける)

ifconfig_em1=""
ifconfig_em1_ipv6="inet6 accept_rtadv"
ifconfig_em2="inet 192.168.56.130 netmask 255.255.255.0"
ifconfig_em2_ipv6="inet6 accept_rtadv"

ここで IPv6 アドレスについて、後でユニークローカルアドレス (ULA) を割り当てたいが、一旦このようにしておく。

また、em2 に与えた 192.168.56.130 などという固定 IPv4 アドレスについては、em2 には VirtualBox の DHCP サーバがいるのだが、そのアドレス範囲と重複しないように、『ホストネットワークマネージャー』の「DHCP サーバー」の設定を変更してある。 (初期状態では重複していた)

(変更後)

DHCP after

● /tmp を Memory Disk に設定

/tmp に何か存在していたので、以下のようにして全て削除しておいた。

root@fb130:~ # cd /tmp

root@fb130:/tmp # ls -lA
total 16
drwxrwxrwt  2 root  wheel  512 May  2 20:35 .ICE-unix
drwxrwxrwt  2 root  wheel  512 May  2 20:35 .X11-unix
drwxrwxrwt  2 root  wheel  512 May  2 20:35 .XIM-unix
drwxrwxrwt  2 root  wheel  512 May  2 20:35 .font-unix

root@fb130:/tmp # rmdir .*-unix

root@fb130:/tmp # ls -lA
total 0

/etc/rc.conf に追記するために、まずは以下のようにする。

root@fb130:/tmp # egrep ^tmp /etc/defaults/rc.conf >> /etc/rc.conf

(「>>」で追記する。 くれぐれも間違って「>」で上書きしないように注意する。)

次に

root@fb130:/tmp # vi /etc/rc.conf

追記した部分が以下などのようになるように編集。

tmpmfs="YES"		# Set to YES to always create an mfs /tmp, NO to never
tmpsize="1g"		# Size of mfs /tmp if created

(tmpsize (上では 1GB) をどれくらいにするかはメモリーサイズによるだろう。 (ちなみに NetBSD のインストーラではメモリーサイズの 25% がデフォルトのようだ)

ここでシャットダウン・電源 OFF (shutdown -p now) した。

再び起動すると、以下のように IP アドレスが割り当たっていた (vtnet0 は未割り当て)

root@fb130:~ # ifconfig -a
em0: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=481009b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,VLAN_HWFILTER,NOMAP>
	ether 08:00:27:f8:3f:39
	inet6 fe80::a00:27ff:fef8:3f39%em0 prefixlen 64 scopeid 0x1
	inet 10.0.2.15 netmask 0xffffff00 broadcast 10.0.2.255
	media: Ethernet autoselect (1000baseT <full-duplex>)
	status: active
	nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
em1: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=481009b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,VLAN_HWFILTER,NOMAP>
	ether 08:00:27:f7:72:7a
	inet6 fe80::a00:27ff:fef7:727a%em1 prefixlen 64 scopeid 0x2
	media: Ethernet autoselect (1000baseT <full-duplex>)
	status: active
	nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
em2: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=481009b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,VLAN_HWFILTER,NOMAP>
	ether 08:00:27:3e:ac:4a
	inet 192.168.56.130 netmask 0xffffff00 broadcast 192.168.56.255
	inet6 fe80::a00:27ff:fe3e:ac4a%em2 prefixlen 64 scopeid 0x3
	media: Ethernet autoselect (1000baseT <full-duplex>)
	status: active
	nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
vtnet0: flags=8822<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=4c07bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWTSO,LINKSTATE,TXCSUM_IPV6>
	ether 08:00:27:a5:d0:f7
	media: Ethernet autoselect (10Gbase-T <full-duplex>)
	status: active
	nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
	options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
	inet6 ::1 prefixlen 128
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
	inet 127.0.0.1 netmask 0xff000000
	groups: lo
	nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

また /tmp が正しく Memory Disk になっていた。

root@fb130:~ # df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2    4.8G    3.2G    1.3G    71%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ada0p4    2.9G     30M    2.6G     1%    /var
tmpfs          1.0G    4.0K    1.0G     0%    /tmp

root@fb130:~ # ls -al /tmp
total 4
drwxrwxrwt   6 root  wheel   256 May  2 21:06 .
drwxr-xr-x  19 root  wheel  1024 May  2 21:06 ..
drwxrwxrwt   2 root  wheel     0 May  2 21:06 .ICE-unix
drwxrwxrwt   2 root  wheel     0 May  2 21:06 .X11-unix
drwxrwxrwt   2 root  wheel     0 May  2 21:06 .XIM-unix
drwxrwxrwt   2 root  wheel     0 May  2 21:06 .font-unix

● ZFS を設定する

まずは、/usr/ports と、/usr/local を、ZFS 上に置くことにする。 (筆者は ports を使うが使わないなら不要であろう)

root@fb130:~ # df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2    4.8G    3.2G    1.3G    71%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ada0p4    2.9G     30M    2.6G     1%    /var
tmpfs          1.0G    4.0K    1.0G     0%    /tmp

root@fb130:~ # gpart show
=>      40  67108784  ada0  GPT  (32G)
        40      1024     1  freebsd-boot  (512K)
      1064  10485760     2  freebsd-ufs  (5.0G)
  10486824   8388608     3  freebsd-swap  (4.0G)
  18875432   6291456     4  freebsd-ufs  (3.0G)
  25166888  41941936     5  freebsd-zfs  (20G)

上記に見えるように、ZFS 用に用意したパーティションが ada0p5 であることを確認した。 (gpart show で、freebsd-zfs の行が、ada0 の列が 5 になっており、GPT の場合は「p」が間にはさまるようだ。)

zpool create を実行する。 プール名は「zfs」としておいた

root@fb130:~ # zpool create zfs ada0p5

なおここで、以下のようなものが (コンソールに) 表示された。 (後から dmesg コマンドで確認することも出来る)

ZFS filesystem version: 5
ZFS storage pool version: features support (5000)

次に zfs create で、/usr/ports 用と /usr/local 用のファイルシステムを作成する。
mountpoint も同時に設定することにする (以前は mountpoint にする代わりにシンボリックリンクにしていたが ports のビルドが正常にいかないことがあることが分かった)。
また zfs set で compression=lz4 (圧縮) を指定しておく。

root@fb130:~ # zfs create -o mountpoint=/usr/ports zfs/ports

root@fb130:~ # zfs set compression=lz4 zfs/ports

root@fb130:~ # zfs create -o mountpoint=/usr/local zfs/local

root@fb130:~ # zfs set compression=lz4 zfs/local

root@fb130:~ # df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2    4.8G    3.2G    1.3G    71%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ada0p4    2.9G     30M    2.6G     1%    /var
tmpfs          1.0G    4.0K    1.0G     0%    /tmp
zfs             19G     24K     19G     0%    /zfs
zfs/ports       19G     24K     19G     0%    /usr/ports
zfs/local       19G     24K     19G     0%    /usr/local

起動時に ZFS が自動的にマウントされるように、/etc/rc.conf に設定しておく。

root@fb130:~ # egrep zfs_enable /etc/defaults/rc.conf >> /etc/rc.conf

root@fb130:~ # vi /etc/rc.conf

/etc/rc.conf の追加行が以下のようになるように編集する。

zfs_enable="YES"	# Set to YES to automatically mount ZFS file systems

/usr/ports のオーナーも設定しておく。

root@fb130:~ # cd /usr

root@fb130:/usr # ls -ld ports
drwxr-xr-x  2 root  wheel  2 May  2 22:19 ports

root@fb130:/usr # chown nsmrtks ports

root@fb130:/usr # ls -ld ports
drwxr-xr-x  2 nsmrtks  wheel  2 May  2 22:19 ports

ここでシャットダウン・電源 OFF した。

再び起動すると、ZFS が自動的にマウントされていた。

root@fb130:~ # df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2    4.8G    3.2G    1.3G    71%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ada0p4    2.9G     30M    2.6G     1%    /var
tmpfs          1.0G    4.0K    1.0G     0%    /tmp
zfs/ports       19G     24K     19G     0%    /usr/ports
zfs             19G     24K     19G     0%    /zfs
zfs/local       19G     24K     19G     0%    /usr/local

● ports を導入

自分は ports で行くが、普通の人は代わりにバイナリパッケージを pkg コマンドでインストールした方が圧倒的に楽だと思います。 ただしその詳細はここでは触れません。 あしからず。
それでも簡単にいうと、pkg search 〜 でパッケージ名を探し、(sudo) pkg install 〜 でパッケージをインストールする感じ。
なお最初に「pkg」コマンドを実行すると、最初に pkg コマンド自体のインストールを尋ねられるので、y を押してインストールする。
なお以降の手順で pkg install でインストールしている箇所もある。

まず portsnap fetch を実行する。

root@fb130:~ # portsnap fetch
Looking up portsnap.FreeBSD.org mirrors... 4 mirrors found.
Fetching public key from ipv4.aws.portsnap.freebsd.org... done.
Fetching snapshot tag from ipv4.aws.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Fetching snapshot generated at Mon May  3 09:18:26 JST 2021:
〜
Extracting snapshot... done.
Verifying snapshot integrity... done.
Fetching snapshot tag from ipv4.aws.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Updating from Mon May  3 09:18:26 JST 2021 to Mon May  3 15:48:25 JST 2021.
Fetching 5 metadata patches... done.
Applying metadata patches... done.
Fetching 0 metadata files... done.
Fetching 7 patches. 
〜
done.
Applying patches... 
done.
Fetching 0 new ports or files... done.

次に、初回なので portsnap extract を実行する。

root@fb130:~ # su nsmrtks

nsmrtks@fb130:/root % portsnap extract
〜
Building new INDEX files... done.

nsmrtks@fb130:/root % ls /usr/ports/
CHANGES		arabic		emulators	misc		textproc
CONTRIBUTING.md	archivers	finance		multimedia	ukrainian
COPYRIGHT	astro		french		net		vietnamese
GIDs		audio		ftp		net-im		www
INDEX-13	base		games		net-mgmt	x11
Keywords	benchmarks	german		net-p2p		x11-clocks
LEGAL		biology		graphics	news		x11-drivers
MOVED		cad		hebrew		polish		x11-fm
Makefile	chinese		hungarian	ports-mgmt	x11-fonts
Mk		comms		irc		portuguese	x11-servers
README		converters	japanese	print		x11-themes
Templates	databases	java		russian		x11-toolkits
Tools		deskutils	korean		science		x11-wm
UIDs		devel		lang		security
UPDATING	dns		mail		shells
accessibility	editors		math		sysutils

nsmrtks@fb130:/root % exit

ところで、先に zfs set したとおり、ファイルシステムは圧縮されており、

root@fb130:~ # zfs get compression
NAME       PROPERTY     VALUE           SOURCE
zfs        compression  off             default
zfs/local  compression  lz4             local
zfs/ports  compression  lz4             local

以下のように圧縮率が得られた。

root@fb130:~ # zfs get compressratio
NAME       PROPERTY       VALUE  SOURCE
zfs        compressratio  2.65x  -
zfs/local  compressratio  1.00x  -
zfs/ports  compressratio  2.65x  -

● /usr/ports/distfiles のディスクをマウント

これは筆者の環境だけかもしれない。

筆者は、/usr/ports/distfiles (ports でビルドを行う時に取得してきたファイルが置かれる場所) を、VirtualBox の仮想ディスクごと分離している。 (サイズは 16GB)
そして、旧環境から新環境へ移行する際には、(内容を残したまま) マウントを付け替えることにしている。

今回まさに旧環境から新環境へ移行する。

まず旧環境にて、distfiles の仮想ディスクを umount し、/etc/fstab 及び /etc/exports (後述) のエントリもコメントアウトした。

いったん旧環境をシャットダウン・電源 OFF する。 新環境 (fb130) もシャットダウン・電源 OFF する。

VirtualBox にて、旧環境 (fb121) の distfiles の仮想ディスクは、以下に見えている、「コントローラー: SAS」配下にある distfiles.vdi である。

distfiles old

そうしたら、『仮想メディアマネージャー』に見えている distfiles.vdi を選択し..

distfiles

..『解放』を押すと、

kaiho

..ダイアログが出るので「解放」を押すと、distfiles.vdi が、以下のように「未割り当て」になった (『情報』のタブを押して確認できる)。

miwariate

旧環境 (fb121) の設定のストレージからも、SAS 配下にあった distfiles.vdi が、以下のように、いなくなった。

no distfiles

今度は、新環境 (fb130) のストレージの設定にて、以下のようになっているが..

storage

下の方の「◆」に「+」のアイコンを押し、「LsiLogic SAS (SAS)」を選択する。 (SAS にしなくてもよいが深い理由はない)

SAS added

「コントローラー: LsiLogic SAS」が追加された。

さらに、「コントローラー: LsiLogic SAS」の右側の方にある「■」に「+」のようなアイコン (「ハードディスクの追加」) を選択し..

attach virtual disk

「追加」を押したら、distfiles.vdi ファイルを探して「開く」を押し、「選択」すると、

select virtual disk

「コントローラー: LsiLogic SAS」配下に distfiles.vdi が現れた。

virtual disk attached

忘れずに「OK」押す。

さて、新環境 (fb130) を再び起動する。
追加した仮想ハードディスクは以下のように見えている。 (起動時に表示される他 dmesg コマンドでも後から確認できる)

〜
da0 at mpt0 bus 0 scbus2 target 0 lun 0
da0: <VBOX HARDDISK 1.0> Fixed Direct Access SPC-3 SCSI device
da0: 300.000MB/s transfers
da0: Command Queueing enabled
da0: 16384MB (33554432 512 byte sectors)
〜

今回、/home/distfiles というディレクトリにマウントすることとし、/usr/ports/distfiles からシンボリックリンクを張ることとする。
(なぜ /usr/ports/distfiles に直接マウントしないかというと、/home/ の下の distfiles/ を NFS エクスポートしたいという事情がある。)

まず /home は、/usr/home へのシンボリックリンクになっていたので、実ディレクトリに変更した。

root@fb130:~ # ls -ld /home
lrwxr-xr-x  1 root  wheel  8 May  1 18:03 /home -> usr/home

root@fb130:~ # cd /

root@fb130:/ # rm -i home
remove home? y

root@fb130:/ # mv -i usr/home .

root@fb130:/ # ls -ld home
drwxr-xr-x  3 root  wheel  512 May  3 17:50 home

root@fb130:/ # ls -l home
total 4
drwxr-xr-x  2 nsmrtks  nsmrtks  512 May  3 16:40 nsmrtks

root@fb130:/ # df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2    4.8G    3.2G    1.3G    71%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ada0p4    2.9G    203M    2.5G     7%    /var
tmpfs          1.0G    4.0K    1.0G     0%    /tmp
zfs/ports       19G    197M     19G     1%    /usr/ports
zfs/local       19G     24K     19G     0%    /usr/local
zfs             19G     24K     19G     0%    /zfs

ディレクトリの作成と /etc/fstab の編集を行う。

root@fb130:/ # mkdir /home/distfiles

root@fb130:/ # chown nsmrtks /home/distfiles

root@fb130:/ # ls -l /home
total 8
drwxr-xr-x  2 nsmrtks  wheel    512 May  3 17:51 distfiles
drwxr-xr-x  2 nsmrtks  nsmrtks  512 May  3 16:40 nsmrtks

root@fb130:/ # gpart show da0
=>      40  33554352  da0  GPT  (16G)
        40  33554352    1  freebsd-ufs  (16G)

root@fb130:/ # vi /etc/fstab

以下の行を /etc/fstab に追記した。

# 2021-05-03 nsmrtks
/dev/da0p1	/home/distfiles	ufs	rw	2	2

さらに作業を続ける.. (シンボリックリンクの作成を行う)

root@fb130:/ # cd /usr/ports

root@fb130:/usr/ports # ls -ld distfiles
ls: distfiles: No such file or directory

root@fb130:/usr/ports # ln -s /home/distfiles

root@fb130:/usr/ports # ls -ld distfiles
lrwxr-xr-x  1 root  wheel  15 May  3 17:52 distfiles -> /home/distfiles

root@fb130:/usr/ports # mount /home/distfiles

root@fb130:/usr/ports # ls /usr/ports/distfiles/
〜 (既にファイルが存在しているのでたくさん表示される)

root@fb130:/usr/ports # df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2    4.8G    3.2G    1.3G    71%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ada0p4    2.9G    203M    2.5G     7%    /var
tmpfs          1.0G    4.0K    1.0G     0%    /tmp
zfs/ports       19G    197M     19G     1%    /usr/ports
zfs/local       19G     24K     19G     0%    /usr/local
zfs             19G     24K     19G     0%    /zfs
/dev/da0p1      15G     14G    549M    96%    /home/distfiles

● sudo をインストールする

先ほどの手順で ports をインストールしたので、とりあえず普通にビルド・インストールする。

(繰り返しになるが普通の人は代わりにバイナリパッケージを pkg install sudo でインストールすればいいと思います。 以下同様。 なお後述の teetime も参考)
root@fb130:~ # cd /usr/ports/security/sudo

root@fb130:/usr/ports/security/sudo # ls
Makefile	distinfo	files		pkg-descr	pkg-plist

root@fb130:/usr/ports/security/sudo # nice make install |& tee install.log
〜

たまにダイアログが出てきて、オプションを選べるので、もしデフォルトから変えたければ設定する。 (ただし経験上、あまりデフォルトから変えると、ビルドに失敗することもあった。)

結果、無事ビルド・インストール出来たようだ。

次に sudoers ファイル (実体は /usr/local/etc/sudoers にある) を visudo で編集する。

root@fb130:/usr/ports/security/sudo # cd

root@fb130:~ # ls /usr/local/etc/
bash_completion.d		sudo.conf.sample
pam.d				sudo_logsrvd.conf
periodic			sudo_logsrvd.conf.sample
pkg.conf			sudoers
pkg.conf.sample			sudoers.d
sudo.conf			sudoers.dist

root@fb130:~ # ls -ld /usr/local/etc/sudoers*
-r--r-----  1 root  wheel  3634 May  3 18:04 /usr/local/etc/sudoers
drwxr-x---  2 root  wheel     2 May  3 18:04 /usr/local/etc/sudoers.d
-r--r-----  1 root  wheel  3634 May  3 18:04 /usr/local/etc/sudoers.dist

root@fb130:~ # md5 /usr/local/etc/sudoers*
MD5 (/usr/local/etc/sudoers) = 70032ba0e9122e9ee597d768ee2f2df5
md5: /usr/local/etc/sudoers.d: Is a directory
MD5 (/usr/local/etc/sudoers.dist) = 70032ba0e9122e9ee597d768ee2f2df5

root@fb130:~ # visudo

このとき、オリジナルと同一の /usr/local/etc/sudoers.dist というファイルも元から横に置かれているので、わざわざ自分でコピーを取っておかなくても変更点を比較できる。

筆者の環境では以下のように変更を行った。

diff で示すと以下のようである。

root@fb130:~ # diff -u /usr/local/etc/sudoers.dist /usr/local/etc/sudoers
--- /usr/local/etc/sudoers.dist	2021-05-03 18:04:04.211958000 +0900
+++ /usr/local/etc/sudoers	2021-05-03 18:08:35.847671000 +0900
@@ -49,7 +49,9 @@
 ## Run X applications through sudo; HOME is used to find the
 ## .Xauthority file.  Note that other programs use HOME to find   
 ## configuration files and this may lead to privilege escalation!
-# Defaults env_keep += "HOME"
+Defaults env_keep += "HOME"
+# 2021-05-03 nsmrtks
+
 ##
 ## X11 resource path settings
 # Defaults env_keep += "XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH"
@@ -77,6 +79,9 @@
 # Defaults!/usr/local/bin/sudoreplay !log_output
 # Defaults!REBOOT !log_output
 
+# 2021-05-03 nsmrtks
+Defaults env_keep += "http_proxy https_proxy"
+
 ##
 ## Runas alias specification
 ##
@@ -87,7 +92,8 @@
 root ALL=(ALL) ALL
 
 ## Uncomment to allow members of group wheel to execute any command
-# %wheel ALL=(ALL) ALL
+%wheel ALL=(ALL) ALL
+# 2021-05-03 nsmrtks
 
 ## Same thing without a password
 # %wheel ALL=(ALL) NOPASSWD: ALL

これで、wheel グループに所属している一般ユーザ nsmrtks は、sudo が実行できるようになった。

nsmrtks@fb130:~ % sudo pwd

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

Password:パスワード↵
/home/nsmrtks

● /etc/make.conf を設定する

これも、ports でなく pkg を用いるなら不用と思われる。

/etc/make.conf ファイルを新規作成して、以下の内容にした。 (これは旧環境からそのまま持ってきたもの)

# 2017-09-27,2020-12-15 nsmrtks

# see /usr/ports/Mk/bsd.command.mk
SU_CMD?=/usr/local/bin/sudo -E sh -c

# Keep ruby 2.6 as default version
#DEFAULT_VERSIONS+=ruby=2.6

# EoF

この SU_CMD は、ports でビルドするときに、たまに出て来る su を代わりに sudo を用いるように設定している。

● teetime!

ここで、筆者の環境でいつも用いている「teetime」スクリプトを紹介する。
これは、「コマンド |& tee ログ.txt」 (csh 系) あるいは「コマンド 2>&1 | tee ログ.txt」 (sh 系) に毛の生えたようなコマンドで、コマンドを何回かやり直しても、ログのファイル名を、既に存在するファイル名とぶつからないように、日付時刻のファイル名を自動的に付けてくれるものである。
(コマンドにあまり複雑なものを指定するとうまくいかない制限事項がある)

「teetime [-t タグ] コマンド..」のように用いる。

筆者の環境では、いちどホームディレクトリを旧環境からコピーしてしまえば (後述)、~/bin にある teetime コマンドが使えるようになるのだが、この時点で未だホームディレクトリをコピーしてきていない。
筆者は一般ユーザ nsmrtks の作成時、ログインシェルに tcsh を選択したが、デフォルトで配置される ~/.cshrc によれば、/etc/login.conf により、~/bin が自動的に $path に追加されているらしい。 そこで、~/bin ディレクトリを作成し、そこに teetime スクリプトを配置すれば、使えるようになるので、今の所はこれでしのぐことにする。 (もしかすると rehash コマンドの実行が 1回必要かもしれない)

なお、ここまで説明してこなかったが、この時点でホスト (MS-Windows) 側とファイルをやり取りするには、ホスト側に Cygwin をインストールし、Cygwin64 Terminal 側から ssh で 192.168.56.130 (先ほど設定した IPv4 アドレス) に対してアクセスするか、FreeBSD 側から 10.0.2.2 に対し ssh アクセスすれば、ファイルのやり取り等が出来る。
後者は、あらかじめ Cygwin64 Terminal を右クリック『管理者として実行』→ ssh-host-config コマンドの実行が一度必要である。 (コントロールパネル → 『Windows Defender ファイアウォール』に、「新しい規則...」で TCP 22 を許可する設定も必要かもしれない。 筆者は特に他 PC とファイルをやり取りするためにこれも設定した。)

● portupgrade をインストールする

これも ports でなく pkg を用いるなら不用である。

先ほど紹介した teetime スクリプトを用いている。

nsmrtks@fb130:~ % cd /usr/ports/ports-mgmt/portupgrade

nsmrtks@fb130:/usr/ports/ports-mgmt/portupgrade % pwd
/usr/ports/ports-mgmt/portupgrade

nsmrtks@fb130:/usr/ports/ports-mgmt/portupgrade % nice teetime -t install make install
logging (from the next line till the end) to install20210503.log
teetime! Mon May  3 18:41:02 JST 2021
teetime! working directory is /usr/ports/ports-mgmt/portupgrade
teetime> make install
〜
===>   Registering installation for portupgrade-2.4.16,2
Installing portupgrade-2.4.16,2...
===>  Returning to user credentials
teetime! Mon May  3 18:50:16 JST 2021

無事ビルド・インストール出来たようだ。

● virtualbox-ose-additions をインストールする

virtualbox-ose-additions をインストールしていないと、ホストをサスペンド/レジュームするたびに、VirtualBox ゲストの時計が遅れていったり、いろいろ不都合が発生する。

ここからは、先ほどインストールした portupgrade に付属の portinstall コマンドを用いて ports のソフトをインストールしていく。 (繰り返しになるが pkg を用いるなら考慮不要)

また、/var/tmp の下に log というディレクトリと、さらにその下に Install というディレクトリを作成し、その下にログを保存して、後で参考にできるようにすることにする。
これについては、pkg でインストールする場合も役に立つと思う。

MS-Windows や Linux では、Guest Additions CD を挿入して.. などというのがあった気がするが、FreeBSD では ports や pkg からインストールできる。

nsmrtks@fb130:~ % cd /var/tmp

nsmrtks@fb130:/var/tmp % mkdir log

nsmrtks@fb130:/var/tmp % cd log

nsmrtks@fb130:/var/tmp/log % mkdir Install

nsmrtks@fb130:/var/tmp/log % cd Install

nsmrtks@fb130:/var/tmp/log/Install % nice teetime -t virtualbox-ose-additions_ portinstall -s virtualbox-ose-additions
logging (from the next line till the end) to virtualbox-ose-additions_20210503.log
teetime! Mon May  3 19:55:28 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s virtualbox-ose-additions
〜

gmp のオプション 『CPU_OPTS』「Enable assembly optimizations for your CPU」 というのをチェックを付けてみた (スペースキーを押す)。

CPU_OPTS

〜
--->  [Executing a command as root: sudo /usr/local/sbin/pkgdb -aFOQ]
teetime! Mon May  3 22:10:58 JST 2021

無事にビルド・インストールが終わった。

さて、ビルド・インストール中のメッセージが、teetime コマンドにより /var/tmp/log/Install/ 以下のログファイルに残っているので、それを見てみる。 (今回は virtualbox-ose-additions_20210503.log というファイル名であった)
これと、/usr/local/etc/rc.d/ 以下にインストールされた vboxguest と vboxservice とさらに dbus を参考にして..

nsmrtks@fb130:~ % ls /usr/local/etc/rc.d/
dbus		vboxguest	vboxservice

/etc/rc.conf に以下のような行を追加した。

# 2021-05-03 nsmrtks
#
# (see /usr/local/etc/rc.d/dbus)
dbus_enable="YES"		# to enable the D-BUS messaging system
#
# (see /usr/local/etc/rc.d/{vboxguest,vboxservice}
vboxguest_enable="YES"		# Set it to YES to enable vboxguest on startup
vboxservice_enable="YES"	# Set it to "YES" to enable VBoxService.

いったんシャットダウン・電源 OFF した。

そうして起動すると、「vboxguest: loaded successfully」や、VBoxService が起動したようなメッセージが出ていた。

kldstat で見ると vboxguest.ko がロードされていた。

nsmrtks@fb130:~ % kldstat
Id Refs Address                Size Name
 1   15 0xffffffff80200000  1f11ef8 kernel
 2    1 0xffffffff82400000   478910 zfs.ko
 3    1 0xffffffff82318000    35b00 vboxguest.ko
 4    1 0xffffffff8234e000     3218 intpm.ko
 5    1 0xffffffff82352000     2180 smbus.ko

また、VBoxService が起動していた。 (以前、起動していなかったことがあった。)

nsmrtks@fb130:~ % ps ax | egrep -i box
 997  -  Is    0:00.09 /usr/local/sbin/VBoxService
1119  0  S+    0:00.00 egrep -i box

● X11 (xorg) をインストールしてみる

virtualbox-ose-additions をインストールしたことによって、X11 サーバ (xorg-server) もインストールされていた。

nsmrtks@fb130:~ % pkg info | egrep X
〜
xorg-server-1.20.11,1          X.Org X server and related programs
〜

しかし、startx コマンドが入っていない。

nsmrtks@fb130:~ % where startx

そこで、xorg をちゃんとインストールしてみる..

nsmrtks@fb130:~ % cd /var/tmp/log/Install/

nsmrtks@fb130:/var/tmp/log/Install % nice teetime -t xorg portinstall -s xorg
logging (from the next line till the end) to xorg20210503.log
teetime! Mon May  3 23:13:24 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s xorg
〜

しかし、

〜
Running custom install script '/usr/local/bin/python3.8 /usr/ports/x11-fonts/fontconfig/work/fontconfig-2.13.93/fc-cache/../instal
l-cache.py /usr/ports/x11-fonts/fontconfig/work/fontconfig-2.13.93/_build/fc-cache/fc-cache'
--- stdout ---
Font directories:
	/usr/local/share/fonts
	/usr/local/lib/X11/fonts
	/usr/local/share/fonts/util
/usr/local/share/fonts: caching, new cache contents: 0 fonts, 1 dirs
/usr/local/share/fonts/util: caching, new cache contents: 0 fonts, 0 dirs
/usr/local/lib/X11/fonts: skipping, no such directory
/usr/local/share/fonts/util: skipping, looped directory detected
/var/db/fontconfig: not cleaning non-existent cache directory
/usr/ports/x11-fonts/fontconfig/work/fontconfig-2.13.93/_build/fc-cache/fc-cache: failed

--- stderr ---
Fontconfig error: Cannot load default config file: No such file: (null)
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
/usr/local/share/fonts: failed to write cache
Fontconfig error: No writable cache directories
/usr/local/share/fonts/util: failed to write cache

FAILED: install script '/usr/local/bin/python3.8 /usr/ports/x11-fonts/fontconfig/work/fontconfig-2.13.93/fc-cache/../install-cache
.py /usr/ports/x11-fonts/fontconfig/work/fontconfig-2.13.93/_build/fc-cache/fc-cache' exit code 2, stopped
FAILED: meson-install 
/usr/local/bin/meson install --no-rebuild
ninja: build stopped: subcommand failed.
*** Error code 1

Stop.
make[7]: stopped in /usr/ports/x11-fonts/fontconfig
*** Error code 1

Stop.
make[6]: stopped in /usr/ports/x11-fonts/fontconfig
*** Error code 1

Stop.
make[5]: stopped in /usr/ports/x11-fonts/libXft
*** Error code 1

Stop.
make[4]: stopped in /usr/ports/x11/x11perf
*** Error code 1

Stop.
make[3]: stopped in /usr/ports/x11/xorg-apps
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/x11/xorg-apps
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/x11/xorg
*** Error code 1

Stop.
make: stopped in /usr/ports/x11/xorg
egrep: empty (sub)expression
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portinstall20210503-1246-1vv6auk env make FETCH_BEFORE_ARGS=-q
** Fix the problem and try again.
--->  [Executing a command as root: sudo /usr/local/sbin/pkgdb -aFOQ]
** Listing the failed packages (-:ignored / *:skipped / !:failed)
	! x11/xorg	(unknown build error)
teetime! Mon May  3 23:17:07 JST 2021

もう一度試してみたが、同様にダメであった。 (ビルド成果物を clean しないように今度は portinstall に -w を付けている)

nsmrtks@fb130:/var/tmp/log/Install % nice teetime -t xorg portinstall -sw xorg
logging (from the next line till the end) to xorg20210504.log
teetime! Tue May  4 00:11:26 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -sw xorg
〜

「/usr/local/share/fonts/util: skipping, looped directory detected」 と言っているのがおかしなように思えるが、そんなはずはないのだが..

nsmrtks@fb130:/var/tmp/log/Install % ls /usr/local/share/fonts/util/
map-ISO8859-1		map-ISO8859-16		map-ISO8859-7
map-ISO8859-10		map-ISO8859-2		map-ISO8859-8
map-ISO8859-11		map-ISO8859-3		map-ISO8859-9
map-ISO8859-13		map-ISO8859-4		map-JISX0201.1976-0
map-ISO8859-14		map-ISO8859-5		map-KOI8-R
map-ISO8859-15		map-ISO8859-6
話はそれるが、ここで作業時間の都合で、VirtualBox の機能で FreeBSD 環境を「閉じる」→「保存状態」で保存した後に、また再開している。
なお前述の virtualbox-ose-additions を設定していないと、時計がずれてしまう。

しょうがないので、最後の手段で、失敗の原因になっている fontconfig を pkg install でインストールすることにする。 (最初から (xorg を) そうしろというのもあるが)

nsmrtks@fb130:/var/tmp/log/Install % teetime -t fontconfig sudo pkg install fontconfig
logging (from the next line till the end) to fontconfig20210504.log
teetime! Tue May  4 19:19:43 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> sudo pkg install fontconfig
〜
teetime! Tue May  4 19:25:05 JST 2021

うまくいったようなので、いまいちど xorg を portinstall する。 (今度は当初と同様に portinstall に -w は無しにしてみた)

nsmrtks@fb130:/var/tmp/log/Install % nice teetime -t xorg portinstall -s xorg
conflicting xorg20210504.log
logging (from the next line till the end) to xorg2021050419.log
teetime! Tue May  4 19:31:50 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s xorg
〜

途中、xorg-drivers の設定で、VMMOUSE と VMWARE にチェックを入れてみる。 FreeBSD 12.1 のとき は、そうしないとうまくいかなかった。

xorg-drivers

これについては、ports でオプションを変えてビルドして対処しているので、バイナリパッケージでは対応できないことになる。 その場合は、VirtualBox で警告が出るかもしれないが「グラフィックスコントローラー」の設定を 「VBoxVGA」で使うしかないだろうか。

そういえば VirtualBox の「グラフィックスコントローラー」の設定が、今回は当初から (「VBoxVGA」でなく) 「VMsVGA」になっていた。

VMsVGA

● X11 サーバを起動してみる

あらためて、startx を実行すると、X11 サーバを起動できるだろうか。

800x600

xdpyinfo でも確かめた所、SVGA (800x600) で起動したようだ。

いったん X11 サーバを終了して、今度は VirtualBox をフルスクリーンモードにして、startx してみると.. (注: 写真の下の方に見えている赤いのは紙を両面テープで貼ったものである)

still 800x600

ここでフルスクリーンモードは 1920x1080 のはずなのだが、それでも 800x600 で起動してしまったようだ。

念のため xrandr を引数なしで実行した所、1920x1080 にも出来るようだ。

そこで早速 xarndr -s 1920x1080 を実行してみた所..

xrandr -s 1920x1080

画面をいっぱいに広げることが出来た。

● 統合デスクトップ (ウィンドウマネージャ) をインストールする

◎ Xfce をインストールする

筆者は以前までウィンドウマネージャとして mwm (Motif Window Manager) を長らく使っていたり、また WindowMaker も少し使っていたのだが、どうも古くて動作に支障が出ていると思うようになった。 (なおこれまでのスクリーンショットを見ても分かる通り今起動しているのは twm である。twm も昔は使っていた。)

やはり GNOME か KDE なのか.. と、昔に環境を構築する時に思っていた時、第三の統合デスクトップとして、「GNOME で使われている GTK+ ツールキットをベースにしたデスクトップ環境」 でありながらより軽い Xfce というものもあるということを以下などで知った。

FreeBSD ハンドブック → パート〓I.〓導入 → 第5章 X Window System → 5.7. デスクトップ環境

昔の環境ではどれにするか決めあぐねて、3つともインストール(!)したりしていた。
ここでは Xfce にしてみる。 (他の作業環境では KDE を使ったり GNOME を試したりもしている)

nsmrtks@fb130:~ % cd /var/tmp/log/Install
nsmrtks@fb130:/var/tmp/log/Install % nice teetime -t xfce portinstall -s xfce
logging (from the next line till the end) to xfce20210504.log
teetime! Tue May  4 21:18:28 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s xfce
〜
./grammar.y:799.1-12: warning: deprecated directive: ‘%pure-parser’, use ‘%define api.pure’ [〜id=a2c14c40005c18206c4e01300000
000Segmentation fault (core dumped)
gmake[15]: *** [Makefile:842: grammar.tab.h] Error 139
gmake[15]: Leaving directory '/usr/ports/multimedia/gstreamer1/work/gstreamer-1.16.2/gst/parse'
gmake[14]: *** [Makefile:1813: all-recursive] Error 1
gmake[14]: Leaving directory '/usr/ports/multimedia/gstreamer1/work/gstreamer-1.16.2/gst'
gmake[13]: *** [Makefile:1011: all] Error 2
gmake[13]: Leaving directory '/usr/ports/multimedia/gstreamer1/work/gstreamer-1.16.2/gst'
gmake[12]: *** [Makefile:742: all-recursive] Error 1
gmake[12]: Leaving directory '/usr/ports/multimedia/gstreamer1/work/gstreamer-1.16.2'
gmake[11]: *** [Makefile:648: all] Error 2
gmake[11]: Leaving directory '/usr/ports/multimedia/gstreamer1/work/gstreamer-1.16.2'
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1

Stop.
make[10]: stopped in /usr/ports/multimedia/gstreamer1
*** Error code 1

Stop.
make[9]: stopped in /usr/ports/multimedia/gstreamer1
*** Error code 1

Stop.
make[8]: stopped in /usr/ports/multimedia/gstreamer1-plugins
*** Error code 1

Stop.
make[7]: stopped in /usr/ports/deskutils/xfce4-tumbler
*** Error code 1

Stop.
make[6]: stopped in /usr/ports/deskutils/xfce4-tumbler
*** Error code 1

Stop.
make[5]: stopped in /usr/ports/x11-fm/thunar
*** Error code 1

Stop.
make[4]: stopped in /usr/ports/x11-fm/thunar
*** Error code 1

Stop.
make[3]: stopped in /usr/ports/x11-wm/xfce4-desktop
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/x11-wm/xfce4-desktop
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/x11-wm/xfce4
*** Error code 1

Stop.
make: stopped in /usr/ports/x11-wm/xfce4
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portinstall20210504-91164-1q995rb env make FETCH_BEFORE_ARGS=-q
** Fix the problem and try again.
--->  [Executing a command as root: sudo /usr/local/sbin/pkgdb -aFOQ]
Password:
Sorry, try again.
Password:
Sorry, try again.
Password:
sudo: 3 incorrect password attempts
/usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:487:in `__system': Command failed [exit code 1]: sudo /usr/local/sbin/pkgdb
 -aFOQ (CommandFailedError)
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:510:in `__sudo'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:516:in `xsudo'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgdb.rb:1062:in `autofix!'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgdb.rb:1058:in `autofix'
	from /usr/local/sbin/portinstall:1139:in `do_install'
	from /usr/local/sbin/portinstall:842:in `block (2 levels) in main'
	from /usr/local/sbin/portinstall:838:in `each'
	from /usr/local/sbin/portinstall:838:in `block in main'
	from /usr/local/lib/ruby/2.7/optparse.rb:1093:in `initialize'
	from /usr/local/sbin/portinstall:238:in `new'
	from /usr/local/sbin/portinstall:238:in `main'
	from /usr/local/sbin/portinstall:2380:in `<main>'
teetime! Tue May  4 23:43:37 JST 2021

.. Segmentation fault で停止すると同時に、変なメッセージが出力されて、(この覚書を書くために使っている) script コマンドがおかしくなり、よくわからない状態になった。
もう一度再開させてみたが (portinstall に -w あり)、同じようにおかしくなってしまうようだ。

nsmrtks@fb130:/var/tmp/log/Install % nice teetime -t xfce portinstall -sw xfce
logging (from the next line till the end) to xfce20210505.log
teetime! Wed May  5 00:01:33 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -sw xfce
〜
./grammar.y:799.1-12: warning: deprecated directive: ‘%pure-parser’, use ‘%define api.pure’ [〜id=a2c14c40005c1825cbc787e00000
000Segmentation fault (core dumped)
〜
** Listing the failed packages (-:ignored / *:skipped / !:failed)
	! x11-wm/xfce4	(coredump)
teetime! Wed May  5 00:02:24 JST 2021

しょうがないので、最後の手段で、失敗の原因になっている gstreamer1 を pkg install でインストールすることにする。 (最初から (xfce を) そうしろというのもあるが)

nsmrtks@fb130:/var/tmp/log/Install % teetime -t gstreamer1_ sudo pkg install gstreamer1
logging (from the next line till the end) to gstreamer1_20210505.log
teetime! Wed May  5 00:08:17 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> sudo pkg install gstreamer1
〜
teetime! Wed May  5 00:15:12 JST 2021

うまくいったようなので、いまいちど xfce を portinstall する。 (今度は当初と同様に -w は無しにしてみた)

nsmrtks@fb130:/var/tmp/log/Install % nice teetime -t xfce portinstall -s xfce
conflicting xfce20210505.log
logging (from the next line till the end) to xfce2021050500.log
teetime! Wed May  5 00:39:19 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s xfce
〜
===>  Switching to root credentials for 'install' target
Password:
sudo: timed out reading password
sudo: a password is required
*** Error code 1

Stop.
make[10]: stopped in /usr/ports/www/webkit2-gtk3
*** Error code 1

Stop.
make[9]: stopped in /usr/ports/www/webkit2-gtk3
*** Error code 1

Stop.
make[8]: stopped in /usr/ports/textproc/libgepub
*** Error code 1

Stop.
make[7]: stopped in /usr/ports/deskutils/xfce4-tumbler
*** Error code 1

Stop.
make[6]: stopped in /usr/ports/deskutils/xfce4-tumbler
*** Error code 1

Stop.
make[5]: stopped in /usr/ports/x11-fm/thunar
*** Error code 1

Stop.
make[4]: stopped in /usr/ports/x11-fm/thunar
*** Error code 1

Stop.
make[3]: stopped in /usr/ports/x11-wm/xfce4-desktop
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/x11-wm/xfce4-desktop
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/x11-wm/xfce4
*** Error code 1

Stop.
make: stopped in /usr/ports/x11-wm/xfce4
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portinstall20210505-38064-1vf8u4c env make FETCH_BEFORE_ARGS=-q
** Fix the problem and try again.
--->  [Executing a command as root: sudo /usr/local/sbin/pkgdb -aFOQ]
Password:
sudo: timed out reading password
sudo: a password is required
/usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:487:in `__system': Command failed [exit code 1]: sudo /usr/local/sbin/pkgdb
 -aFOQ (CommandFailedError)
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:510:in `__sudo'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:516:in `xsudo'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgdb.rb:1062:in `autofix!'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgdb.rb:1058:in `autofix'
	from /usr/local/sbin/portinstall:1139:in `do_install'
	from /usr/local/sbin/portinstall:842:in `block (2 levels) in main'
	from /usr/local/sbin/portinstall:838:in `each'
	from /usr/local/sbin/portinstall:838:in `block in main'
	from /usr/local/lib/ruby/2.7/optparse.rb:1093:in `initialize'
	from /usr/local/sbin/portinstall:238:in `new'
	from /usr/local/sbin/portinstall:238:in `main'
	from /usr/local/sbin/portinstall:2380:in `<main>'
teetime! Wed May  5 01:18:35 JST 2021

..放置していたら sudo がタイムアウトしてしまったので、今度は portinstall に -w を付けてもう一度。

nsmrtks@fb130:/var/tmp/log/Install % nice teetime -t xfce portinstall -sw xfce
conflicting xfce20210505.log
logging (from the next line till the end) to xfce2021050501.log
teetime! Wed May  5 01:32:06 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -sw xfce
〜
--->  [Executing a command as root: sudo /usr/local/sbin/pkgdb -aFOQ]
teetime! Wed May  5 02:09:47 JST 2021

無事にビルド・インストールできた。

Xfce は startxfce4 コマンドで起動できる。

お試しとして、まず、先ほどと同様に startx で X11 と、twm を起動する。
次に、その twm を左クリックメニューから終了させて、startxfce4 で Xfce を起動する。

startxfce4

無事に Xfce が起動した。

● IPv6 のユニークローカルアドレス (ULA) を割り当てるなど

これもおそらく筆者の環境に特有の話かもしれない..

FreeBSD や NetBSD では、IPv6 のリンクローカルアドレス (IPv6 ルーターがなくても自動的に割り当てられるが同一ネットワーク内でしか通信できない) で NFS が通信できたが、これが Ubuntu Linux 相手だとどうしてもうまくいかなかった (同一の VirtualBox の「ホストオンリーアダプター」を経由している場合でも)。

なお、別の物理 PC をまたぎ、少なくとも一方が VirtualBox の「ブリッジアダプター」(他の物理 PC と直接通信できる) という場合も、経験上、リンクローカルアドレスではうまくいかないことがあった。

ここで筆者の環境では、VirtualBox のネットワークの設定で、em2 が「ホストオンリーアダプター」 (同一の VirtualBox の他の仮想マシンと通信できる) になっている。

しかし VirtualBox の「ホストオンリーアダプター」には、IPv6 アドレスとしては、リンクローカルアドレスしか割当たっていない。
このような場合、リンクローカルアドレスよりもよりしっかりした IPv6 アドレスとして、ユニークローカルアドレス (ULA) を用いるのがいいようだ。

前置きが長くなったが、ここでは、ULA に基づく IPv6 アドレスを、em2 インターフェイスに割り当ててみることにする。

筆者は、かつて http://www.kame.net/~suz/gen-ula.html を使用させてもらって生成した ULA を従来より用いている。 ただし、このページは現在では無くなってしまったようだ。 (参考までに同様の目的を果たせるものが ローカルな環境でIPv6を使う に見つかった)

筆者の環境の ULA は、fd39:8b7f:067e::/48 というものである。 その際 16 ビットの「サブネットID」として、em2 では 1 を用いることにする (em1 用に 0 を取っておいているのだが今回は割り当てない)
ここまでで IPv6 の 128 ビットのアドレスのうち上位 64 ビットまでで、残り 64 ビットは、(em2 の) MAC (イーサネット) アドレスから算出した EUI-64 でよいはずだ。
あらためて以下を参照することにする。

IPv6アドレス - EUI-64で生成するインターフェースID / 特殊なIPv6アドレス

(em2 の) MAC アドレスは、ifconfig で知ることが出来る。 (以下の出力の「ether」)

nsmrtks@fb130:~ % ifconfig
〜
em2: 〜
	〜
	ether 08:00:27:3e:ac:4a
	inet 192.168.56.130 netmask 0xffffff00 broadcast 192.168.56.255
	inet6 fe80::a00:27ff:fe3e:ac4a%em2 prefixlen 64 scopeid 0x3
	〜
〜

em2 の 08:00:27:3e:ac:4a の EUI-64 は 0a 00 27 ff fe 3e ac 4a である。
が、実は em2 の IPv6 リンクローカルアドレス (上記の ifconfig の出力で既に inet6 が割り当たっているもの) を見れば同じ値なので分かったりする。

これらから、IPv6 アドレス (ULA) が、em2 については fd39:8b7f:67e:1:a00:27ff:fe3e:ac4a が得られた。

このアドレスを、まずは /etc/rc.conf に設定する。 ifconfig_em2_ipv6 の所を以下のように変更した。

ifconfig_em2="inet 192.168.56.130 netmask 255.255.255.0"
#ifconfig_em2_ipv6="inet6 accept_rtadv"
ifconfig_em2_ipv6="inet6 fd39:8b7f:67e:1:a00:27ff:fe3e:ac4a prefixlen 64"

また、/etc/hosts と、相手ホストの /etc/hosts にも、エントリを追加する。
自ホスト (fb130) の /etc/hosts の fb130 に関するエントリは以下のようになった。 (リンクローカルアドレスも追加しておいた (%em2 がついているもの))

# 2021-05-03,06 nsmrtks
fe80::a00:27ff:fe3e:ac4a%em2		fb130.magic.or	fb130		fb130c
fd39:8b7f:67e:1:a00:27ff:fe3e:ac4a	fb130.magic.or	fb130	fb130v6

相手ホスト (fb121 等) の IPv6 ULA アドレスも /etc/hosts に追記した。

再起動すると、新しく IPv6 ULA アドレスが割り当てられた。

nsmrtks@fb130:~ % ifconfig
〜
em2: 〜
	〜
	ether 08:00:27:3e:ac:4a
	inet 192.168.56.130 netmask 0xffffff00 broadcast 192.168.56.255
	inet6 fe80::a00:27ff:fe3e:ac4a%em2 prefixlen 64 scopeid 0x3
	inet6 fd39:8b7f:67e:1:a00:27ff:fe3e:ac4a prefixlen 64
	〜
〜

確認のため、同一の VirtualBox にある、旧環境 (fb121) と、新環境 (fb130) が、ping6 で、ULA で通信できた。

fb130 (新環境) → fb121 (旧環境)

nsmrtks@fb130:~ % ping6 fb121v6
PING6(56=40+8+8 bytes) fd39:8b7f:67e:1:a00:27ff:fe3e:ac4a --> fd39:8b7f:67e:1:a00:27ff:fe52:d95a
16 bytes from fd39:8b7f:67e:1:a00:27ff:fe52:d95a, icmp_seq=0 hlim=64 time=0.468 ms
16 bytes from fd39:8b7f:67e:1:a00:27ff:fe52:d95a, icmp_seq=1 hlim=64 time=0.612 ms
^C
--- fb121.magic.or ping6 statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.468/0.540/0.612/0.072 ms

fb121 (旧環境) → fb130 (新環境)

% ping6 fb130v6
PING6(56=40+8+8 bytes) fd39:8b7f:67e:1:a00:27ff:fe52:d95a --> fd39:8b7f:67e:1:a00:27ff:fe3e:ac4a
16 bytes from fd39:8b7f:67e:1:a00:27ff:fe3e:ac4a, icmp_seq=0 hlim=64 time=0.811 ms
16 bytes from fd39:8b7f:67e:1:a00:27ff:fe3e:ac4a, icmp_seq=1 hlim=64 time=0.778 ms
^C
--- fb130.magic.or ping6 statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.778/0.795/0.811/0.017 ms

リンクローカルアドレスでも通信できる。

fb130 (新環境) → fb121 (旧環境)

nsmrtks@fb130:~ % ping6 fb121c
PING6(56=40+8+8 bytes) fe80::a00:27ff:fe3e:ac4a%em2 --> fe80::a00:27ff:fe52:d95a%em2
16 bytes from fe80::a00:27ff:fe52:d95a%em2, icmp_seq=0 hlim=64 time=1.393 ms
16 bytes from fe80::a00:27ff:fe52:d95a%em2, icmp_seq=1 hlim=64 time=0.883 ms
^C
--- fb121.magic.or ping6 statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.883/1.138/1.393/0.255 ms

fb121 (旧環境) → fb130 (新環境)

% ping6 fb130d
PING6(56=40+8+8 bytes) fe80::a00:27ff:fe52:d95a%vtnet0 --> fe80::a00:27ff:fe3e:ac4a%vtnet0
16 bytes from fe80::a00:27ff:fe3e:ac4a%vtnet0, icmp_seq=0 hlim=64 time=3.044 ms
16 bytes from fe80::a00:27ff:fe3e:ac4a%vtnet0, icmp_seq=1 hlim=64 time=0.916 ms
^C
--- fb130.magic.or ping6 statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.916/1.980/3.044/1.064 ms

● nkf (ja-nkf) をインストールする

少し余談になるが、Windows で BusyBox と GNU Make を組み合わせた環境で、入力データによっては、nkf ならいけるが iconv コマンドだとうまく作動しないということが最近あった。
Cygwin や FreeBSD では iconv でも作動したのだが。
nkf は、(fj のような) 昔から (日本で) インターネットを使っている世代には標準的なコマンドということもあるが、環境を揃えるためにも、nkf をインストールしておくことにする..
nsmrtks@fb130:~ % cd /var/tmp/log/Install/

nsmrtks@fb130:/var/tmp/log/Install % nice teetime -t ja-nkf_ portinstall -s ja-nkf
logging (from the next line till the end) to ja-nkf_20210506.log
teetime! Thu May  6 21:46:30 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s ja-nkf
〜
teetime! Thu May  6 21:46:38 JST 2021

● 梅フォントをインストールする

筆者が好んで使わせてもらっているフォントである。 これを Emacs や rxvt-unicode やブラウザで使う。

nsmrtks@fb130:~ % cd /var/tmp/log/Install/

nsmrtks@fb130:/var/tmp/log/Install % nice teetime -t ja-font-ume_ portinstall -s ja-font-ume
logging (from the next line till the end) to ja-font-ume_20210506.log
teetime! Thu May  6 21:58:50 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s ja-font-ume
〜
teetime! Thu May  6 21:59:15 JST 2021

● Emacs をインストールする

nsmrtks@fb130:~ % cd /var/tmp/log/Install/

nsmrtks@fb130:/var/tmp/log/Install % nice teetime -t emacs portinstall -s emacs
logging (from the next line till the end) to emacs20210506.log
teetime! Thu May  6 22:02:03 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s emacs
〜
teetime! Thu May  6 22:18:07 JST 2021

無事にビルド・インストールできた。

● rxvt-unicode (urxvt) をインストールする

xterm 等の代わりに用いる。

nsmrtks@fb130:~ % cd /var/tmp/log/Install/

nsmrtks@fb130:/var/tmp/log/Install % nice teetime -t rxvt-unicode_ portinstall -s rxvt-unicode
logging (from the next line till the end) to rxvt-unicode_20210506.log
teetime! Thu May  6 22:30:31 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s rxvt-unicode
〜
teetime! Thu May  6 22:32:17 JST 2021

無事にビルド・インストールできた。

● Chromium (chrome) をインストールする

nsmrtks@fb130:~ % cd /var/tmp/log/Install/

nsmrtks@fb130:/var/tmp/log/Install % nice teetime -t chromium portinstall -s chromium
logging (from the next line till the end) to chromium20210506.log
teetime! Thu May  6 22:39:54 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s chromium
〜

ここで、ffmpeg の設定で、『PULSEAUDIO』 (PulseAudio sound server support) にチェックを入れておいてみる。

ffmpeg (PULSEAUDIO)

espeak というのでも、『PULSEAUDIO』 (PulseAudio sound server support) にチェックを入れておいてみた。 (後からよく見たらどれか1つを選ぶ形式だった..まあいいか)

espeak (PULSEAUDIO)

chromium 本体でも、『PULSEAUDIO』 (PulseAudio sound server support) にチェックを入れておいてみる..

chromium (PULSEAUDIO)

..おっと。

SNDIO conflicts with PULSEAUDIO

SNDIO のチェックを外す。

no SNDIO

この設定だと chromium から VirtualBox 自体で音が鳴らないという問題に後になって気づいた。 解消方法は後の方を参照。
〜
===>  Staging for chromium-90.0.4430.93
===>   chromium-90.0.4430.93 depends on executable: xdg-open - not found
===>  Switching to root credentials to create /var/db/ports/devel_xdg-utils
Password:
sudo: timed out reading password
sudo: a password is required
===> Cannot create /var/db/ports/devel_xdg-utils, check permissions
*** Error code 1

Stop.
make[3]: stopped in /usr/ports/devel/xdg-utils
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/devel/xdg-utils
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/www/chromium
*** Error code 1

Stop.
make: stopped in /usr/ports/www/chromium
egrep: empty (sub)expression
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portinstall20210506-86743-644hr8 env make FETCH_BEFORE_ARGS=-q
** Fix the problem and try again.
--->  [Executing a command as root: sudo /usr/local/sbin/pkgdb -aFOQ]
Password:
sudo: timed out reading password
sudo: a password is required
/usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:487:in `__system': Command failed [exit code 1]: sudo /usr/local/sbin/pkgdb
 -aFOQ (CommandFailedError)
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:510:in `__sudo'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:516:in `xsudo'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgdb.rb:1062:in `autofix!'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgdb.rb:1058:in `autofix'
	from /usr/local/sbin/portinstall:1139:in `do_install'
	from /usr/local/sbin/portinstall:842:in `block (2 levels) in main'
	from /usr/local/sbin/portinstall:838:in `each'
	from /usr/local/sbin/portinstall:838:in `block in main'
	from /usr/local/lib/ruby/2.7/optparse.rb:1093:in `initialize'
	from /usr/local/sbin/portinstall:238:in `new'
	from /usr/local/sbin/portinstall:238:in `main'
	from /usr/local/sbin/portinstall:2380:in `<main>'
teetime! Fri May  7 04:38:15 JST 2021

放置していたら sudo がタイムアウトしてしまったので、portinstall に -w を付けて再開。

nsmrtks@fb130:/var/tmp/log/Install % nice teetime -t chromium portinstall -sw chromium
logging (from the next line till the end) to chromium20210507.log
teetime! Fri May  7 07:28:22 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -sw chromium
〜
teetime! Fri May  7 07:33:06 JST 2021

無事にビルド・インストールできた。

● rsync をインストールする

nsmrtks@fb130:~ % cd /var/tmp/log/Install/

nsmrtks@fb130:/var/tmp/log/Install % nice teetime -t rsync portinstall -s rsync
logging (from the next line till the end) to rsync20210507.log
teetime! Fri May  7 15:24:29 JST 2021
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s rsync
〜
teetime! Fri May  7 15:29:04 JST 2021

無事にビルド・インストールできた。

● ホームディレクトリを旧環境から移動する

これも、筆者の環境に特有の話が続くが..

筆者は、新環境 (すなわち今インストール中のこの環境「fb130」) を立ち上げたら、旧環境で運用していたホームディレクトリを新環境に移動して切り替えることにしている。
非圧縮状態で 10 GB 以上に相当するファイル群なので、コピーにそれなりの時間を要する。 コピーの間じゅう、環境が使えないのは不便なので、あらかたの内容を裏でコピーしておき、最後に残りをコピーすることにする。

色々やることがある。 まずコピーの前に、ZFS に空のホームディレクトリを作成する。
ここで、後で /home を NFS エクスポートしようと思っているので、ホームディレクトリを /home に下にマウントするようにする。 ところがそうすると、(新環境の) 現状のホームディレクトリも /home/nsmrtks なので、sudo でなく root でログインし直して作業する。 現状の /home/nsmrtks は一応リネームして保存しておくことにする。
また、(zfs/ports や zfs/local と同様に) lz4 圧縮を指定することにする。

root@fb130:~ # cd /home

root@fb130:/home # ls
distfiles	nsmrtks

root@fb130:/home # mv -i nsmrtks nsmrtks.bak

root@fb130:/home # zfs create -o mountpoint=/home/nsmrtks zfs/nsmrtks

root@fb130:/home # df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2    4.8G    3.2G    1.3G    71%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ada0p4    2.9G    757M    1.9G    28%    /var
/dev/da0p1      15G     13G    1.4G    90%    /home/distfiles
tmpfs          1.0G    4.0K    1.0G     0%    /tmp
zfs/local       18G    2.4G     16G    13%    /usr/local
zfs             16G     24K     16G     0%    /zfs
zfs/ports       16G    490M     16G     3%    /usr/ports
zfs/nsmrtks     16G     24K     16G     0%    /home/nsmrtks

root@fb130:/home # zfs set compression=lz4 zfs/nsmrtks

root@fb130:/home # zfs get compression
NAME         PROPERTY     VALUE           SOURCE
zfs          compression  off             default
zfs/local    compression  lz4             local
zfs/nsmrtks  compression  lz4             local
zfs/ports    compression  lz4             local

root@fb130:/home # ls /home
distfiles	nsmrtks		nsmrtks.bak

root@fb130:/home # ls -a /home/nsmrtks/
.	..

忘れずにオーナーも設定しておく。

root@fb130:/home # ls -ld /home/nsmrtks
drwxr-xr-x  2 root  wheel  2 May  7 15:46 /home/nsmrtks

root@fb130:/home # chown nsmrtks:nsmrtks /home/nsmrtks

root@fb130:/home # ls -ld /home/nsmrtks
drwxr-xr-x  2 nsmrtks  nsmrtks  2 May  7 15:46 /home/nsmrtks

root@fb130:/home # ls -l /home
total 61
drwxr-xr-x  42 nsmrtks  wheel    55296 May  6 23:39 distfiles
drwxr-xr-x   2 nsmrtks  nsmrtks      2 May  7 15:46 nsmrtks
drwxr-xr-x  10 nsmrtks  nsmrtks   1024 May  7 15:46 nsmrtks.bak

あとは、fb121 (旧環境) にあるホームディレクトリを fb130 (新環境) にコピーする。 以下のようにした。

root@fb130:~ # date ; rsync -az --del nsmrtks@fb121c:/home/nsmrtks/ /home/nsmrtks/ ; date
Fri May  7 15:57:49 JST 2021
〜
Fri May  7 16:08:19 JST 2021

無事にコピーが完了した。

これ以降は、ユーザ nsmrtks の環境は、旧環境からコピーしてきた ~/.tcshrc 等もろもろに従って動作している。

● NFS サーバを設定する

これも、必要なのは筆者の環境だけかもしれない。

筆者は、新環境 (すなわち今インストール中のこの環境「fb130」) を立ち上げてからも、引き継ぎのためやバックアップのために、旧環境もしばらく残して運用することにしており、その際、ホームディレクトリや /usr/ports/distfiles (前述) を旧環境から新環境に移動して切り替え、旧環境からは NFS でそのまま参照するようにしている。

NFS というと、どのディレクトリをエクスポートするかという設定が必要だが、/etc/exports ファイルと、ZFS の sharenfs の二段構えで行くことにする。

あらためて /etc/hosts の編集を行う。
ここで、同じホスト上の VirtualBox の仮想マシンどうしは、「ホストオンリーアダプター」を通して通信できる。 それは、これまでの経緯により、fb130 においては 仮想マシンの作成 時に「アダプター3」として割り当てており、em2 として見えている。

% ifconfig em2
em2: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=481009b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,VLAN_HWFILTER,NOMAP>
	ether 08:00:27:3e:ac:4a
	inet 192.168.56.130 netmask 0xffffff00 broadcast 192.168.56.255
	inet6 fe80::a00:27ff:fe3e:ac4a%em2 prefixlen 64 scopeid 0x3
	inet6 fd39:8b7f:67e:1:a00:27ff:fe3e:ac4a prefixlen 64
	media: Ethernet autoselect (1000baseT <full-duplex>)
	status: active
	nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

/etc/hosts には、この IP アドレスを書いておけば、仮想マシンどうしがホスト名で通信できる。
前置きが長くなったが、筆者の環境では /etc/hosts に以下のようなものを追記した (抜粋)。

# 2021-05-03,06 nsmrtks
fe80::a00:27ff:fe3e:ac4a%em2		fb130.magic.or	fb130		fb130c
fd39:8b7f:67e:1:a00:27ff:fe3e:ac4a	fb130.magic.or	fb130	fb130v6

# 2020-01-23,2021-05-06 nsmrtks
fe80::a00:27ff:fe52:d95a%em2		fb121.magic.or	fb121		fb121c
fd39:8b7f:67e:1:a00:27ff:fe52:d95a	fb121.magic.or	fb121	fb121v6

# 2020-04-28,2021-05-06 nsmrtks
fe80::a00:27ff:fe7a:6647%em2		fbak.magic.or	fbak	fbak6

# 2017-09-27,2021-05-06 nsmrtks
fe80::a00:27ff:fea3:3469%em2		fb111.magic.or	fb111		fb111c
fd39:8b7f:67e:1:a00:27ff:fea3:3469	fb111.magic.or	fb111	fb111v6

# 2016-05-22,2021-05-06 nsmrtks
fe80::a00:27ff:fe07:b6d8%em2		fb093.magic.or	fb093	fb093v6	fb093c

# 2019-10-03 nsmrtks
fd39:8b7f:67e:1:a00:27ff:fefa:187	ul164	ul164v6

ここで、IPv6 アドレスを使用している。 FreeBSD や Ubuntu Linux の NFS は IPv6 で通信可能である。

NFS の話に戻って、まず /etc/exports に以下のように記述することにする。

# 2019-09-18,20,2020-01-29,2021-05-08 nsmrtks

V4: /home

/home/distfiles	fb121c fb111c

# EoF

先に /home/distfiles の方の行について述べると、これは /home/distfiles ディレクトリをホスト fb121c と fb111c に export している。

V4: /home という行について、これは NFSv4 を使用している。 /home というディレクトリを NFSv4 tree root にするという指定になっている。
そして /home については、ZFS の sharenfs の指定と組み合わせて設定することにする。

ZFS の sharenfs の設定が未だだが、先に NFS サーバを立ち上げる設定をしてみる。
それには、以下のように実行して.. (繰り返しになるが、「>>」で追記するのであり、 くれぐれも間違って「>」で上書きしないように注意する。)

% sudo -i
〜

root@fb130:~ # egrep ^nfs /etc/defaults/rc.conf >> /etc/rc.conf

root@fb130:~ # exit
logout

/etc/rc.conf に以下のように追記されるように編集した。 (Emacs で /sudo::/etc/rc.conf というファイル名を指定すると sudo を使って /etc/rc.conf を編集/保存することが出来る)

# 2021-05-08 nsmrtks
nfs_server_enable="YES"                 # This host is an NFS server (or NO).
nfsv4_server_enable="YES"               # Enable support for NFSv4
nfsuserd_enable="YES"                   # NFSv4 user/group name mapping daemon
nfsuserd_flags="-domain magic.or"       # Flags for nfsuserd

ここで筆者の環境では nfsuserd_flags に -domain オプションで「magic.or」という名前を設定した。 これはサーバ側(すなわちこのホスト)とクライアント側で合わせる必要がある。

この段階で、NFS サーバを立ち上げてみる。

% sudo service nfsd start
〜
Starting rpcbind.
Starting mountd.
Starting nfsd.

% showmount -e
Exports list on localhost:
/home/distfiles                    fb121.magic.or fb111.magic.or 

この段階で、ホスト fb121c 及び fb111c から、fb130 の /distfiles が NFS マウントできるようになるだろう..
たとえば fb111 (fb111c) については、fb130c を /etc/hosts に追加し、/etc/fstab を以下のように書き換えて (先頭の方にある fb121c:/distfiles 〜 の行をコメントアウトし最後の 2行を追記した) ..

〜
#fb121c:/distfiles	/zfs/distfiles	nfs	rw,nfsv4
# 2021-05-03,08 nsmrtks
fb130c:/distfiles	/zfs/distfiles	nfs	rw,nfsv4

この状態で fb111 を再起動すると、以下のように /zfs/distfiles 以下のファイルとしてアクセスできることを確認した。

% df -h
Filesystem            Size    Used   Avail Capacity  Mounted on
〜
fb130c:/distfiles      15G     13G    2.6G    83%    /zfs/distfiles
〜

% mount
〜
fb130c:/distfiles on /zfs/distfiles (nfs)
〜

% ls -l /zfs/distfiles/ | head
total 9164888
-rw-r--r--   1 nsmrtks  wheel         24459  6月 30  2020 0001-Add-ability-for-ffmpeg-to-run-svt-av1-with-svt-hevc.patch
-rw-r--r--   1 nsmrtks  wheel         25023  7月 13  2020 0001-Add-ability-for-ffmpeg-to-run-svt-av1.patch
-rw-r--r--   1 nsmrtks  wheel         22103  6月 17  2020 0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch
-rw-r--r--   1 nsmrtks  wheel          1273  2月 27  2015 0001-Remove-pure-attribute-from-functions-with-side-effec.patch
-rw-r--r--   1 nsmrtks  wheel          5332  6月 17  2020 0002-doc-Add-libsvt_hevc-encoder-docs.patch
-rw-r--r--   1 nsmrtks  wheel           412  8月 21  2020 01a75ed76ea7e57f1b7a5c183e2b1e890e6aa0fd.diff
-rw-r--r--   1 nsmrtks  wheel        218971  7月 17  2018 01org-libva-2.2.0_GH0.tar.gz
-rw-r--r--   1 nsmrtks  wheel       2580540 12月 12  2019 01org-tbb-2019.8-2019_U8_GH0.tar.gz
-rw-r--r--   1 nsmrtks  wheel          1457  2月  9 18:07 03eaa9779f2c9c7b0acf0521a5547036bdec2245.patch
〜

% head /zfs/distfiles/0001-Add-ability-for-ffmpeg-to-run-svt-av1-with-svt-hevc.patch 
From 0fc7f3504857ea1c8c31b52934db2a9fdf39f992 Mon Sep 17 00:00:00 2001
〜

次に、/home/nsmrtks を NFS エクスポートする。
そのやり方だが、/etc/exports はこれ以上触らず、即ち /etc/exports の「V4: /home」と書いた行 (のみ) を利用し、残りを ZFS の機能で行うことにする。

以下のように、zfs set sharenfs= にホストを指定する。 なおこの操作で、mountd に HUP シグナルを送る相当まで自動的に実行してくれるので、直後に shouwmount -e を実行するとちゃんと動作に反映されている。

% zfs get sharenfs
NAME         PROPERTY  VALUE     SOURCE
zfs          sharenfs  off       default
zfs/local    sharenfs  off       default
zfs/nsmrtks  sharenfs  off       default
zfs/ports    sharenfs  off       default

% sudo zfs set sharenfs='fb121c fb111c fb093c fbak ul164' zfs/nsmrtks

% zfs get sharenfs
NAME         PROPERTY  VALUE                            SOURCE
zfs          sharenfs  off                              default
zfs/local    sharenfs  off                              default
zfs/nsmrtks  sharenfs  fb121c fb111c fb093c fbak ul164  local
zfs/ports    sharenfs  off                              default

% showmount -e
Exports list on localhost:
/home/distfiles                    fb121.magic.or fb111.magic.or 
/home/nsmrtks                      fb121.magic.or fb111.magic.or fb093.magic.or fbak.magic.or ul164 

ここで早速マウントできるか確かめたい所だが..
筆者は未だここまで、旧環境 (fb121) で仕事をしながら、新環境の準備を整えていた。
旧環境を使っているということは、前回ホームディレクトリをコピーしたときから内容が変わってしまっているから、ここで最後にコピーを行った。

また筆者の旧環境 (fb121) について、/home/nsmrtks は ZFS の mountpoint になっていたので、それを解除した。

root@fb121:~ # df -h
Filesystem           Size    Used   Avail Capacity  Mounted on
〜
zfs/nsmrtks           11G    5.8G    4.9G    54%    /home/nsmrtks
zfs                  4.9G     23K    4.9G     0%    /zfs
〜

root@fb121:~ # zfs set mountpoint=/zfs/nsmrtks zfs/nsmrtks

root@fb121:~ # df -h
Filesystem           Size    Used   Avail Capacity  Mounted on
〜
zfs                  4.9G     23K    4.9G     0%    /zfs
〜
zfs/nsmrtks           11G    5.8G    4.9G    54%    /zfs/nsmrtks

root@fb121:~ # ls -l /zfs
total 6
drwxr-xr-x  59 nsmrtks  nsmrtks  121 May  8 23:43 nsmrtks

その上で、/etc/fstab にて、新環境のホームディレクトリを /home/nsmrtks として NFS マウントできるように設定した。

そうして、ホスト fb121 / fb111 / fb093 / fbak / ul164 から NFS マウントでき、ファイルを書き込めて共有できることを確かめた。

● Samba を設定する

余談だが、前述の rsync の公式サイトは https://rsync.samba.org/ で、Samba と同じ所にある。

筆者は、仮想マシン上の FreeBSD ←→ ホストの MS-Windows 間でファイルをやり取りするために、従来より Samba を用いている。

Samba は、既に何かの依存関係でインストールされていたようだ。

% pkg info | egrep -i samba
samba412-4.12.14_1             Free SMB/CIFS and AD/DC server and client for Unix

以下のような /usr/local/etc/smb4.conf ファイルを作成した (旧環境から持って来た)。 ここではワークグループ名を「MAGIC」、NetBIOS 名を「fb」と設定している。

# 2019-10-08 nsmrtks

[global]
	workgroup = MAGIC
	netbios name = fb
	map archive = no

[homes]
	comment = Home Directories (%h)
	browseable = no
	writable = yes

# end-of-file

また、以下を /etc/rc.conf に追記する。 (/usr/local/etc/rc.d/samba_server を参照)

# 2021-05-10 nsmrtks
# (see /usr/local/etc/rc.d/samba_server)
samba_server_enable="YES"

Samba を起動する..前に、筆者は旧環境で動作している Samba が同じ名前 (「fb」) であり、衝突するし、新環境の Samba があれば不要なので、停止させ、また起動しないようにした。
そうしたら、新環境の Samba を起動する。

% sudo service samba_server start
〜
Performing sanity check on Samba configuration: OK
Starting nmbd.
Starting smbd.

% ps ax | egrep mb
19160  -  Ss       0:00.01 /usr/local/sbin/nmbd --daemon --configfile=/usr/loca
19165  -  Is       0:01.02 /usr/local/sbin/smbd --daemon --configfile=/usr/loca
19168  -  I        0:00.01 /usr/local/sbin/smbd --daemon --configfile=/usr/loca
19169  -  I        0:00.00 /usr/local/sbin/smbd --daemon --configfile=/usr/loca
19170  -  I        0:00.01 /usr/local/sbin/smbd --daemon --configfile=/usr/loca
19174  0  S+       0:00.00 egrep mb

そして、ユーザ (自分) を Samba に追加する。 (コマンド名が類推しにくいが pdbedit である)

% sudo pdbedit -a -u nsmrtks
〜
new password:パスワードを考えて入力↵
retype new password:もう一度入力↵
Unix username:        nsmrtks
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-3050182638-1462602421-4030076632-1000
Primary Group SID:    S-1-5-21-3050182638-1462602421-4030076632-513
Full Name:            NISHIMURA Takeshi
Home Directory:       \\fb\nsmrtks
HomeDir Drive:        
Logon Script:         
Profile Path:         \\fb\nsmrtks\profile
Domain:               FB
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          9223372036854775807 seconds since the Epoch
Kickoff time:         9223372036854775807 seconds since the Epoch
Password last set:    月, 10  5月 2021 17:41:24 JST
Password can change:  月, 10  5月 2021 17:41:24 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

これで、MS-Windows 側から \\fb でアクセスできるようになった。

\\fb

● X11 を起動して、本格的に新環境に切り換える

旧環境から切り替えるために、~/.login や ~/.xinitrc の調整を行った。

startx を実行すると、筆者の ~/.xinitrc は xrandr -s 1920x1080 を実行するようになっており、1920x1080 に切り替わって表示された。
(旧環境から引き継いだ設定により Xfce の上下のバーは自動的に隠すようになっており見えていない)

FullHD

◎ 梅フォントについて

rxvt-unicode (コマンド名は urxvt) については、~/.Xdefaults ファイルに、以下のように記述してある。 筆者の環境では pixelsize=12 でちょうどよくなるが環境によっては調整が必要であろう。 (もし ~/.Xdefaults の内容が反映されていない場合、xrdb ~/.Xdefaults を実行してみる。)

〜
! urxvt (rxvt-unicode)
URxvt.transparent:	true
URxvt.shading:		193
URxvt.font:		xft:UMEgothic:pixelsize=12
〜

Emacs で梅フォントを用いる設定は、以前 Emacs のメニューバーから設定しホームディレクトリ下のファイルに保存してある。 こちらもサイズについては環境によって調整が必要であろう。

● ImageMagick をインストールする

以前は何かの依存関係でインストールされていた気がするのだが (Emacs か?)、今回はインストールされていないようだ。
% cd /var/tmp/log/Install/

% nice teetime -t ImageMagick portinstall -s ImageMagick
logging (from the next line till the end) to ImageMagick20210510.log
teetime! 2021年 5月10日 月曜日 19時03分18秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s ImageMagick
** No such package or port: ImageMagick
teetime! 2021年 5月10日 月曜日 19時03分19秒 JST

/usr/ports/graphics/ を見た所、ImageMagick6 と ImageMagick6-nox11 と ImageMagick7 と ImageMagick7-nox11 が存在していたので、ImageMagick7 をインストールすることにした。

% nice teetime -t ImageMagick7_ portinstall -s ImageMagick7
logging (from the next line till the end) to ImageMagick7_20210510.log
teetime! 2021年 5月10日 月曜日 19時03分35秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s ImageMagick7
〜
teetime! 2021年 5月10日 月曜日 19時17分55秒 JST

無事にビルド・インストールできた。

● mozc 関連をインストールする

◎ mozc-el をインストールする

mozc-el の正確なパッケージ名が分からなかったので、pkg search コマンドで調べている。
インストールされている Emacs が 27 であり、ja-mozc-el-emacs27 をインストールすることにした。

% pkg search mozc-el
ja-mozc-el-emacs27-2.23.2815.102.01_3 Emacs input method for Mozc
ja-mozc-el-emacs27_canna-2.23.2815.102.01_3 Emacs input method for Mozc
ja-mozc-el-emacs27_nox-2.23.2815.102.01_3 Emacs input method for Mozc
ja-mozc-el-emacs28-2.23.2815.102.01_3 Emacs input method for Mozc
ja-mozc-el-emacs28_nox-2.23.2815.102.01_3 Emacs input method for Mozc

% pkg info | egrep emacs
emacs-27.2,3                   GNU editing macros 

% cd /var/tmp/log/Install/

% nice teetime -t ja-mozc-el-emacs27_ portinstall -s ja-mozc-el-emacs27
logging (from the next line till the end) to ja-mozc-el-emacs27_20210510.log
teetime! 2021年 5月10日 月曜日 19時24分54秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s ja-mozc-el-emacs27
〜
Installing ja-mozc-el-emacs27-2.23.2815.102.01_3...
To activate mozc, you will need to add the following lines to
your ~/.emacs:

(set-language-environment "Japanese")
(setq default-input-method "japanese-mozc")
(global-set-key (kbd "C-o") 'toggle-input-method)
〜
teetime! 2021年 5月10日 月曜日 19時29分50秒 JST

mozc-server (ja-mozc-server) もインストールされる。

% pkg info | egrep -i mozc
ja-mozc-el-emacs27-2.23.2815.102.01_3 Emacs input method for Mozc
ja-mozc-server-2.23.2815.102.01_3 Mozc Japanese Input Method, Server

起動については後述する。

Emacs への設定方法について、ビルドのログにもメッセージが出ている。 (再掲)

To activate mozc, you will need to add the following lines to
your ~/.emacs:

(set-language-environment "Japanese")
(setq default-input-method "japanese-mozc")
(global-set-key (kbd "C-o") 'toggle-input-method)

この 3行を ~/.emacs に書くわけだが、(setq default-input-method "japanese-mozc") については、設定すると、もし mozc がインストールされていない状態で C-\ を押すとエラーになる。 その場合は C-u C-\ とすると、他の入力方法 ("japanese" 等) を選べる。 または、この行を書かなくても、C-u C-\ で "japanese-mozc" を選ぶと mozc で入力が可能である。 ただし毎回やらないといけない。
最後の (global-set-key (kbd "C-o") 'toggle-input-method) は、好みの問題だろう。 筆者は設定していない。 (C-\ を用いる)
(set-language-environment "Japanese") の行があると、過去に Emacs の挙動がおかしくなったことがあった。 筆者は設定していない。 無くても mozc-el は正常に動作するようである。

◎ uim-mozc (ja-uim-mozc) をインストールする

他には ja-fcitx-mozc や ja-ibus-mozc という選択肢もある。

% pkg search mozc | egrep -v emacs
ja-fcitx-mozc-2.23.2815.102.01_3 Mozc engine for Fcitx
ja-ibus-mozc-2.23.2815.102.01_3 Mozc engine for IBus
ja-mozc-server-2.23.2815.102.01_3 Mozc Japanese Input Method, Server
ja-mozc-tool-2.23.2815.102.01_3 Mozc tool for IBus, SCIM, and others
ja-uim-mozc-2.23.2815.102.01_3 Mozc engine for uim

% cd /var/tmp/log/Install/

% nice teetime -t ja-uim-mozc_ portinstall -s ja-uim-mozc
logging (from the next line till the end) to ja-uim-mozc_20210510.log
teetime! 2021年 5月10日 月曜日 19時48分36秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s ja-uim-mozc
〜
--->  Building '/usr/ports/japanese/uim-mozc'
===>  Cleaning for py38-gyp-20200512
===>   /usr/ports/devel/py-gyp/work-py38 not writable, skipping
===>  Cleaning for protobuf-3.14.0,1
===>   /usr/ports/devel/protobuf/work not writable, skipping
===>  Cleaning for ja-zinnia-0.06_1
===>   /usr/ports/japanese/zinnia/work not writable, skipping
===>  Cleaning for ja-mozc-server-2.23.2815.102.01_3
===>  Cleaning for ja-uim-mozc-2.23.2815.102.01_4
〜
** Listing the failed packages (-:ignored / *:skipped / !:failed)
	! japanese/uim-mozc	(dependent ports)
teetime! 2021年 5月10日 月曜日 19時49分19秒 JST

よく見ると、「〜 not writable, skipping」という変なのが出ている。
実は、その後に、それとは関係ない、筆者の環境要因が原因でビルドが止まってしまったので、気付いた。

portupgrade に付属の portsclean コマンドに -C を付けると、各 work ディレクトリを一括して消すことが出来 (ただしうまくいかないこともあるようだ)、この場合 not writable とも言っているので、sudo も付けることにする。

% sudo portsclean -C
〜
Cleaning out /usr/ports/*/*/work...
Delete /usr/ports/audio/sndio/work
Delete /usr/ports/databases/db5/work
Delete /usr/ports/databases/ruby-bdb/work
Delete /usr/ports/java/bootstrap-openjdk8/work
Delete /usr/ports/japanese/zinnia/work
Delete /usr/ports/ports-mgmt/portupgrade/work
Delete /usr/ports/print/libotf/work
Delete /usr/ports/devel/m17n-db/work
Delete /usr/ports/devel/ruby-gems/work
Delete /usr/ports/devel/protobuf/work
Delete /usr/ports/devel/boehm-gc-threaded/work
Delete /usr/ports/devel/m17n-lib/work
Delete /usr/ports/devel/libatomic_ops/work
Delete /usr/ports/devel/boehm-gc/work
Delete /usr/ports/devel/rubygem-rdoc/work
Delete /usr/ports/security/sudo/work
Delete /usr/ports/mail/mailutils/work
done.

もう一度同じようにビルドする.. (なお portsclean -C しているので -w を付けても無意味である)

% nice teetime -t ja-uim-mozc_ portinstall -s ja-uim-mozc
conflicting ja-uim-mozc_20210510.log
logging (from the next line till the end) to ja-uim-mozc_2021051020.log
teetime! 2021年 5月10日 月曜日 20時02分00秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s ja-uim-mozc
〜
--->  Building '/usr/ports/japanese/uim-mozc'
===>  Cleaning for py38-gyp-20200512
===>   /usr/ports/devel/py-gyp/work-py38 not writable, skipping
===>  Cleaning for ja-uim-mozc-2.23.2815.102.01_4
〜
** Listing the failed packages (-:ignored / *:skipped / !:failed)
	! japanese/uim-mozc	(dependent ports)
teetime! 2021年 5月10日 月曜日 20時02分31秒 JST

ムム、またも筆者の環境要因 (http_proxy の設定ミス) でビルドが止まってしまったのだが、それより、またも「〜 not writable, skipping」が出ている。 前述の「ただしうまくいかないこともあるようだ」が起きているようだ。

/usr/ports/devel/py-gyp/ の所へ行って、手動で make clean する。

% cd /usr/ports/devel/py-gyp

% ls
distinfo   files/     Makefile   pkg-descr  work-py38/ 

% make clean
===>  Cleaning for py38-gyp-20200512
===>   /usr/ports/devel/py-gyp/work-py38 not writable, skipping

% sudo make clean
〜
===>  Cleaning for py38-gyp-20200512

今度こそ、ja-uim-mozc をビルドする。

% cd /var/tmp/log/Install/

% nice teetime -t ja-uim-mozc_ portinstall -s ja-uim-mozc
conflicting ja-uim-mozc_20210510.log
conflicting ja-uim-mozc_2021051020.log
logging (from the next line till the end) to ja-uim-mozc_202105102011.log
teetime! 2021年 5月10日 月曜日 20時11分33秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s ja-uim-mozc
〜
Installing ja-uim-mozc-2.23.2815.102.01_4...
To activate uim-mozc, please add the following into ~/.xinitrc,
~/.xsession, or ~/.kde4/env (for KDE4):

export GTK_IM_MODULE=uim
export QT_IM_MODULE=uim
export XMODIFIERS=@im=uim
export XIM=uim
/usr/local/bin/mozc start
uim-xim &
〜
teetime! 2021年 5月10日 月曜日 20時21分57秒 JST

無事にビルド・インストールできた。

◎ uim 及び mozc サーバを有効化 (起動)

先ほどのビルドのログにも出ているようなものを、~/.xinitrc に書く。
筆者は ~/.xinitrc を tcsh 用に書いているので、以下のようにしている。

#!/bin/tcsh
〜
setenv GTK_IM_MODULE uim
setenv QT_IM_MODULE uim
setenv XMODIFIERS @im=uim
setenv XIM uim
/usr/local/bin/mozc start
uim-xim &
〜

一旦、X11 サーバを終了させて、startx し直した。

◎ mozc と uim の設定

「mozc_tool config_dialog」で、mozc の設定が出来たりする。 筆者は以前、スペースの入力を「半角」に設定したような記憶がある。

mozc tool

この時点で、Emacs では mozc で漢字変換できるようになっており、Chromium (chrome) や rxvt-unicode (urxvt) でも、Shift-SPC か「半角/全角」を押して、入力・漢字変換できることを確認した。

uim はどうやって設定するのだろうか。
Xfce4 の「アプリケーション」→「設定」→「入力メソッド」を選択すると、以下が現れた。

uim-pref-gtk failed

uim-gtk3 というものをインストールしてみる。 (実は以前だめだったのだがダメ元で)

% pkg search uim | egrep gtk
ja-uim-tomoe-gtk-0.6.0_15      UIM helper program for Tomoe
uim-gtk-1.8.8_2                GTK+ modules of uim input method
uim-gtk3-1.8.8_2               GTK+ 3.x modules of uim input method

% cd /var/tmp/log/Install/

% nice teetime -t uim-gtk3_ portinstall -s uim-gtk3
logging (from the next line till the end) to uim-gtk3_20210511.log
teetime! 2021年 5月11日 火曜日 18時06分12秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s uim-gtk3
〜
teetime! 2021年 5月11日 火曜日 18時07分41秒 JST

すると、uim-pref-gtk3 というのがインストールされたのだが、uim-pref-gtk はインストールされず、よって Xfce4 の「アプリケーション」→「設定」→「入力メソッド」も同様だった。

uim-gtk3 はアンインストールし、uim-gtk の方にしてみる..

% sudo pkg delete uim-gtk3
〜
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 1 packages (of 0 packages in the universe):

Installed packages to be REMOVED:
	uim-gtk3: 1.8.9.b.20210104

Number of packages to be removed: 1

Proceed with deinstalling packages? [y/N]: y↵
〜
% nice teetime -t uim-gtk_ portinstall -s uim-gtk
logging (from the next line till the end) to uim-gtk_20210511.log
teetime! 2021年 5月11日 火曜日 18時11分15秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s uim-gtk
〜
teetime! 2021年 5月11日 火曜日 18時12分37秒 JST

今度は uim-pref-gtk がインストールされ、Xfce4 の「アプリケーション」→「設定」→「入力メソッド」も可能だった。

ちなみに Shift-SPC か「半角/全角」を押して、入力オン/オフする設定は、以下にある。

uim-pref-gtk

● expect をインストールする

筆者がシェルスクリプト中で用いたりしている。

% cd /var/tmp/log/Install/

% nice teetime -t expect portinstal -s expect
logging (from the next line till the end) to expect20210511.log
teetime! 2021年 5月11日 火曜日 08時54分33秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s expect
〜
teetime! 2021年 5月11日 火曜日 08時54分45秒 JST

● spectacle をインストールする

X11 の画面やウィンドウのスクリーンショットを取る KDE のツールである。

% cd /var/tmp/log/Install/

% nice teetime -t spectacle portinstall -s spectacle
logging (from the next line till the end) to spectacle20210511.log
teetime! 2021年 5月11日 火曜日 08時59分40秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s spectacle
〜

ここで、phonon の設定で、『PULSEAUDIO』が見えて、チェックが入っていなかったのだが、そのままエンターを押して進めてしまった。
Ctrl-c を押してビルドを止めた。

〜
Checking for AVX2 instructions... ^C*** Signal 2
*** Signal 2
*** Signal 2
*** Signal 2
*** Signal 2
*** Signal 2
*** Signal 2
*** Signal 2
--->  [Executing a command as root: sudo /usr/local/sbin/pkgdb -aFOQ]
〜
** Listing the failed packages (-:ignored / *:skipped / !:failed)
	! graphics/spectacle	(dependent ports)
teetime! 2021年 5月11日 火曜日 09時20分02秒 JST

/var/db/ports/multimedia_phonon/options ファイルが存在していたのでディレクトリごと消した (/var/db/ports/multimedia_phonon には options ファイルのみ存在していた)。
そして、portinstall に -w を付けて再開させた。

% nice teetime -t spectacle portinstall -sw spectacle
conflicting spectacle20210511.log
logging (from the next line till the end) to spectacle2021051109.log
teetime! 2021年 5月11日 火曜日 09時20分33秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -sw spectacle
〜

再び phonon の設定が出てくるので、『PULSEAUDIO』 (PulseAudio sound server support) にチェックを入れておいてみる。

phonon

〜
teetime! 2021年 5月11日 火曜日 10時18分14秒 JST

無事にビルド・インストールできた。

余談だが、記載が前後するが、この覚書内の X11 のスクリーンショットは、上の phonon を除き、spectacle で取得している。 上の phonon は ImageMagick の import で取得している。

● git をインストールする

筆者が仕事で使わせてもらっている。

% cd /var/tmp/log/Install/

% nice teetime -t git portinstall -s git
logging (from the next line till the end) to git20210511.log
teetime! 2021年 5月11日 火曜日 15時44分25秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s git
〜
teetime! 2021年 5月11日 火曜日 15時46分59秒 JST

● magit をインストールする

magit というのは、Emacs から git を使うための Emacs Lisp である。
筆者が仕事で使わせてもらっている。

% cd /var/tmp/log/Install/

% pkg search magit
magit-devel-emacs27-2.90.1.1142_1 Interface to Git for Emacs (Development Version)
magit-devel-emacs27_canna-2.90.1.1142_1 Interface to Git for Emacs (Development Version)
magit-devel-emacs27_nox-2.90.1.1142_1 Interface to Git for Emacs (Development Version)
magit-devel-emacs28-2.90.1.1142_1 Interface to Git for Emacs (Development Version)
magit-devel-emacs28_nox-2.90.1.1142_1 Interface to Git for Emacs (Development Version)
magit-emacs27-2.90.1_5         Interface to Git for Emacs
magit-emacs27_canna-2.90.1_5   Interface to Git for Emacs
magit-emacs27_nox-2.90.1_5     Interface to Git for Emacs
magit-emacs28-2.90.1_5         Interface to Git for Emacs
magit-emacs28_nox-2.90.1_5     Interface to Git for Emacs
magit-popup-emacs27-2.13.3_2   Define prefix-infix-suffix command combos
magit-popup-emacs27_canna-2.13.3_2 Define prefix-infix-suffix command combos
magit-popup-emacs27_nox-2.13.3_2 Define prefix-infix-suffix command combos
magit-popup-emacs28-2.13.3_2   Define prefix-infix-suffix command combos
magit-popup-emacs28_nox-2.13.3_2 Define prefix-infix-suffix command combos

% nice teetime -t magit-emacs27_ portinstall -s magit-emacs27
logging (from the next line till the end) to magit-emacs27_20210511.log
teetime! 2021年 5月11日 火曜日 15時52分43秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s magit-emacs27
〜
Installing magit-emacs27-2.90.1_5...
To use Magit, you should add following line to your .emacs file:

(require 'magit)

〜
teetime! 2021年 5月11日 火曜日 15時53分45秒 JST

● xload をインストールする

% cd /var/tmp/log/Install/

% nice teetime -t xload portinstall -s xload
logging (from the next line till the end) to xload20210511.log
teetime! 2021年 5月11日 火曜日 18時31分36秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s xload
〜
teetime! 2021年 5月11日 火曜日 18時31分45秒 JST

実行例。

% xload -bg tan -hl red2 &

xload

● oclock をインストールする

% cd /var/tmp/log/Install

% nice teetime -t oclock portinstal l -s oclock
logging (from the next line till the end) to oclock20210511.log
teetime! 2021年 5月11日 火曜日 18時35分03秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s oclock
〜
teetime! 2021年 5月11日 火曜日 18時35分12秒 JST

ここで筆者の ~/.Xdefaults には、以下の記述があり、oclock に自動的に色が付く。

*customization:		-color

-transparent を付けて、さらに xload のウィンドウの上に置いてみた例。

% oclock -transparent &

oclock

● xlogo をインストールする

% cd /var/tmp/log/Install

% nice teetime -t xlogo portinstall -s xlogo
logging (from the next line till the end) to xlogo20210511.log
teetime! 2021年 5月11日 火曜日 18時38分02秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s xlogo
〜
teetime! 2021年 5月11日 火曜日 18時38分24秒 JST

実行例。 これも ~/.Xdefaults の記述により自動的に色が付いている。

% xlogo -render &

xlogo

● xdu をインストールする

xdu とは、du の出力を入力すると、それをグラフィカルに表示してくれるツールである。

応用次第で、du の出力に類似のテキストをグラフィカルに表示するといった用途も考えられる (筆者はそれを思い付いて実際にやったことがある)。
% cd /var/tmp/log/Install

% nice teetime -t xdu portinstall -s xdu
logging (from the next line till the end) to xdu20210511.log
teetime! 2021年 5月11日 火曜日 18時41分37秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s xdu
〜
teetime! 2021年 5月11日 火曜日 18時41分54秒 JST

ルートパーティションの使用量を表示させる実行例。 (du に -x オプションを付けることにより、別パーティションである /var や /home/distfiles パーティション等が対象外になっている。)

% sudo du -kx / | xdu
〜

n を押すと大きさ順にソートされたり、h を押すとヘルプが表示されたりする。 n を押した所。

xdu (sort with n)

● xpdf をインストールする

% nice teetime -t xpdf portinstall -s xpdf
logging (from the next line till the end) to xpdf20210511.log
teetime! 2021年 5月11日 火曜日 18時45分41秒 JST
teetime! working directory is /home/nsmrtks
teetime> portinstall -s xpdf
〜
teetime! 2021年 5月11日 火曜日 18時46分31秒 JST

● okular のインストールを試みる

okular も、PDF を表示することが出来る、KDE のツールである。

(筆者の環境要因で一度 Ctrl-c で止めた後にやり直している)

% cd /var/tmp/log/Install

% nice teetime -t okular portinstall -s okular
logging (from the next line till the end) to okular20210511.log
teetime! 2021年 5月11日 火曜日 18時50分00秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s okular
〜
^Cfetch: transfer interrupted
*** Signal 2
*** Signal 2
--->  [Executing a command as root: sudo /usr/local/sbin/pkgdb -aFOQ]
** Listing the failed packages (-:ignored / *:skipped / !:failed)
	! graphics/okular	(dependent ports)
teetime! 2021年 5月11日 火曜日 18時52分02秒 JST

ところが、

% nice teetime -t okular portinstall -s okular
conflicting okular20210511.log
logging (from the next line till the end) to okular2021051118.log
teetime! 2021年 5月11日 火曜日 18時52分08秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s okular
〜
===>  mysql57-server-5.7.33 has known vulnerabilities:
mysql57-server-5.7.33 is vulnerable:
  MySQL -- Multiple vulnerabilities
  CVE: CVE-2021-2232
  CVE: CVE-2021-2308
  CVE: CVE-2021-2301
  CVE: CVE-2021-2162
  CVE: CVE-2021-2171
  CVE: CVE-2021-2174
  CVE: CVE-2021-2293
  CVE: CVE-2021-2217
  CVE: CVE-2021-2215
  CVE: CVE-2021-2208
  CVE: CVE-2021-2201
  CVE: CVE-2021-2146
  CVE: CVE-2021-2230
  CVE: CVE-2021-2299
  CVE: CVE-2021-2278
  CVE: CVE-2021-2213
  CVE: CVE-2021-2212
  CVE: CVE-2021-2203
  CVE: CVE-2021-2193
  CVE: CVE-2021-2170
  CVE: CVE-2021-2169
  CVE: CVE-2021-2164
  CVE: CVE-2021-2160
  CVE: CVE-2021-2226
  CVE: CVE-2021-2179
  CVE: CVE-2021-2305
  CVE: CVE-2021-2300
  CVE: CVE-2021-2196
  CVE: CVE-2021-2166
  CVE: CVE-2021-2154
  CVE: CVE-2021-2194
  CVE: CVE-2021-2180
  CVE: CVE-2021-2304
  CVE: CVE-2021-2307
  CVE: CVE-2021-2202
  CVE: CVE-2021-2178
  CVE: CVE-2021-2298
  CVE: CVE-2021-2172
  CVE: CVE-2021-2144
  CVE: CVE-2021-23841
  CVE: CVE-2020-28196
  CVE: CVE-2021-3449
  CVE: CVE-2020-1971
  CVE: CVE-2020-8277
  WWW: https://vuxml.FreeBSD.org/freebsd/56ba4513-a1be-11eb-9072-d4c9ef517024.html

1 problem(s) in 1 installed package(s) found.
=> Please update your ports tree and try again.
=> Note: Vulnerable ports are marked as such even if there is no update available.
=> If you wish to ignore this vulnerability rebuild with 'make DISABLE_VULNERABILITIES=yes'
*** Error code 1

Stop.
make[6]: stopped in /usr/ports/databases/mysql57-server
*** Error code 1

Stop.
make[5]: stopped in /usr/ports/databases/mysql57-server
*** Error code 1

Stop.
make[4]: stopped in /usr/ports/databases/akonadi
*** Error code 1

Stop.
make[3]: stopped in /usr/ports/databases/akonadi
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/net-im/kaccounts-integration
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/misc/kf5-purpose
*** Error code 1

Stop.
make: stopped in /usr/ports/graphics/okular
--->  [Executing a command as root: sudo /usr/local/sbin/pkgdb -aFOQ]
パスワード: 
** Listing the failed packages (-:ignored / *:skipped / !:failed)
	! graphics/okular	(dependent ports)
teetime! 2021年 5月11日 火曜日 19時59分05秒 JST

うーん。

● VirtualBox の UI の設定について

◎ クリップボードの共有

VirtualBox の『デバイス』→『クリップボードの共有』が、何故か「無効」になっていた (仮想マシンごとに設定しないといけない? というか独立?)。 これを「双方向」に変更した。

設定した直後に、VirtualBox でキー入力できなくなって焦ったが、ホストの Windows 側の Cygwin の emacs-w32 では文字入力できるし、それを確かめた後にあらためて VirtualBox に戻ったら、キー入力が復活する。

これで、VirtualBox 内の X11 と、ホストの Windows 間で、コピー & ペーストが出来るようになった。
素晴らしいことに、日本語を含んでいても、正常にコピー & ペースト出来る! (TigerVNC サーバー + RealVNC Viewer では、これが出来なかった。)

◎ 中ボタン (emulate 3-button)

VirtualBox の設定ではないが..

RealVNC Viewer だと、マウスの左右クリックで中ボタンをエミュレートする機能があった気がするのだが (最近は使用していないので分からない)、そのような設定が、VirtualBox 自体や、あるいは Xfce にも、どうにも見つけられない。 筆者が使っている PC に中ボタンが無いので、X11 でこれが出来ないと何かと不便だ。

いろいろ探した所、以下を参考にして、

中クリック

筆者の MS-Windows (あるいはタッチパッドのドライバ?) 側の設定で、タッチパッドを三本指タップで「マウスの中央ボタン」の動作をさせられることが分かった。

middle button

あるいは xorg.conf の設定でも中ボタンエミュレーションが可能らしい。 (Emulate3Buttons)

なお中央ボタン (三本指タップ) によるペーストについては、厳密には効果が違うが、rxvt-unicode (urxvt) の場合は、マウスで範囲選択後 Ctrl-Alt-c でコピー、及び Shift-Insert でペースト出来ることが分かり、これと Emacs でのコピーや Ctrl-y でのペーストなどと併用して、以前ほど使用しないようにはなっている。 また Chromium (chrome) 等のように Ctrl-c でコピー / Ctrl-v でペーストできるものもある。

● mplayer をインストールする

% cd /var/tmp/log/Install

% nice teetime -t mplayer portinstall -s mplayer
logging (from the next line till the end) to mplayer20210512.log
teetime! 2021年 5月12日 水曜日 18時10分08秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s mplayer
〜

ここで『PULSEAUDIO』 (PulseAudio sound server support) にチェックを入れておいてみる。

mplayer

〜
teetime! 2021年 5月12日 水曜日 18時16分05秒 JST

無事にビルド・インストールできた。

音声も正常に鳴るようだ。

実は以前この PC と VirtualBox で、音がどうしても鳴らないという事があり、苦肉の策で pulseaudio で回避していた。 そのためここまで各 ports で PULSEAUDIO のオプションを付けてビルドしていたのだが、それらは余計だったかもしれない。

● Firefox をインストールする

筆者は NetBSD や Windows ではずっと SeaMonkey を使っているのだが、 FreeBSD では少し前に ports から削除されてしまった。 :-(

% cd /var/tmp/log/Install

% nice teetime -t firefox portinstall -s firefox
logging (from the next line till the end) to firefox20210512.log
teetime! 2021年 5月12日 水曜日 18時33分34秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s firefox
〜

firefox の設定には『PULSEAUDIO』にあらかじめチェックが入っていた。

firefox

〜
--->  [Executing a command as root: sudo /usr/bin/script -qa /tmp/portinstall20210512-56128-1tg7e86 env make reinstall]
パスワード: 
sudo: パスワードの読み込みがタイムしました
sudo: パスワードが必要です
** Command failed [exit code 1]: sudo /usr/bin/script -qa /tmp/portinstall20210512-56128-1tg7e86 env make reinstall
** Fix the installation problem and try again.
--->  [Executing a command as root: sudo /usr/local/sbin/pkgdb -aFOQ]
パスワード: 
sudo: パスワードの読み込みがタイムしました
sudo: パスワードが必要です
/usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:487:in `__system': Command failed [exit code 1]: sudo /usr/local/sbin/pkgdb
 -aFOQ (CommandFailedError)
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:510:in `__sudo'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:516:in `xsudo'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgdb.rb:1062:in `autofix!'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgdb.rb:1058:in `autofix'
	from /usr/local/sbin/portinstall:1139:in `do_install'
	from /usr/local/sbin/portinstall:842:in `block (2 levels) in main'
	from /usr/local/sbin/portinstall:838:in `each'
	from /usr/local/sbin/portinstall:838:in `block in main'
	from /usr/local/lib/ruby/2.7/optparse.rb:1093:in `initialize'
	from /usr/local/sbin/portinstall:238:in `new'
	from /usr/local/sbin/portinstall:238:in `main'
	from /usr/local/sbin/portinstall:2380:in `<main>'
teetime! 2021年 5月12日 水曜日 20時33分32秒 JST

放置していたら sudo がタイムアウトしてしまったので、portinstall に -w を付けて再開。

% nice teetime -t firefox portinstall -sw firefox
conflicting firefox20210512.log
logging (from the next line till the end) to firefox2021051222.log
teetime! 2021年 5月12日 水曜日 22時43分30秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -sw firefox
〜
teetime! 2021年 5月12日 水曜日 22時44分42秒 JST

無事にビルド・インストールできた。

試しに YouTube で無事に動画が音声付きで再生できた。

● LibreOffice をインストールする

% cd /var/tmp/log/Install

% nice teetime -t libreoffice portinstall -s libreoffice
logging (from the next line till the end) to libreoffice20210512.log
teetime! 2021年 5月12日 水曜日 23時04分06秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s libreoffice
〜
===>  Switching to root credentials for 'install' target
Password:
sudo: timed out reading password
sudo: a password is required
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/x11-fonts/crosextrafonts-caladea-ttf
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/editors/libreoffice
*** Error code 1

Stop.
make: stopped in /usr/ports/editors/libreoffice
egrep: empty (sub)expression
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portinstall20210512-33096-1673eac env make FETCH_BEFORE_ARGS=-q
** Fix the problem and try again.
--->  [Executing a command as root: sudo /usr/local/sbin/pkgdb -aFOQ]
パスワード: 
sudo: パスワードの読み込みがタイムしました
sudo: パスワードが必要です
/usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:487:in `__system': Command failed [exit code 1]: sudo /usr/local/sbin/pkgdb
 -aFOQ (CommandFailedError)
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:510:in `__sudo'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:516:in `xsudo'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgdb.rb:1062:in `autofix!'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgdb.rb:1058:in `autofix'
	from /usr/local/sbin/portinstall:1139:in `do_install'
	from /usr/local/sbin/portinstall:842:in `block (2 levels) in main'
	from /usr/local/sbin/portinstall:838:in `each'
	from /usr/local/sbin/portinstall:838:in `block in main'
	from /usr/local/lib/ruby/2.7/optparse.rb:1093:in `initialize'
	from /usr/local/sbin/portinstall:238:in `new'
	from /usr/local/sbin/portinstall:238:in `main'
	from /usr/local/sbin/portinstall:2380:in `<main>'
teetime! 2021年 5月13日 木曜日 00時45分09秒 JST

放置していたら sudo がタイムアウトしてしまったので、portinstall に -w を付けて再開。

% nice teetime -t libreoffice portinstall -sw libreoffice
logging (from the next line till the end) to libreoffice20210513.log
teetime! 2021年 5月13日 木曜日 00時45分27秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -sw libreoffice
〜
teetime! 2021年 5月13日 木曜日 00時48分53秒 JST

無事にビルド・インストールできた。

だが、少し経ってから、Shift-SPC や「半角/全角」を押しても UIM で日本語入力できないという問題に気づいた。

ここで、/var/db/ports/editors_libreoffice/options というファイルの内容を見てみると、QT5 が SET されている。

〜
OPTIONS_FILE_SET+=QT5
〜

経験上、これを UNSET にすると、UIM の問題が解消する可能性がある (それが最善なのかという問題があるが)。

LibreOffice はビルドに時間がかかるので、今は忘れないうちに、/var/db/ports/editors_libreoffice/ は中に options ファイルが 1個だけあるので、ディレクトリをとりあえずリネームして無効化しておき、次の更新ビルド時に QT5 のオプションを変更する作戦で行く。

% cd /var/db/ports

% ls -lA editors_libreoffice/
total 4
-rw-r--r--  1 root  wheel  604  5月 12 23:36 options

% ls -ld editors_libreoffice*
drwxr-xr-x  2 root  wheel  512  5月 12 23:36 editors_libreoffice/

% sudo mv -i editors_libreoffice editors_libreoffice.bak
〜

% ls -ld editors_libreoffice*
drwxr-xr-x  2 root  wheel  512  5月 12 23:36 editors_libreoffice.bak/

● ico をインストールする

X11 サーバやその周りの性能によって速さが変わる。

% cd /var/tmp/log/Install/

% nice teetime -t ico portinstall -s ico
logging (from the next line till the end) to ico20210513.log
teetime! 2021年 5月13日 木曜日 17時56分30秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s ico
〜
teetime! 2021年 5月13日 木曜日 17時56分39秒 JST

実行してみた所。 こんなもんか?

% ico &

ico

ico(1) (man ico) には見当たらないが、ico -h などとすると (unrecognized argument -h と言われるが)、-threads number という実行オプションがあることが分かる。

% ico -h
ico: unrecognized argument -h

usage:  ico [options]

where options include:
〜
    -threads number         number of windows, each its own thread
    -version                print program version

これをやると、スレッド毎にウィンドウが開かれる。
(昔マルチスレッドが一般的でなかった 1990年代中頃にマルチ CPU の LUNA-88K2 で、リリースされたばかりの X11R6 をソースからビルドしてやったことがある。)

以下のようにして 8 スレッドを指示してみた所、

% ico -threads 8 &

ico window x8

ps で見ると、ico のプロセスは 1個しかないが..

% ps x | egrep ico
13548  0  I    11:49.95 ico -threads 8
13590  0  S+    0:00.00 egrep ico

top コマンドを実行し、さらに「H」を押すと、各論理 CPU (「C」の列) にそれなりにスレッドが分散されていることが分かる。

ico 8 threads and top

● Chromium (chrome) で音が鳴らない

前述のように、Chromium (chrome) のビルド時に、PULSEAUDIO のオプションを付けてビルドしていた。
おそらくそのせいで、Chromium で、普通に音が出なくなってしまったことに気づいた。

これも前述だが、以前 VirtualBox で音がどうしても鳴らなかった事があり、苦肉の策で、ホスト の Windows 側の Cygwin で pulseaudio を常駐させ、VirtualBox 内では出力に pulseaudio を使用することで、音を鳴らしていたことがあった。

これはどうやるかというと、Cygwin (Windows 側) では、以下などのようにして pulseaudio を常駐させておく。

$ pulseaudio.exe --start --exit-idle-time=-1

VirtualBox 側の FreeBSD だが、まず環境変数 PULSE_SERVER に、Windows のホスト名 (あるいは IP アドレスでもいけると思われる) を指定しておく。 筆者は /etc/hosts に Windows のホスト名と IPv6 アドレスを記述しておき、そのホスト名で指定していた。

これで、例えば mplayer だと、-ao pulse を指定すると、pulseaudio 経由で、Windows 側から音が鳴る。

Firefox は、環境変数 PULSE_SERVER があるとそれに従って pulseaudio から、そうでないと VirtualBox 側から音が鳴るようだ。

Chromium (chrome) だが、確かに環境変数 PULSE_SERVER があると音が鳴るのだが、Firefox と違い、環境変数 PULSE_SERVER を無くしても、VirtualBox 側から音が出てくれないようだ。
Firefox のように、pulseaudio 付きでビルドしていても、それを使わないように実行時に動作を変えられるとよいのだが.. その方法が分からない。

もはや一般的に VirtualBox から音が出ない問題は解消したので、Windows 側に pulseaudio 常駐は無しで行きたい。

しょうがないので、Chromium を PULSEAUDIO 無しでビルドし直すことにする。

/var/db/ports/www_chromium というディレクトリに、options ファイルが 1個だけ存在しているので、www_chromium ディレクトリをとりあえずリネームして無効化する。

% cd /var/db/ports

% ls -lA www_chromium/
total 4
-rw-r--r--  1 root  wheel  578  5月  6 23:46 options

% sudo mv -i www_chromium www_chromium.bak
〜

% ls -ld www_chromium*
drwxr-xr-x  2 root  wheel  512  5月  6 23:41 mwww_chromium.bak

以下のように chromium を一旦アンインストールして、ビルド・インストールすることにした。 (ビルドが完了するまで chromium が使えなくなってしまうが)

% cd /var/tmp/log/Install/

% nice teetime -t chromium portinstall -s chromium
logging (from the next line till the end) to chromium20210513.log
teetime! 2021年 5月13日 木曜日 19時10分32秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s chromium
〜
** Found already installed package(s) of 'www/chromium': chromium-90.0.4430.93
teetime! 2021年 5月13日 木曜日 19時10分34秒 JST

% sudo pkg delete chromium
〜
Deinstallation has been requested for the following 1 packages (of 0 packages in the universe):

Installed packages to be REMOVED:
	chromium: 90.0.4430.93

Number of packages to be removed: 1

The operation will free 299 MiB.

Proceed with deinstalling packages? [y/N]: y
〜
% nice teetime -t chromium portinstall -s chromium
conflicting chromium20210513.log
logging (from the next line till the end) to chromium2021051319.log
teetime! 2021年 5月13日 木曜日 19時11分25秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s chromium
〜

今度はデフォルトのまま、PULSEAUDIO にはチェックを入れず、SNDIO にチェックが入った状態にしておいた。

chromium

〜
--->  [Executing a command as root: sudo /usr/bin/script -qa /tmp/portinstall20210513-14336-1pq8as9 env make reinstall]
パスワード: 
sudo: パスワードの読み込みがタイムしました
sudo: パスワードが必要です
** Command failed [exit code 1]: sudo /usr/bin/script -qa /tmp/portinstall20210513-14336-1pq8as9 env make reinstall
** Fix the installation problem and try again.
--->  [Executing a command as root: sudo /usr/local/sbin/pkgdb -aFOQ]
パスワード: 
sudo: パスワードの読み込みがタイムしました
sudo: パスワードが必要です
/usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:487:in `__system': Command failed [exit code 1]: sudo /usr/local/sbin/pkgdb
 -aFOQ (CommandFailedError)
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:510:in `__sudo'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgtools.rb:516:in `xsudo'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgdb.rb:1062:in `autofix!'
	from /usr/local/lib/ruby/site_ruby/2.7/pkgtools/pkgdb.rb:1058:in `autofix'
	from /usr/local/sbin/portinstall:1139:in `do_install'
	from /usr/local/sbin/portinstall:842:in `block (2 levels) in main'
	from /usr/local/sbin/portinstall:838:in `each'
	from /usr/local/sbin/portinstall:838:in `block in main'
	from /usr/local/lib/ruby/2.7/optparse.rb:1093:in `initialize'
	from /usr/local/sbin/portinstall:238:in `new'
	from /usr/local/sbin/portinstall:238:in `main'
	from /usr/local/sbin/portinstall:2380:in `<main>'
teetime! 2021年 5月14日 金曜日 00時06分44秒 JST

放置していたら sudo がタイムアウトしてしまったので、portinstall に -w を付けて再開。

% nice teetime -t chromium portinstall -sw chromium
logging (from the next line till the end) to chromium20210514.log
teetime! 2021年 5月14日 金曜日 00時18分48秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -sw chromium
〜
--->  [Executing a command as root: sudo /usr/local/sbin/pkgdb -aFOQ]

無事にビルド・インストールできた..

..だが、音は、鳴らない!

うーん、どうしたものか..

これとは別の、FreeBSD 12.2 のデスクトップ機 (オンボードのサウンドデバイス) では、何も考えなくても音が鳴ったんだけどな..
と思って、そちらの /var/db/ports/www_chromium/options を見てみたら..

〜
OPTIONS_FILE_SET+=ALSA
OPTIONS_FILE_SET+=PULSEAUDIO
OPTIONS_FILE_UNSET+=SNDIO

SNDIO は UNSET で、ALSA と PULSEAUDIO が SET になっているではないか。
たしかに、PULSEAUDIO は SET した記憶もあるが、ALSA と SNDIO が違うのは、なんでそうなってるんだろう。

うーん、chromium もビルドに時間がかかるので、次の chromium の更新の機会に試してみるか..
忘れないうちに、先ほどと同様に、/var/db/ports/www_chromium をリネームしておく (/var/db/ports/www_chromium.bak は消去)。

● /etc/crontab を変更する

デフォルトの FreeBSD の設定では、/etc/crontab にて、夜中〜早朝深夜に daily / weekly / monthly の自動メンテナンスが走るようになっている。

# /etc/crontab - root's crontab for FreeBSD
〜
#minute	hour	mday	month	wday	who	command
〜
# Perform daily/weekly/monthly maintenance.
1	3	*	*	*	root	periodic daily
15	4	*	*	6	root	periodic weekly
30	5	1	*	*	root	periodic monthly
〜

筆者の環境はそのような時間に PC の電源が入っていないので、これを日中に実行するように変更する。

% cd /etc

% sudo cp -ip crontab crontab.ORG
〜

Emacs の C-x C-f からファイル名を /sudo::/etc/crontab というものを指定して編集した。

〜
13	9	*	*	*	root	periodic daily
13	12	*	*	2	root	periodic weekly
13	17	1	*	*	root	periodic monthly
〜

なお、/etc/crontab ファイルの更新さえすれば、cron デーモンの再起動等は特に不要である。
cron(8) (man cron) より:

Additionally, cron checks each minute to see if its spool directory's modification time (or the modification time on /etc/crontab) has changed, and if it has, cron will then examine the modification time on all crontabs and reload those which have changed. Thus cron need not be restarted whenever a crontab file is modified. 〜

これを設定すると、毎日 root 宛にメールが来るようになる。
自分は sudo -i して mail コマンドで見ている。

● バックアップと freebsd-update と portupgrade など

筆者は、ホームディレクトリのバックアップと、freebsd-update fetch と、portupgrade 等を一括して行うスクリプトを、日々走らせている (手動で起動)。
(なお普通の人はパッケージの更新は portupgrade ではなく pkg upgrade でバイナリで行えばよいでしょう)

ただしここまで、新環境ではまだ走らせていなかった。 それを設定する。

以下がコマンドラインから実行するスクリプトである。 ファイル名は bup としている。

#!/bin/sh
# 2019-10-18 nsmrtks
# 2014-12-01,29 nsmrtks
# 2014-03-14 for fb092 ..
# 2012-03-16, 09-03, 11-18, 2013-02-21, 06-04 nsmrtks

# (require back2, updatefb and /var/tmp/log/pvc.sh)

# check the dir
cd /var/tmp/log || exit 1

# get the privilege
sudo pwd

# compress the logs
find . -name \*.log -mtime +1 -print0 | xargs -0 xz -v

# backup
back2

# updatefb
[ -d updatefb ] || ( set -x ; mkdir updatefb )
( cd updatefb && teetime updatefb )

# portupgrade
sh pvc.sh

# EoF

このスクリプトからはさらに、back2 と updatefb と pvc.sh というスクリプトが呼び出されている。
bup 及び、back2 と updatefb は、~/bin ディレクトリに配置してコマンドパスを通してある。
pvc.sh は (旧環境からコピーしてきて) /var/tmp/log に配置する。

back2 は、ホームディレクトリのバックアップを行うスクリプトである。 短いのでついでに紹介しておく。

#!/bin/sh
# 2021-05-10 nsmrtks
# 2015-02-03,11-25,2016-05-29,2017-10-02,2019-10-18,2020-02-03 nsmrtks
# moved from bup

if [ `hostname`. != fb130.magic.or. ]; then
	echo this is not fb130, backup not supported
	exit 1
fi

[ -d /var/tmp/log/back ] || ( set -x ; mkdir /var/tmp/log/back )
cd /var/tmp/log/back || exit 1

set -x
teetime -t rsync \
 rsync -a --delete-before /home/nsmrtks/ fb121c:/zfs/nsmrtks/

# EoF

updatefb は、freebsd-update fetch や pkg audit -F や ports ツリーの更新を行うスクリプトである。 以下のような内容になっている。

#!/bin/sh
# 2010-11-04,12,2013-03-14-	Time-stamp: <2017-10-23 13:59:14 nsmrtks>

# (sudoers may need to have `Defaults env_keep += "http_proxy"')

date
echo ==========================================================================
( set -x ; sudo freebsd-update fetch )
echo ==========================================================================
if type pkg >/dev/null ; then
	# They hang. Why??
	( set -x ; sudo pkg update )
	echo ------------------------------------------------------------------
	( set -x ; sudo pkg audit -F )
else
	( set -x ; sudo portaudit -Fda )	
fi
echo ==========================================================================
( set -x ; sudo portsnap fetch )
echo ==========================================================================
( set -x ; portsnap update )
echo ==========================================================================
( set -x ; sudo portversion -c > portversion-c.out )
echo ==========================================================================
date

# EoF

この最後の方で、/var/tmp/log/updatefb/portversion-c.out というファイルを作成している。 これは中身が sh スクリプトになっており、sh で実行すると、更新があるパッケージについて portupgrade を実行してくれるというものになっている。 (更新があるパッケージ名が内部でずらずら列挙されている)

pvc.sh が、sh portversion-c.out を実行するスクリプトになっている。 (前述の通り /var/tmp/log に配置)

#!/bin/sh
# 2012-03-07,2019-10-18 nsmrtks

# Usage:
#	sh pvc.sh [portupgrade options..]
# Example:
#	sh pvc.sh
#	sh pvc.sh -w

# (require teetime and ../updatefb/portversion-c.out)

[ -d /var/tmp/log/pvc ] || ( set -x ; mkdir /var/tmp/log/pvc )

set -x
cd /var/tmp/log/pvc && \
 nice teetime -t pvc sh ../updatefb/portversion-c.out -s $*

# EoF

準備が出来た。おもむろに bup を実行する..

なお nice +20 〜 としているがこれは csh (tcsh) 系の場合で、もし bash 等 sh 系の場合は nice -n 20 〜 などとする。 (あるいは効果は変わるが nice だけでもよいしそもそも nice 無しでもよい)
% nice +20 bup
〜
/var/tmp/log
〜
+ mkdir /var/tmp/log/back
+ teetime -t rsync rsync -a --delete-before /home/nsmrtks/ fb121c:/zfs/nsmrtks/
logging (from the next line till the end) to rsync20210515.log
teetime! 2021年 5月15日 土曜日 13時33分58秒 JST
teetime! working directory is /var/tmp/log/back
teetime> rsync -a --delete-before /home/nsmrtks/ fb121c:/zfs/nsmrtks/
teetime! 2021年 5月15日 土曜日 13時34分32秒 JST
+ mkdir updatefb
logging (from the next line till the end) to updatefb20210515.log
teetime! 2021年 5月15日 土曜日 13時34分32秒 JST
teetime! working directory is /var/tmp/log/updatefb
teetime> updatefb
2021年 5月15日 土曜日 13時34分32秒 JST
==========================================================================
+ sudo freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 2 mirrors found.
Fetching metadata signature for 13.0-RELEASE from update2.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.
Preparing to download files... done.

No updates needed to update system to 13.0-RELEASE-p0.
==========================================================================
+ sudo pkg update
Updating FreeBSD repository catalogue...
Fetching packagesite.txz: .......... done
Processing entries: .......... done
FreeBSD repository update completed. 30361 packages processed.
All repositories are up to date.
------------------------------------------------------------------
+ sudo pkg audit -F
vulnxml file up-to-date
samba412-4.12.14_1 is vulnerable:
  samba -- negative idmap cache entries vulnerability
  CVE: CVE-2021-20254
  WWW: https://vuxml.FreeBSD.org/freebsd/6f33d38b-aa18-11eb-b3f1-005056a311d1.html

python38-3.8.9 is vulnerable:
  Python -- multiple vulnerabilities
  WWW: https://vuxml.FreeBSD.org/freebsd/bffa40db-ad50-11eb-86b8-080027846a02.html

chromium-90.0.4430.93 is vulnerable:
  chromium -- multiple vulnerabilities
  CVE: CVE-2021-30520
  CVE: CVE-2021-30519
  CVE: CVE-2021-30518
  CVE: CVE-2021-30517
  CVE: CVE-2021-30516
  CVE: CVE-2021-30515
  CVE: CVE-2021-30514
  CVE: CVE-2021-30513
  CVE: CVE-2021-30512
  CVE: CVE-2021-30511
  CVE: CVE-2021-30510
  CVE: CVE-2021-30509
  CVE: CVE-2021-30508
  CVE: CVE-2021-30507
  CVE: CVE-2021-30506
  WWW: https://vuxml.FreeBSD.org/freebsd/3cac007f-b27e-11eb-97a0-e09467587c17.html

ImageMagick7-7.0.10.24_3 is vulnerable:
  ImageMagick7 -- multiple vulnerabilities
  CVE: CVE-2021-20313
  CVE: CVE-2021-20312
  CVE: CVE-2021-20311
  CVE: CVE-2021-20310
  CVE: CVE-2021-20309
  CVE: CVE-2021-20246
  CVE: CVE-2021-20245
  CVE: CVE-2021-20244
  CVE: CVE-2021-20243
  CVE: CVE-2021-20241
  CVE: CVE-2021-20176
  CVE: CVE-2020-29599
  CVE: CVE-2020-27829
  WWW: https://vuxml.FreeBSD.org/freebsd/a7c60af1-b3f1-11eb-a5f7-a0f3c100ae18.html

rubygem-rdoc-6.3.0 is vulnerable:
  RDoc -- command injection vulnerability
  CVE: CVE-2021-31799
  WWW: https://vuxml.FreeBSD.org/freebsd/57027417-ab7f-11eb-9596-080027f515ea.html

flac-1.3.3 is vulnerable:
  FLAC -- out-of-bounds read
  CVE: CVE-2020-0499
  WWW: https://vuxml.FreeBSD.org/freebsd/49346de2-b015-11eb-9bdf-f8b156b6dcc8.html

6 problem(s) in 6 installed package(s) found.
==========================================================================
+ sudo portsnap fetch
〜

今回も freebsd-update fetch で更新が出ていなかった。 (もし更新が出ていたら freebsd-update install を実行して、場合によっては再起動も必要だろう。)

bup は、最後に pvc.sh (前述の通り portupgrade を実行するためのスクリプト) を実行する。
sudo のパスワード入力を求められる場面が何回もあったので入力する。

LibreOffice の更新ビルドが来た。 前述の通り、QT5 のチェックを外してみる。

libreoffice

〜
** Listing the failed packages (-:ignored / *:skipped / !:failed)
	! devel/rubygem-rdoc (rubygem-rdoc-6.3.0)	(fetch error)
	* devel/py-six (py27-six-1.15.0)
	* devel/py-babel (py38-Babel-2.9.0)
	* editors/libreoffice (libreoffice-7.1.2.2_7)
	* lang/spidermonkey78 (spidermonkey78-78.7.0_3)
	! www/chromium (chromium-90.0.4430.93)	(unknown build error)
teetime! 2021年 5月15日 土曜日 20時20分05秒 JST

適当に放置していたら、sudo がタイムアウトしてしまったこともあったので、portupgrade に失敗したものも出てきた。

このようなとき、bup をもう一度実行することも考えられるが、色々なものを再実行して時間がかかるため、bup が最後に実行する pvc.sh のみ実行し直すことにする。
それには、/var/tmp/log に行き (そこに pvc.sh を配置している)、手動で pvc.sh に -w を付けて実行する (pvc.sh に引数を付けるとそれが portupgrade のオプションとして渡される)。

% cd /var/tmp/log

% nice +20 sh pvc.sh -w
+ cd /var/tmp/log/pvc
+ nice teetime -t pvc sh ../updatefb/portversion-c.out -s -w
conflicting pvc20210515.log
logging (from the next line till the end) to pvc2021051520.log
teetime! 2021年 5月15日 土曜日 20時45分28秒 JST
teetime! working directory is /var/tmp/log/pvc
teetime> sh ../updatefb/portversion-c.out -s -w
〜

今度は chromium の更新ビルドが来た。 前述の通り、ALSA と PULSEAUDIO にチェックを入れ、SNDIO のチェックを外してみる。

chromium

〜
===>  Switching to root credentials to create /var/db/ports/audio_alsa-plugins
Password:
sudo: timed out reading password
sudo: a password is required
===> Cannot create /var/db/ports/audio_alsa-plugins, check permissions
*** Error code 1

Stop.
make[3]: stopped in /usr/ports/audio/alsa-plugins
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/audio/alsa-plugins
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/www/chromium
*** Error code 1

Stop.
make: stopped in /usr/ports/www/chromium

^C

放置していたら sudo がタイムアウトした上、変な状態になってしまったので、Ctrl-c で止めた。 いま一度、再開させる。

% nice +20 sh pvc.sh -w
+ cd /var/tmp/log/pvc
+ nice teetime -t pvc sh ../updatefb/portversion-c.out -s -w
logging (from the next line till the end) to pvc20210516.log
teetime! 2021年 5月16日 日曜日 02時18分59秒 JST
teetime! working directory is /var/tmp/log/pvc
teetime> sh ../updatefb/portversion-c.out -s -w
〜
=> rdoc-6.3.1.gem doesn't seem to exist in /usr/ports/distfiles/rubygem.
=> Attempting to fetch https://rubygems.org/downloads/rdoc-6.3.1.gem
fetch: transfer timed out
fetch: rdoc-6.3.1.gem appears to be truncated: 0/569344 bytes
=> Attempting to fetch http://distcache.FreeBSD.org/ports-distfiles/rubygem/rdoc-6.3.1.gem
fetch: http://distcache.FreeBSD.org/ports-distfiles/rubygem/rdoc-6.3.1.gem: Not Found
=> Couldn't fetch it - please try to retrieve this
=> port manually into /usr/ports/distfiles/rubygem and try again.
*** Error code 1

Stop.
make: stopped in /usr/ports/devel/rubygem-rdoc
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20210516-24310-1p7nb3d env UPGRADE_TOOL=portupgrade UPGRADE_P
ORT=rubygem-rdoc-6.3.0 UPGRADE_PORT_VER=6.3.0 make FETCH_BEFORE_ARGS=-q
** Fix the problem and try again.
--->  Upgrading 'chromium-90.0.4430.93' to 'chromium-90.0.4430.212' (www/chromium)
〜
** Listing the failed packages (-:ignored / *:skipped / !:failed)
	! devel/rubygem-rdoc (rubygem-rdoc-6.3.0)	(fetch error)
teetime! 2021年 5月16日 日曜日 02時29分41秒 JST

うーん、途中 rdoc-6.3.1.gem というのが fetch 出来なくて、その部分が失敗した。 もう一度、再開させる。 (以下は筆者の環境要因でさらにもう一回失敗した後にやり直している)

% nice +20 sh pvc.sh -w
+ cd /var/tmp/log/pvc
+ nice teetime -t pvc sh ../updatefb/portversion-c.out -s -w
conflicting pvc20210516.log
conflicting pvc2021051602.log
logging (from the next line till the end) to pvc202105160234.log
teetime! 2021年 5月16日 日曜日 02時34分57秒 JST
teetime! working directory is /var/tmp/log/pvc
teetime> sh ../updatefb/portversion-c.out -s -w
[Reading data from pkg(8) ... - 846 packages found - done]
--->  Upgrading 'rubygem-rdoc-6.3.0' to 'rubygem-rdoc-6.3.1' (devel/rubygem-rdoc)
--->  Building '/usr/ports/devel/rubygem-rdoc'
===>  License GPLv2 RUBY accepted by the user
===>   rubygem-rdoc-6.3.1 depends on file: /usr/local/sbin/pkg - found
=> rdoc-6.3.1.gem doesn't seem to exist in /usr/ports/distfiles/rubygem.
=> Attempting to fetch https://rubygems.org/downloads/rdoc-6.3.1.gem
fetch: transfer timed out
fetch: rdoc-6.3.1.gem appears to be truncated: 0/569344 bytes
=> Attempting to fetch http://distcache.FreeBSD.org/ports-distfiles/rubygem/rdoc-6.3.1.gem
fetch: http://distcache.FreeBSD.org/ports-distfiles/rubygem/rdoc-6.3.1.gem: Not Found
=> Couldn't fetch it - please try to retrieve this
=> port manually into /usr/ports/distfiles/rubygem and try again.
*** Error code 1

Stop.
make: stopped in /usr/ports/devel/rubygem-rdoc
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20210516-40563-1q2srn3 env UPGRADE_TOOL=portupgrade UPGRADE_P
ORT=rubygem-rdoc-6.3.0 UPGRADE_PORT_VER=6.3.0 make FETCH_BEFORE_ARGS=-q
** Fix the problem and try again.
** Listing the failed packages (-:ignored / *:skipped / !:failed)
	! devel/rubygem-rdoc (rubygem-rdoc-6.3.0)	(fetch error)
teetime! 2021年 5月16日 日曜日 02時40分45秒 JST

うーん..
迷った末、ブラウザで https://rubygems.org/gems/rdoc/versions/6.3.1 というのを Google で探し当て、そこの「ダウンロード」を押すと、rdoc-6.3.1.gem があっさりとダウンロードできた。
その「ダウンロード」がまさに https://rubygems.org/downloads/rdoc-6.3.1.gem のようなのだが..

ともかく、その rdoc-6.3.1.gem ファイルを、/usr/ports/distfiles/rubygem/ に mv する。
そしていま一度 sh pvc.sh -w を再開させる。

% nice +20 sh pvc.sh -w
+ cd /var/tmp/log/pvc
+ nice teetime -t pvc sh ../updatefb/portversion-c.out -s -w
conflicting pvc20210516.log
conflicting pvc2021051602.log
logging (from the next line till the end) to pvc202105160255.log
teetime! 2021年 5月16日 日曜日 02時55分26秒 JST
teetime! working directory is /var/tmp/log/pvc
teetime> sh ../updatefb/portversion-c.out -s -w
〜
teetime! 2021年 5月16日 日曜日 02時55分40秒 JST

今度こそ、全ての portupgrade が成功した。

以降は一日一回のペースで bup コマンド (前述だがホームディレクトリのバックアップと freebsd-update fetch と portupgrade) を実行することにする。
なお、前述だが freebsd-update fetch で何か出たなら、さらに freebsd-update install を実行し、必要なら FreeBSD を再起動しないといけない。

◎ LibreOffice の日本語入力について

Shift-SPC や「半角/全角」を押して無事に UIM で日本語入力できるようになったことを確認した。

◎ Chromium の音声について

YouTube で無事に音が鳴るように鳴ったことを確認した! (pulseaudio を使わずに)

● BSDstats をインストール・実行する

以下を望まないならインストールしなくてよい。
これをインストール・実行すると、 *BSD Usage Statistics: Home で表示される (BSDstats で報告された各 BSD の稼働台数やシェア等が表示される)、世界中の *BSD の統計情報に追加される。

% cd /var/tmp/log/Install/

% nice teetime -t bsdstats portinstall -s bsdstats
logging (from the next line till the end) to bsdstats20210516.log
teetime! 2021年 5月16日 日曜日 22時35分13秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s bsdstats
〜
Installing bsdstats-7.0_2...
You installed BSDstats: script reporting statistics about your machine.

To enable monthly reporting, add this line to /etc/periodic.conf:
	monthly_statistics_enable="YES"

To disable parts of reporting, add these lines to /etc/periodic.conf:
	monthly_statistics_report_devices="NO"
	monthly_statistics_report_ports="NO"

To limit which ports are being submitted:
	create /usr/local/etc/bsdstats.conf and list ports to report in
	the form ${category}/${portname}, one entry per line. It is also
	possible to use the special self explanatory keyword "all-ports".
Example:
	sysutils/bsdstats
	ports-mgmt/pkg

To enable reporting on bootup, add this line to /etc/rc.conf:
	bsdstats_enable="YES"

To run it manually any time:
	bsdstats-send

To view current statistics, go to:
	http://www.bsdstats.org/

You can build bsdstats with TOR port option to submit anonymously

--->  [Executing a command as root: sudo /usr/bin/script -qa /tmp/portinstall20210516-72437-1djh9pk env make clean]
===>  Cleaning for bsdstats-7.0_2
--->  [Executing a command as root: sudo /usr/local/sbin/pkgdb -aFOQ]
teetime! 2021年 5月16日 日曜日 22時35分33秒 JST
以前は、ビルド・インストール時に、BSDstats の初回実行 (おそらく bsdstats-send コマンド) も自動的に行われていたのだが、今回は行われないようだ。

以下の行を /etc/rc.conf に追記する (これも以前はビルド・インストール時に自動的に行われていたのだが今回は行われないようだ)。 これはブート時に自動的に bsdstats-send コマンドを実行するものである。

bsdstats_enable="YES"

また、/etc/periodic.conf ファイルを以下のようにする。 ファイル自体が存在していなかったので新規作成している。

# 2021-05-16

# see /var/tmp/log/Install/bsdstats20210516.log*
monthly_statistics_enable="YES"

# EoF

これは、/usr/local/etc/periodic/monthly/300.statistics というファイルが今回インストールされており、それを発動させるもののようだ。
ただ、(/etc/crontab で指定した) periodic monthly の時間に FreeBSD が起動していないと、その月は発動しないように思う。

手動で発動させることも出来る。 その前に、 *BSD Usage Statistics: Home の、FreeBSD の所の、Systems This Month の数値を確認しておこう。
次に、sudo bsdstats-send を実行する。

% sudo bsdstats-send
〜
BSDstats runs on this system for the first time, generating registration ID
Posting OS statistics to rpt.bsdstats.org ... SUCCESS
Posting device statistics to rpt.bsdstats.org ... SUCCESS
Posting CPU information to rpt.bsdstats.org ... SUCCESS
grep: /usr/local/etc/bsdstats.conf: そのようなファイルまたはディレクトリはありません
Posting port statistics to rpt.bsdstats.org ... SUCCESS
/usr/local/etc/bsdstats.conf が無いと言われているが、ビルド時のメッセージに create /usr/local/etc/bsdstats.conf and 〜 とあったように、デフォルトでは存在しないようだ。

筆者の時は、これで *BSD Usage Statistics: Home の FreeBSD の Systems This Month の数値が 2643 から 2644 に増えた!

筆者は、思い出した時 (月始め等) に sudo bsdstats-send を実行するようにもしている。

● スリープについて

VirtualBox 上の FreeBSD を作動させたまま、ホスト側 (MS-Windows 10) をスリープして、復帰すると、以降 FreeBSD の時計が、数秒〜数分のオーダーでずれるようになってしまうようだ (「ようだ」というのは、本当にやってしまうと復旧が面倒なのでこれを記述している時点で追試していない。)。
VBoxService が作動していてもである。
MS-Windows 8.1 のときはそんなことはなかったのだが..
以前、VBoxService --disable-timesync して、代わりに ntpd による時刻同期も試みたが、改善しなかった。
同じ PC 上の VirtualBox で動かしている FreeBSD 9.3 は、ほとんどずれないのだが..

これを回避する方法として、ホスト (Windows) をスリープさせる前に、VirtualBox の FreeBSD を必ず「閉じる」→「保存状態」で保存する。
スリープから復帰したときには、また「起動」で保存状態から復帰させる。
保存状態にしておけば、その間は万が一 Windows が再起動したりしてしまっても安心というのもある。
また、この保存状態で、筆者は日々、仮想ディスクのバックアップコピーを取っている。 (かなり時間がかかるが)

これで大体ひと通り環境構築できただろうか..

以上


FreeBSD (13.0) を VirtualBox にインストールする覚書
index