1、挂载光盘文件mount -o loop /data/soft/livecd/livecd.iso /mnt/cdrom,/mnt/cdrom下现在就是livecd光盘的完整内容。另外建立一个目录/mnt/mycd把光盘里的文件全部复制过来用于制作光盘。
2、挂载image.squashfs:mount -o loop /mnt/cdrom/image.squashfs /mnt/gentoo(需要你的内核支持squashfs文件系统),全部复制到另一个目录进行hack吧,复制的时候记得加上-pr参数。这个是重头戏,进去好好研究研究,放手去修改配置添加东西吧,你甚至可以把你的开发环境、portage等等全搞进去。搞好了直接mksquashfs * /mnt/mycd/image.squashfs就可以了,不过在mksquashfs之前你得把原文件删掉。
3、复制isolinux/gentoo.igz到你另外一个目录,mv gentoo.igz gentoo.gz && gunzip gentoo.gz,然后正确地解压gentoo文件,得到一个简单的临时用根文件系统,下面这个脚本可以很方便地进行解压,用下面的脚本./unigz.sh gentoo就生成了gentoo.dir目录,执行脚本之前确认一下你的系统里有没有安装File-Slurp包:
#!/usr/bin/perl -w
#
use strict;
use File::Slurp qw(slurp);
my $ifile = slurp($ARGV[0], binmode=> ':raw');
my $newfile;
my $i=1;
my @newfiles = split(/TRAILER!!!/,$ifile);
`mkdir $ARGV[0].dir`;
foreach $newfile (@newfiles)
{
open F, "> ./$ARGV[0].dir/$i";
print F $newfile;
print F "TRAILER!!!\0";
close F;
`cd $ARGV[0].dir; cpio -i -H newc < $i; rm $i; cd ..`;
$i++;
}
进入gentoo.dir目录主要看看init和etc下两个脚本文件initrd.defaults和initrd.scripts,加上自己想要执行的东西即可,当然如果你想大刀阔斧地hack也可以,完了之后在gentoo.dir目录下执行find . -print | cpio --quiet -o -H newc | gzip -9 > ../gentoo.igz。
4、一切就绪之后制作iso文件:
cd /mnt/mycd
mkisofs -v -R -J -P "cd" -p "cd" -V "xxx_installer" -A "xxx-install-cd" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /data/download/etc.iso .
没有评论:
发表评论