20年間適当にいじってきただけのFreeBSDユーザーが書く「FreeBSDはヒトに薦められる」のか?という話。

20年間適当にいじってきただけのFreeBSDユーザーが書く「FreeBSDはヒトに薦められる」のか?という話。

目次

1. このメモを書いた人間のFreeBSDの経歴

2. 結論

3. FreeBSDの悪い点

4. FreeBSDの良い点

5. 最後に



1. このメモを書いた人間のFreeBSDの経歴

長いので3行

・長期間使ってますがプログラミングはほぼできません。
・伝道師なんていなかった。でもほぼ書籍とネットでデスクトップ的普段使いはできるようになった。
・ハッカーになろうとしても"良い問題を見つけて自分の解決すべき課題として取り組まなければ本当の力にならない"。

黎明期(2002〜2004)

・2005年頃にWindows ME入りのPCをタダでもらいゲームだけをしていた。
・Windows Meは1週間に1度は再インストールするほど不安定だった。
・世の中はドットコムバブルが溶けた時代。一言で言えばLinuxが流行っていた。
・Linuxという言葉をたどるうちにエリック・レイモンド氏の「ハッカーになろう(リンク先は邦訳版)」を読んでハッカーになることを志す。
・教本に従い、Linuxのインストールを試みるためHDDを買ってくる。IDE 80GB。
・Redhat Linux、TurboLinuxをインストールして、GNOME2やKDE3に感動するもそこから何をすればよいのかわからない。
・脳筋なのでソフトウェアを書くとかそういうことはできない。
・インターネットにつながらず、TurboLinuxを起動してはわからないことをメモし、Windows Meで方法を検索してからTurboLinuxで試し、の行ったり来たり。そのうち飽きる。
・何も変わらんやんけ。
・そういえばFreeBSDというものもあったな。
・FreeBSD 4.11のKDE付きインストーラディスクをダウンロード、インストール。FreeBSDのインストール時にWindows Meも吹っ飛んだ。
・どうにかしてFreeBSDとWindows Meを共存させたい。Windows MeをインストールしてからFreeBSDをインストールすればOSセレクタが使える事を学ぶ。
・図書館でFreeBSDの書籍(バージョンが2.2のもの・・・)を見つけ、連続して何週間も借りる。そしてそれっぽいコマンドを叩く。失敗して状況がわからなくなったらFreeBSDを再インストール。
・FreeBSDではアプリを追加するのにPorts Collectionというものでソースコンパイル&インストールが普通らしい→指定のディレクトリに移動してからmake install?なるほど、わからん。
・設定ファイルはほぼ写経。それでも使う分には何とかなった。

ブレイクスルー(2004〜2006)

・FreeBSD 6.1を入手。FreeBSD 4.11を消して新規インストール。Xはvideoドライバ全部入れ。meta-portを知らないので目に付いたものは全部入れ。
・FreeBSD友の会?なんかすごいことやってるがよくわからん・・・
・GNOME2もKDE4も動作が重い、なんとかならんか?軽量なDesktop EnvironmentにXfce4.6というのがあるのを知る→使ってみたい。
・とりあえずmake installだ。→startxで…KDEのままだ。なぜだ。
・.xinitrcと.xsessionにexec startxfce4の記述が必要という話を見る。→やったぜ。でも英語じゃん。
・環境変数の設定で日本語が表示できる?setenv LANG ja_JP.eucJPで可能?→英語じゃねえか。
・ざんねーん、.xinitrcは/bin/shなのでsetenvコマンドではなくexportコマンドでーす。→日本語にならないじゃないか!
・コマンドが変わると記法も変わる。export LANG=ja_JP.eucJPが正しい。→無事日本語で起動…しなかった。豆腐文字が表示される。
・日本語フォントの追加インストールが必要なのか。Ports Collectionのjapaneseにそれらしいのがあるだろ。sazanamiをインストール。→OK、やったぜ。
・Firefox 1.5はインストールできたが日本語が入力できない。でもインターネットにはつながるぞ。Google先生相手にローマ字検索…
・日本語FEP?WindowsでいうところのMS-IMEとかATOKみたいなやつ?とりあえず日本語入力できるものを… →kinput2+cannaが主流。
・export GTK_IM_MODULE=canna, export XMODIFIERS=@im=canna 呪文かよわからねえ・・・→何とか日本語が入るようになる
・そういえばしばらくWindows Meを起動していないが、これはひょっとしてこのまま移住できるのではないか? →できた。Office以外は。
・試行錯誤を経て、FreeBSDの日本語GUI環境を築いただけで謎の万能感を得る。

