|
|
kema's web Top | Who is kema? | 電気・回路 | 無線 | コンピュータ |
| バイク | 鉄道関係 | 妙な写真・イラスト | kema's料理 | ゲーム関係 | |
|
1:カーネル構築 2:Crunched Binary作成 3:1FDディスクイメージ作成 4:起動フロッピーディスク作成 |
Crunched Binary作成編Crunched Binaryとは1FD FreeBSDのカーネルを作成したら、次はcrunchされたバイナリを作成します。crunched binaryとは、引数の取り方によって挙動を変える、実体としては単一のバイナリファイルです。 # prog cat /etc/services ←"cat /etc/services" と同じ動作をする…と言った具合です。たくさんの機能を詰め込めばそれだけサイズは大きくなりますが、コマンドを厳選してやれば、十分にフロッピー1枚に詰め込むことができます。 それでは、crunched binaryの作り方を説明します。 必要なコマンドを挙げるまず最初に、どのコマンドを詰め込むか取捨選択します。とりあえず私が選んだものは以下の通りです。 bzip2ここまでが、FreeBSDのシステムで標準で用意されているコマンドです。 tcpclientこの二つは、ネットワーク経由でのHDイメージ送出・受取に用います。 tcpserverは、DJBのucspi-tcpに入っているものを使いました。入手元は、 http://cr.yp.to/ucspi-tcp/install.htmlです。DJBは好き嫌いが分かれるとは思いますが(笑)。 システムに標準で用意されていない外部プログラムをcrunched binaryに取り込むテクニックはこの後で示します。 作業ディレクトリの作成どのコマンドを取り込むかを決めたら、作業ディレクトリを作ります。私は、/root/fd/ に1FD FreeBSD作業用ディレクトリを作ったので、更にその下にcrunchディレクトリを作成し、そこで作業することにしました。フルパスは/root/fd/crunch/ になります。 実行バイナリ名の決定crunche binaryの名前を決めます。これは別に何でもいいのですが、私は"execimg"にしてみました。 crunchgen設定ファイルの作成いよいよ、crunched binaryの作成に入ります。まずは設定ファイルを作ります。 srcdirs /usr/src/binこの内容で設定ファイルを保存しました。 さて、この段階で早速crunchgenを実行すると、 # crunchgen -f execimg.confと言われてしまいます。 要するに、標準でシステム内に用意されているプログラム以外は、ソースファイルのある場所が分からん!と言われてるわけです。 そこで、まずはそのソースディレクトリを用意します。 tcpclientとtcpserverの展開、コンパイル、ソースディレクトリの準備ucspi-tcp-0.88.tar.gzを、/tmpで展開しました。 # tar xvfz ucspi-tcp-0.88.tar.gzすると、/tmp/ucspi-tcp-0.88/ にソースが展開されます。ここに移動してmake。 # cd ucspi-tcp-0.88これでオブジェクトが作成されます。次に、crunchgenの要求により、コマンド名に対応するディレクトリを作成し、そこに必要なファイルをコピーしてやります。 # mkdir /root/fd/tcpclientこれでやっとcrunchgenが通・・・りません。試しにやってみると、 # crunchgen -f execimg.confと言われるはずです。 FreeBSD日本語マニュアルによると、 crunchgen ユーティリティは特殊な要件をパッケージの Makefile に課しており、このことが原因で Makefile が非 BSD ソース用に使えなくなっています。特に、 Makefile はターゲット depend を含むことが必要であり、全オブジェクトファイルを変数 OBJS で定義することが必要です。場合によっては、偽のMakefile を使えるでしょう。 crunchgen は、ソースディレクトリ foo 中のMakefile を見る前に、現在のディレクトリ中の Makefile.foo を見ます。とあります。そこで、tcpclientとtcpserver用に、それぞれのディレクトリのMakefileを書き換えます。 /root/fd/tcpclient にあるMakefileは、 PROG = tcpserverと書き換えます。同様に、/root/tcpserver/Makefile は、 PROG = tcpclientと書き換えました。これで、crunchgenを実行してみます。 # cd /root/fd/crunch/エラーが出なければOKです。さて、この段階でmakeを実行しても、まだエラーとなるはずです。 原因は、execimg.mkの中で、tcpserverとtcpclientの部分で、"make depend;make〜"の部分に対応するMakefileの記述が、それぞれのビルドディレクトリにあるMakefileに記述されていないためです。 しかし、tcpserverやtcpclientを作成するのに必要なオブジェクトファイルは既にあるので、execimg.mkの該当部分を単に削除してやるだけでmakeが通るはずです。 (この辺の実機の記述を記録し忘れたため、後日追ってこの部分記述する予定) # make -f execimg.mkエラーが出なければ、無事crunched binary作成完了です。 エラーが出る場合のチェックポイントは、
Makefileを書き換えたりと、少々敷居が高いですが、この方法で実際に問題なくコンパイルできていますので、大丈夫だと思います。 カーネル、クランチバイナリが作成できれば、次はいよいよフロッピーの作成です。 | ||||