这段时间一直在弄发行版的事,网上的资料很多,起初感觉很happy,后来发觉不对劲了,全是基于CentOS5的,难得找了一个据说是基于CentOS6的,介绍里面的文件的时候,还是用CentOS5的结构,比如:stage2.img、boot.iso。解压CentOS6.2的iso镜像,我KAO,打死我也找不到这些东西啊。
老老实实自己去摸索了一把,把自己所得记录下来,供有需求的人少走弯路吧。
挂载、复制文件到本地,这个简单,但是要注意确保复制了隐藏文件,特别是.discinfo、.treeinfo,否则制作的iso镜像无法使用。
首先,CentOS5下面的stage2.img文档在CentOS6下面变成了images/install.img,解压过程同网上的资料一致:
# mount –o loop –t squashfs install.img /mnt/install
这个文件包含很多东西:
usr/lib/anaconda/iw 这个目录保存了图形安装过程中对Next/Prev按钮的响应函数,用Python写成。
usr/bin/anaconda这是用Python写的安装程序的主执行文件,配合上述的文件,你可以为所欲为。
usr/share/anaconda/pixmaps/这个目录下面是图形安装过程的图片,要修改背景的话直接更换图片即可
修改完成后重新生成install.img,也和网上说的一样:
# mksquashfs /tmp/install /tmp/install.img –all-root -noF
上述可修改整个安装过程
第二点,介绍下如何修改如图所示的文字。
这几个文字藏在isolinux/initrd.img中,同样是img结尾的,但是网上资料明确说了,这是cpio格式,不能简单用mount搞定,要执行以下代码:
# cd /disk/isolinux/
# cp initrd.img /tmp/initrd.img.gz
# cd /tmp
# gunzip initrd.img.gz
# mkdir initrd
# mv initrd.img initrd
# cd initrd
# cpio -ivmd < initrd.img
重点在“# gunzip initrd.img.gz”这个命令,我执行之后,跳出:gzip: initrd.img.gz: not in gzip format
很明显这个行不通,问题是,网上n多关于定制发行版的资料,明确指出,对付initrd.img,需要这个命令。
还好被我找到官方的解决方案:
http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html-single/6.2_Release_Notes/index.html
# xz -dc initrd.img | cpio -id
# find . | cpio -c -o | xz -9 --format=lzma > initrd.img
两行命令,一行解压,一行压缩。我为我逝去的3小时默哀。
解压后,直接找到.buildstamp文件,注意前面有个小点~~这是个隐藏文件。
# vi .buildstamp
201112091719.x86_64
InfocoreOS
0.0
http://www.infocore.cn/
修改完成后重新生成initrd.img,万一出现如下错误:
xz: Adjusted LZMA1 dictionary size from 64 MiB to 35 MiB to not exceed the memory usage limit of 398 MiB
将xz -9 改成xz -5,减小压缩强度等级。
完了关于repodata目录下的,如何获取rpm包,如何生成comps.xml,网上资料不少。
贴个制作镜像的命令:
#cd 到isolinux所在的目录
# mkisofs -o /opt/infocore-OS.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -joliet-long -R -J -v -T .^C
这个也和网上的一致。
最后大概介绍下CentOS6镜像下面的文件吧,帮大家理清思路。
images
|
|__ pxeboot PXE的,没去理会
| |__ initrd.img 文件系统
| |__ vmlinuz linux内核
|
|__ efiboot.img
|__ efidisk.img 这两个efi开头的,据说是支持BIOS的下一代产品:EFI,具体百度吧。
|__ install.img 这个就是mount挂上后可编辑的,用于安装过程
isolinux
|
|__ vesamenu.c32
|__ boot.cat 开机文件名称,执行mkisofs的时候生成
|__ boot.msg
|__ grub.conf
|__ initrd.img 内存虚拟文件系统,用xz解压缩
|__ vmlinuz linux内核文件
|__ isolinux.bin 开机镜像文件
|__ isolinux.cfg 与isolinux.bin组成引导工具
|__ memset
|__ splash.jpg 开机引导界面的背景图片
EFI 这个目录估计也和EFI有关,没去关心。
TRANS.TBL 执行mkisofs -T参数的时候生成
我知道的,差不多都交待清楚了,接下来研究anaconda代码,实现真正为所欲为~~
=================================来自第二天的补充==============================
发现两篇博文:
http://blog.csdn.net/woods2001/article/details/7297195
http://blog.csdn.net/woods2001/article/details/7297197
比我写得专业很多。
老老实实自己去摸索了一把,把自己所得记录下来,供有需求的人少走弯路吧。
挂载、复制文件到本地,这个简单,但是要注意确保复制了隐藏文件,特别是.discinfo、.treeinfo,否则制作的iso镜像无法使用。
首先,CentOS5下面的stage2.img文档在CentOS6下面变成了images/install.img,解压过程同网上的资料一致:
# mount –o loop –t squashfs install.img /mnt/install
这个文件包含很多东西:
usr/lib/anaconda/iw 这个目录保存了图形安装过程中对Next/Prev按钮的响应函数,用Python写成。
usr/bin/anaconda这是用Python写的安装程序的主执行文件,配合上述的文件,你可以为所欲为。
usr/share/anaconda/pixmaps/这个目录下面是图形安装过程的图片,要修改背景的话直接更换图片即可
修改完成后重新生成install.img,也和网上说的一样:
# mksquashfs /tmp/install /tmp/install.img –all-root -noF
上述可修改整个安装过程
第二点,介绍下如何修改如图所示的文字。
这几个文字藏在isolinux/initrd.img中,同样是img结尾的,但是网上资料明确说了,这是cpio格式,不能简单用mount搞定,要执行以下代码:
# cd /disk/isolinux/
# cp initrd.img /tmp/initrd.img.gz
# cd /tmp
# gunzip initrd.img.gz
# mkdir initrd
# mv initrd.img initrd
# cd initrd
# cpio -ivmd < initrd.img
重点在“# gunzip initrd.img.gz”这个命令,我执行之后,跳出:gzip: initrd.img.gz: not in gzip format
很明显这个行不通,问题是,网上n多关于定制发行版的资料,明确指出,对付initrd.img,需要这个命令。
还好被我找到官方的解决方案:
http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html-single/6.2_Release_Notes/index.html
# xz -dc initrd.img | cpio -id
# find . | cpio -c -o | xz -9 --format=lzma > initrd.img
两行命令,一行解压,一行压缩。我为我逝去的3小时默哀。
解压后,直接找到.buildstamp文件,注意前面有个小点~~这是个隐藏文件。
# vi .buildstamp
201112091719.x86_64
InfocoreOS
0.0
http://www.infocore.cn/
修改完成后重新生成initrd.img,万一出现如下错误:
xz: Adjusted LZMA1 dictionary size from 64 MiB to 35 MiB to not exceed the memory usage limit of 398 MiB
将xz -9 改成xz -5,减小压缩强度等级。
完了关于repodata目录下的,如何获取rpm包,如何生成comps.xml,网上资料不少。
贴个制作镜像的命令:
#cd 到isolinux所在的目录
# mkisofs -o /opt/infocore-OS.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -joliet-long -R -J -v -T .^C
这个也和网上的一致。
最后大概介绍下CentOS6镜像下面的文件吧,帮大家理清思路。
images
|
|__ pxeboot PXE的,没去理会
| |__ initrd.img 文件系统
| |__ vmlinuz linux内核
|
|__ efiboot.img
|__ efidisk.img 这两个efi开头的,据说是支持BIOS的下一代产品:EFI,具体百度吧。
|__ install.img 这个就是mount挂上后可编辑的,用于安装过程
isolinux
|
|__ vesamenu.c32
|__ boot.cat 开机文件名称,执行mkisofs的时候生成
|__ boot.msg
|__ grub.conf
|__ initrd.img 内存虚拟文件系统,用xz解压缩
|__ vmlinuz linux内核文件
|__ isolinux.bin 开机镜像文件
|__ isolinux.cfg 与isolinux.bin组成引导工具
|__ memset
|__ splash.jpg 开机引导界面的背景图片
EFI 这个目录估计也和EFI有关,没去关心。
TRANS.TBL 执行mkisofs -T参数的时候生成
我知道的,差不多都交待清楚了,接下来研究anaconda代码,实现真正为所欲为~~
=================================来自第二天的补充==============================
发现两篇博文:
http://blog.csdn.net/woods2001/article/details/7297195
http://blog.csdn.net/woods2001/article/details/7297197
比我写得专业很多。