CentOS6.5定制系统iso制作
时间:2015-01-14 19:20 来源:csdn 作者:乌托邦2号
一、安装软件
(1)系统需要安装的软件
#yum install anaconda repodata createrepo mkisofs system-config-kickstart
(2)系统centos6.5.iso和需要安装的rpm包,修改的图片。
二、创建定制系统
1、光盘文件
(1)isolinux 目录存放光盘启动时的安装界面信息
(2)images 目录包括了必要的启动映像文件
(3)Packages 目录存放安装软件包及信息
(4).discinfo 文件是安装价质的识别信息
(5)Repodata 目录存放rpm包依赖信息
若想重新制作光盘可以按照一下步骤(采用以前光盘的内容则可跳过一下内容)。
一、复制rpm包并生成repodata文件夹
#mount -o loop centos6.5 /mnt
#cp /mnt/Packages/*.rpm /home/taiyang/work/anaconda/createCD/Packages
#createrepo -v -g /mnt/repodata/*-comps.xml /home/taiyang/work/anaconda/createCD
二、创建启动映像
#yum install anaconda-runtime(或直接#yum install anaconda)
#/usr/lib/anaconda-runtime/buildinstall --version 1.0 --buildarch x86_64 --brand "Red Hat" --product "Red Hat" --release "Red Hat" --final --output /home/taiyang/work/anaconda/createCD/ /home/taiyang/work/anaconda/createCD
注:buildinstall制作过程,会产生很多错误和警告,暂时不清楚怎么解决,但会生成了完整的目录结构。
(buildinstall为shell脚本,可自己分析。因anaconda调整参数,该命令生成了部分没用的内容,可手动删除,同时自己也会调整参数防止生成多余的文件。)
三、生成iso文件
#mkisofs -o centos6.5Release.iso -V centos6.5Release -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T /home/taiyang/work/anaconda/createCD/
(#mkisofs -R -J -T -r -l -d -allow-multidot -allow-leading-dots -no-bak -o ./CentOS6.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot .其中参数的意思慢慢理解。)
四、植入md5验证码
#implantisomd5 centos6.5Release.iso
2、创建制作系统目录和复制文件
(1)建立放置制作系统的目录
#mkdir /home/source/
(2)复制除Packages(rpm包的文件夹)外的所有文件
#mount -t iso9660 -o loop centos6.5.iso /mnt(光盘使用mount /dev/sr0 /mnt)
#cd /mnt
#ls -A . | grep -v Packages | xargs -i cp -rp {} /home/source(也可以手动复制除Packages外的所有文件,但注意隐藏文件)
(或使用rsync -a --exclude=Packages /mnt/ /home/source ,rsync拷贝了隐藏文件)
#cp /root/anaconda-ks.cfg /root/install.log/home/source
(使用anaconda-ks.cfg不用配置ks文件,使用install.log可以查看本机已经安装的包列表可减少复制多余的包)
#mkdir /home/source/Packages
#awk '/安装/{print $2}' /home/source/install.log | xargs -i cp /mnt/Packages/{}.rpm /home/source/Packages/
(英文系统下:安装换为Installing)
(3)定制安装控制文件anaconda-ks.cfg
ks文件由系统安装所得anaconda-ks.cfg进行修改,也可以用system-config-kickstart工具制作而得。
注意此部分内容:
-
clearpart --all --initlabel
-
part /boot --fstype=ext4 --size=2000
-
part swap --size=5000
-
part / --fstype=ext4 --grow --size=200
-
-
reboot
-
repo --name="CentOS6.5" --baseurl=cdrom:sr0 --cost=100
增加安装完成后的启动脚本:
-
#增加安装后运行脚本
-
%post
-
#boot echo 定制系统启动信息
-
echo "CentOSRelease 6.5" > /etc/centos-release
-
sed -i 's/CentOS Linux release 6.0 (Final)/CentOSRelease 6.5/g' /etc/issue
-
sed -i 's/CentOS Linux release 6.0 (Final)/CentOSRelease 6.5/g' /etc/issue.net
-
sed -i 's/localhost.localdomain/CentOSRelease/g' /etc/sysconfig/network
-
sed -i 's/CentOS/CentOSRelease/g' /etc/rc.d/rc.sysinit
-
sed -i 's/rhgb/ /g' /boot/grub/grub.conf
-
#close cdrom 安装完成弹出光碟
-
eject
-
#reboot 一切执行完毕后重启
-
reboot -f
-
%end
(4)修改安装界面文本标题
可以去掉安装过程中的CentOS字样,在安装光盘里面有两个.buildstamp文件,一个位于stage2.img中,一个位于 initrd.img中,安装光盘运行时读取的是initrd.img中的.buildstamp文件,因此解压缩initrd.img文件。
解压修改:
#cd /home/source/isolinux
#mkdir tmp(也可以在其他目录创建临时文件)
#cd tmp/
#xz -dc /home/source/isolinux/initrd.img | cpio -id
#vim .buildstamp
-
201112091719.x86_64
-
centos6.5Release
-
1.0
-
http://wiki.centos.org/
压缩:
#find . | cpio -c -o | xz -9 --format=lzma > 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,减小压缩强度等级。也可以忽略不管,对结果没有影响。
#cp initrd.img/home/source/isolinux/initrd.img
#rm -rf /home/source/isolinux/tmp
-----------------------------------------------------------------
注:centos6.4前的不能按上述方法解压
#file initrd.img查看时gzip压缩
解压:
#cd /home/source/isolinux
#mkdir tmp
#cp initrd.img tmp/initrd.img.gz
#cd tmp
#gunzip initrd.img.gz
#cpio -ivmd < initrd.img
#vim .buildstamp
压缩:
#cd /home/source/isolinux/tmp
#rm initrd.img
#find . | cpio -c -o > initrd.img
#gzip initrd.img
#mv initrd.img.gz /home/source/isolinux/initrd.img
#rm -rf /home/source/isolinux/tmp
-----------------------------------------------------------------
(5)修改安装光盘背景图片
1、修改引导显示画面
grub背景图片在/home/source/isolinux/splash.jpg,替换文件即可。
修改界面上显示文件的配置文件:
#vim /home/source/isolinux/isolinux.cfg
-
default vesamenu.c32
-
#prompt 1
-
timeout 600
-
-
display boot.msg
-
-
menu background splash.jpg
-
menu title Welcome to CentOS 6.<span style="font-family:Arial;">5</span>!
-
menu color border 0 #ffffffff #00000000
-
menu color sel 7 #ffffffff #ff000000
-
menu color title 0 #ffffffff #00000000
-
menu color tabmsg 0 #ffffffff #00000000
-
menu color unsel 0 #ffffffff #00000000
-
menu color hotsel 0 #ff000000 #ffffffff
-
menu color hotkey 7 #ffffffff #ff000000
-
menu color scrollbar 0 #ffffffff #00000000
-
-
label linux
-
menu label ^Install<span style="font-family:Arial;"> </span>system
-
menu default
-
kernel vmlinuz
-
append initrd=initrd.img ks=cdrom:/anaconda-ks.cfg
只保留默认安装,ks=cdrom:/anaconda-ks.cfg是增加上去的,实现自动化安装(不加上需要手动下一步式安装)。
2、修改安装rpm包时的背景图片
其图片在/home/source/images/install.img镜像文件中
#mount -t squashfs -o loop /home/source/images/install.img /mnt/
复制文件,等价与cp
#mdkir /tmp/install
#rsync -av /mnt /tmp/install/
修改/tmp/install/usr/share/anaconda/pixmaps/progress_first.png背景图,也可修改其他的所有相关图片
#cd /tmp
#mksquashfsinstall/ install.img -all-root -noF
#cpinstall.img /home/source/images/install.img
(6)生成新的配置文件夹repodata
repodata文件中comps.xml 文件中包含了安装时用户所见到的与rpm相关的所有内容,它会检查Packages下的RPM包的依赖关系,安装时如果缺少依赖包,它会提示您哪个RPM 包需要哪些依赖库。同时它的角色就是相当于图形安装时选择软件包那个环节。
comps.xml主要由三部分组成,首先是组列表,它描述了在安装过程中需要的不同的组(或组件),包括组名、组的描述和包含的RPM包;其次是组的层次结构,它将组分成不同的类,并定义了组的一个顺序,从而可以决定哪些组需要先安装;最后为一系列RPM包以及它们之间的依赖关系。
进入/home/source/repodata目录,将0dae8d32824acd9dbdf7ed72f628152dd00b85e4bd802e6b46e4d7b78c1042a3-comps.xml改为comps.xml,*comps.xml文件名很长。
#cd /home/source/
#cp repodata/*comps.xml ./comps.xml
#rm -rf repodata
#createrepo -g comps.xml .
(
也有会使用命令,暂不明白什么用途,可能记录生成文件的时间以便比对:
#declare -x discinfo=`head -1 .discinfo`
#createrepo -u "media://$discinfo" -g comps.xml .
)
至此,comps.xml文件和其他相关联的文件已被重新生成到repodata目录下。注意如果新增或删除了Packages目录的RPM包,请重新生成comps.xml文件。
(7)向安装程序添加自定义软件包(无需求可省略)
定制Linux发行版的一个重要步骤,是向安装程序添加自定义的软件包。
1、选择Customize now自定义包时的界面
首先需要明白一下概念,通常来讲,一个package指一个软件包,一个group里包含了若干个package,一个category里则包含了若干个group。在使用Linux安装光盘安装系统的时候,有一个自定义软件包的步骤。在此步骤中,左侧显示的是category,右则显示的是group。它们之间对应关系记录于repodata/xxx-comps.xml文件中。
repodata/xxx-comps.xml文件的写法:
-
<?xml version='1.0' encoding='UTF-8'?>
-
<!DOCTYPE comps PUBLIC "-//CentOS//DTD Comps info//EN" "comps.dtd">
-
<comps>
-
<group>
-
<id>base</id>
-
<name>Base</name>
-
<name xml:lang='en_GB'>Base</name>
-
<name xml:lang='zh_CN'>基本</name>
-
<description>The basic installation of CentOS Linux.</description>
-
<description xml:lang='zh_CN'>红帽企业版 Linux 基本安装。</description>
-
<description xml:lang='zh_TW'>CentOS Linux 的基本安裝。</description>
-
<default>true</default>
-
<uservisible>true</uservisible>
-
<packagelist>
-
<packagereq type="default">zip</packagereq>
-
<packagereq type="mandatory">traceroute</packagereq>
-
<packagereq type="optional">zsh</packagereq>
-
</packagelist>
-
</group>
-
<group>...</group>
-
...
-
<category>
-
<id>development</id>
-
<name>Development</name>
-
<name xml:lang='en_GB'>Development</name>
-
<name xml:lang='zh_CN'>开发</name>
-
<name xml:lang='zh_TW'>程式開發</name>
-
<description>Development tools and libraries.</description>
-
<description xml:lang='zh_CN'>开发工具和程序库。</description>
-
<description xml:lang='zh_TW'>開發工具與函式庫。</description>
-
<grouplist>
-
<groupid>additional-devel</groupid>
-
<groupid>desktop-platform-devel</groupid>
-
<groupid>development</groupid>
-
<groupid>eclipse</groupid>
-
<groupid>server-platform-devel</groupid>
-
</grouplist>
-
</category>
-
<category>...</category>
-
...
-
</comps>
向CentOS 6.4的安装光盘中添加一个自定义的category及group:
#cd /home/source/
#cp repodata/*comps.xml ./comps.xml
#vim comps.xml
增加inspur-security-group和inspur-optimization-tools组group,其下有默认安装的软件包。
-
<group>
-
<id>inspur-security-group</id>
-
<name>Inspur Security Group</name>
-
<name xml:lang='en_GB'>Inspur Security Group</name>
-
<name xml:lang='zh_CN'>自定义</name>
-
<description> Some security packages provided by Inspur company</description>
-
<description xml:lang='zh_CN'>自定义安装1</description>
-
<default>true</default>
-
<uservisible>true</uservisible>
-
<packagelist>
-
<packagereq type="default">httpd</packagereq>
-
<packagereq type="default">mysql</packagereq>
-
</packagelist>
-
</group>
-
<group>
-
<id>inspur-optimization-tools</id>
-
<name>Inspur Optimization Tools</name>
-
<name xml:lang='en_GB'>Inspur Security Group</name>
-
<name xml:lang='zh_CN'>自定义</name>
-
<description>Some optimization packages provided by Inspur company.</description>
-
<description xml:lang='zh_CN'>自定义安装2</description>
-
<default>true</default>
-
<uservisible>true</uservisible>
-
<packagelist>
-
<packagereq type="default">php</packagereq>
-
<packagereq type="default">php-mysql</packagereq>
-
</packagelist>
-
</group>
增加inspur-extra类别category,显示在安装左侧
-
<category>
-
<id>inspur-extra</id>
-
<name>Inspur extra Packages</name>
-
<name xml:lang='zh_CN'>自定义开发</name>
-
<description xml:lang='zh_CN'>自定义开发工具和程序库</description>
-
<grouplist>
-
<groupid>inspur-security-group</groupid>
-
<groupid>inspur-optimization-tools</groupid>
-
</grouplist>
-
</category>
然后重新生成comps.xml 文件:
#declare -x discinfo=`head -1 .discinfo`
#cd /home/aoyang/source
#createrepo -u "media://$discinfo" -g comps.xml ./
(编辑了comps.xml,要重新生成新的,因为comps.xml的sha值会改变,这样就会导致跟repomd.xml中所记录的不同,安装的时候会报错:An error occurred umounting the CD. Please make sure you’are not accessing /mnt/source from the shell on tty2 an the click OK retry)
2、修改系统默认选项及其相应选项的默认包
系统安装的两个阶段:
第一阶段:加载isolinux目录下的内核映像vmlinuz和初始RAM磁盘initrd.img,建立安装环境。initrd.img中的/init程序调用/sbin/loader程序,loader加载kickstart文件,最后运行/usr/bin/anaconda主程序,进入第二阶段。
第二阶段:anaconda程序加载各python和bash模块,执行各个安装步骤。
文件的调用顺序为isolinux/vmlinuz—>isolinux/initrd.img—>/init—>/sbin/loader—>imagaes/install.img—>/usr/bin/anaconda。
Anaconda是RedHat、CentOS、Fedora等Linux的安装管理程序,使用Python编写。可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。
Anaconda程序存在于光盘的images/install.img镜像中,因此修改上面的安装图形化界面需要解压install.img文件,
usr/bin/anaconda 安装程序的主执行文件
usr/lib/anaconda/iw/ 图形安装模式的模块
usr/lib/anaconda/textw/ 文本安装模式的模块。
usr/share/anaconda/pixmaps/ 图形安装过程的图片
usr/share/anaconda/ui/ 安装过程中显示的文字
usr/lib/anaconda/dispatch.py 来控制整个安装的流程,当一个Next或Back按钮被单击时的跳转
usr/lib/anaconda/vnc.py 用于控制对VNC进行设置(当在安装过程中请求了VNC时)
进入解压的install.img目录修改:#vim usr/lib/anaconda/dispatch.py
-
……
-
installSteps = [
-
("welcome", ),
-
("betanag", betaNagScreen, ),
-
("language", ),
-
("keyboard", ),
-
("regkey", regKeyScreen, ),
-
("findrootparts", findRootParts, ),
-
("findinstall", ),
-
("partitionobjinit", partitionObjectsInitialize, ),
-
("parttype", ),
-
("autopartitionexecute", doAutoPartition, ),
-
("partition", ),
-
("upgrademount", upgradeMountFilesystems, ),
-
("upgradecontinue", queryUpgradeContinue, ),
-
("upgradeswapsuggestion", upgradeSwapSuggestion, ),
-
("addswap", ),
-
("partitiondone", partitioningComplete, ),
-
("upgrademigfind", upgradeMigrateFind, ),
-
("upgrademigratefs", ),
-
("upgbootloader", ),
-
("bootloadersetup", bootloaderSetupChoices, ),
-
("bootloader", ),
-
("bootloaderadvanced", ),
-
("reipl", doReIPL, ),
-
("networkdevicecheck", networkDeviceCheck, ),
-
("network", ),
-
("timezone", ),
-
("accounts", ),
-
("reposetup", doRepoSetup, ),
-
("basepkgsel", doBasePackageSelect, ),
-
("tasksel", ),
-
("group-selection", ),
-
("postselection", doPostSelection, ),
-
("confirminstall", ),
-
("confirmupgrade", ),
-
("install", ),
-
("enablefilesystems", turnOnFilesystems, ),
-
("migratefilesystems", doMigrateFilesystems, ),
-
("setuptime", setupTimezone, ),
-
("preinstallconfig", doPreInstall, ),
-
("installpackages", doInstall, ),
-
("postinstallconfig", doPostInstall, ),
-
("writeconfig", writeConfiguration, ),
-
("firstboot", firstbootConfiguration, ),
-
("instbootloader", writeBootloader, ),
-
("writexconfig", writeXConfiguration, ),
-
("writeksconfig", writeKSConfiguration, ),
-
("writeregkey", writeRegKey, ),
-
("setfilecon", setFileCons, ),
-
("copylogs", copyAnacondaLogs, ),
-
("methodcomplete", doMethodComplete, ),
-
("dopostaction", doPostAction, ),
-
("complete", ),
-
]
-
……
(8)制作ISO
(可以先删除所有TRANS.TBL文件,也可以不删除#ls -ld `find .` | grep "TRANS.TBL" | awk '{print $9}' |xargs -i rm -f {}
或#find . -name TRANS.TBL -exec rm -f {} ";")
#mkisofs -o centos6.5Release.iso -V centos6.5Release -b /home/source/isolinux/isolinux.bin -c /home/source/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T /home/source
#/usr/bin/implantisomd5 centos6.5Release.iso
(将md5值嵌入ISO中,防止复制过程中数据损坏;效验checkisomd5 centos6.5Release.iso。)
卷表为:centos6.5Release,开机映像文件:isolinux/isolinux.bin,开机文件名称:/isolinux/boot.cat。
(注:不加长参数使用iso时会出现:boot failed could not read from cdrom)
可能产生的错误:
1、执行mkisofs命令时,提示:boot image ‘./isolinux/isolinux.bin’ has not an allowable size。
解决办法:因为默认用的是软驱,加入: -hard-disk-boot 或者 -no-emul-boot 即可。
2、制作以后的Linux镜像在引导的时候提示:ISOLINUX 3.86 2010-04-01 ETCDisolinux: Image checksum error。
解决办法:在执行mkisofs命令时,加入 -boot-info-table 参数。
三、参考
mkisofs参数:http://linux.about.com/library/cmd/blcmdl8_mkisofs.htm
重新创建光盘:http://vega.sra-tohoku.co.jp/~kabe/vsd/c5-i586/dvd.html
制作iso和dvd脚本:http://scientificlinux.mirror.ac.za/59/x86_64/build/scripts/buildisoimages/archives/make-dvd.sh
四、总结
(1)因该文章时很多内容的总结,其中会有比较多的问题,还请读者根据实际的环境修改。
(2)因每一部分都涉及比较多的内容和代码,只能列出简要的目录,其他的可以查阅官网或其他。
(3)本人思路有限,若有更好的设计建议,也可发邮件沟通,在此先感谢!邮箱地址aoyang888@qq.com。
(责任编辑:IT)
一、安装软件(1)系统需要安装的软件 #yum install anaconda repodata createrepo mkisofs system-config-kickstart (2)系统centos6.5.iso和需要安装的rpm包,修改的图片。 二、创建定制系统1、光盘文件
(1)isolinux 目录存放光盘启动时的安装界面信息 若想重新制作光盘可以按照一下步骤(采用以前光盘的内容则可跳过一下内容)。 一、复制rpm包并生成repodata文件夹 #mount -o loop centos6.5 /mnt #cp /mnt/Packages/*.rpm /home/taiyang/work/anaconda/createCD/Packages #createrepo -v -g /mnt/repodata/*-comps.xml /home/taiyang/work/anaconda/createCD 二、创建启动映像 #yum install anaconda-runtime(或直接#yum install anaconda) #/usr/lib/anaconda-runtime/buildinstall --version 1.0 --buildarch x86_64 --brand "Red Hat" --product "Red Hat" --release "Red Hat" --final --output /home/taiyang/work/anaconda/createCD/ /home/taiyang/work/anaconda/createCD 注:buildinstall制作过程,会产生很多错误和警告,暂时不清楚怎么解决,但会生成了完整的目录结构。 (buildinstall为shell脚本,可自己分析。因anaconda调整参数,该命令生成了部分没用的内容,可手动删除,同时自己也会调整参数防止生成多余的文件。) 三、生成iso文件 #mkisofs -o centos6.5Release.iso -V centos6.5Release -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T /home/taiyang/work/anaconda/createCD/ (#mkisofs -R -J -T -r -l -d -allow-multidot -allow-leading-dots -no-bak -o ./CentOS6.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot .其中参数的意思慢慢理解。) 四、植入md5验证码 #implantisomd5 centos6.5Release.iso 2、创建制作系统目录和复制文件(1)建立放置制作系统的目录 #mkdir /home/source/ (2)复制除Packages(rpm包的文件夹)外的所有文件 #mount -t iso9660 -o loop centos6.5.iso /mnt(光盘使用mount /dev/sr0 /mnt) #cd /mnt #ls -A . | grep -v Packages | xargs -i cp -rp {} /home/source(也可以手动复制除Packages外的所有文件,但注意隐藏文件) (或使用rsync -a --exclude=Packages /mnt/ /home/source ,rsync拷贝了隐藏文件) #cp /root/anaconda-ks.cfg /root/install.log/home/source(使用anaconda-ks.cfg不用配置ks文件,使用install.log可以查看本机已经安装的包列表可减少复制多余的包) #mkdir /home/source/Packages #awk '/安装/{print $2}' /home/source/install.log | xargs -i cp /mnt/Packages/{}.rpm /home/source/Packages/ (英文系统下:安装换为Installing) (3)定制安装控制文件anaconda-ks.cfg ks文件由系统安装所得anaconda-ks.cfg进行修改,也可以用system-config-kickstart工具制作而得。
注意此部分内容:
可以去掉安装过程中的CentOS字样,在安装光盘里面有两个.buildstamp文件,一个位于stage2.img中,一个位于 initrd.img中,安装光盘运行时读取的是initrd.img中的.buildstamp文件,因此解压缩initrd.img文件。 解压修改: #cd /home/source/isolinux #mkdir tmp(也可以在其他目录创建临时文件) #cd tmp/ #xz -dc /home/source/isolinux/initrd.img | cpio -id #vim .buildstamp
#find . | cpio -c -o | xz -9 --format=lzma > initrd.img
有时出现如下错误:xz: Adjusted LZMA1 dictionary size from 64 MiB to 35 MiB to not exceed the memory usage limit of 398 MiB #cp initrd.img/home/source/isolinux/initrd.img #rm -rf /home/source/isolinux/tmp ----------------------------------------------------------------- 注:centos6.4前的不能按上述方法解压 #file initrd.img查看时gzip压缩 解压: #cd /home/source/isolinux #mkdir tmp #cp initrd.img tmp/initrd.img.gz #cd tmp #gunzip initrd.img.gz #cpio -ivmd < initrd.img #vim .buildstamp 压缩: #cd /home/source/isolinux/tmp #rm initrd.img #find . | cpio -c -o > initrd.img #gzip initrd.img #mv initrd.img.gz /home/source/isolinux/initrd.img #rm -rf /home/source/isolinux/tmp ----------------------------------------------------------------- (5)修改安装光盘背景图片
1、修改引导显示画面 grub背景图片在/home/source/isolinux/splash.jpg,替换文件即可。
修改界面上显示文件的配置文件: #vim /home/source/isolinux/isolinux.cfg
2、修改安装rpm包时的背景图片
其图片在/home/source/images/install.img镜像文件中 #mount -t squashfs -o loop /home/source/images/install.img /mnt/ 复制文件,等价与cp #mdkir /tmp/install #rsync -av /mnt /tmp/install/ 修改/tmp/install/usr/share/anaconda/pixmaps/progress_first.png背景图,也可修改其他的所有相关图片 #cd /tmp #mksquashfsinstall/ install.img -all-root -noF #cpinstall.img /home/source/images/install.img (6)生成新的配置文件夹repodata repodata文件中comps.xml 文件中包含了安装时用户所见到的与rpm相关的所有内容,它会检查Packages下的RPM包的依赖关系,安装时如果缺少依赖包,它会提示您哪个RPM 包需要哪些依赖库。同时它的角色就是相当于图形安装时选择软件包那个环节。
comps.xml主要由三部分组成,首先是组列表,它描述了在安装过程中需要的不同的组(或组件),包括组名、组的描述和包含的RPM包;其次是组的层次结构,它将组分成不同的类,并定义了组的一个顺序,从而可以决定哪些组需要先安装;最后为一系列RPM包以及它们之间的依赖关系。 进入/home/source/repodata目录,将0dae8d32824acd9dbdf7ed72f628152dd00b85e4bd802e6b46e4d7b78c1042a3-comps.xml改为comps.xml,*comps.xml文件名很长。 #cd /home/source/#cp repodata/*comps.xml ./comps.xml #rm -rf repodata #createrepo -g comps.xml . ( 也有会使用命令,暂不明白什么用途,可能记录生成文件的时间以便比对: #declare -x discinfo=`head -1 .discinfo` #createrepo -u "media://$discinfo" -g comps.xml . ) 至此,comps.xml文件和其他相关联的文件已被重新生成到repodata目录下。注意如果新增或删除了Packages目录的RPM包,请重新生成comps.xml文件。 (7)向安装程序添加自定义软件包(无需求可省略)
定制Linux发行版的一个重要步骤,是向安装程序添加自定义的软件包。
1、选择Customize now自定义包时的界面 首先需要明白一下概念,通常来讲,一个package指一个软件包,一个group里包含了若干个package,一个category里则包含了若干个group。在使用Linux安装光盘安装系统的时候,有一个自定义软件包的步骤。在此步骤中,左侧显示的是category,右则显示的是group。它们之间对应关系记录于repodata/xxx-comps.xml文件中。 repodata/xxx-comps.xml文件的写法:
向CentOS 6.4的安装光盘中添加一个自定义的category及group:
#cd /home/source/ #vim comps.xml 增加inspur-security-group和inspur-optimization-tools组group,其下有默认安装的软件包。
然后重新生成comps.xml 文件: #declare -x discinfo=`head -1 .discinfo` #cd /home/aoyang/source #createrepo -u "media://$discinfo" -g comps.xml ./ (编辑了comps.xml,要重新生成新的,因为comps.xml的sha值会改变,这样就会导致跟repomd.xml中所记录的不同,安装的时候会报错:An error occurred umounting the CD. Please make sure you’are not accessing /mnt/source from the shell on tty2 an the click OK retry) 2、修改系统默认选项及其相应选项的默认包
系统安装的两个阶段: Anaconda是RedHat、CentOS、Fedora等Linux的安装管理程序,使用Python编写。可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。 Anaconda程序存在于光盘的images/install.img镜像中,因此修改上面的安装图形化界面需要解压install.img文件,
usr/bin/anaconda 安装程序的主执行文件 进入解压的install.img目录修改:#vim usr/lib/anaconda/dispatch.py
(8)制作ISO (可以先删除所有TRANS.TBL文件,也可以不删除#ls -ld `find .` | grep "TRANS.TBL" | awk '{print $9}' |xargs -i rm -f {} 或#find . -name TRANS.TBL -exec rm -f {} ";") #mkisofs -o centos6.5Release.iso -V centos6.5Release -b /home/source/isolinux/isolinux.bin -c /home/source/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T /home/source #/usr/bin/implantisomd5 centos6.5Release.iso (将md5值嵌入ISO中,防止复制过程中数据损坏;效验checkisomd5 centos6.5Release.iso。) 卷表为:centos6.5Release,开机映像文件:isolinux/isolinux.bin,开机文件名称:/isolinux/boot.cat。 (注:不加长参数使用iso时会出现:boot failed could not read from cdrom) 可能产生的错误:
1、执行mkisofs命令时,提示:boot image ‘./isolinux/isolinux.bin’ has not an allowable size。
2、制作以后的Linux镜像在引导的时候提示:ISOLINUX 3.86 2010-04-01 ETCDisolinux: Image checksum error。
三、参考mkisofs参数:http://linux.about.com/library/cmd/blcmdl8_mkisofs.htm
重新创建光盘:http://vega.sra-tohoku.co.jp/~kabe/vsd/c5-i586/dvd.html 制作iso和dvd脚本:http://scientificlinux.mirror.ac.za/59/x86_64/build/scripts/buildisoimages/archives/make-dvd.sh 四、总结(1)因该文章时很多内容的总结,其中会有比较多的问题,还请读者根据实际的环境修改。 (2)因每一部分都涉及比较多的内容和代码,只能列出简要的目录,其他的可以查阅官网或其他。 (3)本人思路有限,若有更好的设计建议,也可发邮件沟通,在此先感谢!邮箱地址aoyang888@qq.com。 (责任编辑:IT) |