初めてのFreeBSDカスタムカーネル(2006〜2007)

・Windows Meより安定性がすこぶる良い。クリックしたらBSoDにならないというのはとても素晴らしい。さすがはPC-UNIX。
・にしても、Windows Meより遅い。
・なになに?カーネルから不要な機能を削って高速化?ソースコードが必要?
・どうやら/usr/srcにソースコードが必要らしいが、どうやってインストールするかわからない。
・/stand/sysinstallコマンドで追加インストールできないか?→できた。インストールCDから入れられた。
・ソースコードを最新のものにアップデートするにはcvsupコマンドを使うのと設定が必要?→ネット記事が多く助かった。
・/usr/src/sys/i386/conf/GENERICというものを編集してカーネルに組み込む設定を変更できる? →やってみるか。
・/usr/srcディレクトリでmake buildkernelというのを打てばいいんだな?→なにかやってることは分かるが長い…。そしてmake buildworld、make installkernel、make installworld、mergemaster -p、…などの一連のコマンドを打つことがなく、インストールできたと思いこむ。
・全然効果ないな→手順足りてないじゃん。
・結局多少早くなった。
・FreeBSD 6.1→FreeBSD 6.2へ。6.2ではパッチリリースはfreebsd-updateコマンドで対応可能に。そういうのもあるのか→ただしGENERICカーネルに限る。
・カスタムカーネルだよGENERICじゃないよ戻し方わからないよfreebsd-updateコマンドは使えそうにない→再インストール。ただこの頃にはパーティションのどこを消せばいいか判ってきていた。
・FreeBSD 6.3でマイナーリリース間のアップグレードが可能に。でもパッチリリースを適用するとアップグレードできない場合があった。しばらくはソースコードコンパイルでのアップグレードが続く。

慣れ親しんだWindows Meとの惜別とFreeBSDへの移住(2007〜2009)

・Thinkpad R40を購入。速い。時代はPentium MだけどMobile Pentium 4といえど今までのAMD Duronより相当速い。
・Thinkpad R40にインストールされていたWindows 2000、来るのがあと2年早ければメインになっただろうが…→FreeBSD 6.2とWindows 2000のデュアルブート。
・Windows 2000は安定性はあるけど、チューニングしたWindows Meより遅い印象。Windows 2000 SP5も出そうにない。
・FreeBSD 6.2から6.3へソースコードアップグレード。WLANの設定に悩む。Intel CentrinoテクノロジはWindowsとLinuxだけ。
・ndiswrapper?Windows XPのドライバファイルからFreeBSDで使えるデバイスドライバを作り出す?狂ってるな!→MelcoのMiniPCIカードをThinkpad R40につっこみBIOSをごにょごにょ。そして802.11bが動く。もちろんcountry JPで動かしました…
・仮想x86 PCエミュレータが流行る。VirtualPCとかVirtualBoxはないけどqemuというのがある。qemu面白そうじゃん、Windows2000入れてFreeBSD上で動かせば・・・→この時はまだゆるかったんです許してください。今はちゃんとMicrosoftへお布施しております。
・イキっていたのでMicrosoft Officeに○指たてて、レポート作成にOpenOfficeを使う。
・HTTPプロキシの問題に悩まされるも、環境変数にHTTP_PROXYがあること、Windows用の設定を読み替えて適用してみるとこれがナイスマッチング、メイン環境は完全にFreeBSDへ。
・Macromedia Flash動かねえ→今で言うLinuxulatorでFedoraCore5〜7相当のLinuxバイナリを使ってインストール・動かす方法を学習して動かす。
・WineでFirefoxなどのWindowsバイナリが動き始め、Microsoft Office 2003 Excel/Word Viewerが動き、未来を感じる。

よし、そろそろハッカーを目指そう(2009〜2012)

・Language C? LISP? Perl? Ruby? Python? make installはできる。でも参考書読んでもさっぱり分からん。何すればいいんだ?
・なぜinclude文を書く必要がある?どうしてスクリプト言語なのにimport文が必要なのか?$_とは?→プログラミング言語学習本では型通りのものしか教えてくれないので何かを作るために自分で目標を設定する必要があったが、その考えには至らなかった。
・とりあえず、いつも打ってるコマンド類はまとめて実行したいな、シェルスクリプト?なにそれ?
・OK、/bin/shのスクリプトの書き方はなんとなく判った。C-Shellスクリプトは諦めた。
・findからのgrepとか便利じゃん、xargsすげえ!→find ./ | grep hogehoge | xargs -I% sh -c 'echo %' みたいのでだいたいなんとかなってしまう。
・ハッカーになろう?正直無理じゃね?

