KNOPPIXのカスタマイズ


初版 2005/05/22

改定 2005/05/30

改定 2005/06/22

h_k_sim

KNOPPIX 3.8.1にkernel2.4ブートオプションを追加して再構成(カスタマイズ)する方法についての実験的試み。


“KNOPPIX”を:

目次

1 概要

2 KNOPPIXの再構成

2.1 準備

2.2 カスタマイズ

2.2.1 パッケージの追加・削除

2.2.2 kernel2.4の導入

2.3 CDイメージの作成

3 まとめ


1 概要

レスキュー用として利用できるCDブートの日本語Windows network環境を構築することを目指す。 そこで、今回のカスタマイズは、

1. 自分用にKNOPPIXを再構成する

2. kernel2.4ブートオプションを追加する

というものである。これは、

1. KNOPPIX 3.7はsambaの日本語が今ひとつ。

2. KNOPPIX 3.8.1のsambaは日本語もWorkgroupの認識も良好。

3. しかし、KNOPPIX 3.8.1のkernel2.6.11はハードの構成によりブートが困難。

4. KNOPPIX 3.7のkernel2.6.8もハードの構成によりブートが困難。

5. ということで、KNOPPIX3.8.1をkernel2.4でブートできるようにブートオプションを追加して再構成したい。

ということによる。

なおKNOPPIXのバージョン3.4を境にブートローダがsyslinuxからisolinuxに変わった為、カスタマイズの手順はバージョン3.3以前と3.4以降で異なる部分がある。このドキュメントの内容が応用できるのは3.4以降。


2 KNOPPIXの再構成

今回はオリジナルとして産総研による日本語版knoppix_v3.8.1_20050408-20050415.isoを使用した。

 

2.1 準備

まずはじめに、適当なPCでカスタマイズ元のKNOPPIXをブートする。このとき作業用HDDに4GB程度の空き容量が必要。今回、当方の環境ではkernel2.6で正常にブートできないので、bootオプションにfailsafeを指定した。

boot: failsafe

起動後、コンソールを開き、suする。(オプションの「-」を忘れないように注意。)

# su -

パスワードは聞かれない。rootになったら、まずHDDをマウントする。

# mkdir -p /mnt/hdd

# mount /dev/hdb1 /mnt/hdd

上の例はATAPIの増設HDDを使っているが、実際のデバイスがsda1などでも、以下の例をそのまま使用できるように、あえて/mnt/hddにマウントしてしまうほうが便利だろう。

必要ならば/mnt/hddの中身を消した後、KNOPPIX3.8.1のソースをコピーする。

# mkdir -p /mnt/hdd/knx/mst/KNOPPIX

# mkdir -p /mnt/hdd/knx/src/KNOPPIX

# cp -Rp /KNOPPIX/* /mnt/hdd/knx/src/KNOPPIX

# cd /cdrom

# find . -not -name KNOPPIX -exec cp -v -p --parents {} /mnt/hdd/knx/mst/ \;

特にまっさらな区画を用意する必要はない。ext2, ext3などのlinuxを普通にインストールできる区画に十分な空き容量があるのであれば、それを流用できる。ただ混乱を避けるために、knx/のようにディレクトリを分けるなどしたほうがよいだろう。windowsのNTFSやFATはおそらく不可。ext2など、linuxのデバイスファイルなどが問題なく扱えるファイルシステムのほうがよい。

KNOPPIX3.8.1のソースのコピーが終了したら、KNOPPIX3.8.1を終了させ、KNOPPIX3.7で起動しなおす。(failsafeでブートしているのでなければ再起動の必要は無い。また、内容が十分理解できていれば、別にKNOPPIXでなくてもlinuxがブートしてさえいれば作業は問題なく可能。 特に今回は2.2.2の作業のためにKNOPPIX3.7で起動する。)起動後、コンソールを開き、suする。

# su -

rootになったら、まずifconfigでネットワークが設定できていることを確認する。

# ifconfig -a

もし設定できていないようであれば、DHCPなら

# pump -h your-host-name

