Chap-. 37 FreeBSD のお試し


 自分がソフトウェアシステムに感じていること。何が優れているのか? どういう状態なら優れていると言えるのか?
2点を考えていて、一つは原理的なものとかメカニズム。それが優れているのは重要です。
もう一つは実装。ようするに完成度が高いかどうか、バグがしっかり取れているかどうか、頑強なシステムか、高速実装されているか・・・そんな事です。
個人的には、その2つが優れているものが良いシステム、良いソフトウェアだと漠然と思っています。

 Chap-17. の最後に書いたことと多少重複します。
最近、Linux の cgroup と systemd について書かれた記事をネットで読みました.AIと会話しながら詰めていく手法で良い内容でした。分かりやすかった。
それを読めば cgroup と systemd がいかにクラウド(仮想環境)に重要なのかある程度理解できます。その仕組みのおかげで Linux がサーバ系OSの世界を制覇して、結果 OSS にお金が入ってくるようになったことも理解出来ました。素晴らしいことです。
今後もその仕組みを進めて Linux が優れたコンピュータ社会を構築する牽引車になることを、強く期待します。

 しかし、そこまでです、笑
その仕組みは、あくまでクラウド系専用。1CPUで1OSのユーザには何のメリットもありません。単に、やりすぎ systemd が邪魔なだけ。
なので記事のおかげで、今まで以上に自分の考え方に自信が持てるようになりました。言ってみれば「記事のおかげで systemd 無しのOSでも良いんだ。それで全然問題無いんだ」と強く思えるようになりました。Slackware が第一の好みで良かったんだ、笑・・・・・
で、そこでちょっと待てよ、となります。
Slackware で良かった、という事は BSD 系でも良いんだ・・・となります。メカニズム上で Linux が明確に BSD 系より優れているのはクラウド向けの cgroup + systemd だけ。後はメカニズム上は似たり寄ったり。
BSD 系を試してみて、良ければもう一度常用に使うのもアリかなあ・・・・などと思うようになりました。
ただし、そこで冒頭一番目の話題に戻ります。メカニズム+実装です。メカニズム上の差はもう気にしなくても全然良さそうですが、実装が優れているかどうかは、とても重要です。
なんせ、いまどきメンテナーの数が Linux 系と BSD 系では全然違います。
なので、今回のお試しではいつにも増して BSD の実装が優れているかどうか、がキモになります。

 なおチェックの視点についてはいつもどおり。
 (a),CUI サーバ系の使い方。(b) LAN内でプログラムやサーバソフト管理。ルータ管理等。デスクトップ形式で利用。(c),Windows 代替としての使い心地。もちろんデスクトップ形式の利用。
以上3点の視点で見ます。


Sec-1.インストール及び GUI 化
Sec-2.日本語環境及びメーラー
Sec-3.インストール後に最初に試すこと
Sec-4.Windows 代替としての使い勝手
Sec-5.CUI サーバでの運用
Sec-6.全体としての感想



Sec-1.インストール及び GUI 化

 例によってインストールは省略です。
UNIX を使っていた人とか、Slackware を使っている人なら難しくありません。GUI インストーラしか経験がなければ少し苦労するかもしれません。が、すぐに慣れると思います。

 GUI 化は Xfce を例によって使いました。単に xfce、xfce-extras を入れるだけ。ついでに日本語対応のフォントも入れておくと良いと思います。

 なお、使ったマシンは Ryzen-3400G + B450 系マザーボード、realtek の内臓イーサネット。適当な SSD。
グラフィックスについては、内臓GPU 、Geforce GT-710 の二通りです。



 グラフィックスの結論を最初に書いておきます。内臓 GPU ではうまく描画できません。色がイマイチだし、youtube を視聴すると画面が切り替わる度に、一瞬真っ黒になるし、話になりません。
その点、nvidia のドライバを入れて GT-710 を使うと描画が実にきれいです。素晴らしいです。動作は安定しています。同じドライバで GTX-1050Ti もいけます。こっちもとても良いです。
ドライバの入れ方及び使い方(ロードの仕方)は youtube で検索するとすぐに出てくると思います。
余談ですが、最近は website 検索より youtube 検索の方が情報が多いようです。
私は以下の youtube を見てドライバーをインストールしました。丁度私の使っているグラフィックカードは、動画主のものと同じでした。インストールしたドライバーを使う方法も動画にあります。このとおりにやりました。

https://www.youtube.com/watch?v=FUs7Or_Uxn8

 GPU ドライバーについて FreBSD は手数がかかります。Linux みたいにインストールしたら即使えるって風にはなっていません。自分でセットアップしなければならない、汗。






Sec-2.日本語環境及びメーラー

*** 日本語入力 ***
 最近、気のせいか各ディストリで mozc の動作が安定しない。で、今回は anthy を使うことにしました。
