##################### Knoppix 3.4 以上のカスタマイズ 2005-01-21 ##################### =================== 必要な物、事前準備 =================== ------------------- Linux Kernel config ------------------- Linux カーネルは、 CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y であること。 これを有効にするには、ZLIB を要求するような機能をYにする。 例えば、 CONFIG_JFFS2_FS (Journalling Flash File System v2 (JFFS2) support) CONFIG_CRAMFS (Compressed ROM file system support) CONFIG_CRYPTO_DEFLATE CONFIG_PPP_DEFLATE (PPP Deflate compression) ------------------- cloop ------------------- cloop 2 以上。 http://http1.debian.or.jp/debian/pool/main/c/cloop/ cloop はコンパイルしてモジュールをインストールする =========================== 作業directory =========================== /home/knoppix/cd0/ Knoppix の CD イメージの中身 /home/knoppix/cd1/ 圧縮された KNOPPIX ファイルを展開した中身 (Knoppixの/になる) /cdrom/ CD image のマウント先 にするとする。 イメージ図 CD image file +-----------------+ | KNOPPIX/KNOPPIX | -> /home/knoppix/cd0/ +---------- ∥ ---+ ∨ +--------------------+ | cloop 圧縮ファイル | +--------------------+ ∥ 伸長 ∨ +------- ISO イメージファイル --------------+ | bin/ boot/ dev/ etc/ lib/ sbin/ usr/ var/ | -> /home/knoppix/cd1/ +-------------------------------------------+ =========================== オリジナルの Knoppix の取得 =========================== * iso イメージをダウンロードする * mount -o loop=/dev/loop0 [ダウンロードしたイメージファイル] [マウントポイント] * CD の中身を作業ディレクトリにコピーする 例: mount -o loop=/dev/loop0 knoppix20030222.iso /cdrom cp -a /cdrom/* /home/knoppix/cd0/ umount /cdrom =========================== Knoppix の圧縮ファイルの展開 =========================== * Knoppix の CD の中の、KNOPPIX/KNOPPIX ファイルは、cloop を使って圧縮されている。 * 展開された KNOPPIX/KNOPPIX ファイルは、iso イメージファイル。 * 展開を行うには、 extract_compressed_fs KNOPPIX/KNOPPIX > [展開後のファイルを指定] * 展開されたファイルは、mount コマンドでマウントできる mount -o loop=/dev/loop1 [展開後のファイルを指定] [マウントポイント] 例: cd /home/knoppix/cd0/ extract_compressed_fs KNOPPIX/KNOPPIX > /home/knoppix/bigimg mount -o loop=/dev/loop0 /home/knoppix/bigimg /cdrom cp -a /cdrom/* /home/knoppix/cd1/ umount /cdrom =========================== Knoppix のカスタマイズ =========================== * 上記で展開した KNOPPIX をマウントし、それをどこかにコピー * コピーしたディレクトリに chroot して、作業。 例: chroot /home/knoppix/cd1/ /bin/sh (作業する) (もし network上のマシンにアクセスしたければ、 元の /etc/resolv.conf をリネームし、あたらしく /etc/resolv.conf を書く ) (もし /proc を必要とするようなことがあれば mount -t proc proc /proc を実行する ) (dselect, apt-get, aptitude 等を使ってソフトをインストールしてもよい) (作業が終了したら、chroot している状態で、 umount /proc /etc/resolv.conf を元に戻す /var/tmp/ , /var/log/ , /var/cache/apt/archives/ , /var/run/ の下の不要ファイルを消す ) ( /etc/modules.conf ファイルのタイムスタンプが カーネルのモジュールよりも新しいと、起動時にワーニングがいっぱい出てうっとおしい。 touch コマンドで /etc/modules.conf ファイルの日にちをカーネルより古い日に変更しておく ) (余分な /etc/rcS.d/ , /etc/rc5.d/ 以下のファイルを消す。) chroot を抜ける。 ---------------- 不要なファイル参考 ---------------- /etc/rcS.d/ 以下は、 最低、S00knoppix-autoconfig だけがあればいい。他はカスタマイズで必要なら入れておけばよい /etc/rc5.d/ 以下は、 Knoppix 標準では何もないはず。カスタマイズで必要なら入れておけばよい /var/tmp/ 以下はいらない /root/ 以下に、chrootでの作業中になにかファイルができているかもしれない。これも要らない /var/log/ 以下のファイルは、size を 0 にしておけばよい。 /var/cache/apt/archives/ 以下の .deb ファイルは不要 /var/lib/dpkg/ 以下の -old ファイルは不要 容量が大きければさらに、 /var/lib/apt/lists/ 以下の、パッケージリストを消す --------------- 消しスクリプト --------------- #!/bin/sh #chroot した状態で作業するなら、$TOP を空にすれば良い #chroot を抜けた、本体のシステムで実行するなら、$TOP にフルパスを必ずセット TOP="/home/knoppix/cd1" cd $TOP/var/tmp/ rm -r * .[a-zA-Z0-9]* cd $TOP/var/cache/apt/archives/ # rm *.deb partial/*.deb find $TOP/var/cache/apt/archives/ ! -type d -a ! -name lock -print -exec rm {} \; cd $TOP/var/lib/apt/lists # rm *_Release *_Packages find $TOP/var/lib/apt/lists/ ! -type d -a ! -name lock -print -exec rm {} \; cd $TOP/var/lib/dpkg rm *-old cd $TOP/var/log rm aptitude find $TOP/var/log/ ! -type d -print -exec cp /dev/null {} \; cd $TOP/root rm -r .aptitude .mc/history .w3m #find $TOP/var/cache/man -name index.db -exec rm {} \; #rm $TOP/var/lib/aptitude/pkgstates =========================== KNOPPIX/KNOPPIX ファイルを作る =========================== * 上記で作業したディレクトリ以下を、iso イメージにする。 * iso イメージを以下のようにして圧縮 create_compressed_fs [新しいisoイメージファイル] 65536 > [knoppixのトップ]/KNOPPIX/KNOPPIX 例: mkisofs -R -l -V 'KNOPPIX iso9660 filesystem' -hide-rr-moved -v -o /home/knoppix/newbigimg /home/knoppix/cd1 create_compressed_fs /home/knoppix/newbigimg 65536 > /home/knoppix/cd0/KNOPPIX/KNOPPIX =========================== KNOPPIX CD-ROM を作る =========================== 例: cd /home/knoppix/cd0/ mkisofs -v -R -J -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -hide-rr-moved -o /home/knoppix/cdimg /home/knoppix/cd0 # 例(KNOPPIX 3.3までは、3.4 とは boot に使用している仕組みが違うので、以下のように引数が変わる): # cd /home/knoppix/cd0/ # mkisofs -v -R -J -b KNOPPIX/boot-ja.img -c KNOPPIX/boot.cat -o /home/knoppix/cdimg /home/knoppix/cd0 =========================== テスト =========================== VMWare とか Virtual PC 等のエミュレーターで動かしてテストするのが早くて無駄がない =========================== カスタマイズに必要な Knoppix のたち上げの仕組み 基本知識 =========================== 展開された / の起動は、通常、以下のようになる /etc/inittab ↓ /etc/init.d/rcS ↓ /etc/rcS.d/S* /etc/init.d/knoppix-autoconfig ↓ /etc/rc5.d/S* ↓ /etc/init.d/xsession /etc/X11/xinit/xinitrc (単に/etc/X11/Xsessionへのラッパー) /etc/X11/Xsession (/etc/X11/Xsession.d/以下のスクリプトを順次読み込む) /etc/X11/Xsession.d/* --------------------------------------------- /etc/init.d/knoppix-autoconfig のしていること --------------------------------------------- knoppix CD たち上げ時に与えられた引数を見て、各種変数をセット mount / hostname の指定 モジュールのロード 言語、キーボード配列の指定 ウインドウマネージャーの指定を $DESKTOP に入れる /etc/sysconfig/ 以下のファイルの作成 $LANGUAGE の値により、以下の値を変える。 $COUNTRY $LANG $LANGUAGE $KEYTABLE $XKEYBOARD $KDEKEYBOARD $CHARSET $KDEKEYBOARDS $TZ $XMODIFIERS もし、myconf= で設定ファイルが保存されているなら、保存先を mount して、保存先の knoppix.sh を実行し、config.tbz を展開 input method サーバーの起動 portmap の起動 他のデーモンの起動(もし必要なら) ここでセットされた変数の値を、その後のスクリプトも使う(/etc/sysconfig/を読むなどして知る)ので注意。 --------------------------------------------- /etc/init.d/xsession のしていること --------------------------------------------- X サーバー起動 /etc/X11/xinit/xinitrc 実行 /etc/X11/xinit/xinitrc は実際は /etc/X11/Xsession を呼んでいるにすぎない /etc/X11/Xsession は /etc/X11/Xsession.d/ 以下のスクリプトを呼んでいる --------------------------------------------- /etc/X11/Xsession.d/* のしていること --------------------------------------------- X サーバーが立ち上がり、ウィンドウマネージャーを立ち上げたりするのは、実際は /etc/X11/Xsession.d/ 以下のスクリプト。 30xfree86-common_xresources ここで ~/.Xresource を読んでいる 31xinput ここで FEP をたち上げ。 45xsession もし起動時に myconf= を使わずに knoppix を立ち上げた場合、/etc/skel/ や /usr/share/knoppix/profile/ 以下のファイルを、~knoppix/ にコピーする。 ウィンドウマネージャー起動。 startkde スクリプトがコピーされて変更されて、この 45xsession ファイルに埋め込まれている。 もし標準の knoppix の Xresource を変更したい場合は、 /etc/X11/Xresources/ 以下に、リソースファイルを書いておけばよい。 もし window manager を増やしたければ、パッケージを入れて、45xsession を変更すればよい。 もし 標準の Input Method を変えたければ、/etc/init.d/knoppix-autoconfig と、/etc/X11/Xresources/ と 31xinput を変えればよい。