とし、静的アドレスならifconfigとrouteなどで設定する。

空きメモリが1GB以下の場合、スワップファイルを設定する必要がある。

# cd /mnt/hdd/knx

# dd if=/dev/zero of=swapfile bs=1M count=750

# mkswap swapfile

# swapon swapfile

あるいはすでにスワップ区画があるのなら、

# swapon /dev/hdb2

などのようにデバイスファイルを指定する。

 

2.2 カスタマイズ

ここまでで/mnt/hdd/source/KNOPPIX以下にオリジナルのファイルがコピーされているので、必要があればここでchrootして パッケージの変更などの作業を行う。

# chroot /mnt/hdd/knx/source/KNOPPIX

# mount -t proc proc /proc

# vi /etc/resolv.conf

#

# /* カスタマイズ作業 */

#

# apt-get clean

# umount /proc

# exit

chrootからexitとの間でprocファイルシステムをマウント・アンマウントしないと、ほとんどのコマンドが正常に動作しないことに注意。

 

2.2.1 パッケージの追加・削除

肝心のカスタマイズは、

まず/etc/apt/sources.listを適宜編集し、

必要であればhttp/ftpプロキシも設定してから、

apt-getを実行する。

例えばsources.listは

deb http://ftp.jp.debian.org/debian testing main contrib non-free

deb http://ftp.jp.debian.org/debian-non-US testing/non-US main contrib non-free

deb http://ftp.jp.debian.org/debian-jp testing-jp main contrib non-free

とし、プロキシを設定する必要があるなら

# export http_proxy=http://proxy.server.address:port/

# export ftp_proxy=http://proxy.server.address:port/

とする。 あとは通常のdebianの管理と同じで問題ない。ただし、前にknoppixとついたり、hold状態になっているパッケージには手を出さないほうがよい。 また、パッケージを追加するばかりでは圧縮後にCDサイズを超えるのは明らかなので、不要なパッケージを削除していく必要がある。用途にもよるが、

apache、bind9、squidなどのサーバ類

libqt3-mt-devなどのヘッダ・スタティックライブラリ類

ゲーム類

を消すのが無難だろう。このときにパッケージのupgradeをしないことが重要。sources.listを空にした状態でパッケージの削除作業を行い、その後必要最低限のインストールを行う。

このほかにも削除可能なものはあるが、開発ライブラリほど容量をとるものはない。このほかで大きいものはgimp、 mozilla、 openofficeなど。

 

2.2.2 Kernel2.4.27の導入

ここで本題のkernel2.4.27の追加であるが、今回はKNOPPIX3.7のものを流用する。

# cp -Rp /KNOPPIX/lib/modules/2.4.27 /mnt/hdd/knx/src/KNOPPIX/lib/modules

# cp /cdrom/boot/isolinux/linux24 /mnt/hdd/knx/mst/boot/isolinux

# cp /cdrom/boot/isolinux/minirt24.gz /mnt/hdd/knx/mst/boot/isolinux

として、kernel2.4.27のモジュール、kernel2.4.27本体、kernel2.4.27のミニルートを導入する。

ブートオプションを追加するために/mnt/hdd/knx/mst/boot/isolinux/isolinux.cfgを編集する。先頭の記述を元にラベル名、minirt24、linux24を差し替えた記述を追加する。

/*****isolinux.cfgの例。斜体が追加部分。*****/

DEFAULT linux

APPEND ramdisk_size=100000 init=/etc/init lang=ja apm=power-off vga=791 initrd=minirt.gz nomce quiet

BOOT_IMAGE=knoppix
TIMEOUT 300

 

PROMPT 1

DISPLAY boot.msg

F1 boot.msg

F2 f2

F3 f3

LABEL knoppix

KERNEL linux

APPEND ramdisk_size=100000 init=/etc/init lang=ja apm=power-off vga=791 initrd=minirt.gz nomce quiet

BOOT_IMAGE=knoppix

LABEL knoppix24

KERNEL linux24

APPEND ramdisk_size=100000 init=/etc/init lang=ja apm=power-off vga=791 initrd=minirt24.gz nomce quiet

