FreeBSD(3) GhostBSD をUSB メモリにインストール

## はじめに

「FreeBSD 12.1」をUSB メモリにインストール。いくらやっても[立ち上がらなかった](https://qiita.com/FuRuYa7/items/bdfe0dae3f911cdd7515#usb-%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%B8%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%AF%E5%95%8F%E9%A1%8C%E3%81%82%E3%82%8A) のですが、やっと、UEFI 立ち上げPC のみですが[立ち上がりました](https://qiita.com/FuRuYa7/items/bdfe0dae3f911cdd7515#usb-%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%A7%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%8C%E3%82%89%E3%81%AA%E3%81%84%E5%95%8F%E9%A1%8C%E3%81%8C%E8%A7%A3%E6%B1%BA%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F) 。

それらの知識を得て、デスクトップ版の「GhostBSD 12.1」のUSB メモリへのインストールに再トライしました。こちらは、[UEFI 立ち上げのPC](https://qiita.com/FuRuYa7/items/c14fc049a03a005d7d5a#uefi-%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%92%E3%81%AEpc-%E3%81%A7usb-%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88) だけでなく、[BIOS 立ち上げのPC](https://qiita.com/FuRuYa7/items/c14fc049a03a005d7d5a#bios-%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%92%E3%81%AEpc-%E3%81%A7usb-%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88) でも成功しました。

色々いじって感じたのは、（手持ちの）BIOS 立ち上げのPC ならコンソール表示の問題でGhostBSD しか使えませんが、UEFI 立ち上げできるなら、GhostBSD よりもFreeBSD の方が柔軟性がある（ブート時の自動マウントの問題なし、ネットワークドライバーの自動ロード）ので、FreeBSD + MATE を考えても良い気がします。なぜ違うかは [「ここ」](https://qiita.com/FuRuYa7/items/b71e0faeb190432b2c51#freebsd-%E3%81%A8ghostbsd-%E3%81%AE%E5%B7%AE%E3%81%AF%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E3%81%AE%E9%81%95%E3%81%84%E3%81%9D%E3%82%8C%E3%81%AF%E5%A4%A7%E3%81%8D%E3%81%AA%E5%B7%AE) 

どちらにしても、インストールで苦労したくなかったら、VirtualBox へのインストールが楽です。でも、仕事で使うとか取っ掛かりにはよくても、深くは勉強できないかな。

参考:

[GhostBSD 公式サイト]
(http://www.ghostbsd.org)


---
#### 公式版(MATE) をダウンロード

GhostBSD ダウンロード
(http://www.ghostbsd.org/download)

GhostBSD 20.01 (64-bit, amd64) 公式リリース
「GhostBSD-20.01.iso」

チェックサム確認:

```
$ sha256sum GhostBSD-20.01.iso
125ffcd78c9ac7f72790462543564cd8ac641efb01644c3e6f34ea719d170eed GhostBSD-20.01.iso
```



---
## BIOS 立ち上げのPC でUSB メモリにインストールする場合

こちらのPC は内蔵ボードの有線LAN 接続で、自動的にネットワーク接続ができます。

BIOS 立ち上げのPC に、作成したライブUSB メモリを挿入して電源を入れます。
（各PC のやり方でUSB メモリでブートさせます。）

「Welcome to GhostBSD」画面が表示されますが、待ちが短く、すぐ流れます。

![bsd-boot-menu-01.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/9bf770f4-4e3c-0ff2-e73c-8beb2b20e639.jpeg)
→ここで、すかさず「Esc」キーを押すと、ブートローダーのプロンプトになり、専用コマンドが使えます。BIOS 立ち上げだと、gop は使えないのでやれることは少ないです。コマンドを実行したら「boot」と入力すると処理を続行できます。

「6」キー: 下の画面を表示できます。
![bsd-boot-menu-02.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/c5d209dc-9664-c1c2-a504-300718862c98.jpeg)
→設定して、「1」キー で上の画面に戻ります。そして、「Enter」キー で続行です。

![03.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/83040b44-e4a8-9957-689c-845edc3b3fd9.jpeg)

→数行表示後、「VT」の表示モードが変化します。自分のBIOS マシンでは未対応みたいで、これ以降は画面上部に1cm ほどの帯になって、表示内容がわからなくなります。

ちなみに、このPC は、Ubuntu 系のライブ立ち上げでは、[「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) 。同じようなPC だと同じ現象かも…。

![bsd-boot-menu-04.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/0740e73b-b064-9b30-00d7-294c30e24ac7.jpeg)
→表示の異常があっても、GhostBSD だと、この青い「表示ドライバーの選択」画面が表示され、停止して待ってくれるので、救いがあります。（上記はVirtualBox 時の画面）

BIOS 立ち上げPC の場合は、下記を選んで、Enter

```
vesa ... 
```
この選択で、デスクトップ画面が表示できます。

画面の帯を見ていて変化しなくなったら、
「↓」x7、Enter とします。「`vesa`」ドライバーを選んだはずです。

うまくいけば、デスクトップ画面が立ち上がります。


---
#### ライブのデスクトップが表示されました。

![bsd-usb-boot.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/c3c9e0a3-603b-b18c-214f-ca14cc4bb155.jpeg)
→この画面はライブUSB メモリで立ち上げたときの画面です。VirtualBox での使用を前提としたシステムになっていて、そのエラーが出ています。

ちなみに、シャットダウンすると、その後も帯状の表示に戻ります。
あと、コンソール画面への切替も控えた方がよいです。元の表示に戻れません。誤って操作したら、Ctrl+Alt+F2 として、root[Enter]、（ライブの場合は）パスワード無し、reboot[Enter] として再起動させます。ちなみに、Ctrl+Alt+F1 がデスクトップ画面です。

---
#### インストール

事前にFat32 で初期化したUSB メモリを挿入します。
自動でマウントされないと使用できません。
アイコンを右クリックして、アンマウントしておきます。

ちなみに、そのUSB メモリをZFS やBefs で使っていたのなら、Ubuntu の「ディスク」アプリ等で、NTFS で全面初期化（初期化オン。時間がかかります）してから、Fat32 でフォーマットしておくと、安心です。

単にFat32 でフォーマットだけだと、頭しかクリアされないので残骸が残ります。その影響はインストール完了後の再起動（2〜3時間後）で判明するので判断が難しいところです。

---
デスクトップにある「Install GhostBSD」アイコンをクリック。
→「GhostBSD Installer」が起動されます。

「Welcom To GhostBSD!」画面が表示
インストールのやり方はVirtualBox とほぼ同じです。

ディスクのフォーマットでは、「MBR」で、「ufs」のAUTO にしました。USB メモリなら、UFS の方が使い勝手が良さそうです。
AUTO にするとスワップパーティションを自動で作ってくれます。

---
インストール完了後、再起動の画面が出ますが、ライブを抜くタイミングが欲しいので、「Continue」を選び、シャットダウンします。

画面上部に帯状の表示になりますが、しばらく待てば電源が落ちます。ライブUSB を抜きます。

---
電源を入れます。

「Welcome to GhostBSD」画面が表示されたら、すかさず「Esc」キーを押すと、ブートローダーのプロンプトになります。BIOS 立ち上げだと、gop は使えないのでやれることは少ないです。

```
lsdev
```
→起動ディスクのパーティション名を確認。

```
disk0:
  disk0s1: FreeBSD
    disk0s1a : FreeBSD UFS
    disk0s1b : FreeBSD swap
```
→MBR だとスライス番号が加わるみたい。(/dev/da0s1a)

```
boot
```
→ブート処理を続行できます。

しばらくすると、例の帯状の表示になり、表示内容はわかりませんが、「/」への自動マウントに失敗して、コマンド待ちのはずです。


```
mountroot> 
```
注意は、英語キーボードなので「:」は Shift+「;」と入れることです。

```
ufs:/dev/da0s1a
```
もしくは、

```
ufs:/dev/label/rootfs0
```

とすると、一時的に立ち上げできます。下のやり方だとデバイス名を確認しておく必要がありません。一回みればいいだけだけど…。


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

１. 起動時の自動マウントに失敗して、コマンド待ちになります。

```
mountroot>
```
一時的な対応は上記。本処置は今のところわかりません。

ブート時の自動マウントで失敗する原因が、FreeBSD とGhosotBSD では異なります。FreeBSD は、単なる/etc/fstab の[デバイス番号のズレ](https://qiita.com/FuRuYa7/items/bdfe0dae3f911cdd7515#usb-%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%A7%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%8C%E3%82%89%E3%81%AA%E3%81%84%E5%95%8F%E9%A1%8C%E3%81%8C%E8%A7%A3%E6%B1%BA%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F) でしたが、GhosotBSD ではラベル名で指定されており、別の問題です。/etc/fstab をデバイス名で指定してみましたが同じでした。

オンライン検索でGPT でなく、MBR でインストールするとイケた。との記述がありましたが、今回はMBR なのでダメですね。

２. BIOS 立ち上げPC で、ブート中、およびシャットダウン中、および、コンソール画面で、画面上部にカラフルな帯を表示します。

→原稿中にも書きましたが、Ubuntu 系のライブ立ち上げで、グラフィカルブート画面の初期化でエラー「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) だと、FreeBSD やGhostBSD の実機へのインストールは苦労します。

ハード(BIOS の機能) が「[VT](https://ja.wikipedia.org/wiki/%E4%BB%AE%E6%83%B3%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB)」に対応できないからだと思われます。「[VT](https://www.freebsd.org/cgi/man.cgi?query=vt&sektion=4) 」だと使えないみたいなので、以前の「[SC](https://www.freebsd.org/cgi/man.cgi?query=sc&sektion=4) 」の指定にできればコンソール画面は使えるかもしれません。

試しに指定してみましたが、画面が固まります。指定のしかたが間違っているのかもしれません。VT の採用は11 からみたいなので、FreeBSD 10 辺りを使えば、イケるかもしれません。

FreeBSD だと致命的ですが、GhostBSD なのでBIOS 立ち上げのPC でも使えます。

３. デスクトップ画面の解像度が「1024x768」のみです。

vesa ドライバーが使われています。MATE のダイアログ画面だとウィンドウの下に「閉じる」ボタンがあるので、解像度は重要です。それが押せる広さの解像度なのでまだマシです。小さな画面で使われそうなMATE だからこそ、タイトルバーの右にも閉じるボタンが欲しいところです。

ここで、フルHD にできるかは、トライするしかなさそう。


---
## UEFI 立ち上げのPC でUSB メモリにインストールする場合

UEFI 立ち上げのPC に、作成したライブUSB メモリを挿入して電源を入れます。
（各PC のやり方でUSB メモリでブートさせます。）

ちなみに、このPC は、USB3.0 ネットワークアダプタで有線LAN 接続しています。必要なドライバーがインストールされ、GhostBSD で認識されてはいますが、自動で接続されません。

「Welcome to GhostBSD」画面が表示されます。 GhostBSD では待ちが短く、すぐに次の画面に流れます。

![bsd-boot-menu-01.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/9bf770f4-4e3c-0ff2-e73c-8beb2b20e639.jpeg)
→ここで、すかさず「Esc」キーを押して、ブートローダーのプロンプトに入ります。

なぜか、余計なメッセージで画面は乱れ、「?」を含めた英記号の入力もできません。

それらは無視して、下記のコマンドを入力します。
行頭の「OK」は、プロンプトです。


```
gop list
```
→UEFI 立ち上げ時のみ使える解像度の一覧を表示:

```
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
```
解像度の変更（1920x1080）:

```
gop set 4
```
→解像度が高くなるので文字が小さくなります。

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

しばらくすると、解像度が高い場合は水色、低い場合は紺色の背景の「表示ドライバーの選択」画面で、選択待ちになります。（下記はVirtualBox での画面）

![bsd-boot-menu-04.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/0740e73b-b064-9b30-00d7-294c30e24ac7.jpeg)

UEFI 立ち上げPC の場合は、下記を選んで、Enter

```
scfb ... 
```

→うまくいけば、デスクトップ画面が立ち上がります。


---
#### ライブでのデスクトップが表示されました。

![bsd-usb-boot.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/c3c9e0a3-603b-b18c-214f-ca14cc4bb155.jpeg)
→ちなみに、この画面はライブUSB メモリで立ち上げたときの画面です。VirtualBox での使用を前提としたシステムなので、そのエラーが出ています。

gop set 4 で解像度を上げていれば、フルHD(1920x1080) 表示になります。


---
#### 一時的にネットワークに接続

システムをインストールするには、ネットワーク接続が必要です。ネットワークのドライバーはインストールされているので、コマンドを使うことで、ドライバーのロードができます。

手持ちのアダプタ（の使用チップ）によりドライバー名は異なります。

- 「Plugable USB LAN Adapter USB 2.0 10/100」（ASIX社 AX88772 チップ）→if_axe.ko

- 「plugable USB3.0 Gigabit Ethernet Adapter: USB3-E1000」（ASIX社 AX88179 チップ）→if_axge.ko


##### USB2.0 アダプタの場合:

```
$ su -
# kldload /boot/kernel/if_axe.ko
```

##### USB3.0 アダプタの場合:

```
$ su -
# kldload /boot/kernel/if_axge.ko
```
→しばらく待つと、ネットワークに接続されました。


---
##### DHCP が使えるかの確認

```
# ping google.co.jp
```
返ってきたパケットの時間(ms) が繰り返し表示されれば名前解決されています。OK です。
Ctrl+C で中断できます。これができないと、ミラーサイトに接続できません。


---
#### インストール

事前にFat32 で初期化したUSB メモリを挿入します。
自動でマウントされないと使用できません。
アイコンを右クリックして、アンマウントしておきます。

ちなみに、そのUSB メモリをZFS やBefs で使っていたのなら、Ubuntu の「ディスク」アプリ等で、NTFS で全面初期化（初期化オン。時間がかかります）してから、Fat32 でフォーマットしておくと、安心です。

単にFat32 でフォーマットだけだと、頭しかクリアされないので残骸が残ります。その影響はインストール完了後の再起動（2〜3時間後）で判明するので判断が難しいところです。

デスクトップにある「Install GhostBSD」アイコンをクリック。
→「GhostBSD Installer」が起動されます。

「Welcom To GhostBSD!」画面が表示

インストールのやり方は、VirtualBox とほぼ同じです。
ディスクのフォーマットでは、GPT で、ufs のAUTO にしました。USB メモリなら、UFS の方が使い勝手が良さそうだからです。

また、AUTO だとEFI とスワップパーティションが自動で取られます。
→先頭がEFI なので、システムは、/dev/da0p2 または、/dev/da1p2 になります。


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

USB メモリに「GhostBSD」をインストールしました。
インストール後の立ち上げで失敗します。
HDD やVirtualBox へのインストールでは問題ありません。

１. GhostBSD で、ネットワークにつながりません。
画面右上の「ネットワーク接続」アイコンに赤い「x」が表示。

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

ライブ立ち上げでは、インストール作業のために、一時的に、ロードコマンドで接続しました。USB2.0、USB3.0 どちらもイケました。

インストール完了後、再起動してから、
/boot/loader.conf の最後の行に下記を追記します。

##### USB2.0 アダプタの場合:
if_axe_load="YES" 

##### USB3.0 アダプタの場合:
if_axge_load="YES" 


２. 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) 暗号のことで、セキュリティ関連ですね。エントロピーというファイルのロードが必要みたい。

→実は、これが問題ではなく、これよりも上にある下記のメッセージが問題でした。

```
mountroot>
```

これは初歩的なミス。「コマンド待ちの見落とし」でした。
「/」のマウントに失敗して、コマンド待ちしていたようです。コマンド待ちなので、改行もしないし、処理も次に進みません。表示も一回だけです。

ただし、GhostBSD 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
```
もしくは、

```
mountroot> ufs:/dev/label/rootfs0
```

とすると、一時的に立ち上げできます。英語キーボードになっているので「:」は Shift+「;」です。（「/」に/dev/da0p2 をufs でマウントする場合）

ちなみに、

```
mountroot> ?
```
→利用できるデバイス名を表示。改行がないのでわかりづらいですが、よく見ると詳細に表示されています。使う時は、頭に /dev/ が必要です。

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

##### FreeBSD での原因

ちなみに、FreeBSD での問題は、/etc/fstab に書かれているデバイスの指定がデバイス名で直接書かれていたことでした。

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

インストール時はライブ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
```

##### GhostBSD は原因が違う

GhostBSD では、ラベル名で指定されています。

```
/dev/label/rootfs0 /    ufs  rw  1  1
/dev/label/swap0 none swap sw  0  0
```
これだと、/etc/fstab の修正は要りません。
そして、

```
mountroot> ufs:/dev/label/rootfs0
```
で立ち上がりました。なので、ラベルは有効です。
自動マウントできない別の理由がありそうです。

ちなみに、
/etc/fstab を/dev/da0p2 の指定に書き換えても同じでした。




---
### あとがき

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

VirtualBox とか、HDD(SSD) へのインストールはすぐ出来ますが、USB へのインストールでは苦労しました。些細なことですが、Ubuntu に慣れてしまっていて気付きませんでした。

→デスクトップ環境のない「FreeBSD」のインストール編は、[こちら]
(https://qiita.com/FuRuYa7/items/bdfe0dae3f911cdd7515)

もし、インストールに疲れて、Ubuntu で良いので簡単にインストールできるフレーバーが欲しいなら、[こちら](https://qiita.com/FuRuYa7/items/29d86afb884b5d778474)



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


---

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


-