必要にかられないと人は学習しない(2012〜2018)

・仕事じゃWindows XPか。VBScriptってのがある。メモ帳だけで行けるか。
・シェルスクリプトを書いてたかいがあったな、多少やり方が分かる。for each文が使えるのは嬉しい。
・CreateObject("Scripting.FilesystemObject")、ほほーう。こいつは使える。
・引数は${1}とかじゃなくて、WScript.Argumentsでこいつは配列。for each文に突っ込んでifで抽出すればいいね。
・シェルスクリプトで慣れた記法が使いたいが… →結局、5年ぐらい使用し、シェルスクリプトより使えるようになる。
・コンピュータの中で起きる大抵の面倒事はWindows Me/FreeBSDでの苦労に比べたら大したことはない。
・大体、スクリプトの引数・ファイル操作・文字列操作ができれば仕事上のルーチンワークで手抜きができることがわかった。特に現在のウェブスクレイピングと呼ばれているテクニックの走りである、CreateObject( "InternetExplorer.Application" )にはとてもお世話になった。業績としては評価されなかった。
・FreeBSD 7.1〜10.3ぐらいはこんな感じで進行。8.4あたりからSolaris ZFSが導入されたり、スケジューラが4BSDからULEになってたりしてたが、しばらく何もできなかった印象。

そろそろなんとかしないとなあ・・・(2018〜2022)

・FreeBSD 11.0あたりからUFSからZFSへ移転することを考えていく。→しかし、その概念が理解できず度々断念。UFSより面倒くさい管理なのにメリットを感じづらい。
・RAID-Zはとりあえず設定できたようだが…これでいいのか? →当初はZFS用のパーティションを区切ることなくディスク全体を使うZFSの運用。もちろん各プロパティはデフォルトのまま。
・試行錯誤を繰り返し、freebsd-boot,efi,freebsd-swap,freebsd-zfsの編成で個人的に固定。 →freebsd-swapは天使の取り分的な意味合いとして確保。
・起動ディスクをUFSからZFSへ。HDD4台のRAID-Zを構築後、2台のHDDのZFSテーブルにダメージを与えZFSプールが崩壊。 →強制インポートでできる限りのデータを救出して再構築。
・何度か試行錯誤を繰り返し、オプションの変更でatime=off、compression=lz4、bootfsなどを覚える。→不用意にdedupすると死ぬことも覚える。
・安定運用に入った頃、2010年からお世話になっていたReadyNASの撤去に手を付け、完了。管理システムからLinuxベースシステムが完全に撤去される。→世の中ではBSDベースからLinuxベースに写っていくのだが…
・SATAポートが不足してきたため、JMB575チップの10ポートSATA PCIeカードを導入。
・FreeBSD 12.0にアップグレード後ZFSでscrubが全く終わらない事象が発生。原因判定に半年かける。→結局JMB575チップの初期不良が原因。
・どこかから取り外して再販しているのであろう2012年製のLSI MegaRAIDカードを5000円ぐらいで購入、安定動作するがmfiutilコマンドのお世話になる。→できるだけシンプルなハードウェアRAID設定(全てシングルディスクでRAID0)にして、RAID機能自体はZFSに任せる。
・Pythonの学習を始める。特にSelenium Driverによるウェブブラウザ自動運転技術については、Internet Explorerで操作できたようなことができるので覚えておきたい内容。

2. 結論

・コツコツやり続けられる人にはオススメできます。
・ある程度の定常的な事を覚えておけば、FreeBSDの普段使いは簡単。
・FreeBSD関係者に知り合いはいません。

3. FreeBSDの悪い点

・最新のテクノロジーが必ずしもジャストオンタイムで来るわけではない。→Linuxの普通が2年3年遅れてやってくるのは当たり前。入ってこないことも。ただ枯れたものの組合せは流行り物より強い。
・ベンダサポートが正式に行われないことが多い。→特にアンチウィルスやセキュリティ関係。日本企業であまり採用例を見ない原因の一つだと思う。
・FreeBSDでは宣伝活動を目立って行っているようには見えない。→やってるらしいというのはわかるのだけれど。
・日本では利用を公言している企業があまり多くない。→SONY、KDDI、Nintendoなどが成果物を利用しているという噂がある。Rakuten、かつてYahoo JapanやLivedoorでも使っていたとか。
・GPUではAMD RadeonよりGeforceやIntelのほうがトラブルがなく使いやすい。
・主要なLinuxディストリビューションのUbuntuやRed Hatと比較すると最新のハードウェアに対応していないことがあり、しばらく待つ必要がある。→ただし2010年代までと比べて、普段遣いに至るまでにする苦労をあまり感じないようになってきている。
・FreeBSDはPorts Collectionによるソースコードコンパイルによるインストールが当たり前だと思われており、FreeBSD 9.2頃にCentOSなどで叩くようなaptコマンドによく似たpkgコマンドに置き換わっていることを知られていない場合がある。さらに言えばFreeBSD 8.x系までで使われててきたpkg_addコマンド等があったがあまり知られていないようだ。

