GhostBSD 24.07.3の環境構築(その5;再インストール)

いったい何回目の再インストールかわからないレベルになってきましたが,SSDを撤去して日立の2TBのHDDを2台いれて,ミラーリングで動かすことにします。バラしたついでにマザーボードを確認したらASRockのB550M Steel Legendでした。ネットワークに繋がらないと不便すぎるのでUSB接続の適当なネットワークアダプタ(Apple純正の100Mbpsのネットワークインターフェースを使ったらue0として認識した)を突っ込んでインストールをはじめました。

それにしても方針が定まりません。

1. GhostBSDのオフィシャル版をUSBメディアから起動。
2. デスクトップ上のInstall GhostBSDというアイコンをダブルクリックしてインストーラを起動
3. 言語を選択(日本語)
4. キーボードを選択(Englis (US) -- Generic 101-key PC)
5. Time Zoneを選択(Asia -- Tokyo)
6. Installation Typeは何も考えずにFull disk configuration
7. ZFS ConfigurationはPool Typeを2 disk mirrorとしてada0とada1にチェック。Swap Sizeをメインメモリと同じ65536MBに変更
8. Boot OptionはデフォルトのFreeBSD UEFI loader only
9. Userの設定では適当なユーザを設定しておきます。自分用の本番設定はインストールをしてからadduserコマンドで設定します。そうしないとUIDとかGIDを勝手に割り振られてややこしいことになるので。ここで設定したユーザーは自分用のアカウントでrootになれることを確認すれば消してしまいます。
10. インストールがはじまる。
11. インストールが終わったら再起動するかどうか聞かれるのでそのまま再起動してUSBスティックを抜く。

12. 再起動したら適当に作ったアカウントでログイン
13. アプリケーション--システムツール--MATE端末とたどってターミナルを起動
14. suでrootになる。そのとき,適当に作ったユーザーのパスワードを入力するとrootになれる。
15. pciconf -lvとするとRTL8125がnone0となっていてドライバが動いていないことがわかる。
16. pkg install realtek-re-kmodとしてRTL8125用のドライバをインストールする。
17. /boot/loader.confに以下を追記。
if_re_load="YES"
if_re_name="/boot/modules/if_re.ko"
18. /etc/rc.confに設定を追記
ifconfig_re0="inet 192.168.xxx.yyy netmask 255.255.255.0"
defaultrouter="192.168.xxx.1"
hostname="hoge.fuga.jp"
ntpdate_enable="YES"
ntpdate_flags="-b 192.168.xxx.zzz"
sshd_enable="YES"
ntpdはローカルのntpサーバーとちゃんと接続できないのでntpd_*のエントリーはコメントアウト。
ローカルの環境なのでipfw_enableとfirewall_enableもコメントアウト。
19. ここまで設定したらちゃんとネットワークアダプタが認識されるか確認するために再起動。

20. ログインしてpciconf -lvとするとちゃんとRTL8125がre0として認識されていることがわかる。
21. ネットワークケーブルをre0のポートに接続してifconfigを叩くとちゃんと2500Base-Tで接続していることが確認できる。
22. パッケージのアップデート
pkg update
pkg upgrade
23. グループの追加
自分用ユーザーはUIDとGIDを昔から使ってきたものを使いたい。/etc/groupを編集して,100, 200, 300, 400のGIDを手動で追加。
24. 自分用ユーザの設定
adduserと叩いてユーザーを追加する。UIDは以前から使ってきた番号を設定。groupは以前から使ってきたGIDである100を/etc/gourpに設定した名前を入力。追加のグループとしてwheelとoperatorを半角の空白を区切り文字にして追加する。これらのグループに入っていればrootになれる。
25. インストール時に適当に作ったユーザのパスワードがrootのパスワードになっているので,suでrootになって,passwdコマンドでrootのパスワードを変更しておく。
26. /etc/ssh/sshd_configのX11Forwardingのコメントをはずしてyesに修正。
27. /etc/ssh/ssh_configのForwardX11のコメントをはずしてyesに修正。
28. /usr/local/etc/lightdm/lighdm.confのかなり下の方にある[Seat:*]セクションのなかの6行目のxerver-command=Xのコメントをはずして右辺をX -listen tcpに修正。その4行下のxserver-allow-tcpのコメントをはずしてtrueに修正。
29. ここまでの設定が正しいか確認するために再起動

30. 再起動するとログイン画面ではなぜかユーザーが最初に「適当に設定したユーザー」が表示されていてパスワード待ちになっています。新しく作ったユーザーでログインできない,という恐ろしい状態になってました。sshdが起動していて,かつ新しい自分用ユーザーにリモートからログインしてsuでスーパーユーザーになれることを確認してからvipwで「適当に設定したユーザー」をすっぱり削除します。また,rootのシェルがfishで鬱陶しいのでrootのシェルを/sbin/tcshに変更しておきます。
31. これでもう一度再起動。

32. 今度はログイン画面でユーザー名を入力する画面になっていて,自分用のアカウントを入力してからパスワードを入力する,という当たり前の儀式ができるようになりました。
33. 2画面で使っているのですが,モニタの左右を入れ替えないと使いにくいので(右の画面でマウスを右に動かすと左の画面の左端に移動する!),システム -- コントロールセンターと辿って「ディスプレイ」でモニタの表示位置を設定。プライマリモニタも右側のモニタに変更。
34. 同じコントロールセンターで「ウィンドウ」を起動して「マウスが移動した先のウィンドウを選択する」にチェック。「場所」タブの「新規ウィンドウを中央に配置する」のチェックを外す。
35. さらに「スクリーン・セーバ」でスクリーン・セーバの設定をします。しなくてもデフォルトのブランク画面で全然問題ないけど。
36. モニタの左右を入れ替えても背景が入れ替わらなくて気持ち悪いのでここでいったん再起動。

