定制自己Linux发行版(ISO):向安装程序添加自定义软件包

定制Linux发行版有两个重要步骤,一是要把已经开发好的程序打包成RPM,另一个是向安装程序添加自定义的软件包,这里简要记录一下过程。本文的实验环境基于CentOS 6.3 64bit

首先需要明白一下概念,通常来讲,一个package指一个软件包,一个group里包含了若干个package,一个category里则包含了若干个group。只要明白这点,下面就简单多了。在使用Linux安装光盘安装系统的时候,有一个自定义软件包的步骤。在此步骤中,左侧显示的是category,右则显示的是group。它们之间对应关系记录于repodata/xxx-comps.xml文件中。

repodata/xxx-comps.xml文件的写法:

[root@bear ~]# yum install createrepo
[root@bear ~]# mkdir /root/image
[root@bear ~]# mount /dev/cdrom /mnt
[root@bear ~]# cp -pa /mnt/* /root/image/
注意:复制的时候必须加上参加 -a ,因为光盘下有隐藏的文件 .treeinfo .discinfo ,如果不加 -a 参数,会导致这两个文件的遗漏

[root@bear ~]# cd /root/image/
# 把原有group信息复制到光盘根目录并重命名为comps.xml
[root@bear image]# cp repodata/*-comps.xml ./comps.xml   
# 向其中添加自定义的category及group内容
[root@bear image]# vi comps.xml    
  <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>
   <description>Some optimization packages provided by Inspur company.</description>
   <default>true</default>
   <uservisible>true</uservisible>
   <packagelist>
      <packagereq type="default">php</packagereq>
      <packagereq type="default">php-mysql</packagereq>
   </packagelist>
  </group>
在最后一行的 </comps> 之前,添加以下内容:

<category>
   <id>inspur-extra</id>
   <name>Inspur Extra</name>
   <description>Inspur extra Packages</description>
   <grouplist>
    <groupid>inspur-security-group</groupid>
    <groupid>inspur-optimization-tools</groupid>
   </grouplist>
  </category>
[root@bear image]# declare -x discinfo=`head -1 .discinfo`
[root@bear image]# createrepo -u "media://$discinfo" -g comps.xml ./
[root@bear image]# rm comps.xml
最后,把这些文件重新打包成 iso 文件:

[root@bear image]# cd /root/image/  #确保自己在镜像根目录中
[root@bear image]# mkisofs -R -l -r -T -no-emul-boot -J -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/k-ux.iso -boot-load-size 4 -boot-info-table -no-bak .

注意:参数一个都不能少,否则生成的iso将会无法引导,或者可能在引导的过程中报出各种各样的错误。

可能产生的错误:

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-01ETCDisolinux: Image checksum error, sorry…Boot failed: press a key to retry…”

解决办法:在执行mkisofs命令时,加入 -boot-info-table 参数。

然后拿到虚拟机里安装一下试试,发现已经可以在自定义软件包的选项中,找到我们刚才加入的categorygroup内容了。


如果细心一点,我们会发现,该内容只在自定义软件包的过程中显示,如果不选择自定义的话,系统会默认显示下面的内容:



本文有参考相关文章,作者如图片水印所说明,网址因时间问题已经永不清楚了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值