4. FreeBSDの良い点

・設定方法の追加は、既存機能の追加という形で実現されることが多く、古い方法でも設定ができる。→Linuxでは頻繁に、Windowsではたびたび設定変更の方法が大きく変わっているが、FreeBSDは少なくともFreeBSD 6ぐらいの設定方法が未だに使える事が多い・・・そしてこの方針はしばらく変わらないと思われる。
・ping/traceroute/ifconfig/sockstat/netstatなどのネットワーク切り分けコマンドが最初から使える。→追加インストールの必要はない。
・systat/iostat/vmstatなどのパフォーマンスモニタリングツールも最初から使える。→有名ツールを追加インストールしなくてもこれで済んでしまうことが多い。
・最新のテクノロジーの概要を先んじて学習しておける時間がある。→Linuxでの困難は誰かしらが記事にしているのでそれをヒントに読み替えて簡単に乗り越えていける。
・Linuxulatorの存在。→ライバルの成果物をうまく利用して自分の力にする。
・カーネルとユーザーランドを一元的に開発している。→一つのメリットとしてディストリビューションに組み込むソフトウェアは事由ではあるが、そのソフトウェアの都合で使用不能になった場合、わざわざforkしたり取り替える必要がない。これは「GNU物ではGNUと一緒にしておくにはそぐわないライセンスに変更された場合、forkするか別の成果物を使用する必要がある」事例が有名。
・既存のFreeBSD Ports Collection(make install)でのソースコードフェッチからのインストールとpkgコマンドによるバイナリファイルインストールはちゃんとリンクが取れている。共用ライブラリのオプション指定誤りによる起動不良はともかくとして、余程のことがない限り片方でインストールしたものがもう片方からアンインストールできないということはない。
・FreeBSDとしてのディストリビューションの設定とPorts Collectionなどから入れたソフトウェアがきちんと分けられている。→長期使用に当たり、ファイルの基がディストリビューションのものなのかあとから入れたものなのかを確かめるのが非常に簡単。
・初心者にも中級者にも新たな学びがあるマニュアルをfreebsd.orgが作成し更新している。→Arch Linuxのマニュアルほどではないけど、それでも1次情報として相当役に立つ。
・Windowsでは営利企業としてやっていく以上、何かしら収入源を仕込むことはあるが、FreeBSDではほぼない。→ブレイクスルーを達成すれば、余計なことで気を取られないで済むし、余計なことで手間を取る必要がなくなる。
・新しいものを覚えるのはどうしても時間がかかるなど、ものぐささんには手間はあるものの結構使えるシステムだと思う。
・小金丸エンジニアリングサービス様バンザイ!→manコマンドを始めとした日本語マニュアルを翻訳・公開している方。

5. 最後に

・初期段階ではおっかなびっくりだったりトラブルに遭ったりしがちだが、ブレイクスルーを迎えれば長期に渡って使い込めるシステムがFreeBSDというものだと思う。
・dockerやsystemdなどの出来合いのシステムを使い回しして楽するのは良いことだと思うけど、その上で動くものがどういうものなのかを理解してからでも遅くはないと思う。特にそれが好きで好きでしょうがないならともかく、めんどくさがりの場合はそれを覚えなければやっていけないみたいなそういう環境でなければトラブル解決能力すら育たない:出来たシステムを使わされてマニュアルを読んで構築しただけで出来た気になって満足してしまうので、そうしたシステムを常用することはあまりオススメしない。そうしたシステムでトラブルが発生したとき、何も知識がなければ全てをゼロに戻して再開することになるが、それですら解決できない問題に突き当たったときの粘り強さに差が出てくることになる。
・FreeBSDの基本的な設定や考え方は2006年ぐらいから今(2022年)まであまり変わっていません。
・大抵エバンジェリストだとか先生役の方がいるものですが、私は一人でここまで来れました。ですが時間がかかりますからどうかコミュニティを探してどうかスキルアップを手伝ってもらってください。(日本ではFacebookやCompassというところにそういうコミュニティがあるみたいです)

更新:2023/01/01 誤字の修正
更新:2022/12/31 ZFSに関する記述を追加、5. 最後に の修正。
初版:2022/12/28

コメント