FreeBSD には ibus-anthy と fcitx5-anthy があります。試してみたらどうやら ibus には ibus-gtk2 相当品が無い。なのでメーラー claws-mail 等に日本語入力出来ません。
fcitx5-anthy の方は探すと fcitx5-gtk2 , 3, 4 がありました。なので fcitx5 版を入れます。フォントは適当です。

# pkg install fcitx5-anthy  fcitx5-configtool-qt5  fcitx5-gtk2  fcitx5-gtk3  fcitx5-gtk4
# pkg install noto-jp  noto-emoji

これらを入れると「セッションと起動」で fcitx5 が立ち上がるように、自動的に調整されました。具合が良い。
.bashrc には(シェルは bash に変更しています)

export LANG="ja_JP.UTF-8"

と入れました。.xsession には

export LANG="ja_JP.UTF-8"
export GTK_IM_MODULE=fcitx5
export XMODIFIERS=@im=fcitx5
export QT_IM_MODULE=fcitx5

と書きました。LANG は重複しています。念のために入れました、笑。
これでリブートすると日本語入力が出来るようになりました。fcitx5 版の anthy 初期調整(キーボードショートカット割付)は説明省略します。
なお、xfce4-terminal では edit --- preference --- advanced で encoding を default(utf-8) に必ず設定します。これをやらないと日本語入力出来ません。


*** メーラー ***
 メーラーについて FreeBSD はストライクゾーンが狭い様です。
evolution はコアを吐いて落ちます、汗。
sylpheed は証明付きのメールを開くことが出来ず、そこでハングアップします、汗。
claws-mail はうまく動きました。試した3つの中でまともに動いたのは、これだけ。





Sec-3.インストール後に最初に試すこと

 例によって UNIX ギーク風にやることです。10 年くらい前にいじっていたのでうろ覚えで、今回思い出しました。


*** IPアドレスの設定や管理 ***
 IP アドレスに限らず、/etc/defaults/rc.conf に各種設定のデフォルトが記述されています。ユーザが /etc/rc.conf に設定を書き込むと、それで defaults を上書きします。/etc/rc.conf の書き換えは sysrc コマンドを使い、設定を反映させるのは service コマンドを使います。もちろん、エディターで書き込んでも差し支えないと思います。


*** リゾルバーの設定 ***
 /etc/resolv.conf を書き換えるだけです。普通です。


*** rc.local ***
 これは今までと違います。多分・・
ネットで検索すると、どうもやり方が変わった。しかし今の FreeBSD のやり方を覚えて順応する気は無いので、今までのやり方で出来そうなものをやりました。
/etc/rc の最後に「/etc/rc.local があれば実行せよ」と書き込むのが一つ。もう一つは crontab を使う。
特に理由は無いですが、今回は crontab を使って /etc/rc.local が実行されるように設定しました。
# crontab -e
やって
@reboot /etc/rc.local
と一行書くだけです。


*** パケットフィルタ ***
 2005 年から 2009 年まで OpenBSD を使った時は pf を使いました。2009 年から 2016 年まで FreeBSD を使った時は ipfilter を使いました。今回は pf にしました。記述が楽です、笑。
基本的に、調子良く動きます。もともと BSD 系のパケットフィルターは高速で定評があります。


*** デーモンコントロール ***
 IP アドレスの所と記述重複。個人的には systemd 系 Linux の systemctl コマンドや OpenBSD の rcctl コマンドの方が洗練されてると思う。が、ちゃんとやり方が提示されているので文句は言いません、笑。


*** 各種ソフトのコンパイル ***
 guile がコンパイル出来ませんでした。後はオケです。幸い、このところ自分が利用する scheme の処理系は chicken が主なものになっていました。chicken は普通にコンパイル出来ましたので、個人的には差し支えないです。
なお、処理系をコンパイルするのは最新版が出た時にすんなり対応したいから。サーバ系は中身を少しいじっているのでコンパイル必須です。
それにしても、以前は BSD 系なら make 一発が普通だったのですが、いつの間にか Linux なら make 一発で BSD だとたまに出来ない・・・なんて状態になっているようです。驚きです。
やむを得ません。ユーザ数が全然違うのだし。


*** シリアル回線制御 ***
 minicom が使えます。ただし FreeBSD では root のみがシリアル回線にアクセス出来る設定。
なので sudo 等を利用します。それですんなりとルータ制御が出来ました。cu (uucp) は試していません。メンテされなくなって長期間経過しています。利用はやめておきます。とは言え minicom が十分メンテされているかどうかは、知りませんが、笑。


全般として、特に何も問題ありません。お試し中に、ちょっとだけ時代の流れを感じました、笑。


