LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 944|回复: 5

如何将KNOPPIX4.02剪裁至100M以下

[复制链接]
发表于 2006-3-29 20:36:34 | 显示全部楼层 |阅读模式
什么是 Knoppix
KNOPPIX 是一套光盘启动的 GNU/Linux 系统,功能包括:自动硬体监测、支持常见的显卡、声卡、SCSI和USB设备,以及其它外设。KNOPPIX 可用于 Linux 演示、光盘教学、系统急救,经过适当改造,还可以用于商业软件的产品演示。KNOPPIX采用了特殊的解压缩技术,不需要硬盘安装,一张CD,就容纳了2GB的可执行程序,供用户自由使用。

获得Knoppix
1.http://mirror.switch.ch/ftp/mirr ... D-2005-09-23-EN.iso
2.http://mirror.pacific.net.au/lin ... D-2005-09-23-EN.iso
3.http://ftp.ale.org/mirrors/knopp ... D-2005-09-23-EN.iso
并保存在/home/$USER/downloads/下:
查看目录结构:
挂载光盘:
#mount -o loop /home/$USER/downloads/KNOPPIX_V4.0.2CD-2005-09-23-EN2.iso /media/cdrom0
用以下命令查看光盘上的文件:
$ls -R /media/cdrom0/
/:
autorun.bat  autorun.inf  autorun.pif  boot  cdrom.ico  index.html  KNOPPIX

/boot:
isolinux

/boot/isolinux此目录下包含启动文件)
boot.cat  f2  german.kbd    isolinux.cfg  logo.16  minirt.gz
boot.msg  f3  isolinux.bin  linux         memtest

/KNOPPIX此目录下的KNOPPIX文件(690M)就是整个linux系统,我们的改造就拿它开刀)
background.jpg  index_it.html           KNOPPIX-FAQ-ES.txt  linux-ntfs
images          index_jp.html           KNOPPIX-FAQ-FR.txt  md5sums
index_dk.html   index_nl.html           KNOPPIX-FAQ-IT.txt  MkImage-ct.exe
index_en.html   index_ru.html           KNOPPIX-FAQ-NL.txt  mkimg-de.exe
index_es.html   KNOPPIX                 KNOPPIX-FAQ.txt     mkimg-src.zip
index_fr.html   knoppix-cheatcodes.txt  knoppix-version     README_Security.txt
index.html      KNOPPIX-FAQ-EN.txt      LICENSE.txt

打包前删除:
/var/cache/apt/pkgcache.bin
/var/cache/apt/srcpkgcache.bin

/KNOPPIX/images:
knoppix-24-1.jpg  knoppix-header.gif  knoppix-header.png

/KNOPPIX/linux-ntfs:
FOR-DEVELOPERS.txt  fuse.tar.bz2  linux-ntfs-knoppix_1.12.0-WIP-2.tar.gz

开始改造:
一、准备工作:
光盘下的/KNOPPIX/KNOPPIX就是整个linux系统,我们下面把它里面的内容拷出来。
1.首先准备一个空闲的ext2分区(至少2.5G)/dev/hda?,如我的是/dev/hda12。
2.用qemu启动knoppix,并将/KNOPPIX下的所有资料拷贝到这个分区。
#qemu -hda /dev/hda -cdrom /home/$USER/downloads/KNOPPIX_V4.0.2CD-2005-09-23-EN2.iso -boot d
(以下进入虚拟机操作)
#sudo mount /dev/hda12 /mnt/hda12
#sudo cp -Rp /KNOPPIX/* /mnt/hda12
3.复制/etc/fstab文件到/mnt/hda12/中,并修改挂载点"/":
#sudo cp -Rp /etc/fstab /mnt/hda12/etc/fstab
#sudo vi /mnt/hda12/fstab
#sudo cat /mnt/hda12/etc/fstab
/dev/hda12      /                  auto         defaults                       1/proc      /proc       proc   defaults            0 0
/sys       /sys        sysfs  noauto              0 0
/dev/pts   /dev/pts    devpts mode=0622           0 0
/dev/fd0   /mnt/auto/floppy auto   user,noauto,exec,umask=000    0 0
/dev/cdrom /mnt/auto/cdrom  auto   user,noauto,exec,ro 0 0
4.为用户knoppix建立家目录:
mkdir /mnt/hda12/home/knoppix
chown knoppix:knoppix /mnt/hda12/home/knoppix
5.退出虚拟机,并修改本机的grub,加入以下内容:
title           Knoppix hda12-4.0.2
kernel          (hd0,11)/boot/vmlinuz root=/dev/hda12 lang=us apm=power-off vga=791 nomce quiet
boot
6.实验环境已经建立起来了,以后root可以用以下命令启动knoppix随时进行测试:
#qemu -hda /dev/hda
 楼主| 发表于 2006-3-29 20:38:59 | 显示全部楼层

续1

二、开始剪裁、定制KNOPPIX

打包前删除:
/var/cache/apt/pkgcache.bin
/var/cache/apt/srcpkgcache.bin
正式开始工作之前,我们还要做些准备工作:

先用chroot进入/mnt/hda12目录,并挂载proc:
#chroot /mnt/hda12
root@not a tty[/]# mount -t proc /proc /proc
保证网络畅通:
root@not a tty[/]# vi /mnt/hda12/etc/resolv.conf
search
nameserver 192.168.1.1
nameserver 61.134.1.4
添加本地源:
root@not a tty[/]# vi /etc/apt/sources.list
修改相应的http://ftp.de.debian.org为http://debian.cn99.com/debian/
更新包:
root@not a tty[/]# apt-get update
查看包:
root@not a tty[/]# dpkg -l >packate.txt
root@not a tty[/]# dpkg -l |wc -l
1255