37. 時刻同期をするようにntpdのかわりにchronyをインストール。
pkg install chrony
cd /usr/local/etc/
mv chrony.conf chrony.conf.org
vi chrony.conf
として新たにchrony.confを作成し,

makestep 1000 10
rtcsync
server 192.168.XXX.YYY

とだけ書き込み,/etc/rc.confにchronyd_enable="YES"を追記。/usr/local/etc/rc.d/chronyd startで起動させ,chronyc sourcesで同期の状態を確認。
38. なぜかxhostがインストールされていないので,
pkg install xorg
としてxorg一式をインストール。これでxhost +としてからssh -X hogeとやってリモートに接続するとリモートのXアプリを手元に表示できるようになります。でも,日本語フォントを使うEtermを起動すると,k14などいろいろなフォントが足りない,とかいろいろと苦情を言われて起動しません。だめじゃん。再インストールする前はちゃんと動いていたんだけどなぁ。フォントの扱いは次回に続く。

乞うご期待,って誰も期待してないし。

GhostBSD 24.07.3の環境構築(その4;起動失敗)

ssdから起動しているときはよかったのですが,別途,3.5inchの内蔵HDDを繋いでhomeディレクトリとして使おうとしたところで問題が発生しました。いつもワナにハマってばかりです。

rootになって以下のようにしてディスクを適当なディレクトリににマウントするところまで進めます。HDDはサムスンの1.5TBのSATA (300 MB/s)のもので,ada0として認識されています。

ここを参考にしてます。

1. まずは認識されているディスクを確認
gpart show

2. 既存のパーティションを消去
gpart destroy ada0
operation not permittedと言われた場合は強制的にdestroyするように,-Fオプションをつける。
gpart destroy -F ada0

3. 新しいパーティションを作成
gpart create -s gpt ada0

4. ファイルシステムの作成。オプションの-lはパーティションのラベル名
gpart add -t freebsd-zfs -l disk0 ada0

5. zfsストレージプールを作成
zpool create zhome /dev/gpt/disk0
勝手に/zhomeにマウントするので
zfs set mountpoint=none zhome
として自動でマウントしないようにする。

6. ZFSファイルシステムを作成
mkdir /exports
mkdir /exports/home
zfs create -o mountpoint=/exports/home zhome/home

これで,/exports/home/にzhomeというzpoolがマウントされるのですが,リブートをするとマウントされていない,という訳のわからんことになっていました。これまた,ハマります。

ターミナルから,
zpool import zhome
とやるとシレッとマウントされてしまいます。

どうもよくわからないのですが,ここによるとブート時にHDDが認識される前にzfsをマウントしようとして間に合わないまま次に進んでしまうことが問題のようです。同じ人が,FreeBSD 13.1Rではzpoolのimportが/etc/rc.d/zpoolスクリプトによって行われるようになってfstabを書いてもマウントできなくなったということを書いておられます。

私の環境でもSSDがやたら速い一方でSATA接続のHDDは300MB/sで遅いためzpool importされるまえに/etc/rc.d/zpoolが実行されてマウントできないまま起動するようです。ためしに自動マウントではなくlegacyモードにしてfstabにマウントポイントを書いて起動したらそんなディスクはないよ,といわれて起動中にシングルモードに落ちて起動できない,という悲しいことになりました。

というわけで,SSDはすっぱり諦めてHDDだけで環境構築することに方針変更しました。

いつまでも完成しない...。

GhostBSD 24.07.3の環境構築(その3;時刻同期)

ntpdで中華なntpサーバーに同期できない,という問題がありますが,Linuxでは普通に使われているらしいchronyを試してみることにしました。

pkg install chrony

とするとchronyがインストールされます。設定ファイルは/usr/local/etc/chrony.confです。ローカルなネットワーク環境なので細かい設定をしなくてもセキュリティ上の問題は生じないだろう,ということで安直に設定をしてしまいます。

ちゃんとした説明は例えばここにあります。

もとの設定ファイルを残しておくために,
cd /usr/local/etc/
mv chrony.conf chrony.conf.org
vi chrony.conf
として新たにchrony.confを作成し,

makestep 1000 10
rtcsync
server 192.168.XXX.YYY

とだけ書き込みます。makestepは誤差が1000秒以内であれば,10回までステップ的に修正をかけてよい,という意味です。急激に時刻が変わるとファイルのタイムスタンプの整合性に問題が生ずる場合があるため,slewing (スルーイング)によって少しづつ時刻をずらしていく,という方法もありますが,個人的にはstepで時刻同期させるのが好みです。

rtcsyncは11分ごとにカーネルによりリアルタイムクロックを更新する,という意味です。

最後のserverは参照するntpサーバーです。このあたりはntp.confと同じようなスタイルで設定することができます。

/etc/rc.confに

chronyd_enable="YES"
を追加して,
/usr/local/etc/rc.d/chronyd start
としてchronyのデーモンを起動します。

chronyc sources

と叩くと

MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp.hoge.com 1 6 377 18 -648us[ -788us] +/- 308us

というようなレスポンスが返ってきてきます。Reachが377になればOKというのはntpq -pでntpdの同期の状態を確認しているときと同じです。行頭の^はntpサーバーであることを示していて,*が同期が完了しているという意味です。同期する前には?が表示されています。*と?以外に+と-が表示されるようですが,+は同期の候補,-は同期対象外,という意味だそうです。

chronyc tracking

とすると,chronydの状態を詳しく表示します。

これで無事に時刻同期ができるようになりました。