次のページ 前のページ 目次へ

8. その他のトピックス

8.1 ファイルシステムのサイズの削減

ファイルシステムが大きすぎて,圧縮してもフロッピーに入らないことがあり ます.そこで,ファイルシステムのサイズを減らす方法をいくつか紹介します. 有効なものから順に紹介します:

ディスクの密度を上げる

デフォルトでは,フロッピーディスクは 1440K でフォーマットされています.しかし,もっと高い密度で使うこともで きます.fdformat は次のサイズでディスクをフォーマットでき ます: 1600, 1680, 1722, 1743, 1760, 1840, 1920. 1440K 対応ドライブの大 部分は 1722K にも対応しているので,筆者はいつもこのサイズをブートディ スクで使っています.fdformat のマニュアルページと /usr/src/linux/Documentation/devices.txt を参照してくださ い.

シェルを変える

Linux で良く使われるシェル(bashtcsh 等)は大きい上に色々なライブラリを必要とします. これらの代用として使える ash, lsh, kiss , smash の ような軽量のシェルがあります.これらは小さいですし,必要なライブラリも 少ないです(あるいは全くありません).このようなシェルのほとんどは http://metalab.unc.edu/pub/Linux/system/shells/ で入手できます. ただし,このようなシェルを使う場合には,ブートディスクに組み込んだ rc ファイルで実行するコマンドを全て実行できることを確認しておいて ください.

ライブラリやバイナリをストリップする

バイナリやライブラリの多くは普通はストリップされていません(つまり,デ バッグ用のシンボルが含まれています).このようなファイルに 'file' を行うと 'not stripped' と表示されます.バイ ナリをルートファイルシステムにコピーするときには,次のようにするとよい でしょう:

        objcopy --strip-all FROM TO

ライブラリをコピーするときには次のようにします:

        objcopy --strip-debug FROM TO

必須でないファイルをユーティリティディスクに移す

ブートやログイ ンには直接必要がないバイナリは,ユーティリティディスクに移すことができ ます.詳しくは ユーティリティディスク作成の節をご覧くだ さい.モジュールをユーティリティディスクに移すことを考えてもよいかもし れません.

8.2 非 RAM ディスクのルートファイルシステム

ルートファイルシステム作成の章では,圧縮形 式のルートファイルシステムの作成方法を説明しました.これはシステムの起 動時に ramkdisk へのロードを行うものです.この方法には利点が多いので, 一般的に使われています.ですがシステムによっては,メモリが少なくて RAM ディスクを用意できないこともあります.このような場合には,フロッピー ディスクから直接ルートファイルシステムをマウントしなければなりません.

圧縮形式のファイルシステムを作るよりも,このようなファイルシステムを作 る方が実は簡単です.なぜなら,何か別のデバイスではなく直接フロッピー上 に作成することができるし,圧縮する必要もないからです.ここでは前の説明 との相違点の形で作成方法の概略を示します.この方法を使う場合には, 使える容量はずっと小さくなってしまう点を忘れないようにしましょう.

  1. ルートに置くファイルに使える容量を計算します. 1枚のブート/ルートディスクを作る場合,カーネル分のブロックとルートファ イルシステム分のブロックが全て1枚のディスクに収まるようにしなければな りません.
  2. mke2fs を用い,適切なサイズのルートファイルシステムをフロッ ピー上に作成します.
  3. 先に述べた手順でファイルシステムを移します.
  4. これが終わったら,ファイルシステムをアンマウントし,これをディス クのファイルに転送します.ただし圧縮してはいけません
  5. 先に述べた手順でカーネルをフロッピーに転送します.ramdisk 変数を 求めるときには,第14ビットは0にしてルートファイルシステムが RAM ディスクにロードされないことを指示します.前に説明したように rdev を実行します.
  6. 先の説明と同じようにルートファイルシステムを転送します.

もうちょっと簡単な方法もいくつかあります.2枚組のディスクセットを作る 場合,最終的なルートファイルシステムを直接2枚目のディスクに作れば,一 度ハードディスクのファイルに移してから再び書き戻す必要はありません.ま た,LILO を使って1枚のブート/ルートディスクを作る場合,ディスク全体を 1つのファイルシステムにし,カーネル,LILO 関連ファイル,ルートに 置くファイルを全て置くことができます.この場合も前に述べたように LILO を実行するだけです.

8.3 ユーティリティディスクの作成

前の説明には,ユーティリティディスクは /usrにマウントすること ができると書きました.この場合にはバイナリをユーティリティディスクの /bin に置きます.こうすると,パスを /usr/bin に 通せばアクセスできるようになります.バイナリが必要とする追加のライブラ リはユーティリティディスクの /lib に置きます.

ユーティリティディスク作成の際には注意すべき点がいくつかあります:

  1. システムに必須のバイナリやライブラリをユーティリティディスクに置 いてはなりません.このディスクはシステムが起動するまではマウントするこ とができないからです.
  2. フロッピーディスクドライブとフロッピーテープドライブに同時にアク セスすることはできません.つまりユーティリティディスクのマウント中は, フロッピーテープドライブにはアクセスできないということです.
  3. ユーティリティディスク上のファイルへのアクセスは遅くなります.

ユーティリティディスクに置くファイルの例を,付録の ユーティリティディスクのサンプルのディレクトリ一覧 に載せています.ここでは便利と思われるものをいくつか挙げておきます: ディ スクの検査・操作用のプログラム(format, fdisk),ファイルシステムの 検査・操作用のプログラム(mke2fs, fsck, debugfs, isofs.o),軽量テ キストエディタ(elvis, jove),圧縮・アーカイブのユーティリティ (gzip, tar, cpio, afio),テープ用ユーティリティ(mt, tob, taper),通信ユーティリティ(ppp.o, slip.o, minicom),デバイス用の ユーティリティ(setserial, mknod).


次のページ 前のページ 目次へ