初版 2005/05/22
改定 2005/05/30
改定 2005/06/22
h_k_sim
KNOPPIX 3.8.1にkernel2.4ブートオプションを追加して再構成(カスタマイズ)する方法についての実験的試み。
“KNOPPIX”を: |
レスキュー用として利用できる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以降。
今回はオリジナルとして産総研による日本語版knoppix_v3.8.1_20050408-20050415.isoを使用した。
まずはじめに、適当な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
などのようにデバイスファイルを指定する。
ここまでで/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ファイルシステムをマウント・アンマウントしないと、ほとんどのコマンドが正常に動作しないことに注意。
肝心のカスタマイズは、
まず/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など。
ここで本題の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モジュールの構成を誤認しないようにするため。)
ここまでで/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に焼く。
以上でカスタマイズされたKNOPPIXが出来上がったわけだが、ブートオプションが増えたため、ブートできないマシンはかなり少なくなったと思われる。
レスキュー用として実用上どうかというと、KNOPPIX3.7でも十分なのだが、ネットワーク越しに作業する場合、KNOPPIX3.7は日本語のファイルを扱うためにsambaを修正する必要があることと比較して、KNOPPIX3.8.1+kernel24は起動すればそのままWindowsのWorkgroupが見えて日本語のファイルが扱えるところが手軽でよい。
今回のカスタマイズはあくまで実験的(ある意味邪道な)もので、まだまだ詰めるべき部分は残されているが、 何より、実際に作業してみることに意義があった。