「Oracle VirtualBox マネージャー」の画面で、「fb150」が選択された状態で『起動』押す!
以下、必ずしも書いていないが、作業時間の都合で適宜シャットダウン・電源 ON している箇所がある。
root でログイン。
freebsd-update fetch を実行する。
(なおこれはインストール後も定期的に行った方が良いもの。 後述)
root@fb150:~ # freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching public key from update1.freebsd.org... done.
Fetching metadata signature for 15.0-RELEASE from update1.freebsd.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... done.
Inspecting system... done.
Preparing to download files... done.
Fetching 57 patches.....10....20....30....40....50... done.
Applying patches... done.
The following files will be updated as part of updating to
15.0-RELEASE-p3:
/bin/freebsd-version
/boot/kernel/kernel
/boot/kernel/vmm.ko
/boot/kernel/zfs.ko
/lib/libcrypto.so.35
/rescue/[
〜
ちなみに、ここで uname -a を実行した所、以下のようであった。
root@fb150:~ # uname -a
FreeBSD fb150.nsmrtks.jp 15.0-RELEASE FreeBSD 15.0-RELEASE releng/15.0-n280995-7aedc8de6446 GENERIC amd64
また、freebsd-version -ku を実行した所、以下のようであった。
-k はカーネルの情報を、-u はユーザランドの情報を表示するオプションである。
root@fb150:~ # freebsd-version -ku
15.0-RELEASE
15.0-RELEASE
次に freebsd-update install を実行する。
root@fb150:~ # freebsd-update install
Creating snapshot of existing boot environment... done.
Installing updates...
Restarting sshd after upgrade
Performing sanity check on sshd configuration.
Stopping sshd.
Performing sanity check on sshd configuration.
Starting sshd.
done.
今回 kernel に関係しそうな更新も見えており、ここで再起動する。 (あるいはひとしきり作業を続けた後に再起動してもいいだろう)
root@fb150:~ # reboot
再び root でログインし、uname -a を実行した所、今度は以下のようであった。
root@fb150:~ # uname -a
FreeBSD fb150.nsmrtks.jp 15.0-RELEASE-p2 FreeBSD 15.0-RELEASE-p2 GENERIC amd64
また、freebsd-version -ku を実行した所、今度は以下のようであった。
root@fb150:~ # freebsd-version -ku
15.0-RELEASE-p2
15.0-RELEASE-p3
まず、ここで初めて /etc/rc.conf を編集するので、元のファイルを rc.conf.BACK にコピーしておいた。
root@fb150:~ # cd /etc
root@fb150:/etc # cp -ip rc.conf rc.conf.BACK
そうして、/etc/rc.conf ファイルを編集する。
root@fb150:/etc # vi /etc/rc.conf
以下を追記。 (同ファイル内の上の方に似たような行があるのでそれをコピーすると入力の手間を省ける)
# 2026-02-13 nsmrtks
ifconfig_em1=""
ifconfig_em1_ipv6="inet6 accept_rtadv"
ifconfig_em2="inet 192.168.56.150 netmask 255.255.255.0"
ifconfig_em2_ipv6="inet6 accept_rtadv"
ここで、em2 に与えた 192.168.56.150 などという固定 IPv4 アドレスについては、em2 には VirtualBox の DHCP サーバがいるのだが、そのアドレス範囲と重複しないように、「ファイル」→「ツール」→「ネットワーク」→「ホストオンリーネットワーク」の「DHCP サーバー」の設定を変更してある。 (初期状態では重複していた)
(変更後)
ここで reboot すると、以下のように IP アドレスが割り当たっていた。 (vtnet0 は未割り当て)
root@fb150:~ # ifconfig -a
em0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
options=48505bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,LRO,VLAN_HWFILTER,VLAN_HWTSO,HWSTATS,MEXTPG>
ether 08:00:27:0d:05:db
inet 10.0.2.15 netmask 0xffffff00 broadcast 10.0.2.255
inet6 fe80::a00:27ff:fe0d:5db%em0 prefixlen 64 scopeid 0x1
inet6 fd17:625c:f037:2:a00:27ff:fe0d:5db prefixlen 64 autoconf pltime 14400 vltime 86400
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
em1: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
options=48505bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,LRO,VLAN_HWFILTER,VLAN_HWTSO,HWSTATS,MEXTPG>
ether 08:00:27:b0:95:50
inet6 fe80::a00:27ff:feb0:9550%em1 prefixlen 64 scopeid 0x2
inet6 〜〜:〜〜:〜〜:〜〜:〜〜:〜〜:〜〜:〜〜 prefixlen 64 autoconf pltime 12600 vltime 14400
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
em2: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
options=48505bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,LRO,VLAN_HWFILTER,VLAN_HWTSO,HWSTATS,MEXTPG>
ether 08:00:27:9b:07:da
inet 192.168.56.150 netmask 0xffffff00 broadcast 192.168.56.255
inet6 fe80::a00:27ff:fe9b:7da%em2 prefixlen 64 scopeid 0x3
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
vtnet0: flags=1008802<BROADCAST,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
options=ec07bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWTSO,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6,HWSTATS>
ether 08:00:27:8d:3f:ce
media: Ethernet autoselect (10Gbase-T <full-duplex>)
status: active
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=1008049<UP,LOOPBACK,RUNNING,MULTICAST,LOWER_UP> metric 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
groups: lo
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
これは必須ではないが、高速化を図るため、設定してみる。
ここで今回、/tmp は ZFS のパーティションになっている。
root@fb150:~ # df -h
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 31G 1.0G 30G 3% /
devfs 1.0K 0B 1.0K 0% /dev
zroot/tmp 30G 96K 30G 0% /tmp ←ココ
zroot/home 30G 96K 30G 0% /home
zroot/var/log 30G 160K 30G 0% /var/log
zroot 30G 96K 30G 0% /zroot
zroot/usr/ports 30G 96K 30G 0% /usr/ports
zroot/usr/src 31G 980M 30G 3% /usr/src
zroot/var/audit 30G 96K 30G 0% /var/audit
zroot/var/crash 30G 96K 30G 0% /var/crash
zroot/var/mail 30G 96K 30G 0% /var/mail
zroot/var/tmp 30G 96K 30G 0% /var/tmp
zroot/home/nsmrtks 30G 128K 30G 0% /home/nsmrtks
ちなみにその /tmp は、ZFS の機能で圧縮される設定にもなっていた。
root@fb150:~ # zfs get compression
NAME PROPERTY VALUE SOURCE
zroot compression on local
zroot/ROOT compression on inherited from zroot
zroot/ROOT/15.0-RELEASE_2026-02-13_140813 compression on inherited from zroot
zroot/ROOT/default compression on inherited from zroot
zroot/ROOT/default@2026-02-13-14:08:13-0 compression - -
zroot/home compression on inherited from zroot
zroot/home/nsmrtks compression on inherited from zroot
zroot/tmp compression on inherited from zroot ←ココ
zroot/usr compression on inherited from zroot
zroot/usr/ports compression on inherited from zroot
zroot/usr/src compression on inherited from zroot
zroot/var compression on inherited from zroot
zroot/var/audit compression on inherited from zroot
zroot/var/crash compression on inherited from zroot
zroot/var/log compression on inherited from zroot
zroot/var/mail compression on inherited from zroot
zroot/var/tmp compression on inherited from zroot
今回、/tmp を Memory Disk にすると、ZFS のパーティションにする必然性がないため、この ZFS パーティションを削除する。
なお、現在の /tmp には、何やらディレクトリが存在しているようだが、これらは削除しても問題ないであろう。
root@fb150:~ # ls -lRA /tmp
total 2
drwxrwxrwt 2 root wheel 2 Feb 16 12:08 .ICE-unix
drwxrwxrwt 2 root wheel 2 Feb 16 12:08 .X11-unix
drwxrwxrwt 2 root wheel 2 Feb 16 12:08 .XIM-unix
drwxrwxrwt 2 root wheel 2 Feb 16 12:08 .font-unix
/tmp/.ICE-unix:
total 0
/tmp/.X11-unix:
total 0
/tmp/.XIM-unix:
total 0
/tmp/.font-unix:
total 0
ZFS パーティションを削除するには、zfs destroy コマンドを使う。
zfs destroy に、df コマンドで /tmp として見えていた
zroot/tmp を指定して削除する。
(くれぐれも違うパーティションを削除しないように注意!)
root@fb150:~ # zfs destroy zroot/tmp
/tmp パーティション (zroot/tmp) が削除された。
root@fb150:~ # df -h
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 31G 1.0G 30G 3% /
devfs 1.0K 0B 1.0K 0% /dev
zroot/var/log 30G 164K 30G 0% /var/log
zroot/home 30G 96K 30G 0% /home
zroot 30G 96K 30G 0% /zroot
zroot/usr/src 31G 980M 30G 3% /usr/src
zroot/var/audit 30G 96K 30G 0% /var/audit
zroot/usr/ports 30G 96K 30G 0% /usr/ports
zroot/var/crash 30G 96K 30G 0% /var/crash
zroot/var/mail 30G 96K 30G 0% /var/mail
zroot/var/tmp 30G 96K 30G 0% /var/tmp
zroot/home/nsmrtks 30G 128K 30G 0% /home/nsmrtks
なお /tmp ディレクトリはそのまま残っている。 (中身は空となった)
root@fb150:~ # ls -ld /tmp
drwxr-xr-x 2 root wheel 2 Feb 16 12:08 /tmp
root@fb150:~ # ls -a /tmp
. ..
ここからが、/tmp を Memory Disk にする設定である。
/etc/rc.conf に追記するために、まずは以下のようにする。 (「>>」で追記する。 間違って「>」で上書きしないように注意する。)
root@fb150:~ # egrep ^tmp /etc/defaults/rc.conf >> /etc/rc.conf
次に
root@fb150:~ # vi /etc/rc.conf
追記した部分が以下などのようになるように編集。
# 2026-02-16 nsmrtks
tmpmfs="YES" # Set to YES to always create an mfs /tmp, NO to never
tmpsize="7g" # Size of mfs /tmp if created
tmpsize を 7GB (7g) にしているのは、これくらいないと ports のコンパイル
(後述) で /tmp が溢れた記憶がある。
(ちなみに NetBSD のインストーラではメモリーサイズの 25%
がデフォルトだったように思う)
念のため /tmp に何も残っていないことをいまいちど確認して、reboot してみる。
root@fb150:~ # ls -a /tmp
. ..
root@fb150:~ # sync
root@fb150:~ # reboot
reboot 後、/tmp が正しく Memory Disk になっていた。
root@fb150:~ # df -h
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 31G 1.0G 30G 3% /
devfs 1.0K 0B 1.0K 0% /dev
tmpfs 7.0G 4.0K 7.0G 0% /tmp
zroot/var/log 30G 164K 30G 0% /var/log
zroot 30G 96K 30G 0% /zroot
zroot/home 30G 96K 30G 0% /home
zroot/usr/src 31G 980M 30G 3% /usr/src
zroot/usr/ports 30G 96K 30G 0% /usr/ports
zroot/var/crash 30G 96K 30G 0% /var/crash
zroot/var/mail 30G 96K 30G 0% /var/mail
zroot/var/tmp 30G 96K 30G 0% /var/tmp
zroot/var/audit 30G 96K 30G 0% /var/audit
zroot/home/nsmrtks 30G 128K 30G 0% /home/nsmrtks
root@fb150:~ # ls -al /tmp
total 9
drwxrwxrwt 6 root wheel 256 Feb 16 13:35 .
drwxr-xr-x 20 root wheel 23 Feb 16 13:34 ..
drwxrwxrwt 2 root wheel 0 Feb 16 13:35 .ICE-unix
drwxrwxrwt 2 root wheel 0 Feb 16 13:35 .X11-unix
drwxrwxrwt 2 root wheel 0 Feb 16 13:35 .XIM-unix
drwxrwxrwt 2 root wheel 0 Feb 16 13:35 .font-unix
少し筆者の環境に特有の話である。
現在の /etc/hosts の内容を一応バックアップしておき..
root@fb150:~ # cd /etc
root@fb150:/etc # ls -ld hosts*
-rw-r--r-- 1 root wheel 1035 Nov 28 12:45 hosts
-rw-r--r-- 1 root wheel 3385 Nov 28 12:46 hosts.allow
-rw-r--r-- 1 root wheel 41 Nov 28 12:45 hosts.equiv
-rw-r--r-- 1 root wheel 31 Nov 28 12:43 hosts.lpd
root@fb150:/etc # cp -ip hosts hosts.ORIG
筆者の旧環境 (fb140 というもの) の /etc/hosts (様々なホストの IP アドレスが書かれている) を scp してきて..
root@fb150:/etc # cd
root@fb150:~ # scp -p nsmrtks@192.168.56.140:/etc/hosts .
〜
root@fb150:~ # ls -ld hosts
-rw-r--r-- 1 root wheel 4364 Nov 11 10:26 hosts
fb150 (即ちこの新環境) の /etc/hosts と結合して、重複を調整しつつ..
root@fb150:~ # cat hosts >> /etc/hosts
root@fb150:~ # vi /etc/hosts
fb150 の IPv6 アドレス (リンクローカルアドレス) も以下のように追加しておいた。 (このリンクローカルアドレスは、上や下で実行している ifconfig コマンドで見えている)
# 2026-02-16 nsmrtks
fe80::a00:27ff:fe9b:7da%em2 fb150.nsmrtks.jp fb150 fb150c
先ほども scp してみせた通り、同じホスト上の VirtualBox の仮想マシンどうしは、「ホストオンリーアダプター」を通して通信できる。 それは、これまでの経緯により、fb150 においては 仮想マシンの作成 時に「アダプター3」として割り当てており、em2 として見えている。
root@fb150:~ # ifconfig em2
em2: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
options=48505bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,LRO,VLAN_HWFILTER,VLAN_HWTSO,HWSTATS,MEXTPG>
ether 08:00:27:9b:07:da
inet 192.168.56.150 netmask 0xffffff00 broadcast 192.168.56.255
inet6 fe80::a00:27ff:fe9b:7da%em2 prefixlen 64 scopeid 0x3
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
筆者の旧環境 (fb140) の、(リンクローカル) IPv6 アドレスを /etc/hosts に記述したので、そのホスト名で通信 (ping6) できることを確認。 (確認したら Ctrl-c で中止)
root@fb150:~ # ping6 fb140c
PING(56=40+8+8 bytes) fe80::a00:27ff:fe9b:7da%em2 --> fe80::a00:27ff:fe25:aeaf%em2
16 bytes from fe80::a00:27ff:fe25:aeaf%em2, icmp_seq=0 hlim=64 time=10.526 ms
16 bytes from fe80::a00:27ff:fe25:aeaf%em2, icmp_seq=1 hlim=64 time=39.330 ms
16 bytes from fe80::a00:27ff:fe25:aeaf%em2, icmp_seq=2 hlim=64 time=7.532 ms
^C
--- fb140.magic.or ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 7.532/19.129/39.330/14.336 ms
筆者は、FreeBSD 14.x の旧環境では、インストーラでパーティション作成時に「Auto (ZFS)」でなく「Auto (UFS)」の方を選択し、後から手動で /usr/ports と /usr/local と /home/nsmrtks を ZFS で作成するということをしていた。
今回、/usr/ports と /home/nsmrtks は、既に ZFS のパーティションになっていた。
root@fb150:~ # df -h
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 31G 1.0G 30G 3% /
devfs 1.0K 0B 1.0K 0% /dev
tmpfs 7.0G 4.0K 7.0G 0% /tmp
zroot/var/log 30G 168K 30G 0% /var/log
zroot 30G 96K 30G 0% /zroot
zroot/home 30G 96K 30G 0% /home
zroot/usr/ports 30G 96K 30G 0% /usr/ports ←ココ
zroot/usr/src 31G 980M 30G 3% /usr/src
zroot/var/crash 30G 96K 30G 0% /var/crash
zroot/var/audit 30G 96K 30G 0% /var/audit
zroot/var/mail 30G 96K 30G 0% /var/mail
zroot/var/tmp 30G 96K 30G 0% /var/tmp
zroot/home/nsmrtks 30G 128K 30G 0% /home/nsmrtks ←ココ
その一方、/usr/local は、空のディレクトリのみ存在するものの、ZFS のパーティションにはなっていないようだ。
これは好みの問題かも知れないが、今回、せっかくなので
/usr/local も ZFS のパーティションを分けたい。
そうすれば、少なくとも /usr/local の使用量が
df コマンドでひと目で分かるという利点はある。
(それくらいしかない?)
場合によっては /usr/local が空ではなく既に中身が存在していることがあるので注意。
/home/nsmrtks は、旧環境から持ってくる予定があるが (後述)、15.0
のインストーラが作成した中身が既に存在しており
(たいした中身ではないが)、一応バックアップしておく。
ファイルを移動することにより、バックアップすると同時に、/home/nsmrtks
ディレクトリを空にする。
(なお親ディレクトリの /home 自体も ZFS のパーティションである。)
root@fb150:~ # cd /home
root@fb150:/home # ls -al
total 18
drwxr-xr-x 3 root wheel 3 Feb 12 13:45 .
drwxr-xr-x 20 root wheel 23 Feb 18 13:10 ..
drwxr-xr-x 2 nsmrtks nsmrtks 9 Feb 12 13:45 nsmrtks
root@fb150:/home # mkdir nsmrtks.BACK
root@fb150:/home # cd nsmrtks
root@fb150:/home/nsmrtks # ls -al
total 37
drwxr-xr-x 2 nsmrtks nsmrtks 9 Feb 12 13:45 .
drwxr-xr-x 4 root wheel 4 Feb 18 13:15 ..
-rw-r--r-- 1 nsmrtks nsmrtks 950 Feb 12 13:45 .cshrc
-rw-r--r-- 1 nsmrtks nsmrtks 311 Feb 12 13:45 .login
-rw-r--r-- 1 nsmrtks nsmrtks 79 Feb 12 13:45 .login_conf
-rw------- 1 nsmrtks nsmrtks 289 Feb 12 13:45 .mail_aliases
-rw-r--r-- 1 nsmrtks nsmrtks 255 Feb 12 13:45 .mailrc
-rw-r--r-- 1 nsmrtks nsmrtks 966 Feb 12 13:45 .profile
-rw-r--r-- 1 nsmrtks nsmrtks 1042 Feb 12 13:45 .shrc
root@fb150:/home/nsmrtks # mv -i .cshrc .login* .mail* .profile .shrc ../nsmrtks.BACK/
root@fb150:/home/nsmrtks # ls -a
. ..
root@fb150:/home/nsmrtks # cd ..
root@fb150:/home # ls -al *
nsmrtks:
total 1
drwxr-xr-x 2 nsmrtks nsmrtks 2 Feb 18 13:16 .
drwxr-xr-x 4 root wheel 4 Feb 18 13:15 ..
nsmrtks.BACK:
total 37
drwxr-xr-x 2 root wheel 9 Feb 18 13:16 .
drwxr-xr-x 4 root wheel 4 Feb 18 13:15 ..
-rw-r--r-- 1 nsmrtks nsmrtks 950 Feb 12 13:45 .cshrc
-rw-r--r-- 1 nsmrtks nsmrtks 311 Feb 12 13:45 .login
-rw-r--r-- 1 nsmrtks nsmrtks 79 Feb 12 13:45 .login_conf
-rw------- 1 nsmrtks nsmrtks 289 Feb 12 13:45 .mail_aliases
-rw-r--r-- 1 nsmrtks nsmrtks 255 Feb 12 13:45 .mailrc
-rw-r--r-- 1 nsmrtks nsmrtks 966 Feb 12 13:45 .profile
-rw-r--r-- 1 nsmrtks nsmrtks 1042 Feb 12 13:45 .shrc
/usr/ports の中身は空であった。 /usr/local の中身も空である。
root@fb150:~ # ls -a /usr/ports/
. ..
root@fb150:~ # ls -a /usr/local/
. ..
それでは /usr/local の ZFS パーティション (ファイルシステム) を作成していく。
今回、ZFS のプールは既に存在しているので、zpool create の実行は不要である。
zfs create で /usr/local 用の ZFS ファイルシステムを作成する。
既存の /usr/ports や /usr/src に合わせ、zroot/usr/local という所に作成する。
mountpoint も同時に設定することにする。
(以前は /usr/local を、mountpoint
にする代わりに、シンボリックリンクにしていたが、ports
のビルドが正常にいかないことがあることが分かった。)
root@fb150:~ # zfs create -o mountpoint=/usr/local zroot/usr/local
zroot/usr/local が作成され、/usr/local にマウントされた。
root@fb150:~ # df -h
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 31G 1.0G 30G 3% /
devfs 1.0K 0B 1.0K 0% /dev
tmpfs 7.0G 4.0K 7.0G 0% /tmp
zroot/var/log 30G 168K 30G 0% /var/log
zroot 30G 96K 30G 0% /zroot
zroot/home 30G 128K 30G 0% /home
zroot/usr/ports 30G 96K 30G 0% /usr/ports
zroot/usr/src 31G 980M 30G 3% /usr/src
zroot/var/crash 30G 96K 30G 0% /var/crash
zroot/var/audit 30G 96K 30G 0% /var/audit
zroot/var/mail 30G 96K 30G 0% /var/mail
zroot/var/tmp 30G 96K 30G 0% /var/tmp
zroot/home/nsmrtks 30G 96K 30G 0% /home/nsmrtks
zroot/usr/local 30G 96K 30G 0% /usr/local ←ココ
compression も on に設定されている。
root@fb150:~ # zfs get compression
NAME PROPERTY VALUE SOURCE
zroot compression on local
zroot/ROOT compression on inherited from zroot
zroot/ROOT/15.0-RELEASE_2026-02-13_140813 compression on inherited from zroot
zroot/ROOT/default compression on inherited from zroot
zroot/ROOT/default@2026-02-13-14:08:13-0 compression - -
zroot/home compression on inherited from zroot
zroot/home/nsmrtks compression on inherited from zroot
zroot/usr compression on inherited from zroot
zroot/usr/local compression on inherited from zroot ←ココ
zroot/usr/ports compression on inherited from zroot
zroot/usr/src compression on inherited from zroot
zroot/var compression on inherited from zroot
zroot/var/audit compression on inherited from zroot
zroot/var/crash compression on inherited from zroot
zroot/var/log compression on inherited from zroot
zroot/var/mail compression on inherited from zroot
zroot/var/tmp compression on inherited from zroot
ZFS と直接関係ないが、ここで /usr/ports の所有者を root から nsmrtks (自ユーザ) に変更しておいた。
root@fb150:~ # ls -l /usr
total 127
drwxr-xr-x 2 root wheel 483 Feb 13 14:08 bin
drwxr-xr-x 58 root wheel 307 Nov 28 12:46 include
drwxr-xr-x 13 root wheel 578 Feb 13 14:08 lib
drwxr-xr-x 10 root wheel 592 Feb 13 14:08 lib32
drwxr-xr-x 4 root wheel 4 Nov 28 12:42 libdata
drwxr-xr-x 12 root wheel 66 Nov 28 12:45 libexec
drwxr-xr-x 2 root wheel 2 Feb 18 13:18 local
drwxr-xr-x 2 root wheel 2 Nov 28 12:42 obj
drwxr-xr-x 2 root wheel 2 Feb 12 13:24 ports ←ココ
drwxr-xr-x 2 root wheel 299 Feb 13 14:08 sbin
drwxr-xr-x 37 root wheel 37 Nov 28 12:43 share
drwxr-xr-x 27 root wheel 48 Feb 12 13:25 src
drwxr-xr-x 18 root wheel 18 Nov 28 12:42 tests
root@fb150:~ # chown nsmrtks /usr/ports
root@fb150:~ # ls -l /usr
total 127
drwxr-xr-x 2 root wheel 483 Feb 13 14:08 bin
drwxr-xr-x 58 root wheel 307 Nov 28 12:46 include
drwxr-xr-x 13 root wheel 578 Feb 13 14:08 lib
drwxr-xr-x 10 root wheel 592 Feb 13 14:08 lib32
drwxr-xr-x 4 root wheel 4 Nov 28 12:42 libdata
drwxr-xr-x 12 root wheel 66 Nov 28 12:45 libexec
drwxr-xr-x 2 root wheel 2 Feb 18 13:18 local
drwxr-xr-x 2 root wheel 2 Nov 28 12:42 obj
drwxr-xr-x 2 nsmrtks wheel 2 Feb 12 13:24 ports ←ココ
drwxr-xr-x 2 root wheel 299 Feb 13 14:08 sbin
drwxr-xr-x 37 root wheel 37 Nov 28 12:43 share
drwxr-xr-x 27 root wheel 48 Feb 12 13:25 src
drwxr-xr-x 18 root wheel 18 Nov 28 12:42 tests
これも筆者の環境だけかもしれない。
筆者は、/usr/ports/distfiles
(ports でビルドを行う時に取得してきたファイルが置かれる場所) を、VirtualBox
の仮想ディスクごと分離している。
(サイズは 20GB)
そして、旧環境から新環境へ移行する際には、(内容を残したまま)
マウントを付け替えることにしている。
今回まさに旧環境から新環境へ移行する。
まず旧環境にて、distfiles の仮想ディスクを umount し、/etc/fstab 及び /etc/exports (後述) のエントリもコメントアウトした。
いったん旧環境をシャットダウン・電源 OFF する。 新環境 (fb150) もシャットダウン・電源 OFF する。
VirtualBox にて、旧環境 (fb140) の distfiles の仮想ディスクは、以下に見えている、「コントローラー: LsiLogic SAS」配下にある distfiles20.vdi である。
そうしたら、『ファイル』→『ツール』→『メディア』に見えている distfiles20.vdi を選択し.. (以下では下の方にある『情報』のタブも押している)
..『解放』を押すと、
..ダイアログが出るので「解放」を押すと、distfiles20.vdi が、以下のように「未割り当て」になった (『情報』のタブを押して確認できる)。
旧環境 (fb140) の設定のストレージからも、LsiLogic SAS 配下にあった distfiles20.vdi が、以下のように、いなくなった。
全くの筆者の環境の話だが、このように distfiles20.vdi を開放すると、旧環境から見たディスクの番号がずれてしまい、次に旧環境を起動した時に、ufs.vdi (下に見えている) が mount 出来なくなって起動途中で止まってしまった。 起動途中のシェルで ed コマンドで /etc/fstab を編集して修復するはめになった。 なお ports20.vdi というものも見えているが、こちらは ZFS のディスクなのだが、何もしなくても自動的に ZFS に認識されていた。
今度は、新環境 (fb150) のストレージの設定にて、以下のようになっているが..
下の方の「◆」に「+」のアイコン (「コントローラーを追加」) を押し、「LsiLogic SAS (SAS)」を選択する。 (SAS にしなくてもよいが深い理由はない)
「コントローラー: LsiLogic SAS」が追加された。
さらに、「コントローラー: LsiLogic SAS」の右側の方にある「■」に「+」のようなアイコン (「ハードディスクを追加」) を選択し、「追加」を押したら、distfiles20.vdi ファイルを探して「開く」を押し、「選択」すると、
もしかしたら、上記の『追加』を押す手順は必要なく、「Not Attached」の所にある distfiles20.vdi を選択するだけでよかったのかもしれない? 再確認したかったがわからなくなった。
「コントローラー: LsiLogic SAS」配下に distfiles20.vdi が現れた。
忘れずに「OK」押す。
さて、新環境 (fb150) を再び起動する。
追加した仮想ハードディスクは以下のように見えている。
(起動時に表示される他 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: 20480MB (41943040 512 byte sectors)
(da0:mpt0:0:0:0): CACHE PAGE TOO SHORT data len 15 desc len 0
(da0:mpt0:0:0:0): Mode page 8 missing, disabling SYNCHRONIZE CACHE
〜
今回、/home/distfiles
というディレクトリにマウントすることとし、/usr/ports/distfiles
からシンボリックリンクを張ることとする。
(なぜ /usr/ports/distfiles に直接マウントしないかというと、/home/
の下の distfiles/ を NFS エクスポートしたいという事情がある。)
ここで初めて /etc/fstab の編集を行うので、念のため元の /etc/fstab をコピーしておいた。 そうして /etc/fstab を編集した。
root@fb150:~ # cp -ip /etc/fstab /etc/fstab.ORIG
root@fb150:~ # vi /etc/fstab
以下のような行を /etc/fstab に追記した。 (注: 以下だとオプションが足りない。後述。)
# 2026-02-20 nsmrtks
/dev/da0p1 /home/distfiles ufs rw 2 2
/home/distfiles ディレクトリを作成したら、 /home/distfiles を手動で mount してみて、見えているか確認した。
以下に見えているように、chown しなくても、mount すると、以前設定されたオーナーになる。
root@fb150:~ # mkdir /home/distfiles
root@fb150:~ # ls -l /home
total 10
drwxr-xr-x 2 root wheel 2 Feb 20 15:06 distfiles
drwxr-xr-x 2 nsmrtks nsmrtks 2 Feb 18 13:16 nsmrtks
drwxr-xr-x 2 root wheel 9 Feb 18 13:16 nsmrtks.BACK
root@fb150:~ # mount /home/distfiles
root@fb150:~ # ls -l /home
total 53
drwxr-xr-x 45 nsmrtks wheel 45056 Feb 20 12:36 distfiles
drwxr-xr-x 2 nsmrtks nsmrtks 2 Feb 18 13:16 nsmrtks
drwxr-xr-x 2 root wheel 9 Feb 18 13:16 nsmrtks.BACK
root@fb150:~ # ls /home/distfiles
〜 (既にファイルが存在しているのでたくさん表示される)
root@fb150:~ # df -h
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 31G 1.0G 30G 3% /
devfs 1.0K 0B 1.0K 0% /dev
tmpfs 7.0G 4.0K 7.0G 0% /tmp
zroot/var/log 30G 188K 30G 0% /var/log
zroot/home 30G 128K 30G 0% /home
zroot/usr/local 30G 96K 30G 0% /usr/local
zroot 30G 96K 30G 0% /zroot
zroot/usr/ports 30G 96K 30G 0% /usr/ports
zroot/usr/src 31G 980M 30G 3% /usr/src
zroot/var/audit 30G 96K 30G 0% /var/audit
zroot/var/crash 30G 96K 30G 0% /var/crash
zroot/var/mail 30G 96K 30G 0% /var/mail
zroot/var/tmp 30G 96K 30G 0% /var/tmp
zroot/home/nsmrtks 30G 96K 30G 0% /home/nsmrtks
/dev/da0p1 19G 13G 5.1G 71% /home/distfiles ←ココ
root@fb150:~ # mount
zroot/ROOT/default on / (zfs, local, noatime, nfsv4acls)
devfs on /dev (devfs)
tmpfs on /tmp (tmpfs, local)
zroot/var/log on /var/log (zfs, local, noatime, noexec, nosuid, nfsv4acls)
zroot/home on /home (zfs, local, noatime, nfsv4acls)
zroot/usr/local on /usr/local (zfs, local, noatime, nfsv4acls)
zroot on /zroot (zfs, local, noatime, nfsv4acls)
zroot/usr/ports on /usr/ports (zfs, local, noatime, nosuid, nfsv4acls)
zroot/usr/src on /usr/src (zfs, local, noatime, nfsv4acls)
zroot/var/audit on /var/audit (zfs, local, noatime, noexec, nosuid, nfsv4acls)
zroot/var/crash on /var/crash (zfs, local, noatime, noexec, nosuid, nfsv4acls)
zroot/var/mail on /var/mail (zfs, local, nfsv4acls)
zroot/var/tmp on /var/tmp (zfs, local, noatime, nosuid, nfsv4acls)
zroot/home/nsmrtks on /home/nsmrtks (zfs, local, noatime, nfsv4acls)
/dev/da0p1 on /home/distfiles (ufs, local, soft-updates, journaled soft-updates) ←ココ
これでいけるかと思ったが、一旦シャットダウンして起動すると、/home/distfiles を mount する所でこけた。
/home が ZFS になっていて、/home/distfiles を mount しようとした時点で ZFS の準備が未だ出来ていないためらしい。
/etc/rc.d/mountlate というファイルを参照し、/etc/fstab の distfiles の所に、late というオプションを付ける。
# 2026-02-20,24 nsmrtks (we need 'late' for ZFS /home)
/dev/da0p1 /home/distfiles ufs rw,late 2 2
これで reboot すると、正常に起動することを確認した。
あとは /usr/ports/distfiles -> /home/distfiles というシンボリックリンクを作成しないといけないが、ports の初回取得 (後述) に影響するので、ここではなく後で作成する。
これも筆者の環境だけかもしれない。
筆者は、新環境 (今回でいうと今インストール中の「fb150」)
を立ち上げたら、旧環境で運用していたホームディレクトリを新環境にコピーして移行することにしている。
df コマンドで数 GB
と表示されているファイル群なので、コピーにそれなりの時間を要する。
コピーの間じゅう、環境が使えないのは不便なので、あらかたの内容をここで事前にコピーしておき、最後に残りをコピーすることにする。
コピーは、以下に示すように ssh と tar を組み合わせて行った。
rsync でコピーしたい所だがこの時点で fb150 に未だ rsync が入っていない。
scp -pr でコピーしようかとも思ったが、scp(1)
にある通り (以下を参照)、それだとシンボリックリンクが保存されない
(事前に実験もして確かめた)。
-r Recursively copy entire directories. Note that scp follows
symbolic links encountered in the tree traversal.
root@fb150:~ # cd /home/nsmrtks
root@fb150:/home/nsmrtks # ls -a
. ..
root@fb150:/home/nsmrtks # date ; ssh nsmrtks@fb140 tar cf - . | tar xpf - ; date
Tue Feb 24 10:06:49 JST 2026
(nsmrtks@fb140.magic.or) Password for nsmrtks@fb140.magic.or:
〜 (以下のような pax format cannot archive sockets という行が 23行ほど出る)
tar: ./.uim.d/socket/uim-helper: ./.uim.d/socket/uim-helper: pax format cannot archive sockets
〜
Tue Feb 24 11:05:34 JST 2026
root@fb150:/home/nsmrtks # ls -la
total 922
〜
root@fb150:/home/nsmrtks # df -h
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 26G 1.0G 25G 4% /
〜
zroot/home/nsmrtks 30G 5.0G 25G 16% /home/nsmrtks
/dev/da0p1 19G 13G 5.1G 71% /home/distfiles
root@fb150:/home/nsmrtks # zfs get compressratio
NAME PROPERTY VALUE SOURCE
〜
zroot/home compressratio 1.78x -
zroot/home/nsmrtks compressratio 1.78x -
〜
これも、必要なのは筆者の環境だけかもしれない。
筆者は、新環境 (すなわち今インストール中のこの環境「fb150」) を立ち上げてからも、引き継ぎのためやバックアップのために、旧環境もしばらく残して運用することにしており、その際、ホームディレクトリや /usr/ports/distfiles (前述) を旧環境から新環境に移動して切り替え、旧環境からは NFS でそのまま参照するようにしている。
NFS というと、どのディレクトリをエクスポートするかという設定が必要だが、/etc/exports ファイルと、ZFS の sharenfs の二段構えで行くことにする。
上の方で、筆者の旧環境 (fb140) の、(リンクローカル) IPv6 アドレスを /etc/hosts に記述しており、FreeBSD の NFS はこれによりホスト名で可能である。
まず /etc/exports に以下のように記述することにする。
# 2019-09-18,20,2020-01-29,2021-05-08,2024-03-02,2026-02-24 nsmrtks
V4: /home
/home/distfiles fb140c
# EoF
先に /home/distfiles の方の行について解説すると、これは /home/distfiles ディレクトリをホスト fb140c に NFS export している。
V4: /home という行について、これは NFSv4 を使用している。
/home というディレクトリを NFSv4 tree root にするという指定になっている。
そして /home については、ZFS の
sharenfs の指定と組み合わせて設定することにする。
ZFS の sharenfs の設定が未だだが、先に
NFS サーバを立ち上げる設定をしてみる。
それには、以下のように実行して..
(繰り返しになるが、「>>」で追記するのであり、
くれぐれも間違って「>」で上書きしないように注意する。)
root@fb150:~ # egrep ^nfs /etc/defaults/rc.conf >> /etc/rc.conf
root@fb150:~ # vi /etc/rc.conf
/etc/rc.conf に以下のように追記されるように編集した。
nfs_client_enable="YES" の行をコメントアウトしているが、将来を見越してのことである。
# 2026-02-26 nsmrtks
#nfs_client_enable="YES" # This host is an NFS client (or NO).
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 nsmrtks.jp" # Flags for nfsuserd
ここで筆者の環境では nfsuserd_flags に -domain オプションで「nsmrtks.jp」という名前を設定した。 これはサーバ側(すなわちこのホスト)とクライアント側で合わせる必要がある。
reboot すると、NFS サーバは自動的に起動していた。
root@fb150:~ # service nfsd status
nfsd is running as pid 1905 1907.
root@fb150:~ # showmount -e
Exports list on localhost:
/home/distfiles fb140.magic.or
この段階で、ホスト fb140c から、fb150 の
/distfiles が NFS マウントできるようになるだろう..
それには、fb140 (fb140c) 環境にて、fb150c を /etc/hosts
に追加、/etc/fstab には以下を追加して、
# 2026-02-26 nsmrtks
fb150c:/distfiles /home/distfiles nfs rw,nfsv4
fb140 で sudo mount /home/distfiles を実行すると、以下のように mount され、アクセスも出来るらしいことを確認した。
% sudo mount /home/distfiles
〜
% mount
〜
fb150c:/distfiles on /home/distfiles (nfs)
% df -h
Filesystem Size Used Avail Capacity Mounted on
〜
fb150c:/distfiles 19G 13G 6.7G 66% /home/distfiles
% ls /home/distfiles/
/home/distfiles:
〜 (既にファイルがあるのでたくさん出る)
% ls -ld /home/distfiles/fo
ls: /home/distfiles/fo: そのようなファイルまたはディレクトリはありません
1で終了しました
1で終了しました
% hostname > /home/distfiles/fo
この時点で以下を fb150 側で実行。
root@fb150:~ # cat /home/distfiles/fo
fb140.magic.or
root@fb150:~ # ls -ld /home/distfiles/fo
-rw-r--r-- 1 nsmrtks wheel 15 Feb 26 13:52 /home/distfiles/fo
fb140 に戻ってさらに以下を実行。
% cat /home/distfiles/fo
fb140.magic.or
% ls -ld /home/distfiles/fo
-rw-r--r-- 1 nsmrtks wheel 15 2月 26 13:52 /home/distfiles/fo
% rm -i /home/distfiles/fo
remove /home/distfiles/fo? y
% ls -ld /home/distfiles/fo
ls: /home/distfiles/fo: そのようなファイルまたはディレクトリはありません
1で終了しました
1で終了しました
次に、/home/nsmrtks を NFS エクスポートする。
そのやり方だが、/etc/exports はこれ以上触らず、即ち /etc/exports
の「V4: /home」と書いた行 (のみ) を利用し、残りを
ZFS の機能で行うことにする。
以下のように、zfs set sharenfs= にホストを指定する。 なおこの操作で、mountd に HUP シグナルを送る相当まで自動的に実行してくれるので、直後に shouwmount -e を実行するとちゃんと動作に反映されている。
root@fb150:~ # zfs get sharenfs
NAME PROPERTY VALUE SOURCE
zroot sharenfs off default
zroot/ROOT sharenfs off default
zroot/ROOT/15.0-RELEASE_2026-02-13_140813 sharenfs off default
zroot/ROOT/default sharenfs off default
zroot/ROOT/default@2026-02-13-14:08:13-0 sharenfs - -
zroot/home sharenfs off default
zroot/home/nsmrtks sharenfs off default
zroot/usr sharenfs off default
zroot/usr/local sharenfs off default
zroot/usr/ports sharenfs off default
zroot/usr/src sharenfs off default
zroot/var sharenfs off default
zroot/var/audit sharenfs off default
zroot/var/crash sharenfs off default
zroot/var/log sharenfs off default
zroot/var/mail sharenfs off default
zroot/var/tmp sharenfs off default
root@fb150:~ # zfs set sharenfs='fb140c fb093c fbak' zroot/home/nsmrtks
root@fb150:~ # zfs get sharenfs
NAME PROPERTY VALUE SOURCE
zroot sharenfs off default
zroot/ROOT sharenfs off default
zroot/ROOT/15.0-RELEASE_2026-02-13_140813 sharenfs off default
zroot/ROOT/default sharenfs off default
zroot/ROOT/default@2026-02-13-14:08:13-0 sharenfs - -
zroot/home sharenfs off default
zroot/home/nsmrtks sharenfs fb140c fb093c fbak local
zroot/usr sharenfs off default
zroot/usr/local sharenfs off default
zroot/usr/ports sharenfs off default
zroot/usr/src sharenfs off default
zroot/var sharenfs off default
zroot/var/audit sharenfs off default
zroot/var/crash sharenfs off default
zroot/var/log sharenfs off default
zroot/var/mail sharenfs off default
zroot/var/tmp sharenfs off default
root@fb150:~ # showmount -e
Exports list on localhost:
/home/distfiles fb140.magic.or
/home/nsmrtks fb140.magic.or fb093.magic.or fbak.magic.or
ここで早速マウントできるか確かめたい所だが..
筆者は未だここまで、旧環境 (fb140)
で仕事をしながら、新環境の準備を整えていた。
そこで、ホームディレクトリの、旧環境 (fb140) から新環境 (fb150)
への移行も、ここで実行してしまうことにする。
前述したように、あらかたの内容を事前にコピーしており、ここで最後のコピーを行う。
またも筆者の旧環境 (fb140) の話になってしまうが、/home/nsmrtks は ZFS の mountpoint になっていたので、まずはそれを解除しようとしたが..
root@fb140:~ # zfs get mountpoint
NAME PROPERTY VALUE SOURCE
〜
zfs/nsmrtks mountpoint /home/nsmrtks local
〜
root@fb140:~ # df -h
Filesystem Size Used Avail Capacity Mounted on
zfs/nsmrtks 11G 4.4G 6.9G 39% /home/nsmrtks
〜
root@fb140:~ # zfs set mountpoint=/zfs/nsmrtks zfs/nsmrtks
cannot unmount '/home/nsmrtks': pool or dataset is busy
どうやら /home/nsmrtks が NFS エクスポートされたままだったので失敗した。
(旧環境の) /etc/rc.conf の NFS サーバの設定を無効にして reboot した。
今度は成功した。
root@fb140:~ # zfs set mountpoint=/zfs/nsmrtks zfs/nsmrtks
root@fb140:~ # zfs get mountpoint
NAME PROPERTY VALUE SOURCE
〜
zfs/nsmrtks mountpoint /zfs/nsmrtks local
〜
root@fb140:~ # df -h
Filesystem Size Used Avail Capacity Mounted on
〜
zfs/nsmrtks 11G 4.4G 6.9G 39% /zfs/nsmrtks
root@fb140:~ # ls -l /zfs
total 17
drwxr-xr-x 63 nsmrtks nsmrtks 136 Mar 2 13:54 nsmrtks
〜
root@fb140:~ # ls -a /home/nsmrtks
. ..
その上で、旧環境 (fb140) の /etc/fstab にて、新環境 (fb150) のホームディレクトリを /home/nsmrtks として NFS マウントできるように設定した。
root@fb140:~ # vi /etc/fstab
root@fb140:~ # mount /home/nsmrtks
root@fb140:~ # ls /home/nsmrtks
〜
旧環境 (fb140) から新環境 (fb150) の /home/nsmrtks も mount
出来たので、旧環境 (fb140) にあるホームディレクトリ
(/zfs/nsmrtks となっている) の内容を、新環境へ、最終的なコピーを行った。
それには、旧環境 (fb140) にて、以下のように実行した。
root@fb140:~ # sudo -u nsmrtks rsync -nav --del /zfs/nsmrtks/ /home/nsmrks/
〜 (差分が妥当であることを確認)
root@fb140:~ # date ; sudo -u nsmrtks rsync -av --del /zfs/nsmrtks/ /home/nsmrtks/ ; date
Mon Mar 2 14:17:40 JST 2026
〜
Mon Mar 2 14:31:08 JST 2026
root@fb140:~ # date ; sudo -u nsmrtks rsync -nav --del /zfs/nsmrtks/ /home/nsmrtks/ ; date
Mon Mar 2 14:31:42 JST 2026
sending incremental file list
sent 8,147,517 bytes received 24,738 bytes 16,198.72 bytes/sec
total size is 8,939,255,165 speedup is 1,093.85 (DRY RUN)
Mon Mar 2 14:40:06 JST 2026
その他のホスト fb093 / fbak からも、ホームディレクトリを NFS マウントでき、ファイルを書き込めて共有できることを確かめた。
これでホームディレクトリが旧環境 (fb140) から新環境 (fb150)へ移行できた。
これにて、NFS サーバの設定としても完了したことになる。
ここで、以降で使う、筆者の環境でいつも用いている「teetime」スクリプトを紹介する。
これは、「コマンド |& tee ログ.txt」 (csh 系)
あるいは「コマンド 2>&1 | tee ログ.txt」 (sh 系)
に毛の生えたようなコマンドで、コマンドを何回かやり直しても、ログのファイル名を、既に存在するファイル名とぶつからないように、日付時刻のファイル名を自動的に付けてくれるものである。
(コマンドにあまり複雑なものを指定するとうまくいかない制限事項がある)
「teetime [-t タグ] コマンド..」のように用いる。
自分は ports で行くが、普通の人は代わりにバイナリパッケージを pkg コマンドでインストールした方が圧倒的に楽だし、今どき普通はそうするかもしれない。
であるが、ここでは基本的に (一部を除き) ports でいくこととし、pkg コマンドの詳細はここでは触れない。 あしからず。
それでも簡単にいうと、pkg search 〜 でパッケージ名を探し、(sudo) pkg install 〜 でパッケージをインストールする感じ。
なお最初に「pkg」コマンドを実行すると、(本当の) pkg コマンド自体のインストールを最初に尋ねられるので、y を押してインストールする。 (これも後の方で示す)(後述のように git は pkg でインストールしている)
以下を参考にさせていただく。
すなわち、ports を導入するには git が必要である。
git は FreeBSD (15.0) のベースシステムに入っていない。
ports を更新するのに ports のソフトが必要 (ベースシステムだけでは ports が更新できない) とは.. やはり一般人は pkg を使い ports は使わないということかもしれない。
git を pkg コマンドでインストールすることにする。
まず pkg info などを実行する。
(あるいは pkg だけでも可)
root@fb150:~ # pkg info
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Bootstrapping pkg from pkg+https://pkg.FreeBSD.org/FreeBSD:15:amd64/quarterly, please wait...
Verifying signature with trusted certificate pkg.freebsd.org.2013102301... done
Installing pkg-2.5.1...
Extracting pkg-2.5.1: 100%
pkg-2.5.1 Package manager
ここで実行結果の最後の行が、pkg info コマンドの本来の出力である。 今は pkg パッケージ (pkg-2.5.1) だけがインストールされていることが分かる。
さて筆者は、何かインストールする時に、必ずたいてい、ログを残すようにしている。
そのインストールログは、/var/tmp の下に log
というディレクトリを作成することにし、さらにその下に
Install というディレクトリを作成して、その下に保存している。
ここでそのディレクトリを作成する。
root@fb150:~ # cd /var/tmp
root@fb150:/var/tmp # ls
vi.recover
root@fb150:/var/tmp # mkdir log
root@fb150:/var/tmp # chown nsmrtks log
root@fb150:/var/tmp # ls -l
total 1
drwxr-xr-x 2 nsmrtks wheel 2 Mar 4 10:03 log
drwxrwxrwt 2 root wheel 2 Mar 4 09:20 vi.recover
root@fb150:/var/tmp # cd log
root@fb150:/var/tmp/log # mkdir Install
root@fb150:/var/tmp/log # chown nsmrtks Install
root@fb150:/var/tmp/log # ls -l
total 1
drwxr-xr-x 2 nsmrtks wheel 2 Mar 4 10:03 Install
(なかなか ports の導入に辿り着かないが) pkg install git する。
ここで前述の teetime コマンド (筆者の /home/nsmrtks/bin に入っている)
を併用してログを残す。
(今回は
/var/tmp/log/Install/git2026030410.log というファイルにログが残された)
root@fb150:/var/tmp/log/Install # ~nsmrtks/bin/teetime -t git pkg install git
logging (from the next line till the end) to git20260304.log
teetime! Wed Mar 4 10:06:02 JST 2026
teetime! working directory is /var/tmp/log/Install
teetime> pkg install git
〜 (筆者の環境の都合で処理が失敗した)
teetime! Wed Mar 4 10:06:02 JST 2026
root@fb150:/var/tmp/log/Install # unset http_proxy https_proxy
root@fb150:/var/tmp/log/Install # ~nsmrtks/bin/teetime -t git pkg install git
conflicting git20260304.log
logging (from the next line till the end) to git2026030410.log
teetime! Wed Mar 4 10:06:52 JST 2026
teetime! working directory is /var/tmp/log/Install
teetime> pkg install git
Updating FreeBSD-ports repository catalogue...
Fetching meta.conf: . done
Fetching data: .......... done
Processing entries: .......... done
FreeBSD-ports repository update completed. 36626 packages processed.
Updating FreeBSD-ports-kmods repository catalogue...
Fetching meta.conf: . done
Fetching data: .. done
Processing entries: .......... done
FreeBSD-ports-kmods repository update completed. 239 packages processed.
All repositories are up to date.
Updating database digests format: . done
The following 28 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
brotli: 1.2.0,1 [FreeBSD-ports]
curl: 8.17.0 [FreeBSD-ports]
expat: 2.7.3 [FreeBSD-ports]
gettext-runtime: 0.26 [FreeBSD-ports]
git: 2.52.0 [FreeBSD-ports]
indexinfo: 0.3.1_1 [FreeBSD-ports]
libffi: 3.5.1 [FreeBSD-ports]
libidn2: 2.3.8 [FreeBSD-ports]
libnghttp2: 1.68.0 [FreeBSD-ports]
libpsl: 0.21.5_2 [FreeBSD-ports]
libssh2: 1.11.1,3 [FreeBSD-ports]
libunistring: 1.4.1 [FreeBSD-ports]
mpdecimal: 4.0.1 [FreeBSD-ports]
p5-Authen-SASL: 2.1900 [FreeBSD-ports]
p5-Crypt-URandom: 0.54 [FreeBSD-ports]
p5-Digest-HMAC: 1.05 [FreeBSD-ports]
p5-Error: 0.17030 [FreeBSD-ports]
p5-IO-Socket-SSL: 2.095 [FreeBSD-ports]
p5-MIME-Base32: 1.303 [FreeBSD-ports]
p5-MIME-Base64: 3.16 [FreeBSD-ports]
p5-Mozilla-CA: 20250602 [FreeBSD-ports]
p5-Net-SSLeay: 1.94 [FreeBSD-ports]
p5-URI: 5.34 [FreeBSD-ports]
pcre2: 10.47_1 [FreeBSD-ports]
perl5: 5.42.0_1 [FreeBSD-ports]
python311: 3.11.14_2 [FreeBSD-ports]
readline: 8.3.3 [FreeBSD-ports]
zstd: 1.5.7_1 [FreeBSD-ports]
Number of packages to be installed: 28
The process will require 353 MiB more space.
59 MiB to be downloaded.
Proceed with this action? [y/N]: y
〜
[28/28] Installing git-2.52.0...
===> Creating groups
Creating group 'git_daemon' with gid '964'
===> Creating users
Creating user 'git_daemon' with uid '964'
[28/28] Extracting git-2.52.0: .......... done
=====
〜
teetime! Wed Mar 4 10:10:53 JST 2026
root@fb150:/var/tmp/log/Install # ls -l
total 9
-rw-r--r-- 1 root wheel 1903 Mar 4 10:06 git20260304.log
-rw-r--r-- 1 root wheel 6987 Mar 4 10:10 git2026030410.log
git コマンドが /usr/local/bin/git としてインストールされた。
root@fb150:/var/tmp/log/Install # type git
git is /usr/local/bin/git
root@fb150:/var/tmp/log/Install # whereis git
git: /usr/local/bin/git /usr/local/share/man/man1/git.1.gz
root@fb150:/var/tmp/log/Install # cd
前置きが長くなったが、これでやっと ports が取得できそうだ。 それには git clone を用いる。 (最初の 1回だけ)
なお前述のように、/usr/ports の所有者を
root から nsmrtks (自ユーザ) に chown している。
よってこの git clone は、root でなく、一般ユーザである nsmrtks
で実行可能であるので、そのようにしている。
(以降も、プロンプトが「#」でなく「%」になっているものは、一般ユーザで実行している。)
(その際には、旧環境から新環境 (fb150) に slogin (SSH) して実行している。)
% ls -a /usr/ports/
./ ../
% git clone https://git.freebsd.org/ports.git /usr/ports
Cloning into '/usr/ports'...
〜
当初 cd /usr/ports して git clone https://git.freebsd.org/ports.git などと実行したら、/usr/ports/ports というディレクトリになってしまい、(途中で止めて) やり直した。
ここまで来たら /usr/ports/distfiles のシンボリックリンクを作成する
(git clone の前に作成していると git clone がエラーになる)。
リンク先は /home/distfiles である。
(前述を参考)
% cd /usr/ports
% ls -ld distfiles
ls: distfiles: そのようなファイルまたはディレクトリはありません
1で終了しました
1で終了しました
% ln -s /home/distfiles
% ls -ld distfiles
lrwxr-xr-x 1 nsmrtks wheel 15 3月 5 11:37 distfiles@ -> /home/distfiles
% ls distfiles/
distfiles:
〜 (既にファイルが入っているのでたくさん見える)
インデックスの取得というのも今やっておいた方がいいのだろうか?
% make fetchindex
/usr/bin/env fetch -am -o /usr/ports/INDEX-15.xz https://download.FreeBSD.org/ports/index/INDEX-15.xz
/usr/ports/INDEX-15.xz 1918 kB 192 kBps 10s
% ls -lt | head
total 11799
-rw-r--r-- 1 nsmrtks wheel 50889111 3月 5 11:41 INDEX-15
lrwxr-xr-x 1 nsmrtks wheel 15 3月 5 11:37 distfiles@ -> /home/distfiles
〜
なお、/usr/ports ファイルシステムは、インストーラのデフォルトの設定により、ZFS の機能で圧縮されており、
% zfs get compression
NAME PROPERTY VALUE SOURCE
zroot compression on local
zroot/ROOT compression on inherited from zroot
zroot/ROOT/15.0-RELEASE_2026-02-13_140813 compression on inherited from zroot
zroot/ROOT/default compression on inherited from zroot
zroot/ROOT/default@2026-02-13-14:08:13-0 compression - -
zroot/home compression on inherited from zroot
zroot/home/nsmrtks compression on inherited from zroot
zroot/usr compression on inherited from zroot
zroot/usr/local compression on inherited from zroot
zroot/usr/ports compression on inherited from zroot ←ココ
zroot/usr/src compression on inherited from zroot
zroot/var compression on inherited from zroot
zroot/var/audit compression on inherited from zroot
zroot/var/crash compression on inherited from zroot
zroot/var/log compression on inherited from zroot
zroot/var/mail compression on inherited from zroot
zroot/var/tmp compression on inherited from zroot
以下のように圧縮率が得られた。
% zfs get compressratio
NAME PROPERTY VALUE SOURCE
zroot compressratio 1.66x -
zroot/ROOT compressratio 1.75x -
zroot/ROOT/15.0-RELEASE_2026-02-13_140813 compressratio 1.00x -
zroot/ROOT/default compressratio 1.75x -
zroot/ROOT/default@2026-02-13-14:08:13-0 compressratio 1.80x -
zroot/home compressratio 1.77x -
zroot/home/nsmrtks compressratio 1.77x -
zroot/usr compressratio 1.47x -
zroot/usr/local compressratio 1.96x -
zroot/usr/ports compressratio 1.22x - ←ココ
zroot/usr/src compressratio 2.02x -
zroot/var compressratio 2.74x -
zroot/var/audit compressratio 1.00x -
zroot/var/crash compressratio 1.01x -
zroot/var/log compressratio 5.26x -
zroot/var/mail compressratio 1.00x -
zroot/var/tmp compressratio 1.06x -
先ほどの手順で ports をインストールしたので、とりあえず普通に make install する。 ディレクトリは /usr/ports/security/sudo である。
ここやこれ以降で指定している nice や nice +20 は、プログラムの実行の優先度を下げるコマンド及びそのオプションで、指定は必須ではない。
なお +20 というのは tcsh だった場合のオプションで、tcsh 以外 (sh や bash) で同じことをしようとすると -n 20 などになる。
% cd /usr/ports/security/sudo
% ls
distinfo files/ Makefile pkg-descr pkg-plist
% nice teetime -t install make install
logging (from the next line till the end) to install20260306.log
teetime! 2026年 3月 6日 金曜日 17時25分30秒 JST
teetime! working directory is /usr/ports/security/sudo
teetime> make install
〜
teetime! 2026年 3月 6日 金曜日 17時46分18秒 JST
% ls -l
total 404
-rw-r--r-- 1 nsmrtks wheel 158 3月 5 11:34 distinfo
drwxr-xr-x 2 nsmrtks wheel 5 3月 5 11:34 files/
-rw-r--r-- 1 nsmrtks wheel 3232406 3月 6 17:46 install20260306.log
-rw-r--r-- 1 nsmrtks wheel 4777 3月 5 11:34 Makefile
-rw-r--r-- 1 nsmrtks wheel 254 3月 5 11:34 pkg-descr
-rw-r--r-- 1 nsmrtks wheel 5892 3月 5 11:34 pkg-plist
drwxr-xr-x 4 nsmrtks wheel 19 3月 6 17:46 work-default/
% nice teetime -t clean make clean
logging (from the next line till the end) to clean20260309.log
teetime! 2026年 3月 9日 月曜日 08時58分57秒 JST
teetime! working directory is /usr/ports/security/sudo
teetime> make clean
===> Cleaning for pkgconf-2.4.3,1
===> Cleaning for pkgconf-2.4.3,1
===> Cleaning for gettext-tools-0.26
===> Cleaning for gettext-tools-0.26
===> Cleaning for libtextstyle-0.26
===> Cleaning for libtextstyle-0.26
===> Cleaning for sudo-1.9.17p2_2
teetime! 2026年 3月 9日 月曜日 08時59分08秒 JST
% ls -l
total 400
-rw-r--r-- 1 nsmrtks wheel 444 3月 9 08:59 clean20260309.log
-rw-r--r-- 1 nsmrtks wheel 158 3月 5 11:34 distinfo
drwxr-xr-x 2 nsmrtks wheel 5 3月 5 11:34 files/
-rw-r--r-- 1 nsmrtks wheel 3232406 3月 6 17:46 install20260306.log
-rw-r--r-- 1 nsmrtks wheel 4777 3月 5 11:34 Makefile
-rw-r--r-- 1 nsmrtks wheel 254 3月 5 11:34 pkg-descr
-rw-r--r-- 1 nsmrtks wheel 5892 3月 5 11:34 pkg-plist
たまにダイアログが出てきて、オプションを設定できるはずなのだが、画面が崩れてしまって、うまく表示できないようだ.. 拙作の teetime コマンドのせいだろうか。
経験上、後述の portupgrade をインストールすると、何故かうまくいくようなので、それまでは、オプションを変えられないが、この段階では、ダイアログではエンターを押して進めていく。
結果、なんとか無事ビルド・インストール出来たようだ。
次に sudoers ファイル (実体は /usr/local/etc/sudoers にある) を visudo で編集する。
% ls -ld /usr/local/etc/sudoers*
-r--r----- 1 root wheel 5565 3月 6 17:46 /usr/local/etc/sudoers
drwxr-xr-x 2 root wheel 2 3月 6 17:46 /usr/local/etc/sudoers.d/
-r--r----- 1 root wheel 5565 3月 6 17:46 /usr/local/etc/sudoers.dist
% md5 /usr/local/etc/sudoers*
MD5 (/usr/local/etc/sudoers) = 26346821161dc425b033092ee49de779
md5: /usr/local/etc/sudoers.d: Is a directory
MD5 (/usr/local/etc/sudoers.dist) = 26346821161dc425b033092ee49de779
1で終了しました
% su
Password:
# visudo
このとき、オリジナルと同一の /usr/local/etc/sudoers.dist というファイルも元から横に置かれているので、わざわざ自分でコピーを取っておかなくても変更点を比較できる。
筆者の環境では以下のように変更を行った。
diff -u /usr/local/etc/sudoers.dist /usr/local/etc/sudoers を示すと以下のようである。
--- /usr/local/etc/sudoers.dist 2026-03-06 17:46:11.423123000 +0900
+++ /usr/local/etc/sudoers 2026-03-09 09:05:52.595358000 +0900
@@ -67,7 +67,8 @@
## 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"
+# 2026-03-09 nsmrtks
##
## X11 resource path settings
# Defaults env_keep += "XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH"
@@ -120,6 +121,9 @@
## modules such as pam_faillock will not be printed.
# Defaults !pam_silent
+# 2026-03-09 nsmrtks
+Defaults env_keep += "http_proxy https_proxy"
+
##
## Runas alias specification
##
@@ -130,7 +134,8 @@
root ALL=(ALL:ALL) ALL
## Uncomment to allow members of group wheel to execute any command
-# %wheel ALL=(ALL:ALL) ALL
+%wheel ALL=(ALL:ALL) ALL
+# 2026-03-09 nsmrtks
## Same thing without a password
# %wheel ALL=(ALL:ALL) NOPASSWD: ALL
これで、wheel グループに所属している一般ユーザ nsmrtks は、sudo が実行できるようになった。
一般ユーザ nsmrtks を wheel グループに所属させることは、ここで対応済である。
% sudo pwd
あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:
#1) 他人のプライバシーを尊重すること。
#2) タイプする前に考えること。
#3) 大いなる力には大いなる責任が伴うこと。
セキュリティー上の理由で、あなたがタイプしたパスワードは表示しません。
パスワード:
/usr/ports/security/sudo
主に ports のための設定である。
/etc/make.conf ファイルを新規作成して..
% ls -ld /etc/make.conf
ls: /etc/make.conf: そのようなファイルまたはディレクトリはありません
1で終了しました
1で終了しました
% sudoedit /etc/make.conf
% ls -ld /etc/make.conf
-rw-r--r-- 1 root wheel 217 3月 9 09:14 /etc/make.conf
以下の内容にした。 (旧環境から持ってきて一部編集した)
# 2024- nsmrtks
# 2023-04-19,27,29?,05-03,07-20,10-27 nsmrtks
# 2017-09-27,2020-12-15 - 2021-09-24 nsmrtks
# see /usr/ports/Mk/bsd.command.mk
SU_CMD?=/usr/local/bin/sudo -E sh -c
#DISABLE_VULNERABILITIES=yes
# EoF
この SU_CMD は、ports でビルドするときに、たまに出て来る su を代わりに sudo を用いるように設定している。
ports のためのツール群である。
たまにダイアログが出てきて、オプションを設定できるはずなのだが、画面が崩れてしまうのは、未だ先ほどと同様である..
オプションを変えられないが、この段階では、ダイアログではエンターを押して進めていく。
% cd /usr/ports/ports-mgmt/portupgrade
% pwd
/usr/ports/ports-mgmt/portupgrade
% nice +20 teetime -t install make install
logging (from the next line till the end) to install20260309.log
teetime! 2026年 3月 9日 月曜日 09時27分08秒 JST
teetime! working directory is /usr/ports/ports-mgmt/portupgrade
teetime> make install
〜
teetime! 2026年 3月 9日 月曜日 10時00分59秒 JST
なんとか無事ビルド・インストール出来たようだ。
virtualbox-ose-additions をインストールしていないと、MS-Windows 側とクリップボードが共有できなかったり、時計がずれたり (保存して起動するだけでも)、いろいろ不都合が発生する。
FreeBSD では ports や pkg からインストールできる。
ここからは、先ほどインストールした portupgrade に付属の portinstall コマンドを用いて ports のソフトをインストールしていく。
virtualbox-ose-additions の ports の名前がうろ覚えだったので、先に pkg search コマンドで探している。
% pkg search virtualbox-ose-additions
virtualbox-ose-additions-6.1.50.1500068_3 VirtualBox additions for FreeBSD guests
virtualbox-ose-additions-70-7.0.26.1500068_1 VirtualBox additions for FreeBSD guests
virtualbox-ose-additions-71-7.1.16.1500068 VirtualBox additions for FreeBSD guests
virtualbox-ose-additions-72-7.2.6.1500068 VirtualBox additions for FreeBSD guests
virtualbox-ose-additions-legacy-5.2.44.1500068_10 VirtualBox additions for FreeBSD guests
virtualbox-ose-additions-nox11-6.1.50.1500068_3 VirtualBox additions for FreeBSD guests
virtualbox-ose-additions-nox11-70-7.0.26.1500068_1 VirtualBox additions for FreeBSD guests
virtualbox-ose-additions-nox11-71-7.1.16.1500068 VirtualBox additions for FreeBSD guests
virtualbox-ose-additions-nox11-72-7.2.6.1500068 VirtualBox additions for FreeBSD guests
virtualbox-ose-additions-nox11-legacy-5.2.44.1500068_9 VirtualBox additions for FreeBSD guests
用いている VirtualBox が 7.2.x であり (参照)、また X11 を使用予定なので、virtualbox-ose-additions-72 (nox11 でない方) をインストールする。
コンパイル開始。
% cd /var/tmp/log/Install/
% nice +20 teetime -t virtualbox-ose-additions-72_ portinstall -s virtualbox-ose-additions-72
logging (from the next line till the end) to virtualbox-ose-additions-72_20260309.log
teetime! 2026年 3月 9日 月曜日 10時48分29秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s virtualbox-ose-additions-72
〜
たまにダイアログが出てきて (今度からは正常である)、オプションを選べるので、もしデフォルトから変えたければ設定する。 (ただし経験上、あまりデフォルトから変えると、ビルドに失敗することもあった。)
gmp のオプション 『CPU_OPTS』「Enable assembly optimizations for your CPU」 というのにチェックが入っていなかったので、チェックを付けてみた (スペースキーを押す)。
% cd /var/tmp/log/Install/
% nice +20 teetime -t virtualbox-ose-additions-72_ portinstall -sw virtualbox-ose-additions-72
〜
% cd /var/tmp/log/Install/
% nice +20 teetime -t virtualbox-ose-additions-72_ portinstall -sw virtualbox-ose-additions-72
〜
teetime! 2026年 3月12日 木曜日 09時46分36秒 JST
% ls -ltr
total 6107
〜
-rw-r--r-- 1 nsmrtks wheel 39265775 3月 10 02:44 virtualbox-ose-additions-72_20260309.log
-rw-r--r-- 1 nsmrtks wheel 12204215 3月 11 17:30 virtualbox-ose-additions-72_20260311.log
-rw-r--r-- 1 nsmrtks wheel 26338643 3月 12 09:46 virtualbox-ose-additions-72_20260312.log
筆者の作業時間の都合で、何度か途中でコンパイルを中断して仮想マシンをシャットダウン・再度起動して、コンパイルを再開したりしている。
またその際には、仮想マシンがシャットダウンされている間に、VirtualBox
の fb150 の設定で「CPU 数」を増やしたりしている。
なんとか無事にコンパイル・インストールが終わった。
さて、ビルド・インストール中のメッセージが、teetime コマンドにより /var/tmp/log/Install/ 以下のログファイルに残っているので、それを見てみる。 (今回は最後の virtualbox-ose-additions-72_20260312.log を参照する)
〜
Installing virtualbox-ose-additions-72-7.2.6.1500068...
VirtualBox Guest Additions are installed.
To enable and start the required services:
# sysrc vboxguest_enable="YES"
# sysrc vboxservice_enable="YES"
To start the services, restart the system.
In some situations, a panic will occur when the kernel module loads.
Having no more than one virtual CPU might mitigate the issue.
For features such as window scaling and clipboard sharing, membership of
the wheel group is required. With username "jerry" as an example:
# pw groupmod wheel -m jerry
The settings dialogue for FreeBSD guests encourages use of the VMSVGA
graphics controller. Whilst this might suit installations of FreeBSD
without a desktop environment (a common use case), it is not appropriate
where Guest Additions are installed.
Where Guest Additions are installed:
1. prefer VBoxSVGA
2. do not enable 3D acceleration (doing so will invisibly
lose the preference for VBoxSVGA)
You may ignore the yellow alert that encourages use of VMSVGA.
〜
これと、/usr/local/etc/rc.d/ 以下にインストールされた dbus を参考にして..
% ls -ltr /usr/local/etc/rc.d/
total 18
-rwxr-xr-x 1 root wheel 593 2月 26 11:36 git_daemon*
-rwxr-xr-x 1 root wheel 592 3月 12 09:35 dbus*
-rwxr-xr-x 1 root wheel 1068 3月 12 09:40 vboxguest*
-rwxr-xr-x 1 root wheel 462 3月 12 09:40 vboxservice*
/usr/local/etc/rc.d/dbus の冒頭:
#!/bin/sh
# PROVIDE: dbus
# REQUIRE: DAEMON ldconfig
#
# Add the following lines to /etc/rc.conf to enable the D-BUS messaging system:
#
# dbus_enable="YES"
#
〜
以下を実行。
% sudo sysrc dbus_enable="YES"
dbus_enable: -> YES
% sudo sysrc vboxguest_enable="YES"
vboxguest_enable: -> YES
% sudo sysrc vboxservice_enable="YES"
vboxservice_enable: -> YES
% sudoedit /etc/rc.conf
/etc/rc.conf を調整して、/etc/rc.conf の末尾が以下のようになるように編集した。
〜
# 2026-03-12 nsmrtks (via sysrc)
#
# (see /usr/local/etc/rc.d/dbus)
dbus_enable="YES"
#
# (see /var/tmp/log/Install/virtualbox-ose-additions-72_20260312.log)
vboxguest_enable="YES"
vboxservice_enable="YES"
reboot したら、「vboxguest: loaded successfully」や、VBoxService が起動したようなメッセージが出ていた。 (キーボードに Scroll Lock キーがあればコンソールを遡って見ることが出来る)
kldstat で見ると vboxguest.ko がロードされていた。
% kldstat
Id Refs Address Size Name
1 16 0xffffffff80200000 1f4daa0 kernel
2 1 0xffffffff8214e000 620c10 zfs.ko
3 1 0xffffffff83018000 3220 intpm.ko
4 1 0xffffffff8301c000 2178 smbus.ko
5 1 0xffffffff8301f000 38d00 vboxguest.ko
また、VBoxService が起動していた。 (以前、起動していなかったことがあった。)
% ps ax | egrep -i box
1759 - Is 0:00.04 /usr/local/sbin/VBoxService
2103 0 S+ 0:00.00 egrep -i box
その後、fb150 を VirtualBox で保存状態にしてからまた起動しても、時計がずれなくなったことを確認した。
virtualbox-ose-additions をインストールしたことによって、X11 サーバ (xorg-server) もインストールされていた。
% pkg info | egrep X
〜
xorg-server-21.1.20,1 X.Org X server and related programs
〜
しかし、xauth や startx コマンドが入っていない。
% where xauth
1で終了しました
% where startx
1で終了しました
そこで、xorg をちゃんとインストールしてみる。
% pkg search ^xorg
xorg-7.7_3 X.Org complete distribution metaport
〜
% cd /var/tmp/log/Install/
% nice +20 teetime -t xorg portinstall -s xorg
logging (from the next line till the end) to xorg20260312.log
teetime! 2026年 3月12日 木曜日 10時35分23秒 JST
teetime! working directory is /var/tmp/log/Install
teetime> portinstall -s xorg
〜
teetime! 2026年 3月12日 木曜日 11時09分28秒 JST
無事にコンパイル・インストールが終わった。
さて、VirtualBox の画面をフルスクリーンモードに切り替えてから、startx を実行し、X11 サーバを起動してみる。
startx を実行すると、~/.xinitrc が存在すれば実行されるが、筆者の ~/.xinitrc は、twm が存在すれば実行するようになっている。 よって以下のスクリーンショットでも twm が起動している。
以前は、ここで SVGA (800x600) で起動してしまったことがあったのだが、xdpyinfo で確かめても、今回はちゃんと最初から、筆者の PC の画面である FullHD (1920x1080) で起動した。
今の状態で、X11 サーバが動いている他のホストから新環境 (fb150) へ、slogin -X や slogin -Y などを実行しても、X11 のコマンドを実行して表示することが出来ない。
% xclock
Error: Can't open display:
1で終了しました
これは、そもそも slogin -X や slogin -Y した時に、X11 forwarding request failed on channel 0 などというのが表示されている。
% slogin -Y fb150c
X11 forwarding request failed on channel 0
〜
% where xauth
/usr/local/bin/xauth
そこで、ここで sshd の設定を変える。 (xauth コマンドも必要だが先ほど xorg でインストールされた)
/etc/ssh/sshd_config で、X11Forwarding を yes に設定する。 これにより、他のホストから ssh で X11 のソフトの表示が可能となる。
これは、FreeBSD 14.0 になってから、デフォルトが変わったのだろうか? 以前は FreeBSD では yes がデフォルトだった気がする。
% cd /etc/ssh/
% ls -ld sshd_config
-rw-r--r-- 1 root wheel 3573 11月 28 12:45 sshd_config
% sudo cp -ip sshd_config sshd_config.ORIG
パスワード: 〜
% sudoedit sshd_config
以下の diff のように、X11Forwarding が yes になるようにしてみる。
--- sshd_config.ORIG 2025-11-28 12:45:15.000000000 +0900
+++ sshd_config 2026-03-13 11:01:59.885205000 +0900
@@ -91,7 +91,10 @@
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
-#X11Forwarding no
+
+# 2026-03-13 nsmrtks
+X11Forwarding yes
+
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
sshd に SIGHUP を送るのが必要なようだ。 (sshd(8) を参照)
% ps ax | egrep sshd
2018 - Is 0:00.06 sshd: /usr/sbin/sshd [listener] 0 of 10-100 startups
82671 - Is 0:00.03 sshd-session: nsmrtks [priv] (sshd-session)
82673 - I 0:00.14 sshd-session: nsmrtks@pts/7 (sshd-session)
82739 - Is 0:00.04 sshd-session: nsmrtks [priv] (sshd-session)
82741 - S 0:00.31 sshd-session: nsmrtks@pts/0 (sshd-session)
82779 0 S+ 0:00.01 egrep sshd
% sudo kill -HUP 2018
パスワード:
これで新環境 (fb150) へ slogin -X や slogin -Y などを実行したとき、X11 のソフトがリモートで動くようになった。