BOOT_IMAGE=knoppix

LABEL expert

KERNEL linux

APPEND ramdisk_size=100000 init=/etc/init lang=ja apm=power-off vga=791 initrd=minirt.gz nomce

BOOT_IMAGE=expert

LABEL memtest

KERNEL memtest

APPEND initrd=

/*****以下省略*****/

また、ブートオプションを表示させるために/mnt/hdd/knx/mst/boot/isolinux/f2を編集する。上記のラベル名に合わせて表示させるオプションを追加する。f2はバイナリなので上書きモードで編集すると楽。 下は便宜的に80バイトで改行したテキスト。

17 12レトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトト

トトトトソウ 1a>>> 1e KNOPPIX V3.7 BOOT OPTIONS (Back to main with F1) 1a<<< 12 ウタトトトト

トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトル 171b

This Edition of Knoppix boots with standard Kernel 2.6. 17
1bThe following options can be used at the boot:-prompt. 17
70レトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトト

トソウknoppix [Options, see F3] Knoppix standard Kernel 2.6 ウウdebug [Options, see F

3] Knoppix with verbose kernel messages ウウexpert Interactive setup (expert mode)

 ウウknoppix24 [Options, see F3] Knoppix Kernel 2.4 ウウ ウウmemtest Memtest86, Memory

 checking program ウウ ウウfb1280x1024, fb1024x768 od. fb800x600 Framebuffer-Mode (f

or Notebooks) ウウ ウウfailsafe (Almost) no hardware-autodetection ウタトトトトトトトトトトトトトトト

トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトル 12
1bHit F3 for more options. A complete list of bootoptions can be found in the
file knoppix-cheatcodes.txt on your CD, inside the "KNOPPIX" directory.
1f

最後に/mnt/hdd/knx/src/KNOPPIX/lib/modules/2/4/27/modules.depのタイムスタンプを更新する。(modprobが2.4.27モジュールの構成を誤認しないようにするため。)

 

2.3 CDイメージの作成

ここまでで/mnt/hdd/knx/src/KNOPPIX以下にカスタマイズされた環境ができあがった。次にこれを元にして/mnt/hdd/knx/mst側にisoファイルを作成する。 まず、/mnt/hdd/knx/src/KNOPPIX/root以下にできた.bash_history等のファイルを削除する。

# cd /mnt/hdd/knx/src/KNOPPIX/root

# rm -f .bash_history .viminfo

mkisofsでisoイメージを作成する。(先頭に#が付いていないのは前の行の続き。長いので折り返して表示。)

# LANG=C mkisofs -R -U -V "KNOPPIX.net filesystem" -publisher "KNOPPIX www.knoppix.net" -hide-rr-moved -cache-inodes -no-bak -pad /mnt/hdd/knx/src/KNOPPIX | nice -5 /usr/bin/create_compressed_fs - 65536 > /mnt/hdd/knx/mst/KNOPPIX/KNOPPIX

# cd /mnt/hdd/knx/mst

# LANG=C mkisofs -pad -l -r -J -v -V "KNOPPIX" -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -hide-rr-moved -o /mnt/hdd/knx/knoppix381r.iso /mnt/hdd/knx/mst

以上で/mnt/hdd/knx/knoppix381r.isoができあがるので、CDに焼く。


3 まとめ

以上でカスタマイズされたKNOPPIXが出来上がったわけだが、ブートオプションが増えたため、ブートできないマシンはかなり少なくなったと思われる。

レスキュー用として実用上どうかというと、KNOPPIX3.7でも十分なのだが、ネットワーク越しに作業する場合、KNOPPIX3.7は日本語のファイルを扱うためにsambaを修正する必要があることと比較して、KNOPPIX3.8.1+kernel24は起動すればそのままWindowsのWorkgroupが見えて日本語のファイルが扱えるところが手軽でよい。

今回のカスタマイズはあくまで実験的(ある意味邪道な)もので、まだまだ詰めるべき部分は残されているが、 何より、実際に作業してみることに意義があった。