正式开始剪裁:
1)有用的几条命令:/mnt/hda12/home/knoppix
a删除掉没用的孤立库程序(每删除一些包后可以先用deborphan看看有无孤立包,然后再执行以下操作):
deborphan | xargs apt-get --assume-yes remove

b按包大小排序(后面我们所能看到的是最大的):
dpkg-query -W --showformat='${Installed-Size} ${Package} ${Status}\n' | grep -v deinstall | sort -n | awk '{print $1" "$2}'
c查看未完全删除的包并删除:
COLUMNS=200 dpkg -l |grep ^rc |awk '{print $2} ' | xargs dpkg -P
d基本命令
apt-get --purge remove {package_name}
apt-cache show {package_name}
apt-cache depends {package_name}
apt-cache rdepends {package_name}
dpkg -L {package_name}
dpkg -S {file_in_package}

2)注意事项:
a如果打算连kde也删除的话,最好先把/mnt/hda12/etc/rcS.d/S00knoppix-autoconfig文件中做以下修改:
改[ -n "$DESKTOP" ] || DESKTOP="kde"
为[ -n "$DESKTOP" ] || DESKTOP="twm"

b删除j2re时,请注释以下行(/mnt/hda12/etc/X11/Xsession.d/45xsession):
#export JAVA_HOME="$(ls -1d /usr/lib/j2se/*/jre | tail -1)"
#export PATH="${JAVA_HOME}/bin{PATH}"
并去掉符号连接:
#unlink /usr/bin/java
c从chroot环境退出前请执行一次umount /proc
d做好测试和备份
我的测试命令:
#qemu -hda /dev/hda 测试系统
我的备份命令:
#tar -zcpf KNOPPIX_`date +%Y%m%d-%H%M%S`.tar.gz /mnt/hda12/*
e意外情况:
Q:如果测试时出现I/O错误,怎么办?
A:请退出测试,并umount /dev/hda12分区,开始检查文件系统
#fsck -C -a /dev/hda12
Q:我上次备份时大小为402M,怎么我删除了一些东西并备份后竟成了480M或者更大?
A:这有两种情况,一种是你最后一次备份前进行过测试,而正是由于这次测试,/mnt/hda12/home/knoppix系统把机器上的所有分区给挂上去了,但不一定会自动卸载,所以请检查一下/mnt/hda12/mnt/下的hda?目录,它们是可以被安全地删除的;另一种情况是你可能检查过分区,那么去看一下/mnt/hda12/lost+found目录,如果有东西的话也可以安全地删除。呵呵,现在再重新备份一下看看。
f具体删除过程我已经记不起来了,你还是自己发挥吧,祝你好运!不过在本文后面我会提供两个包列表供参考(一个是未删之前的完整包列表,一个是我最后一次删除之后的包列表)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-29 20:43:39 | 显示全部楼层

续2

三、打包、制作iso文件
打包前注意事项:
1.确认你从chroot环境退出前做了以下工作:
deborphan | xargs apt-get --assume-yes remove
COLUMNS=200 dpkg -l |grep ^rc |awk '{print $2} ' | xargs dpkg -P
apt-get autoclean
apt-get clean
umount /proc
2.退出后测试一次,并使用sudo reboot或sudo halt退出qemu.
3.备份并删除/mnt/hda12/home/knoppix目录。
4.有两个大文件经测试会自动生成,如果你对文件的最终大小比较介意的话,可以把它们也删掉:
rm -rf /mnt/hda12/var/cache/apt/pkgcache.bin
rm -rf /mnt/hda12/var/cache/apt/srcpkgcache.bin
5.将/media/cdrom0/下的文件复制到/mnt/hda11/new中:
mkdir /mnt/hda11/new -p
cp -Rp /media/cdrom0/* /mnt/hda11/new/
打包:
说明:打包前请删除以下目录
rm -rf /mnt/hda12/home/knoppix/
rm -rf /mnt/hda12/.rr_moved
先打包KNOPPIX文件:
mkisofs -R -U -V "KNOPPIX.net filesystem" -publisher "KNOPPIX www.knoppix.net" \
     -hide-rr-moved -cache-inodes -no-bak -pad /mnt/hda12/ \
  | nice -5 /usr/bin/create_compressed_fs - 65536 > /mnt/hda11/new/KNOPPIX/KNOPPIX
制作md5文件:
cd /mnt/hda11/new/
find -type f -not -name md5sums -not -name boot.cat -not -name isolinux.bin \
   -exec md5sum '{}' \; > KNOPPIX/md5sums
制作iso文件:
cd /mnt/hda11/
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/hda11/knoppix_custom.iso /mnt/hda11/new/
OK,去你的/mnt/hda11/下看一看大小,并测试一下:
qemu -cdrom /mnt/hda11/knoppix_custom.iso -boot d

祝你成功!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-29 20:58:53 | 显示全部楼层

续3----附包列表

附上原始包列表及最后一次删除之后的包列表,供大家参考之用。
原始包列表:package-first.txt
剪裁包列表:package-last.txt
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-29 21:00:26 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2006-3-29 23:32:38 | 显示全部楼层
似曾相识的,好像在哪里看过?:ask
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表