Natureza
natur****@beige*****
2004年 6月 5日 (土) 00:17:46 JST
from K.Wonderboy > miniroot.gzの再構築について御教授お願い致します. MAXさん(お久しぶりでぇ〜す)がすでにご紹介くださっていますので 私は実際に行なった時のことを思い出しながら.......... お役に立てるかどうかは判りませんが。 > miniroot.gzの中にあるlinuxrcの内容を変更したのですが, > boot-ja.imgが一枚のFDに格納できない状態となり,再び > linuxrcの内容を変更(一部削除)し,容量を削減しました. > 内容変更後に,圧縮しminiroot.gzを作成したのですが, > 容量の変化がありません. miniroot.gz(またはinitrd.gz)を何回も書き換えたり、大量にファイルを 入れ替えたりすると、果てはノード(かな?)を使い切って書き込めなく なります。 なので、例えば元の中身からファイルを削除して小さくする場合は minirootのe2fsを作成し直して、そこに一つずつコピーしていくと 上手く行きます。 具体的には、元になるminirootのノード数などを次のコマンドで 予め調べておきます。miniroot.gz をgzip -cd で >~/miniroot で解凍。 dumpe2fs ~/miniroot でinode数がわかります。 ちなみに、knoppix20040209版では、確か 8192だったと思います。 小さくしたいとのことなので、inode数を削減することも必要かも知れま せんが、うかつに削ると、不足して動作しなくなることがあります。 inode数は大目に取っておいた方が無難なようです。 ddコマンドで新規のminiroot-newの箱を作成します。 ここがウロ覚えのところですが、私は確か以下のような感じにしました。 dd if=/dev/zero of=~/miniroot-new bs=1k count=3500 count=3500で大体3.4MBくらいなのでgzにすると knoppixのminirootで あれば450-500KBくらいになります。中身スカスカですから。 次にmke2fs で同じinode数のminiroot-newをフォーマットします。 mke2fs -F -i 1024 -N 8192 ~/miniroot-new あとは、これをloopマウントして、元になるminirootもマウントして 必要なものをコピー(cp -Rp)すればイイと思います。 もし削除した場合は lost+rrmoved も消しておいた方がイイでしょう。 但し、削除を繰り返すと例え削除といえどもその場所は使われたまま になる感じですので、小さくはなりません。たしか。 本家では2枚組のブートフロッピーの仕組みをkernelとramdiskパラメータ でinitrdを別のフロッピーで読み込むようにしているみたいです。 knoppixではKNOPPIXというファイルをlinuxrcで探しに行ってマウントするので OKなのですが、通常のHD上のルートディレクトリを起動したい場合は linuxrcでそれを探す仕組みにしないと起動できないと思います。 なので、私はHDインストールシステムの起動フロッピーには、grubを使って います。ですが、grub自体で200KBくらい使うので、巨大化したkernel2.6系は 収まりきりませんので、今は3枚組にしてます(^.^)。 kernelは.configによって、特化した用途であればまだまだ小さく出来ると思いま す。 余談でした。 ご参考になれば幸いです。ウロ覚え(当時のメモがHDDを飛ばしてしまって なくなってしまった)の箇所もあるので、何かありましたらご連絡下さい。