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の状態を詳しく表示します。
これで無事に時刻同期ができるようになりました。
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の状態を詳しく表示します。
これで無事に時刻同期ができるようになりました。
GhostBSD 24.07.3の環境構築(その2;インストール)
Live環境でとりあえずリモートのXアプリをローカルのXサーバーで表示できることを確認できたので,そのままデスクトップに置かれているインストーラをダブルクリックしてインストールを開始しました。
インストーラにあれこれ聞かれたことを適当に答えていけばインストールは完了します。一つ前のバージョンまではrootのパスワードと登録ユーザーはそれぞれ別個に設定するFreeBSD的な仕様になっていましたが,24.07.3では管理ユーザーだけを登録する仕組みに変わっていました。このあたりはLinuxの作法に合わせてきているようです。それに意味があるのかないのかは私にはわかりません。自分のアカウントを管理ユーザーにしてあとで削除できなかったりすると面倒なので適当なユーザー名(Live環境と同じghostbsd)を登録しておいて,あとからadduserで自分のアカウントを登録し,その際にwheelとoperatorグループに自分を追加しておいて管理ユーザーとして機能するようにすれば間違いがないと考えました。そのうえでghostbsdユーザーを削除してしまえば簡単です。Linuxと違ってユーザー管理はvipwで/etc/passwdを編集するだけですから余計なことを考えなくても済みます。
FreeBSDのインストーラをちょっとGUI的にしただけで,内容的にはほとんど変わりがありませんので慣れていればさっさとインストールは終わります。
再起動して内蔵SSDから起動するとちゃんとGhostBSDが起動してログイン画面になります。インストール時に設定した管理ユーザーのユーザーID (ghostbsd)とパスワードを入力すればログインできます。
2つのモニタの左右の位置関係の変更はプライマリモニタの画面上部にあるタスクバーのメニューのシステムからコントロールパネルというような名前のものを選ぶと設定用のユーティリティが起動します。そのなかにディスプレイというのがあるのでこれを起動するとモニタの配置を設定することができます。2つのモニタが表示されているのでモニタのアイコンというか画をドラッグして位置を変更するとモニタの位置関係を変更できます。しかし,ドラッグしてもモニタのアイコンがちゃんと動かずに,元の位置に画が残っていて設定用の画面がぐちゃぐちゃになります。とりあずドラッグしているアイコンは動くのと,2つのモニタのアイコンは適当な位置でスナップされるのでだいたいそれっぽいところにアイコンを置いて「適用」ボタンを押すとモニタの左右の位置関係は入れ替わります。2つのモニタのうちプライマリに設定したいモニタを選択して「プライマリモニタに設定する」というボタンをおせばそちらがプライマリになってタスクバーが画面上部に表示されます。モニタの位置を変えても壁紙は入れ替わらず,画面解像度が異なると空白というか黒い部分が残っていたりしておかしな画面になります。しばらく経つと間違いに気がついて入れ替わるようではあるのですが,気持ち悪いので再起動してしまいます。
改めてghostbsdユーザーでログインして適当に端末を起動してadduserコマンドでユーザーを追加しようと思ったらそのユーザーは既に登録済です,と言われてしまいました。/etc/passwdを見てみると,先にLive環境で試しに設定してみたユーザー(自分用の本命?のユーザー)が登録されています。どうやら,Live環境で設定変更した部分はインストール時にそのまま反映されるようです。/etc/groupや/usr/local/bin/startxも設定変更した部分はそのままになっていました。Live環境で設定変更をした後,再起動することなくそのままインストーラを起動するとLive環境における設定がそのまま受け継がれるようです。妙なところで親切というか頑張っている感じがします。
自分の本命アカウントを正しく設定してwheelとoperatorグループに自分のアカウントを追加します。suでrootになれないのは不便なので,自分のアカウントで
sudo su
としてrootになり,passwdコマンドでrootのパスワードを設定すればsuでrootになることできます。長年使ってきた環境に一歩近づいた気分です。
Live環境のアカウントがインストール環境にも反映されているならば,X Window Systemも期待通りの動作をしているだろうと思ったら,リモートのXアプリをローカルに表示することはできません。ps -ax | grep Xとやってみると,xinitは起動されていないことがわかりました。かわりにlightdmが起動しています。どうやらLive環境とインストール環境では起動されるウィンドウマネージャが違うようです。見た目はまったく同じなのですが。Live環境で悩みまくったのはなんだったんだぁ,と叫びたい気分です。
叫んでもしょうがないので,とっととlightdmの設定を変更します。/usr/local/etc/lighdm/lightdm.confを開いて上の方のコメントは全てすっ飛ばして下の方に進み,[Seat:*]セクションのなかにある変数を以下のように修正します。
xserver-command=X -listen tcp
xserver-allow-tcp=true
これで,/usr/local/etc/rc.d/lightdm restartとやるとlightdmが再起動してログイン画面に戻る,と思ったら真っ暗な画面のままで反応が返ってこなくなりました。ありゃりゃ...。別のPCからsshでログインしてshutdown -r nowで強制的に再起動をかけるしかありませんでした。なんだか微妙な作り,というか,いろいろと想定されていないことがあるようです。
再起動すると,ちゃんとログイン画面が表示され,自分の本命アカウントでログインします。suでrootになれることを確認できたら,vipwでテンポラリに作成した管理ユーザーであるghostbsdを削除してしまいます。使わないアカウントが転がっていることは好ましくありませんのでさっさと消すのが吉です。ついでに/etc/groupに追加されているghostbsdグループも削除してしまいます。
/etc/ntp.confを編集してローカルネットワーク内のntpサーバーを参照するようにします。このntpサーバーはaliexpressで調達した中華ntpサーバーなのですが,なぜかFreeBSD 13以降のntpでは正しく時刻同期できません。Linuxからは普通に同期できているのでFreeBSDで何かが変わったのかもしれません。ntpdateで同期することは可能なのでとりあえず,起動時にntpdateが動くように/etc/rc.confに設定をしておきました。毎日shutdownして朝起動する,という使い方であればとりあえずの問題はないでしょう。
なんとか使えそうになってきたので,pkgをアップデートしておきます。
pkg update
pkg upgrade
まだ自分では何もインストールしていませんでしたが,いろいろなものがアップデートされます。
インストーラにあれこれ聞かれたことを適当に答えていけばインストールは完了します。一つ前のバージョンまではrootのパスワードと登録ユーザーはそれぞれ別個に設定するFreeBSD的な仕様になっていましたが,24.07.3では管理ユーザーだけを登録する仕組みに変わっていました。このあたりはLinuxの作法に合わせてきているようです。それに意味があるのかないのかは私にはわかりません。自分のアカウントを管理ユーザーにしてあとで削除できなかったりすると面倒なので適当なユーザー名(Live環境と同じghostbsd)を登録しておいて,あとからadduserで自分のアカウントを登録し,その際にwheelとoperatorグループに自分を追加しておいて管理ユーザーとして機能するようにすれば間違いがないと考えました。そのうえでghostbsdユーザーを削除してしまえば簡単です。Linuxと違ってユーザー管理はvipwで/etc/passwdを編集するだけですから余計なことを考えなくても済みます。
FreeBSDのインストーラをちょっとGUI的にしただけで,内容的にはほとんど変わりがありませんので慣れていればさっさとインストールは終わります。
再起動して内蔵SSDから起動するとちゃんとGhostBSDが起動してログイン画面になります。インストール時に設定した管理ユーザーのユーザーID (ghostbsd)とパスワードを入力すればログインできます。
2つのモニタの左右の位置関係の変更はプライマリモニタの画面上部にあるタスクバーのメニューのシステムからコントロールパネルというような名前のものを選ぶと設定用のユーティリティが起動します。そのなかにディスプレイというのがあるのでこれを起動するとモニタの配置を設定することができます。2つのモニタが表示されているのでモニタのアイコンというか画をドラッグして位置を変更するとモニタの位置関係を変更できます。しかし,ドラッグしてもモニタのアイコンがちゃんと動かずに,元の位置に画が残っていて設定用の画面がぐちゃぐちゃになります。とりあずドラッグしているアイコンは動くのと,2つのモニタのアイコンは適当な位置でスナップされるのでだいたいそれっぽいところにアイコンを置いて「適用」ボタンを押すとモニタの左右の位置関係は入れ替わります。2つのモニタのうちプライマリに設定したいモニタを選択して「プライマリモニタに設定する」というボタンをおせばそちらがプライマリになってタスクバーが画面上部に表示されます。モニタの位置を変えても壁紙は入れ替わらず,画面解像度が異なると空白というか黒い部分が残っていたりしておかしな画面になります。しばらく経つと間違いに気がついて入れ替わるようではあるのですが,気持ち悪いので再起動してしまいます。
改めてghostbsdユーザーでログインして適当に端末を起動してadduserコマンドでユーザーを追加しようと思ったらそのユーザーは既に登録済です,と言われてしまいました。/etc/passwdを見てみると,先にLive環境で試しに設定してみたユーザー(自分用の本命?のユーザー)が登録されています。どうやら,Live環境で設定変更した部分はインストール時にそのまま反映されるようです。/etc/groupや/usr/local/bin/startxも設定変更した部分はそのままになっていました。Live環境で設定変更をした後,再起動することなくそのままインストーラを起動するとLive環境における設定がそのまま受け継がれるようです。妙なところで親切というか頑張っている感じがします。
自分の本命アカウントを正しく設定してwheelとoperatorグループに自分のアカウントを追加します。suでrootになれないのは不便なので,自分のアカウントで
sudo su
としてrootになり,passwdコマンドでrootのパスワードを設定すればsuでrootになることできます。長年使ってきた環境に一歩近づいた気分です。
Live環境のアカウントがインストール環境にも反映されているならば,X Window Systemも期待通りの動作をしているだろうと思ったら,リモートのXアプリをローカルに表示することはできません。ps -ax | grep Xとやってみると,xinitは起動されていないことがわかりました。かわりにlightdmが起動しています。どうやらLive環境とインストール環境では起動されるウィンドウマネージャが違うようです。見た目はまったく同じなのですが。Live環境で悩みまくったのはなんだったんだぁ,と叫びたい気分です。
叫んでもしょうがないので,とっととlightdmの設定を変更します。/usr/local/etc/lighdm/lightdm.confを開いて上の方のコメントは全てすっ飛ばして下の方に進み,[Seat:*]セクションのなかにある変数を以下のように修正します。
xserver-command=X -listen tcp
xserver-allow-tcp=true
これで,/usr/local/etc/rc.d/lightdm restartとやるとlightdmが再起動してログイン画面に戻る,と思ったら真っ暗な画面のままで反応が返ってこなくなりました。ありゃりゃ...。別のPCからsshでログインしてshutdown -r nowで強制的に再起動をかけるしかありませんでした。なんだか微妙な作り,というか,いろいろと想定されていないことがあるようです。
再起動すると,ちゃんとログイン画面が表示され,自分の本命アカウントでログインします。suでrootになれることを確認できたら,vipwでテンポラリに作成した管理ユーザーであるghostbsdを削除してしまいます。使わないアカウントが転がっていることは好ましくありませんのでさっさと消すのが吉です。ついでに/etc/groupに追加されているghostbsdグループも削除してしまいます。
/etc/ntp.confを編集してローカルネットワーク内のntpサーバーを参照するようにします。このntpサーバーはaliexpressで調達した中華ntpサーバーなのですが,なぜかFreeBSD 13以降のntpでは正しく時刻同期できません。Linuxからは普通に同期できているのでFreeBSDで何かが変わったのかもしれません。ntpdateで同期することは可能なのでとりあえず,起動時にntpdateが動くように/etc/rc.confに設定をしておきました。毎日shutdownして朝起動する,という使い方であればとりあえずの問題はないでしょう。
なんとか使えそうになってきたので,pkgをアップデートしておきます。
pkg update
pkg upgrade
まだ自分では何もインストールしていませんでしたが,いろいろなものがアップデートされます。