BSD界隈四方山話

第15回2015年第2四半期、FreeBSDステータスレポート-パッケージビルド強化、OPNsense、ホットプラグサポート

FreeBSDプロジェクトから2015年第2四半期分のステータスレポートFreeBSD Quarterly Status Report - Second Quarter 2015が公開されました。

amd64/i386パッケージビルド強化

FreeBSDプロジェクトはFreeBSD Foundationなどから提供されるサーバを使ってパッケージビルドの強化に取り組んでいます。これまでFreeBSDプロジェクトは1週間に1度の頻度でamd64およびi386向けのパッケージをビルドして提供してきましたが、FreeBSD Foundationからのハードウェア提供を受けてこれを2日に1回のペースまで短縮化しています。今のシステムでフルビルドにかかる時間は30時間とされています。

パッケージのビルドには11台のサーバと8つの異なるシステムが使われています。ビルドの進捗状態はpkg-status.freebsd.orgで確認できます。パッケージはサポートしているすべてのリリースに提供されているほか、FreeBSD 10.1および9.3に対しては四半期毎のパッケージリリースも提供されています。

Portmgr達はBSDCanでのディスカッションを経て、デフォルトで提供するパッケージセットは現在四半期毎に提供しているクォータリーブランチをベースに提供することを決定したと報告しています。クォータリーブランチをベースとすることでデフォルトパッケージセットがより安定するほか、最新版を使いたいユーザはヘッドパッケージを使えばよいので、双方の要望に応えることができるということのようです。

armv6/mips64/mipsパッケージビルド強化

FreeBSD FoundationはARMおよびMIPS向けのパッケージをビルドするサーバを購入しFreeBSDプロジェクトに寄贈しています。これらパッケージビルドシステムそのものはx86システムを使って運用されています。対象となるアーキテクチャはarmv6、mips64、mipsです。今のところこれらアーキテクチャ向けのビルドはベストエフォートで、だいたいビルドに1週間から2週間ほどかかるとされています。

ARMやMIPSのマシンではなくx86マシンでパッケージビルドを行っている理由の一つに、x86マシンは調達しやすく性能もよいということがあります。Jailでビルド用の環境を用意し、プロセッサ部分だけをQEMU経由でエミュレートすることでビルドを実施しています。QEMUを使ったクロスビルドの仕組みはまだまだ開発の余地があり、今後も継続して改善へ向けた取り組みが進められる見通しです。

ARMやMIPSが使われた組み込み機器や小型PC、メニーコアシステムなどでFreeBSDを使う需要が増えているわけですが、これまでパッケージは提供されてこなかったため、Ports Collectionからビルドして使う必要がありました。しかし、そうしたマシンはディスクI/Oなどもパフォーマンスも低く、ビルドに長い時間がかかるという問題がありました。今後、ARM/MIPS向けのパッケージが提供されていくことで、こうした問題が改善していくものとみられます。

2015年第2四半期の間にarm64(AArch64)もリポジトリに追加されましたし、すでにarm64向けのパッケージビルドのテストは実施されています。そう遠くない将来にarm64向けのパッケージセットの提供も始まるのではないかと思います。

OPNsense登場

pfSenseから新しく「OPNsense」がフォークしたことが報告されています。pfSenseはFreeBSDベースのファイアウォール/ルーティングソフトウェアアプライアンスです。人気の高いソリューションですが、ベースに採用しているFreeBSDのバージョンが古く、さらに新しいバージョンへの移行が進んでいないという懸念もありました。

OPNsenseはベースとなるFreeBSDが常に最新のFreeBSDになるようにすることで、従来の優れたファイアウォール機能はそのままに、FreeBSD開発のエコシステムの恩恵も得ることを目的にしていると説明があります。先日リリースされたOPNsense 15.7ではファームウェアとパッケージがpkgに準拠したほか、ウィークリーでのセキュリティアップデートの提供、ALTQベースのトラフィック帯域制御をIPFW/dummynetへ置き換え、LibreSSLの統合など、すでに最新の成果物を取り込んで成果を挙げているようです。

これまでpfSenseを使ってきたのであれば、pfSenseとOPNsenseは双方共にウォッチしておいたほうがよさそうです。pfSenseを使い続けるかOPNsenseへの移行を検討するか、しばらく開発の進捗などをチェックしておきましょう。

PCIeホットプラグサポート

PCIeホットプラグをサポートするための開発の進捗状況が報告されています。現在のFreeBSDカーネルはGigabit EthernetアダプタやeSATAカードといったExpressCard PCIeデバイスはサポートしていますが、その活線挿抜には対応していません。起動時に接続されていればデバイスとして認識しますが、途中で引き抜くとクラッシュします。

プロジェクトではExpressCardスロットやThunderboltインタフェースに接続するタイプのデバイスを使用できるようにしようというもので、開発は基本的なホットスワップが動作するといった段階にあると説明があります。今回の開発でデバイスの活線挿抜を実現する基本的な仕組みが導入されることになるようですが、個々のデバイスドライバ側でも対応コードを入れることになるようです。

pw(8)クリーンナップ

pw(8)コマンドはユーザやグループの作成、削除、編集などを実施するためのツールですが、このコマンドは開発された当初からほとんど変更が行われていませんでした。2015年第2四半期にはpw(8)コマンドのクリーンナップが実施されました。主な変更内容は次のとおりです。

  • 重複したコードの削除
  • より小さな機能へ分割することで複雑さを低減
  • 文字列のバッファとしてsbuf(9)を使用
  • 文字列の配列にstringlist(3)を使用
  • これまでのグループ操作コードを廃止してlibutilが提供しているgr_utilsを使用
  • 時間文字列のパースにstrptime(3)を使用
  • atoi(3)の誤った使い方によるバグを修正
  • 新しいオプション-Rを追加(pw -R rootdir cmdのように使用)

sbuf(9)はFreeBSD 4.4で導入された機能で、カーネルやユーザランドのプログラムで安全に文字列のアロケート、コンポーズ、リリースを実施するための関数群です。stringlist(3)は文字列のリストを操作するための関数群で、FreeBSDにはFreeBSD 2.2.6の時に導入されています。

こうしたクリーンナップはコーディングのスキル向上に活用できて便利です。https://svnweb.freebsd.org/base/head/usr.sbin/pw/から変更差分をチェックできますのでコーディングに興味がある方は読んでみてください。どういった意図でどういった書き換えが行われたのかがわかります。

おすすめ記事

記事・ニュース一覧