Custom your Knoppix

預備工作 – 安裝 cloop
=====================
下載點: http://packages.qa.debian.org/c/cloop.html
裡面提供了 create_compressed_fs, extract_compressed_fs 這兩個工具,
以及 cloop.o 這個 driver(或叫作module)
在 RedHat 下編譯時,請先把 compressed_loop.c 裡面對 REDHAT_KERNEL 的註解拿掉.
編譯以後,再建立 mknod /dev/cloop b 240 0
參考資料
========
基本上我的步驟都是參考這些文章:
http://debian.linux.org.tw/pub/3Anoppix/howto.txt
http://penguin.im.cyut.edu.tw/~s9054494/document/mkcd/mkcd_001.php
http://www.cyut.edu.tw/%7eckhung/b/sa/knoppix.shtml
ftp://cle.linux.org.tw/pub/KNOPPIX/bv1al/knoppixDIY-2002-12-15.html
http://www.xfocus.net/releases/200306/a544.html
http://www.knoppix.net/docs/index.php/KnoppixCustomKernelHowto
我的步驟
========
1.確定有 7G 以上的空間
2.下載 cloop 並編譯,請參考上面.
3.把下載回來的 Knoppix ISO 檔案掛載起來 (或是我做的 iso)
mount -t iso9660 -o loop your_knoppix.iso /mnt/cdrom
3.解開 KNOPPIX 這個檔案為 .iso
extract_compressed_fs /mnt/cdrom/KNOPPIX/KNOPPIX > /space/knoppix.iso
4.把 3 解開的檔案掛載起來
mkdir /mnt/knoppix.sys
mount -t iso9660 -o loop /space/knoppix.iso /mnt/knoppix.sys
5.建立所需目錄並把剛剛掛載起來的 iso 內容複製過來
mkdir -p /space/knoppix/{source,master}/KNOPPIX
cp -Rp /mnt/knoppix.sys/* /space/knoppix/source/KNOPPIX
cp -Rp /mnt/cdrom/KNOPPIX/* /space/knoppix/master/KNOPPIX
cp /mnt/cdrom/KNOPPIX/{autorun.inf,autorun.bat,cdrom.ico,index.html} /space/knoppix/master # 這些檔案可以自己改!!
6.umount 兩個 iso 檔
umount /mnt/cdrom
umount /mnt/knoppix.sys
7.進行修改
chroot /space/knoppix/source/KNOPPIX
mount -t proc /proc /proc
export LC_ALL=”en_US”
export LANG=”en_US”
如果需要上網的話,修正一下 /etc/resolv.conf
加上 nameserver 172.16.0.12 ( 或 168.95.1.1 都可以)
接著就可以利用 debian package 系統進行修改了
dpkg -l –> 列出所有套件
apt-get install your_package_name –> 安裝某套件
apt-get remove your_package_name –> 移除某套件
dpkg –purge your_package_name –> 清除該套件的設定…等等
8.修改完成
apt-get clean
updatedb
umount /proc
exit
9.修改開機設定
cd /space/knoppix/master/KNOPPIX
mount -o loop boot.img /mnt/floppy
cd /mnt/floppy
修改 syslinux.cfg, f2, boot.msg 這幾個檔案即可
10.燒錄
mkisofs -R -l -V “KNOPPIX” -hide-rr-moved -v /space/knoppix/source/KNOPPIX | create_compressed_fs – 65536 > /space/knoppix/master/KNOPPIX/KNOPPIX
cd /space/knoppix/master
mkisofs -l -r -J -V “KNOPPIX” -hide-rr-moved -v -b KNOPPIX/boot.img -c KNOPPIX.cat -o /space/knoppix/my_iso.iso /space/knoppix/master/
小秘訣:如果已經在硬碟裡面作過一次了,那麼只要不把檔案殺掉,就可以直接從 7 那個步驟開始.
更換 Kernel
===========
1.請參考上面步驟,一直進行到 7 這個步驟完 (若之前有做過一次,就直接跳到 7,把 7 作完即可)
2.將新 Kernel 的tarball複製到 /usr/src 下,並解開
3.進入新 kernel 目錄,將 /usr/src/linux/.config (原kernel路徑)複製過來
4.make oldconfig
5.patch -p1 < ../knoppix-kernel.patch
6.make dep bzImage modules modules_install
7.刪除原 kernel(問號部分表示舊kernel版本)
rm -rf /usr/src/linux-??????
rm -rf /lib/modules/linux-??????
rm -rf /boot/*
rm -f /vmlinuz
8.複製新 kernel (問號部分表示新kernel版本)
cp System.map /boot/System.map-??????
cp arch/i386/boot/bzImage /boot/vmlinuz-??????
cd /boot
ln -s System.map-?????? System.map
ln -s vmlinuz-?????? vmlinuz
cd /
ln -s boot/vmlinuz-?????? vmlinuz
9.重新編譯 cloop.o 這個模組
同樣參考上面的位址下載,並編譯,安裝
10.修改 boot.img
先利用另外一個 console 將 /space/knoppix/master/KNOPPIX/boot.img 複製到 /space/knoppix/source/KNOPPIX/var/tmp
再切回原來已經 chroot 的 console,開始動手
cd /var/tmp
mkdir boot mroot
mount -t vfat -o loop boot.img boot
cp boot/miniroot.gz .
gzip -d miniroot.gz
mount -t ext2 -o loop miniroot mroot
將剛剛編譯好的 cloop.o 複製到 mroot/modules/ 下 (選擇覆蓋),然後再包回去
umount mroot
gzip -9 miniroot
接著把 miniroot.gz 以及新 kernel 複製到 boot 目錄
cp miniroot.gz boot
cp /boot/vmlinuz-?????? boot/vmlinuz
umount boot
再利用另外一個 console, 把剛剛製作好的 boot.img 複製回去
cp /space/knoppix/source/KNOPPIX/var/tmp/boot.img /space/knoppix/master/KNOPPIX/boot.img
把這些殘骸清除掉
rm -rf boot mroot miniroot.gz boot.img
11.跳回上面的 8 繼續做(非修改kernel, 而是"我的步驟 – 8" )
12.大功告成
加上開機 script
===============
跟一般 linux 可以說是非常類似
不過這裡有個更好的機制
只要把 script 放在 /etc/rc.boot 中,開機時就會執行 /etc/rc.boot 目錄內所有的 script