Chinaunix首页 | 论坛 | 博客
  • 博客访问: 442784
  • 博文数量: 127
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 810
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-02 20:51
文章分类

全部博文(127)

文章存档

2018年(6)

2015年(18)

2014年(33)

2013年(70)

分类: LINUX

2015-01-22 18:30:30

这段时间一直在弄发行版的事,网上的资料很多,起初感觉很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.imag –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,需要这个命令。
还好被我找到官方的解决方案:

# 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


修改完成后重新生成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
比我写得专业很多。
阅读(1184) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~