FreeBSD(1) FreeBSD をインストール


## はじめに

[Haiku](https://ja.wikipedia.org/wiki/Haiku_(%E3%82%AA%E3%83%9A%E3%83%AC%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0)) のネットワークドライバーが [FreeBSD](https://ja.wikipedia.org/wiki/FreeBSD) のドライバーを利用しているとの情報を得ました。

興味が湧いたので、Ubuntu Budgie 20.04 に[「VirtualBox」と「VirtualBox Extension Package」をインストール](https://qiita.com/FuRuYa7/items/c1d6ddaf0084870da628#lubuntu-1910-%E3%81%AB-virtualbox-%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB) して、ゲストOS に最新の [FreeBSD 12.1 をインストール]
(https://docs.freebsd.org/doc/12.1-RELEASE/usr/local/share/doc/freebsd/ja/books/handbook/bsdinstall.html) してみました。

こちらは「FreeBSD」のインストール編です。文章が長くなりましたので、投稿を分割しました。



#### FreeBSD の特徴:

- Linux ではありません。UNIX だろうなと思います 。それは、バークレー版のUNIX（[BSD](https://ja.wikipedia.org/wiki/BSD) ）の中でライセンスのしがらみのない「4.4BSD-Lite」をベースにしているからです。無料。（ちなみに、当時よく使われていたUNIX は企業向けで有料の[SVR4](https://ja.wikipedia.org/wiki/UNIX_System_V) ...）

- システムとして、「インストール = アプリケーション＋ドキュメント」が徹底されています。Unix といえる部分。**ドキュメント** （[FreeBSD ハンドブック](https://docs.freebsd.org/doc/12.1-RELEASE/usr/local/share/doc/freebsd/ja/books/handbook/index.html) ） 、および **man** [コマンド](https://docs.freebsd.org/doc/12.1-RELEASE/usr/local/share/doc/freebsd/ja/books/handbook/basics-more-information.html) が充実。

- アプリケーションのインストールには、バイナリ(packages) とビルド（[ports](https://docs.freebsd.org/doc/12.1-RELEASE/usr/local/share/doc/freebsd/ja/books/handbook/ports-using.html) ）があります。

- ビルド（ports）のツールが充実しています。Linux でアプリをビルド（コンパイル）するよりも管理が楽です。

- バイナリ(packages) 管理も[PKG](https://docs.freebsd.org/doc/12.1-RELEASE/usr/local/share/doc/freebsd/ja/books/handbook/pkgng-intro.html) ツールが出てきて、ほとんどAPT と似ています。というかこちらが元なのかな。

→色々なツールがあり、どういうツールを使うかは自分で選べますが、逆に選択肢が多いので初めてだと迷います。自分がそうでした。

→使っていると、コンパイルして使うのが普通になり、時間のありがたさが身にしみます。

- デフォルトのファイルシステムは「[ZFS](https://ja.wikipedia.org/wiki/ZFS) 」です。

→ちなみに、ファイルシステムとしては「[UFS](https://ja.wikipedia.org/wiki/Unix_File_System) 」もあります。 [Solaris](https://ja.wikipedia.org/wiki/Solaris) の流れですね。Ubuntu では自動でマウントされないので、手動でのマウント操作が必要ですが、GhostBSD があれば自動マウントできます。

- FreeBSD とLinux との大きな違いは「パッケージ システム」だと思います。アプリは自分でコンパイルして使うのが普通（だった）ということ。

今回はこの辺りとか、ドライバー類のビルド等を知りたいので、わざわざインストールしたわけです。後は、ぼちぼちと端末を使ってFreeBSD を学習して行けます。


---
#### FreeBSD 12.1 のダウンロード

[公式サイト (The FreeBSD Project)]
(https://www.freebsd.org/)

[Download FreeBSD]
(https://www.freebsd.org/where.html)

→「Installer Images」の「amd64」をクリック。



---
#### VirtualBox の仮想マシンを準備

```
名前: FreeBSD
タイプ: BSD
バージョン: FreeBSD (64-bit)
メインメモリ: 3500（←本当は 4GB 推奨）
プロセッサ: 2
ポインティングデバイス: PS/2 マウス（←USB タブレット にするとマウスが使えません）
ビデオメモリ: 128MB
グラフィックコントローラー: VMSVGA
ストレージ: 16GB（←ports を使うならもっと多めがオススメ）
ネットワーク: Intel PRO/1000 MT Desktop (82540EM)
USB: USB3.0 (xHCI)（←最初から指定できます）
```

---
#### ストレージの仮想光学ドライブに「.iso」をセット

→「起動」

「Welcome to FreeBSD」画面が表示されます。10秒待ちです。

![01.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/bd2cd387-fed9-7e06-6762-e40f2c0275e3.jpeg)
→ここで、すかさずキーを押すと、オプションの設定ができます。

「Enter」キー: そのまま続行。
「Esc」キー: ブートローダーのプロンプトに入ります。プロンプトは「OK」です。ここだけの専用コマンドが使えます。

バージョンにより使えるコマンドが変わるので「?」で一覧を確認します。例えば、gop はUEFI 立ち上げ時のみ使えるコマンドです。

```
OK ←プロンプト

OK ? ←利用できるコマンドが表示されます。
:
gop
ls
lsdev ←ディスクドライブの表示。
lsmod ←ロードされているモジュールの表示。
more ←テキストファイルの内容を表示。
boot
```
→ディスクドライブはC とかD とかの、[DOS/V とかMS/DOS](https://ja.wikipedia.org/wiki/DOS/V) の表示のしかたです。その頃に生まれたツールということかな。

##### オススメな設定

テキスト画面を広く（フルHD）してからインストールすると実機なら（VM はダメ）テキスト画面が広く使えます。その後のデスクトップ画面にも影響するはずです。

```
「Esc」キー: ブートローダーのプロンプトに入ります。

OK gop list ←使える解像度の一覧
mode 0: 1280x1024x32, stride=1280
mode 1: 1024x768x32, stride=1024
mode 2: 640x480x32, stride=640
mode 3: 800x600x32, stride=800
mode 4: 1920x1080x32, stride=1920

OK gop set 4
→解像度が変わり、文字が小さくなります。（1920x1080）
デフォルトは、800x600 です。

OK boot ←プロンプトから抜けて、ブート処理の続きへ
```

「6」キー: 下のオプション選択の画面を表示できます。
![02.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/36ef4fbb-8190-a89e-da6e-b2c718caac25.jpeg)
→ACPI をオフにしたり、セーフモードにしたり、シングルユーザモードでの立ち上げ指定ができます。
設定後に、「1」キー で上の画面に戻り、「Enter」キー で続行。

![03.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/83040b44-e4a8-9957-689c-845edc3b3fd9.jpeg)
→数行表示後、仮想コンソールの「VT」の表示モードが変化します。

実機の場合、このメッセージ画面が表示された後が、鍵です。これ以降のテキスト表示ができないと、FreeBSD は使えません。

自分のBIOS 立ち上げのPC では、それ以降は帯状の表示になり使えません。ちなみに、Ubuntu 系（Lubuntu、Ubuntu MATE）のライブ立ち上げでは[「live」と入力](https://qiita.com/FuRuYa7/items/31df16babf72cfec4873#%E3%83%96%E3%83%BC%E3%83%88%E3%81%AB%E3%81%A6gfxboot-%E3%81%A7%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%AB%E5%A4%B1%E6%95%97%E3%81%97%E3%81%BE%E3%81%99) しないと立ち上がりません。

同じように[gfxboot](https://en.opensuse.org/SDB:Gfxboot) の初期化でエラーするPC だと似たような現象かも…。gfxboot は、ビデオモードの設定をVESAビデオBIOS に依存しており、ハードによっては、[VBE](https://ja.wikipedia.org/wiki/VESA_BIOS_Extensions) を経由しない各ボード専用のドライバが必要みたい。

グラフィック表示（青い画面）でなくても、最初のWelcom to FreeBSD と同じように表示できるモードも追加してほしいところです。Lubuntu の「Live」入力みたいな回避策。

ただし、問題があっても、VirtualBox を使えばすんなり表示されます。一般的なハードウェアを仮想的に実現しているからで、また、VirtualBox で使えるかも試されているはずなので、動く可能性は高いです。

うまく行くと、「Welcome」画面が立ち上がります。
![10.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/56049dce-d3d2-17cc-1e52-c5bfd1e028bb.jpeg)
→「Install」を選択。

---
#### FreeBSD 12.1 のインストール

インストール画面が表示されます。最初はキーボードの設定です。JP106 を選択。キー入力は、@@ で確認。
![11.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/58017933-61f7-0076-5384-011efd42668f.jpeg)
ほとんどデフォルトの設定で続けます。

[ディスク名の付け方](https://docs.freebsd.org/doc/12.1-RELEASE/usr/local/share/doc/freebsd/ja/books/handbook/disks-naming.html) とかファイルシステムはLinux と違いますが、仮想ディスクなので気にしません。

![16.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/b9ef337c-3f6c-768f-4a6d-c3bc19a517d1.jpeg)

気付いたら[ZFS](https://docs.freebsd.org/doc/12.1-RELEASE/usr/local/share/doc/freebsd/ja/books/handbook/bsdinstall-partitioning.html#bsdinstall-zfs-menu) になっていました。

インストール完了後に再起動。
ログイン画面が表示:

FreeBSD のインストールは、コンソールのログインまでで完了です。

![04.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/86140415-c158-fdab-7002-9fda7eef5505.jpeg)

端末メインで使うのが普通？のようで、デスクトップは立ち上がりません。サーバーのインストールと似ています。

テキスト画面であってもマウスが使えるとテキストの貼り付けで便利ですが、マウスも使えません。（アプリの選択で Moused ？にチェックすると使えます。）

ちなみに、知っていると便利なTips:

テキストのメッセージを、スクロールしてさかのぼって見たいとき、普段ならマウスでスクロールさせますが、そのマウスは使えません。でも、昔からその機能が備わっています。

「`Scroll Lock`」キーを押します。表示モードが変わり、「↑」「↓」キーで画面がスクロールできます。再度「`Scroll Lock`」キーを押すと解除されます。自分も初めてこのキーを使いました。

root でログイン:

![06.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/ebebfc51-684a-daa1-6971-aa49bcc1f7fb.jpeg)

```
$ uname -a
FreeBSD ubn-box 12.1-STABLE FreeBSD 12.1-STABLE GENERIC  amd64
```

電源オフは、root でのシャットダウンコマンドを使います。PC がACPI 対応なら電源が落ちます。

```
# shutdown -p now
```

ちなみに、再起動は、

```
# shutdown -r now
```

または、

```
# reboot
```


---
### 参考: ISO イメージ以外からのインストール

ダウンロードサイトを見ると、ISO イメージ以外の形式も提供されています。


---
#### メモリスティックのイメージを使ったインストール:

ISO9660 のCD イメージでなく、通常のディスクパーティションのイメージです。ライブ立ち上げで失敗するときなどに、ファイルをいじれます。（うまく行くかは別にして…）

[FreeBSD-12.1-RELEASE-amd64-memstick.img.xz 2019-Nov-01 05:26（2019年11月1日）]
(https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/12.1/FreeBSD-12.1-RELEASE-amd64-memstick.img.xz)

checksum:

```
$ sha256sum FreeBSD-12.1-RELEASE-amd64-memstick.img.xz
1fe90cbbe7b58f5c629340591a6c2f8e84dffa7f7bde8238d1543350f3e81176 FreeBSD-12.1-RELEASE-amd64-memstick.img.xz
```

ダウンロードして、USB メモリ(/dev/sdc) に書き込んでみました。パーティションの確認には、「gparted」よりも「ディスク」アプリの方がわかりやすいみたい。マウントタイプもわかります。
なぜかパーティションが 3つ見えます。他のツールだと 2つ。

```
/dev/sdc1 パーティション 1: 819 KB EFI(FAT-12) ラベル= EFISYS
/dev/sdc2 パーティション 2: 994 MB FreeBSD(Bootable)
/dev/sdc5 パーティション 5: 994 MB ufs 2 ラベル= FreeBSD_Install
空き
```

→UEFI 立ち上げ用かと思ったら、BIOS 立ち上げにも対応していました。書き込まれた形式が違うだけです。ISO9660 イメージではなく、通常のディスクイメージなので、マウントすると修正できます。

GhostBSD があれば自動マウントしてくれるので楽です。

例えば、このイメージを書き込んだUSB メモリの/boot/loader.conf を修正してみます。

１. VirtualBox にインストールしたGhostBSD を起動。
ログイン後、デスクトップが立ち上がったら、USB メモリを挿入。
VM ウィンドウの右下のUSB アイコンを右クリック→「USB メモリの製品名」にチェック→マウントされます。

２. なぜか# だとpluma が起動できないので、ホームで作業。

３. 端末にて、

```
$ cp /media/FreeBSD_Install/boot/loader.conf /home/USER_NAME/ドキュメント/loader.conf
```

４. pluma で修正

５. 端末にて、

```
$ su -
# cp /home/USER_NAME/ドキュメント/loader.conf  /media/FreeBSD_Install/boot/loader.conf
```

６. シャットダウン

７. 修正したUSB メモリで立ち上げて見ます。

などなど…。


---
#### FreeBSD 仮想マシンのディスクイメージを使ったインストール:

すでにVM にインストールしたディスクイメージを入手できます。VM へのインストールの手間を減らせますが、root のパスワードはないし、ディスクの上限が 4GBです。本番で使うより、ちょっとした確認に使うのが良さそうです。

準備されているディスクイメージ形式:

- vhd:   VirtualPC、Hyper-V、Xen、VirtualBox
- vmdk:  VMWare
- qcow2: Qemu、KVM
- raw:   bhyve、未フォーマットのraw ディスクイメージ

---
VirtualBox 用のディスクイメージをダウンロード

[FreeBSD-12.1-RELEASE-amd64.vhd.xz 2019-Nov-01 05:42（2019年11月1日）]
(https://download.freebsd.org/ftp/releases/VM-IMAGES/12.1-RELEASE/amd64/Latest/FreeBSD-12.1-RELEASE-amd64.vhd.xz)

checksum:

```
$ sha256sum FreeBSD-12.1-RELEASE-amd64.vhd.xz
dd51a468a00348f02bcecd06049b60210ab944cf1da92bea619cc0a2496d4294 FreeBSD-12.1-RELEASE-amd64.vhd.xz
```

VirtualBox で、vhd ファイルを利用してみます。
（同じ手順で、古いマシンにある「vdi」ファイルも使えます。）

ダウンロードしたファイルを右クリックして、展開（解凍）します。

誤って削除しないように、/home/USER_NAME/VirtualBox VMs/ に「VM-hdd」フォルダを作成して、そこにコピーしました。

「VirtualBox」を起動します。
「新規」をクリック。

```
名前: FreeBSD 12.1
マシンフォルダー: /home/USER_NAME/VirtualBox VMs
タイプ: BSD
バージョン: FreeBSD(64-bit)
```
→「次へ」

メモリーサイズ: 3072
→「次へ」


ハードドライブ:

「すでにある仮想ハードディスクファイルを使用する」にチェック→右の「選択」アイコンをクリック。

→「追加」をクリック
ファイル名: FreeBSD-12.1-RELEASE-amd64.vhd
→「開く」

```
None Attached
	FreeBSD-12.1-RELEASE-amd64.vhd 4.00 GB  2.86 GB
```
→「選択」

「すでにある仮想ハードディスクファイルを使用する」
FreeBSD-12.1-RELEASE-amd64.vhd (Normal, 4.00 GB)
→「作成」

→「起動」


ログイン画面が表示:

```
FreeBSD/amd64 (freebsd) (ttyv0)

login:
```
→テキスト画面でもマウスが使えると貼り付け等に便利ですが、マウスは使えません。端末のメッセージをホストOS に貼り付けることもできません。

root でログイン:

```
login: root
root@freebsd:~ #
```
→パスワードなし。

```shell
# pwd
/root

# uname -a
FreeBSD freebsd 12.1-RELEASE FreeBSD 12.1-RELEASE r354233 GENERIC  amd64

# uname
FreeBSD

# uname -r
12.1-RELEASE

# hostname
freebsd

# ls
.cshrc	.k5login	.login	.profile

# ls /home
ls: /home: No such file or directory
```
→/home フォルダもありません。ユーザの追加も必要です。
イチから構築が必要ですが、4GB 以内に収まることでないと、無駄になります。


---
#### これからの作業

なお、デスクトップ環境が必要なときは、例えば、[Xorg を入れ](https://docs.freebsd.org/doc/12.1-RELEASE/usr/local/share/doc/freebsd/ja/books/handbook/x-install.html) 、[デスクトップ環境(Xfce 等) を入れ](https://docs.freebsd.org/doc/12.1-RELEASE/usr/local/share/doc/freebsd/ja/books/handbook/x11-wm.html) 、(Xfce の場合は)[ウィンドウマネージャ(xdm) を入れる](https://docs.freebsd.org/doc/12.1-RELEASE/usr/local/share/doc/freebsd/ja/books/handbook/x-xdm.html) という具合です。初期の頃のLinux のインストールと似てますが、ハードウェアの自動認識がしっかりしているので以前よりも楽です。

ところで、[システム更新はどうやる](https://docs.freebsd.org/doc/12.1-RELEASE/usr/local/share/doc/freebsd/ja/books/handbook/updating-upgrading-freebsdupdate.html) のかな？

ドキュメント[（FreeBSD ハンドブック）](https://docs.freebsd.org/doc/12.1-RELEASE/usr/local/share/doc/freebsd/ja/books/handbook/index.html) が充実。わかりやすくて詳しいので、学習しながらトライできます。（リリース毎にドキュメントが存在するので注意。最新だと未完の部分があります。その時は少し前のリリースを参照）


---
#### USB のネットワークドライバーについて調査（Haiku 関連）

##### FreeBSD でのドライバーの場所:

/boot/kernel/

- if_axe.ko
→（AX88172/AX88178/AX88772/AX88772A/AX88772B/AX88760 対応）

- if_axge.ko
→（AX88179 USB 3.0、AX88178A USB 2.0 対応）


---
##### FreeBSD での定義ファイル:

```conf:/boot/loader.conf

loader_brand="ghostbsd"
loader_logo="ghostbsd"
loader_menu_title="Welcome to GhostBSD"
hw.psm.synaptics_support="1"
net.inet.ip.fw.default_to_accept="1"
boot_mute="NO"
crypto_load="YES"
aesni_load="YES"
geom_eli_load="YES"
vfs.zfs.arc_max="512M"
zfs_load="YES"
```
---
##### FreeBSD でのドライバーのロード:

```conf:
if_axe_load="YES"
もしくは、
if_axge_load="YES"
```
続けて使うなら、上記のファイルに追記が必要です。

---
ただし、ライブ立ち上げ（書き込み禁止）等で、一時的にUSB のネットワーク接続がしたいときは、コマンドでドライバーのロードが可能です。（FreeBSD はロードされておりネットワークが接続されました。GhostBSD は接続されずロードが必要でした。）

USB2.0 アダプタのドライバーのロード:

```
$ su -
# kldload /boot/kernel/if_axe.ko
```
USB3.0 アダプタのドライバーのロード:

```
$ su -
# kldload /boot/kernel/if_axge.ko
```
→しばらく待つと、ネットワークに接続されました。
（画面右下のUSB 一覧でアダプタにチェックを入れることと、USB3.0 の場合は事前にxHCI を有効にしておきます。）

---
##### 下記がロードされている前提:

if_axe.ko の場合:

```
 ehci
 uhci
 ohci
 usb
 miibus
 uether　←最近追加
```

if_axge.ko の場合:

```
 xhci　←増えてます
 ehci
 uhci
 ohci
 usb
 miibus
 uether　←最近追加

```


---
##### Haiku でのドライバーの場所:

/boot/system/add-ons/kernel/boot/xhci、ehci、uhci、ohci、usb
/boot/system/add-ons/kernel/drivers/bin/usb_asix
/boot/system/add-ons/kernel/drivers/dev/net/usb_asix

miibus、uether が見当たりません。

→シンボリックリンクしまくり。ドライバー名が違うし、拡張子は付いていません。ポイントはアドオンとしてカーネルのドライバーが存在することと、ロード指定の定義ファイルらしきものが見当たらないということ。

Haiku はマイクロカーネルなので、一般的なモノシリックカーネルのように、カーネルモジュールを事前にロードするというよりも、必要なときに動的にロードされてるみたい。

個人的に知りたいことは、FreeBSD のネットワークドライバーの名前を変えるだけで使えるかということ。FreeBSD だと、その他のモジュール(USB とか) のロードも必要なわけです。Haiku のドライバー名にUSB が付いていることを考えると、zip みたいにフォルダごと（足りない部分を）まとめているのかもしれません。だから拡張子が付いていないのか、単にわかりやすくしているだけなのか…。

前進していないのは、自分にHaiku のsystem フォルダの書き込み保護を突破するスキルがないためです。書き込めないことには確認できません。

Linux でシステムをいじるなら、su になればいいのですが、Haiku はシングルユーザでsu なわけで、su のコマンドはありません。考えつくのは、他のHaiku で立ち上げて、system を書き込みできるようにマウントすることだと思います。それだと肝心のadd-ons/ フォルダが表示されないんですよね。どうやるかは資料不足…。


---
#### USB メモリへのインストールでは、問題あり。

自分の手持ちのPC では、実機でのUSB メモリへのFreeBSD 12.1 のインストールは成功しませんでした。HDD へインストールしたらどうかなのかは未確認。

今回のインストール作業は、Haiku で、「ネットワークアダプタ」（USB3.0）が認識されず、元々のドライバーの供給元？のFreeBSD ではどうなのか試してみるためのものでした。

１. FreeBSD のライブ立ち上げではネットワークが自動で接続されました。GhostBSD のライブ立ち上げでは、ネットワークにつながりません。ドライバーがロードされていません。

ドライバー自体はインストールされており、ロード指定(/boot/loader.conf)すればイケそうです。ただし、ライブなので書き込みはできません。インストール後なら指定できそうです。

→一時的に、ロードコマンドで接続できました。USB2.0、USB3.0 どちらもイケました。ひとつ前進です。
この状態でインストール作業もできました。（そのUSB メモリで立ち上がらないことは別にして）

２. BIOS 立ち上げPC では、インストール後の再起動にて、ブートローダーメニュー表示後に、画面上部にカラフルな帯を表示して、画面が乱れます。

→Lubuntu 等のライブ立ち上げで、グラフィカルブート画面の初期化でエラー「Error setting up [gfxboot](https://github.com/openSUSE/gfxboot) 」が発生し、[「live」の入力が必要なマシン](https://qiita.com/FuRuYa7/items/31df16babf72cfec4873#%E3%83%96%E3%83%BC%E3%83%88%E3%81%AB%E3%81%A6gfxboot-%E3%81%A7%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%AB%E5%A4%B1%E6%95%97%E3%81%97%E3%81%BE%E3%81%99) だと、画面乱れの現象が発生しそうです。


３. UEFI 立ち上げPC で、ブート時にUSB 光学マウス「Logicool M100r」を使っていると、接続エラーが多発。

```
ugen0.3: <Logitech USB Optical Mouse > at usbus0 (disconnected)
ugen0.3: <Logitech USB Optical Mouse > at usbus0
```
→同じ型番のマウスに交換でも変わらず、違うメーカーにすると表示されなくなりました。
→[似たような現象が報告](https://www.reddit.com/r/freebsd/comments/cf665d/usb_mouse_is_disconnected_and_connected_again/) されています。メッセージを見る限り同じメーカー品みたい。

４. UEFI 立ち上げPC で、下記の表示で止まっているように見えます。

```
arc4random: no preloaded entropy cache
```
arc4(rc4) 暗号のことで、セキュリティ関連ですね。エントロピーというファイルのロードが必要みたい。

この表示以降も、項番３ のメッセージが表示されます。


---
#### Errata（エラッタ）はインストール前に見ておくべきドキュメント

[FreeBSD 12.1-RELEASE Errata]
(https://www.freebsd.org/releases/12.1R/errata.html)
最終変更日：2019-11-22

リリース後に見つかった重要な情報が書かれています。FreeBSDをインストールする前に、見ておく必要があるみたい。関連するようなことは書かれていませんでした。

ただし、 Errata Notices にある「[FreeBSD-EN-19:19.loader](https://www.freebsd.org/security/advisories/FreeBSD-EN-19:19.loader.asc)  」(UEFI Loader Memory Fragmentation) が気になります。怪しい。

UEFI 立ち上げで失敗したら、再起動が必要で、回避策なし。→え〜っ。再起動しても同じなんですけど…。

バイナリへのパッチは、下記。

```
# freebsd-update fetch
# freebsd-update install
```

ソースへのパッチでもいいけど、とても面倒そう。

どちらにしても、プロンプトが立ち上がらないとコマンドを打てない。たぶん、他の問題はあったとしても、FreeBSD 11.3-RELEASE をインストールすれば立ち上がりそう。

悔しいので、FreeBSD 12.1 のメモリスティックイメージでトライしてみました。これなら更新かかるでしょう。

ところがライブだと、freebsd-update がない。インストールが必要→pkg のインストールが必要→/usr/sbin/pkg が使えない→ports で「ports-mgmt/pkg」のインストールが必要→ports が使えるように Ports Collection のインストールが必要→portsnap を使おうとしたら、portsnap のミラーに接続できず→ネットワークドライバーはロードされて、接続はできているけど、DHCP が動いていない。→DHCP を動かすには、自分のスキルだと新規インストールしかない。ダメですね。

問題視したレビューを見かけないので、間欠で、動いている間に更新して気づかないかもしれないし、BIOS 立ち上げならそもそも出ない現象。というかそこまで行かないのかな。

---
#### USB メモリで立ち上がらない問題が解決しました。

上記のErrata は関係ありませんでした。

UEFI 立ち上げPC に、FreeBSD 11.3-RELEASE をUSB メモリにインストールしてみると、下記のようにコマンド待ちになったので、気付きました。

```
mountroot>
```

これは初歩的なミス。「コマンド待ちの見落とし」でした。
FreeBSD 12.1 だと、

```
mountroot>ugen0.3: <Logitech USB Optical Mouse > at usbus0 (disconnected)
```
とか、

```
mountroot>ugen0.5: <ELCOM MF-TKU3> at usbus0
```
などのように、別のメッセージと重なっていて気付きませんでした。そのたびに重なるメッセージも変わります。「/」のマウントに失敗して、コマンド待ちしていたようです。コマンド待ちなので、改行もしないし、処理も次に進みません。表示も一回だけです。メッセージが重なって見づらい上に、Enter キーを押すとリブートします。

もし、キーを押すとすれば、「.」または「?」キーです。
そして、

```
mountroot> ufs:/dev/da0p2
```
とすると、一時的に立ち上げできます。「:」は Shift+「;」です。（/dev/da0p2 がufs で、/ にマウントする場合）

VirtualBox やHDD へのインストールではまず起こりません。
USB メモリにインストールした場合、USB メモリを2本使うので起こります。

インストール時はライブUSB メモリが若番(da0) なのでインストール先が2番目(da1p2) です。インストール後の再起動でライブUSB メモリを抜くと、インストール先が若番(da0p2) に変わりますが、/etc/fstab は元の値なので自動マウントが失敗します。

次に、立ち上げたあとに、/etc/fstab を修正します。

```
/dev/da1p2 /    ufs  rw  1  1
/dev/da1p3 none swap sw  0  0
```
↓ 修正

```
/dev/da0p2 /    ufs  rw  1  1
/dev/da0p3 none swap sw  0  0
```
→再起動後、正常にマウントされると、あれだけ表示されていたマウスのエラーが表示されません。ログの登録はあるのかも。

Ubuntu ではデバイス名でなく、UUID が使われているので気にもしていませんでした。またデバイス番号は、Ubuntu だとアルファベットですが、FreeBSD は数字で0 始まりというのもわかりづらくしています。ちなみに、ライブUSB はボリューム名(/dev/ufs/freebsd_install) で指定されていました。こういう指定もできるみたい。

ちなみに、

```
mountroot> ?
```
→利用できるデバイス名の表示。ごちゃまぜ表示なのでわかりづらいと思いましたが、よく見ると詳細表示されています。改行がないだけです。

使える表現方法を、daop3 da0p2 da0p1 da0 の順で、表現の違いごとに表示します。デバイス番号、ディスクID、UUID、GPTID、ラベル名、とか、その他のデバイス。わかっていればわかる表示。
表現方法は何種類かあるということです。ここでは、p2 に注目。


---
UEFI 立ち上げPC で、USB メモリにFreeBSD 12.1 をインストールし直しするときは、

インストール完了(reboot 画面) の一歩手前で、「マニュアルでの修正をするか」と聞いてくるので、「Yes」としてshell に降りて、/etc/fstab を事前に修正しておくと、完璧です。

```
# vi /etc/fstab
```
修正し終わったら、

```
# cat /etc/fstab
```
→確認。

```
# shutdown -p now
```
→ライブUSB メモリを抜いて、再立ち上げ。

ちなみに、FreeBSD でのインストールでは、ライブ立ち上げ時に gop set 4 として立ち上げた場合、インストール先にもその解像度が引き継がれ、高解像度(フルHD)でテキスト画面が表示できました。

→惜しいかな、いつの間にか高解像度で起動されなくなりました。デフォルトの800x600 で立ち上がります。なごりとして、/boot/loader.conf （バグがある/boot/loader.rc.local の代わり）に「gop set 4」が残っています。無効になったみたい。
ライブ立ち上げ時に gop set 4 として立ち上げると、高解像度で立ち上がります。


##### Vi の使い方を忘れたら:

```
たぶん、英語キーボードになっています。
「:」は、英語キーボードでは shift+「;」
「_」は、英語キーボードでは  shift+「-」

vi 起動直後はコマンドモード。Esc で再びコマンドモードに入れます。

編集モードになるには:
i	現在のカーソル位置に文字を挿入
A	現在行の行末に追加
O	現在行の前に行を挿入

x	１文字を削除
dd	１行を削除

Esc でコマンドモードにしてから:
：q!	保存せずに終了
：wq	保存して終了
```
→一番下の行に「:」が表示されないと終了はできません。


---
### あとがき

やっとのことで、USB メモリにインストールできました。

「FreeBSD」と「Haiku」は、Linux ではないので、Linux とは違う世界を見せてくれます。なので、勉強しがいがあります。

もし、FreeBSD のインストールで苦労しているのなら、「VirtualBox」と（次回に紹介している）「GhostBSD」がしあわせにしてくれます。



（[次の投稿に続く]
(https://qiita.com/FuRuYa7/items/f595f2f3ba861b8aecb6)）


---

今までの**投稿一覧**は 「[ここ](https://qiita.com/FuRuYa7/items/f82312cd7670408dfa8b#%E6%8A%95%E7%A8%BF%E4%B8%80%E8%A6%A7) 」


-