|
|

楼主 |
发表于 2007-5-29 20:50:14
|
显示全部楼层
最后关键阶段是导出系统
livecd目录结构不同于系统结构,类似于软盘启动盘时的结构,每一张盘的容量非常有限,一张盘只能放启动内核,对应是boot目录,另一张盘放些工具,对应就是tools目录了,现在的livecd最起码要把/boot目录放在根目录下,然后看需要设置一个放模块目录,如果硬件完全编译到内核或者像我一样,自己内核,启动没有问题的,可以不用设模块目录.
退出chroot
#exit &&
#umount sys proc dev usr/portage usr/portage/distfiles &&
#env-update &&
#source /etc/profile
建立livecd的根目录:
#cd /opt/livecd
#mkdir /opt/livecd/target
在根目录下建立boot镜像,你也可以用cp命令,但要非常小心保留原系统的完整性,如权限,GID,UID,需要用一些参数,这里使用建立镜像命令,一来速度快,能保留原系统的完整,二是可以方便调试.大家可要看看rsync命令的解释,我也是第一次用,算是大开眼界,哈哈~~~
#rsync -a --delete --progress /opt/livecd/source/boot /opt/livecd/target/
建立根分区镜像,exclude参数是不包含的目录,有目的选则镜像什么内容,很明显是不镜像portage,包数据库在livecd里没什么用.其他的可以适当增减.
#mkdir -p /opt/livecd/target/files/source
#rsync -a --delete --progress --exclude "var/tmp/*" --exclude "var/cache/*" --exclude "*.h" --exclude "usr/portage" --exclude "etc/portage" --exclude "usr/share/doc" --exclude "usr/src" /opt/livecd/source/ /opt/livecd/target/files/source/
压缩系统的根区,大多数livecd都有压缩,压缩的文件系统是squashfs,编译内核时一定要选上此.
cd /opt/livecd/target/files
mksquashfs source/ /opt/livecd/target/livecd.squashfs
建一个空文件,这个文件必须是在livecd 根, 因为init 剧本在initramfs 使用这个文件辨认,cd 登上或不是.
#touch /opt/livecd/target/livecd
现在根分区的压缩文件和boot都出来了,理论上target/files可以删除,劝你还是要保留它,除非你是一次调节到位,否则不要立即删除,删除命令
#rm -rf /opt/livecd/target/files
建立可启动光盘文件
#cd /opt/livecd/
mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -iso-level 4 -hide-rr-moved -c boot.catalog -o /opt/livecd/livecd.iso -x files /opt/livecd/target/
-R :使用Rock Ridge Extensions
-b boot/grub/stage2_eltorito :启动器
-x files :不包含files目录
这时iso文件出来了,打开Vmware,设置光驱由iso文件启动并指向iso文件路径,看看能否启动,看见bash符号,恭喜你了,livecd诞生了.
看livecd目录结构:
#mount -o loop xxx.iso /mnt/目录
#cd /mnt/目录
#ls
继续扩展livecd内容,重新进入chroot环境
#cd /opt/livecd/source
#mount -o bind /proc proc
#mount -o bind /sys sys
#mount -o bind /dev dev
#mount --bind /usr/portage usr/portage
#mount -o bind /usr/portage/distfiles usr/portage/distfiles
#chroot . env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login
#env-update
#source /etc/profile
继续你的emerge 旅程
完了以后记得rsync,把所修改的内容镜像,再mkisofs
#rsync -a --delete --progress /opt/livecd/source/boot /opt/livecd/target/
#rsync -a --delete --progress --exclude "var/tmp/*" --exclude "var/cache/*" --exclude "*.h" --exclude "usr/portage" --exclude "etc/portage" --exclude "usr/share/doc" --exclude "usr/src" /opt/livecd/source/ /opt/livecd/target/files/source/
好了,livecd能做了,下一步就看大家如何去完善
加入gensplash支持,开机动画,看起来更专业
如果你内存有1G,livecd体积不大,让它完全在内存里跑,这时可以把livecd拿出来是没问题的
设定自动挂载软盘,把设置保留在软盘上,下次可用
制作USB盘的live系统
等等
以上这些都可以去玩玩,我是很懒的,还是先前那个iso放在一边,没有进一步去研究完善,哈哈~~~~~ |
|