pkgsrcの利用

NetBSDではpkgsrcという仕組があり、当然の如くNetBSD/hpcshでもこれを使う。これは、ソース形式で広く世間に公開されているソフトウェアをコンパイルし、インストールやアンインストール、バイナリパッケージの作成等というソフトウェアパッケージを管理するものである。

これはNetBSD全体共通、およびNetBSD以外のOSでも一部使えるようになっている。

詳しくはpkgsrc: The NetBSD Packages Collectionを参照して欲しい。

hpcshにおけるpkgsrc

NetBSD/hpcshにおいてこのpkgsrcを利用する場合、重大な問題がある。それはバイナリパッケージが存在しないということがある。いわゆるPCのi386等ではコンパイルされたバイナリがあるため、自分でpkgsrcからコンパイルしなくても、これらのバイナリをインストールすれば良い。

しかし、NetBSD/hpcsh用のバイナリは今のところ提供されていないため、使用者が自分でコンパイルしなければならないのが現状である。NetBSD/hpcshで便利な環境を作ろうと思うとこれは非常に辛い状況である。

pkgsrcを使用するには

コンパイルしてソースからインストールする方法は他のNetBSDと何も変わらない。作業としては次のようになる。

pkgsrcの展開

pkgsrcのソースを取得し、展開する。pkgsrcにもcurrentと定期的に提供されるものがある。例えば2007Q1と呼ばれる物は以下となる。

ftp://ftp.NetBSD.org/pub/pkgsrc/pkgsrc-2007Q1/pkgsrc-2007Q1.tar.gz

このソースを展開するとトップディレクトリは./pkgsrcとなっているため、これを/usrに展開する。

アプリケーションのコンパイルとインストール

pkgsrcを展開するとカテゴリ別のディレクトリがあり、その下にそれぞれのソフトウェア毎のディレクトリがあるので、そのディレクトリでmakeすればそのソフトウェアをコンパイルすることができる

例えば、perlをインストールしたければ、

# cd /usr/pkgsrc/lang/perl5
# make install

とするだけでperlと、それをコンパイルするのに必要なソフトウェア、動作させるために必要なソフトウェアをコンパイル/インストールできる。それぞれのソースは自動的にネットワークから取得してくるので、至極簡単である。

また、make packageとすれば、コンパイル/インストールした後、pkgsrc/packagesにバイナリパッケージを作成する。このバイナリパッケージを利用すれば他の環境に持っていきpkg_addコマンドでインストールすることができる。

pkgsrcコンパイルの問題

このpkgsrcの仕組みを理解した上で、hpcshで実行する場合の問題点は以下のような物が考えられる。

さて、前者3つはある程度の環境を用意することで回避ができる。最後の1つは、本質的な回避はできないが、若干でも改善することはできる。

NFS root環境を作る

i386等の高速なマシン上にhpcshのシステムを展開しておき、そこをroot として起動してしまえば少なくともファイルシステム容量と書き換え寿命の問題を回避することができる。このためには当然、nfs serverとなるマシンが必要であり、また、jornadaで使えるネットワークカードが必要となる。

nfs serverの用意

NetBSDでは簡単にnfs serverが用意できる。また、起動のためにbootpまたはDHCPサーバが必要となる。この手順については オフィシャルのドキュメント Diskless NetBSD HOW-TO が詳しい。hpcsh用の記述は特に無いが、dhcp serverの設定とNFS serverの設定がわかれば良い。

以下、簡単に記述する。

Jornadaの起動

通常と同じようにCFをJornadaにセットし、hpcboot.exeを起動する。ここで画面の左下の、[root file systems]にあるチェックボックスのうち一番右のnfsをチェックする。

この状態でBootを押すと、CFからNetBSDのカーネルをロードするが、その後にDHCPリクエストを実行し、nfs rootをmountする。このように起動できれば、以後はCFを使わなくなる。

また、この環境でswapファイルを作成、swapctl -aで追加すれば当然nfs上のファイルシステムでswapを使うことができる。 pkgsrcのコンパイル用に使用するので、128MBくらいとってしまっても良いと思う。

distccの使用

最後の難問、コンパイル速度の改善を行うことは非常に難しい。現状のpkgsrcはクロスコンパイルには対応していないため、実機でmakeするしかない。

ただし、分散コンパイルツールのdistccを使うことで、コンパイルフェーズのみ、他のマシンのコンパイラを呼び出すことができる。これは大きなソースをコンパイルするときに有効となる。

より高速なハードウェア上でバイナリパッケージを作成する

hpcshはNetBSD/sh3の一つであり(endian little : sh3el)、他のsh3elとバイナリ互換性がある。このため、jornadaよりも高速なNetBSD/sh3elで作成したバイナリを利用することができる。

SH3-CPUを使用したマシンでは一般的にはjornadaの133MHzが最も高速らしい。が、SH4-CPUを使用したマシンが以下のようにある。

NetBSD/dreamcastはローカルファイルシステムを持たず、また、NetBSD動作環境までの道のりが非常に大変なため一般向きとは言いがたい。NetBSD/landiskは最近統合されたportであるが、CPUも高速、メモリも64MB、しかもpci接続のATA-133 IDEディスクを使えるとjornadaに比べると夢のような高速さが期待できる。が、しかし、最近のパソコンとは比べるべくもないのも事実なので、どのみちかなりの覚悟が必要なのは間違いがない。

$Id: pkgsrc.html,v 1.4 2008/03/22 05:12:57 oshima Exp $