*** その他、プログラムの実行速度 ***
 ネットにあるベンチマークテスト(Linux と BSD の比較)では BSD が散々な結果の様です。しかし実際にプログラムを走らせてみてどうなるのか? 興味があったので確認してみました。
テスト手法は Chap-8. にあるテスト、同じプログラムで500行のファイルをソートして出力し、その実行時間を測るという方法です。比較対象は Debian-13、Slackware-15、FreeBSD-15、OpenBSD-7.8 です。使用したのは Scheme(chicken-5.4.0) です。 インタープリターで比較しています。(コンパイルして実行しているわけではない)
CPU は全て Ryzen-3400G + 16GB-memory、B450 マザーボード、120GB-SSD です。正直に言いますと、インストールしてある SSD はみな違います。なので OS の速度差より SSD の速度差の方が効いてくる可能性があります、汗。
比較結果は以下のとおり。


chicken  debian
$ time ./test-chicken.scm < http500.log > datadata

real    0m0.065s
user    0m0.052s
sys     0m0.013s


chicken slack
$ time ./test-chicken.scm < http500.log > data-chi

real    0m0.058s
user    0m0.052s
sys     0m0.006s


chicken fbsd
$ time ./test-chicken.scm < http500.log > data

real    0m0.049s
user    0m0.048s
sys     0m0.006s


chicken  o-bsd
$ time ./test-chicken.scm < http500.log > data

real    0m0.061s
user    0m0.050s
sys     0m0.010s


 ベンチマークが散々でも、実際のプログラム速度は BSD 勢、悪くないです、笑。
同じような比較を Lua でもやってみました。つまり Lua で書いた同一プログラムを4つのOSで走らせて比較する。(500行のファイルソート)
そっちの結果は以下のとおり。


Debian-13
$ time ./go.lua > data-a

real    0m0.022s
user    0m0.017s
sys     0m0.005s


Slackware
$ time ./go.lua > data-b

real    0m0.014s
user    0m0.011s
sys     0m0.002s


FreeBSD
$ time ./go.lua > data-c

real    0m0.010s
user    0m0.009s
sys     0m0.001s


OpenBSD
$ time ./go.lua > data-d

real    0m0.018s
user    0m0.010s
sys     0m0.000s

 Scheme と Lua での結果について、OS の速度差が出たのかSSD の速度差が出たのか微妙です。が、そこは触れずに話を進めます、笑。
面白いのは、順位が Scheme の時と変わっていることです。微妙ですね。
こっちの結果でも BSD 勢は悪くないと思います。
この2つのテストでは、ベンチマークとまったく違う結果が出ています。
ベンチマークテストは公称馬力や公称トルク値で車の比較をしている様なもの。このテストは実際にニュルブリックリンクを走らせて、どの車が速いか比較するようなものです。現実的な速さである代わりに、タイヤやドライバーテクニック、さらには当日の天候などの影響をうけるので、必ずしも正確な比較にはなりません。が、実際に速いかどうかは一目瞭然となります。有無を言わさない速さ。
注意: つまりコンピューターだって、ちょっとした環境の違いで値が変わるだろうと思います。上記結果は単に一つの事例・・・くらいにとらえてください。いつでも、どこでやっても同じというわけではありません。
また現実の話として、これは SSD の速度差だった・・・とした場合です。
それならそれで、面白い結果です。つまり「Linux とBSD の速度差なんて今時測っても仕方ない。SSD の速度差の方が効いてくる」という話なので、有意義な結果と言えます、笑。



*** その他、ネットワークの速度 ***
 プログラム実行速度の比較がちょっと面白かったので、ファイル転送速度もためしてみました。
全部で10個ほどあるファイル。トータル容量は25か30GBくらい。結構大きいです。
単位は秒なので、時計を見ながら計測です。4つのOS(debian-13、Slackware-15、FreeBSD-15、OpenBSD-7.8)についてクライアント側でファイルをゲットするときをチェックしてみました。サーバは全て FreeBSD-15 です。はっきり言って誤差範囲程度。変わりません。

サーバ     クライアント
F-BSD --------- F-BSD  126秒
F-BSD --------- O-BSD 127秒
F-BSD --------- Slack 124秒
F-BSD --------- Debian 123秒

しかしなんの気なしにサーバを OpenBSD-7.8 にしたら、結果がおかしいです。

サーバをO-BSD にしてみた場合
サーバ     クライアント
O-BSD --------- F-BSD  164秒
O-BSD --------- O-BSD 185秒
O-BSD --------- Slack 171秒
O-BSD --------- Debian 167秒

 明らかに OpenBSD のサーバがおかしい、笑。どうもいろいろと測ってみると、OpenBSD をデータを送り出す側にすると、他のOSよりも遅い。ほぼ70%ぐらいのスピードです。
