libc 5.4.7 との相性 (96/10/17)

今日は先日の続きだい。boot & root フロッピー作成の為に、 例の static link してしまっているコマンド達を作成しなおす!

基本的には先日にインストールしたときと同じ。設定も ログ を見ながらである。でも当然ながら全く同じ ではない。前回との違いはコンパイルオプションである。

MCONFIG の中では

OPT=		-pipe -O2 -m486 -fomit-frame-pointer
LDFLAGS=	-s -N
となっている。これを変更する。
OPT=		-pipe -O6 -m486 -fomit-frame-pointer
LDFLAGS=	-s
オプティマイズレベルを 6 にしているのは、たんなる趣味である。:-)

さてこれでコンパイルだい!
cipher:~# make
順調、順調……、と思ったらエラーだ。
gcc -c -Wall -Wstrict-prototypes -Wmissing-prototypes -pipe -O6 -m486 -fomit-frame-pointer -I. -I../bsd -DSBINDIR=\"/sbin\" -DUSRSBINDIR=\"/usr/sbin\" -DLOGDIR=\"/var/log\" -DVARPATH=\"/var\" -DHAVE_NFS -DFSTYPE_DEFAULT=\"iso9660\" swapon.c
swapon.c: In function `swap':
swapon.c:73: too few arguments to function `swapon'
make[1]: *** [swapon.o] Error 1
make[1]: Leaving directory `/home/yokota/next/util-linux-2.5/mount'
make: *** [all] Error 1
えぇ何コレ!

前回インストールしたときは、こんなことにならなかったぞぉ。かんべんして くれよぉぉぉぉ。(;_;)シクシク

しょうがないから swapon.c73 行目を見てみる。

     status = swapon (special);
これが何、と思って unistd.h を見てみると…
extern int swapon __P ((__const char *__path, int __swapflags));
引数が違う!

う〜む。これはまいったなぁ。おそらく libc-5.4.7.bin.tar.gz をイ ンストールした影響なんだろうなぁ。確認の為に 5.2.18 を引っぱり 出してきて unistd.h を見てみると

extern int swapon __P ((__const char *__path));
ちゃんと引数は一つだった。

もうちょっと util-linux-2.5 を調べてみると SUPPORT_PRIORITIESdifine されていれば大丈夫のようだ けれど mount/sundries.h の中で

#if 0
#include <linux/version.h>
#if LINUX_VERSION_CODE >= 0x010302
#define SUPPORT_PRIORITIES
#endif
#endif
とわざわざ define されないようになっている。もしかしたら何か理 由があってこうしているのかもしれない。ふみぃ、どうしよう…。

とりあえず最新を捜してみよ!

そしたらちゃんと ftp://ftp.win.tue.nl/pub/linux/util/ mount-2.5p.tar.gz があった。きっとコレなら大丈夫だろう。

期待いっぱいで取って来てインストールしてみました。展開して Makefile をちょっといじってみる。

OPTFLAGS= -O2 -fomit-frame-pointer
#CFLAGS = -pipe $(OPTFLAGS)
LDLIBS =
となっている箇所を
OPTFLAGS= -O6 -fomit-frame-pointer
CFLAGS = -pipe $(OPTFLAGS)
LDLIBS = -s -O6
にしました。そして
cipher:~# make
cipher:~# su
Password:
cipher:~# make install
やったぜ!

よ〜し、mount 関係のコンパイルは OK だ。では util-linux-2.5 で mount 関係以外をインストールしちゃお。

というわけで util-linux-2.5Makefile の中の SUBDIRS から mount を削除してコンパイル & インストール。これも 成功だ!

これでやっと先日の続きである root フロッピー作成ができる。 binsbin に新ためてコマンドを持って来てサイズを確認。

cipher:~# du -sb bin sbin
561634	bin
224623	sbin
両方合わせて約 786 KB ですか。ふむふむ。もしかしたらうまくでき るかもしれない。あと lib のサイズも確認してみよっと。
cipher:~# ls -l /lib/libc.so.5
lrwxrwxrwx   1 root     root           13 Oct  4 22:55 /lib/libc.so.5 -> libc.so.5.4.7
cipher:~# ls -l /lib/libc.so.5.4.7 
-rwxr-xr-x   1 bin      bin       1773160 Sep 25 08:20 /lib/libc.so.5.4.7
………

1.7 MB か、これ。数え間違いでないよな。ぉぃぉぃ、これ一つさえフ ロッピーに入らんじゃないかぁ。まいったぁぁぁ。

どうしよう…。もしかして boot & root フロッピーというの は一般人が作成してはいけないのか。何故にこんなに障害ばかりが…。(;_;)

この 5.4.7 は自分でコンパイルしたんじゃなくって libc-5.4.7.bin.tar.gz からインストールしたんヤツだな。これって 確か -g1 でコンパイルしたヤツだっと読んだ憶えがあるぞ。こんなに 大きいサイズなのはそのせいかぁ。

とすると自分で libc-5.4.7.tar.gz をコンパイルするしかないな、こ りゃ。え〜ん、また boot & root フロッピー作成はおあずけ だぁ〜。

今日はシクシクのスィッチオフ。

戻る