カーネルモジュール解決法1。
カーネルモジュールはVIVER本体(viverrd.gz)(initrd)の中にsquashfsで圧縮した状態で入っているいるので、これをpivot_root後に/lib/modulesにマウントすれば、ディスクイメージ作成時にカーネルもジュールを展開しなくても良くなる。
ただ、こうするとpivot_root後にviverrdをアンマウントできなくなる。かといってコピーしてからマウントすると、15MBくらい差分を余計に食う。
viverrdをアンマウントできない=RAMを食う なので、RAMを差分保持に使っているならコピーした方がメモリの節約にはなることは確かなのだけど、viverrdをアンマウンとせずに残しておくというのは、いろいろと使い道があるのかもしれない。(アンマウントするための処理が面倒、というのもある)
viverrdの中には libc やら libstdc++ やら libpthread やらやらが入っているので、プラグインシステムでこれ使うのもアリかもしれない。
busyboxも入っているので、シェルスクリプトのインタープリタとして使える。
まぁもっとも、libcなしで動くディストリビューションなんて無いわけで、だからどうしたという気もする。
LSB(Linux Standard Base)というのがある。
VIVERの動作に必要な環境、ということでLSBを入れておけば、libcやlibstdc++は必ず入っているし、FHS(Filesystem Hierarchy Standard)を含んでいるので、/binとか/etcとか/usr/localとかの基本的なディレクトリ構造は同じであるし、/etc/fstabファイルや/etc/mtabファイルは必ず存在する。
LSBはさりげなくRPMが要件に入っていたりして面白い。
LSB準拠ディストリビューションでなら必ず動くプラグインを作ることは不可能では無い…なんてことはないな。ものによる。
む。難しいなぁ。