これは OpenBSD から他のマシンに sftp でログインしてデータを送り出しても、一緒です。送り出す側の OpenBSD はとにかく遅い。
このチェックで分かること。

 ということです。
なお、netBSD ではどうなのか試してみたら、クライアントになってデータゲットするときは他のOSの90%。サーバになってデータを送り出すときは OpenBSD 同様に他のOSの70%でした。OpenBSD と同じで遅いなりに安定しています。速くなったり遅くなったりとフラつくことはありませんでした。

 良く言われている「OpenBSD はセキュリティで頑張る分、速度アップにまで手が回らない」ということを実感しました。
また、NetBSD 系が OpenBSD に対して「お前ら、遅いぞ」などと言っているようなことも、ネットで見ました。が、そもそも NetBSD 自体が遅い、笑。
以上の結果を見ると、NetBSD から派生した際に速度の遅いソースコードを引き継いでいる。で、そのまま改良されていないって事でしょう。
遅いなら遅いなりに、安定しています。考えようによっては、問題にしなくても良いような気も・・・・します、笑。
なお、このネット速度は上に比較したプログラム実行速度より性能差を表していると思います。多分 SSD の速度差じゃない、笑。









Sec-4.Windows 代替としての使い勝手

 最初に「チェックする視点」で書いた(c)系の使い心地です。
正直に書きます。一ヶ月以上かけて (a), (b) についていじりまわしてチェックしました。時間をかけました、笑。
疲れました。もうやってられません。
なので (c) 系の使い心地についてはちょっと触れるだけです。
ソフトウェアはたくさんあります。有名どころをインストールしてみました。どれも何の問題もなさそうです。調子良さそうです。
ただしブラウザは限定的。firefox と Falkon くらいでしょうか。Linux だと沢山のブラウザが使える場合が多いので、差を感じます。
それくらいが不満で、全般的にはよく出来ている。・・・出来ていそう・・・です。







Sec-5.CUI サーバでの運用

 約10年前に運用していて、何も問題はありませんでした。今回も数日運用していて、FreeBSD 自体には問題ありません。
ただし、現在、Linux で実施していた設定・仕掛けを FreeBSD に移行させていて、少し苦戦中です。
「あれ? おかしいな・・・あれ?」とかやっています、笑。
同じ UNIX 系OSとはいえ、似て非なるものです。そのまま移行とは参りません。
移行には今しばらく苦戦が続きそうです、笑。





Sec-6.全体としての感想

 例によって(a), (b), (c) に分けて感じたことを書きます。
(a)について・・・もともと BSD 系の得意分野。何の問題も無いと思います。
(b)について・・・ここも、元来 BSD 系の得意分野。特に問題はありません。ただし、かって「BSD なら make 一発」だったのが、いつの間にか「Linux なら make 一発」の世の中に変わりつつあります。今後は、ちょびっとだけ Linux より苦労するかもしれない。
(c)について・・・GPUドライバーが面倒。メーラーは使えるものが少ない。ただし、それ以外は良好だと思います。(c) の部分について、Linux を100とすると FreeBSD は 95 くらいに感じました。こんなのは個人の感想なので、人によって変わるでしょう。

 お試しをする前に懸念していた「実装について Linux に遅れをとっているんじゃないか・・・」というのは、ある程度払拭しました。良かったです。
GPU ドライバーは面倒ですが、それなりに色々と品揃えがあります。真面目にインストール・設定をやればかなり使えるレベルだと思います。ただし、Linux のようにインストールしたら即使える、というやり方じゃない。自分で努力する必要があるやりかたです。

 また GUI による設定を基本的にサポートしていません。なので Windows から入って Linux の Ubuntu、Mint、MX 等になじんでいる人達からみると、面倒でしょう。
イメージ的にどうしても「旧 UNIX 系ユーザの受け皿」っぽいOSだと感じました。
ものは、良くできていると思います。
Linux に比較すると少ないメンテナーで、よくぞここまで仕上げているなあ・・・と感心します。やっている人達を尊敬します。

 余談ですが、FreeBSD への寄付は割合と簡単でした。FreeBSD 財団が受け皿になっていて、ネットで見るとアメリカ本国では寄付が減免対象になっているらしい。
ごく普通のクレジットカードでワンポイントの寄付が簡単に出来ました。
実は、同時期に OpenBSD も寄付を試したのですが、こっちはダメでした。カナダのこの手の組織に対して日本からの送金は禁止されているらしいです。そんな様な表示が画面に現れて、それ以降進めませんでした。

 個人的に最後の結論として「常用で考えるかどうか?」
これは「Linux からの移行がうまくいくかどうか」という事があるので、もう少し検討を続けたいと思います。
ただし十分な魅力は、あります。