@ひろP

    - Welcome to Hiroshi's Home Page -
    趣味を中心とした個人のホームページです


@ひろP / ホビー / プロフィール / ブックマーク / 掲示板 / アルバム / サイトマップ / memo

▼ ▼ ▼

Linux関連 / OpenBlockSS関連 / 電波時計関連 / GPS関連 / USB関連 / プログラミング

▼ ▼ ▼

インストール及び設定 / 日本語化 / デバイスドライバ / その他

▼ ▼ ▼

zlibとmodutils / uumを作る / canuumを作る

zlibとmodutils…

はじめに

コンパクトなLinuxを作りたかったため、参考にSlackware 8.0をインストールしてみました。

RedHat 7.2を、カスタムで何も選択しない状態でインストールすると、ディスクを約200M程度使用しますが、Slackware 8.0のA(Base Linux System)とN(Networking)の必要なパッケージのみを選択した場合、約66M程度となります。

この差は、ドキュメントが最小限に抑えられていることや、不要なパッケージが入らないこと(多機能のために他のパッケージに依存しているものが多いので、芋づる式に入ってしまう)、それとカーネルのモジュールが圧縮されていることにあるようです。

今回は、最後の部分である、圧縮されてカーネルモジュールのサポートについて調べてみました。

modutilsの調査

圧縮されたモジュールのままmodprobeできることから、このあたりにヒントが隠されているようなので、Slackwareのソースからmodutilsに関する部分を拾ってきます。

パッケージ作成には、SlackBuildを使用するので、ここを調査します。

気になる点が2点、1点目は、パッチをあてている部分

# Do not link with a dynamic libz, as this may not be on the root partition:
zcat $CWD/modutils.staticlibz.diff.gz | patch -p1 --verbose --backup -E
と、2点目は、コンフィグレーションする部分
./configure i386-slackware-linux --enable-zlib # --enable-compat-2-0 --enable-kerneld

です。

modutils自体が、zlibによる圧縮をサポートさせるためには、configure時に--enable-zlibを付けてやればいいことがわかりました。

前者のパッチは、zlibのリンク方法を、共有ライブラリの使用(-lz)から静的リンク(/usr/lib/libz.a)に変更しているようです。

これは、通常、zlibが/usr/libにあるため、起動時に/usrをmountする前に(/と/usrを別にしている場合等)、モジュールが必要になると、不都合が起きるためでしょう。

モジュールの圧縮

それぞれのモジュールを圧縮するには、ごく普通にgzipで、gzip -9 <モジュール名> を使用します。

圧縮後はdepmodを使用し、依存関係を更新する必要があります。全てについて行う場合は、depmod -a です。

まとめ

zlibを静的リンクしたmodutilsのオブジェクトは、それぞれ60K程度大きくなります。

もし、zlibを/libに移動することで、解決するのであれば、共有ライブラリを使用するのがいいかもしれません。

多くの機能をモジュール化している場合(RedHatのカーネル等)は、モジュールだけでも20Mを越えることがあります。

この機能を用いることにより、半分程度に抑えることが可能でした。

 

なお、Slackware 8.0インストール時にmenuモードで選択したものは、以下の通りです。

i245      - Linux 2.4.5 no SCSI
kbd       - Change keyboard mappings and console fonts
pcmcia    - PCMCIA card services support
zoneinfo  - Configure your time zone
dhcp DHCP - client and server utilities
ipchains  - Firewall configuration utility for 2.2
iptables  - Firewall configuration utility for 2.4
ppp       - Point-to-point  protocol
tcpip1    - TCP/IP networking programs

 

(2002/02/04)

zlibとmodutils / uumを作る / canuumを作る

▲ ▲ ▲

インストール及び設定 / 日本語化 / デバイスドライバ / その他

▲ ▲ ▲

Linux関連 / OpenBlockSS関連 / 電波時計関連 / GPS関連 / USB関連 / プログラミング

▲ ▲ ▲

@ひろP / ホビー / プロフィール / ブックマーク / 掲示板 / アルバム / サイトマップ / memo

@ひろP

(c) Copyright 1998-2002 Hiroshi OHNO All right reserved.
E-MAIL: hirop0730@hotmail.com / hiroshi@bigfield.com