takemonさんのブログ

FreeSBIE を FreeBSD 12.4 RELEASE で動かす。

OSのCD/DVDからブートするシステムは一つ持っていると、HDDのサルベージをするときにとても重宝します。最近では DVD-ROM ドライブ自体が付いていないPCもあったりしますが、その場合には iso ファイルをそのままコピーすることでブートディスクとしてつかえるVentoyのような便利なシステムもあります。
通常であれば、gpartdclonezillaと、Ultumate boot cdに、Windows のインストールディスクくらいを用意しておけば、だいたいのことは何とかなるのですが、「zfs で RAID を構築したサーバのサルベージ」といったような、ニッチな案件が訪れることが稀にあります。
そんなとき、サルベージ用にいろいろと使い慣れたパッケージを入れたCD/DVD ブートするメディアを持っていると心強いです。

FreeBSD にはそういった用途のためのプロジェクトはいくつかあるのですが、昔から私がちょっとだけかかわってきた FreeSBIE について、FreeBSD 12.4-RELEASE で動かすことができたので、紹介します。

rcスクリプトで自動起動

例によって例のごとく、FreeBSD上でサービスを動かしていると、サーバなどでは再起動時に自動で実行してくれていたら便利だなと思うことが多々あります。
とりあえず、/etc/rc.local に追加することで、起動時の自動実行という目的は達成できるのですが、起動の順番を指定することができないので、
あるサービスが動いていることが前提で、それに依存するサービスを動かす、みたいなちょっと複雑なシステムの起動にはうまく行かなかったりします。

そこで、/usr/local/etc/rc.d/以下にrcスクリプトをおいて、その辺の調停もうまい具合にこなしつつ自動で実行させる方法について説明します。

OSのバージョンアップの際に qjail で管理している jail も追従する

qjail を使って jail を管理していると、更新もらくちんです。

freebsd-update や make world して、ホスト側のOSの更新をしたら、jail環境も更新しましょう。
やり方は簡単、まず、すべての jail を止めます。

>sudo qjail stop

次に更新かけます。

>sudo qjail update -b

すると、だーっとメッセージが出て、特に何も問題がなければ、あっという間に完了します。
時間的に余裕があれば、この際に、バックアップを取っておくと、以下で更新をかけた際に
動かなくなった時に慌てず元に戻せます。
>sudo qjail archive

ものによってはちょっと時間がかかるかもしれませんが、やっておくと戻すのが圧倒的に
楽ですので、やっておきましょう。
保存されたバックアップは /usr/jails/archive の下に jail名+日時の形式で保存されて
います。

終わったらあとは、サービスを再開します。

>sudo qjail start

で、jail を動かした後、中に入って(あるいは外から)中のパッケージも更新しましょう。

>sudo qjail console
#pkg update
#pkg upgrade

jail上で PostgreSQL を動かすには

主に弊社では qjail を使って仮想サーバを立てて開発作業をしていますが、その際に、PostgreSQL サーバがうまく jail 上で起動しないという問題がありました。
とりあえず、DBサーバは別の物理マシンに立ててそちらを参照するようにしていたのですが、異なるバージョンのサーバでの確認をしなければいけない状況が
出てきてしまい、その場合のみ、vhyve で仮想マシンを立てて凌いでいました。ですが、さすがにこれは無駄なので、原因を探ってみることにしました。

通常、どこを調べても jail 環境で PostgreSQL を動かすには sysvipc が必要と出てきて、
ホスト側の /etc/rc.conf に
jail_sysvipc_allow="YES"
を追加して再起動すればよい、みたいなことを書いてありますが、11.0-RELEASE ではこれだけでは動きませんでした。
ホスト側はこれでいいのですが、jail 側でも、これを通してあげる必要があります。
まず、 jls して、jid を調べます。
その後、
jail -m jid=[調べたjid] allow.sysvipc=1
してあげれば、これで動くようになります。

Windows 10 にちょっとだけ触れてみました。そして[CAPS]キーを[CTRL]キーにするレジストリについて。

マイクロソフトが新しいOS Windows 10 を発表しました。
いろいろと話題になっていますが、Windows はこれからローリングアップデートになるようです。
また、新しいブラウザ、マイクロソフトエッジも搭載されています。おかげで今まで関わったページの動作を確認していますがさすがに最新だけあって、Chrome や Firefox と同様か、それ以上の機能を誇っているようで、なかなか楽しみでもあります。
早速弊社でも、テスト環境に導入してみましたので、ちょっとだけ感想とtipsを。

常に最新の状態を保つには

FreeBSD 10 以降、バイナリパッケージのコマンドが pkg に変更になり、とても気軽にプログラムをインストールできるようになりました。
今までなら ports でコンパイルしてインストールして、とやっていたところを pkg install 一発です。依存関係も見て、必要なものを
一緒に入れてくれるため、本当に手軽に更新できるようになりました。
# pkg upgrade
これですべて完了。
常に最新の状態でセキュリティ的にもばっちりです。

あれ?ではなんのためのこのエントリ?
そうです、そんな一筋縄では行かないことがあるのがこの世の定め。
標準的な config で良ければすべて平和にことは片付くのですが、そうは行きません。
コンパイル時にいろいろ指定をしないと行けない www/nginx とか、MAILDROP_SUID を指定しないとうまく動かない mail/maildrop とか、
結局インストール時に ports で make しないといけないものもいくつかあります。
そんなときに、何も考えずに pkg upgrade してしまうと、いきなり今までと挙動が変わって「動かなくなった」ということになってしまいます。

そんなことにならないようにする対策も pkg にはあります。それが、 pkg lock です。

jail のあれこれ

あけましておめでとうございます。
本年もよろしくお願いします。

さて、前回 qjail の話題を取り扱いましたが、今回はjail を使う上で、時々出る問題と解決法についてです。

qjail を使って、楽々jail 管理

FreeBSD には以前より、 jail という、軽量なコンテナが標準でついてきます。
割り当てられたファイルシステムとプロセス空間のみ扱えるような分離方法で、CPU資源の振り分けまではできませんが、単機能なサーバを複数建てたいときなどに非常に便利な機能です。

通常、素のままでも使えますが、もうちょっと便利に使うための ports/pkg があります。ezjail やqjail なとです。ここでは qjail を使うことにします。

ports-mgmt/portmaster のすすめ

以前、 ports-mgmt/pkg_replaceのすすめというエントリを書きましたが、最近は ports-mgmt/portmaster を使いだしたので、そちらも紹介しておきます。

portmaster 本体は pkg_replace と同様に、シェルスクリプトで書かれたもので、インストールの際に、他の依存したパッケージがありません。
pkg_replace との違いは、オプションが portupgrade とまるっきり互換性がないため、新たにオプションを覚える必要があります。」

セキュリティアドバイザリ(FreeBSD-SA-14:08.tcp)が出ています。

世間では Heartbleed が発覚して大騒ぎになりましたが、またしても大きな問題が、FreeBSD に発覚しました。

http://www.freebsd.org/security/advisories/FreeBSD-SA-14:08.tcp.asc

かなり深刻な問題っぽいので、早急に対策をしておきましょう。

コンテンツ配信