CentOS6.7定制化制作ISO


CentOS6.7定制化制作ISO
CentOS 6.7-minimal 为例。
欢迎大家转载,并保留原文出处。内容若有错误或补充,请联系: szyzln@126.com









本文主要讲解如何在已有官方 CentOS 镜像文件的情况下对系统默认安装的 RPM 包进行剪裁,同时添加与公司业务相关的应用 RPM 包,生成一个定制版的 ISO 确保每次系统安装后业务布署自动化和高度一致。


本文不对 Linux 内核进行任何剪裁和优化,不能带你装逼。






自动化部署文件

这个文件一般在你安装完 CentOS /root 目录下生成,分别记录了你安装系统时的系统配置情况和安装了哪些软件包。我们在制作定制版 ISO 时可以直接使用这个文件,可以减轻一些工作量。当然你直接创建一个文本文件并编辑为下面内容也是可以的。
# vi /root/ks.cfg
# Kickstart file automatically generated by anaconda.

 

#version=DEVEL
install
cdrom
lang zh_CN.UTF-8
keyboard us
rootpw  --iscrypted $6$wkkHFjodgcq5lXPL$Y6rKvuAbZcxGT144.EDLv17Sz706nxUJvDw1ODUEh.B21ZFSvO5NXsW1jeKEu1jxr45Q5NlM9gt95vt9PSpCA0
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone --utc Asia/Shanghai
#bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
network --hostname YueKeOS --onboot yes  --bootproto dhcp  --nameserver 223.5.5.5,223.6.6.6
%pre
%end

 

%packages --nobase
@core
%end

 

%post
%end



准备环境

# yum install createrepo mkisofs isomd5sum squashfs-tools
# mkdir /root/YueKeOS
[ 说明] :以后统一将 ”/root/YueKeOS” 称为 ISO 制作目录。
# mount /dev/cdrom /media/
# cp -r /media/* /root/YueKeOS/
# cp  /media/.discinfo /root/YueKeOS/
# cp  /media/.treeinfo /root/YueKeOS/
# cp /root/anaconda-ks.cfg isolinux/ks.cfg
# chmod +w isolinux/isolinux.cfg
找到下面一行内容,在其后面加上一部分:
append initrd=initrd.img ks=cdrom:/isolinux/ks.cfg asknetwork
[ 说明] :斜体部分可选,代表是否在安装时对网络部分进行提示交互。





安装前运行自定义脚本

%pre 表示系统安装前,此时 ISO 镜像文件被挂载到内存中 Linux /mnt/source
具体操作:暂无




安装后运行自定义脚本

%post 在系统安装后执行
-- 不带参数,其实就是在真实的操作系统里操作。
--nochroot 已安装的真实操作系统被挂载到内存虚拟操作系统中的 /mnt/sysimage 目录。这个参数的用途主要是配合 %pre 使用的。先将光盘里的文件 copy 到内存运行的虚拟操作系统,再从内存虚拟操作系统 copy 到已安装的真实操作操作。
%post --nochroot
mkdir /media
mount /dev/cdrom /media/
cp /media/test1.txt /mnt/sysimage/root/
%end
[ 说明] :上面命令实现了从 ISO 镜像中拷贝文本文件到安装好的真实操作系统中。



利用系统安装得到RPM

简单地来讲,系统安装主要是将光驱作为本地 YUM 源。那么只要找到第一次安装到底安装了哪些 RPM 包,则这些 RPM 包完全满足 YUM 源,不存在任何依赖关系破损。
centos 系统安装完成后生成的 /root/install.log 。这个文件记录的恰恰是系统安装时安装了哪些 RPM ( 不管是系统默认还是用户自定义勾选的 ) 。我们可以从光驱里拷贝对应的 RPM 包到 ISO 制作工作目录里的 Packages 目录。
第一步:清空 ISO 制作目录里的Packages和repodata俩个目录里的所有内容。并重新参照 install.log 从光驱里拷贝对应的 RPM 包。
# rm Packages/* repodata/* -rf
# awk '{print $2}'  /root/install.log |xargs -i cp /media/Packages/{}.rpm /root/YueKeOS/Packages/





系统首次更新

官方 ISO 可能比较旧,安装后我们可能需要执行 “yum upgrade” 来升级。虽然这种更新不包括操作系统内核和跨越发行版本,但至少可以保证已安装的软件包升级到最新。
1 、修改 YUM 配置文件。以确保 YUM 命令操作会保存 RPM
# /etc/yum.conf
keepcache=1 1 为保存 0 为不保存 , 默认不保存
2、yum upgrade
3、拿到 YUM 命令下载到本机缓存库里的包,并拷贝到 ISO 制作目录里。
# mv /var/cache/yum/x86_64/6/updates/packages/* /root/YueKeOS/Packages
# mv /var/cache/yum/x86_64/6/base/packages/* /root/YueKeOS/Packages
4 、删除旧的对应 RPM 包。当然也可以不用删除。我这里的测试结果是系统最终安装的版本是升级包的最新版本。






利用YUM来搜集RPM

很多情况下,除了系统最少安装包外,我们还需要额外安装业务相关软件,比如常见的 VIM MySQL 等。系统默认 YUM 安装 MySQL 5.1 ,版本太旧了。我们需要让 ISO 集成更新的 MySQL 5.6 版本并默认安装。

1 、修改 YUM 配置文件。以确保 YUM 命令操作会在本机保存下来 RPM
# /etc/yum.conf
keepcache=1 1 为保存 0 为不保存 , 默认不保存

 

2 yum install vim  
[ 说明] :从 yum 安装界面上显示信息, vim-enhanced 才是完整的软件包名称
3、yum install mysql-community-server
搭建 MySQL Yum 源,详见官网说明:
httpp://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

 

4 、将所有此次安装的软件安装包和依赖包,全部转移到 ISO 制作目录的 Packages 目录。







创建光驱YUM仓库

1、准备资源库列表 XML 文件
# cp /media/repodata/*minimal-x86_64.xml /root/minimal-x86_64.xml
<comps>
  <group>
    <id>core</id>
    <name>Core</name>
<description/>
    <default>true</default>
    <uservisible>false</uservisible>
     <packagelist>
     <packagereq type='mandatory'>acl</packagereq>
     <packagereq type='mandatory'>xfsprogs</packagereq>
     此处省略 N 行   
     <packagereq type='mandatory'>vim-enhanced</packagereq>
     <packagereq type='mandatory'>mysql-community-server</packagereq>

 

   </packagelist>
  </group>


<category>
    <id>core</id>
    <name>Core</name>
    <description>Minimal server packages set</description>
    <display_order>60</display_order>
    <grouplist>
      <groupid>core</groupid>
    </grouplist>
  </category>

 

</comps>
[ 说明1] :让我们来打量一下 XML 文件,它接下来将被 “reaterepo -g 参数 这种形式来引用的。它的作用就是在生成 YUM 仓库后将 RPM 列表归为几个 group 。哪些 group id 可以安装由 ks.cfg 来指定。我们在网上看到一些关于创建本地 YUM 源并没有这个配置文件,是因为创建本地 YUM 源根本不需要。
[ 说明2] :经过实际测试,只需要在资源库列表中列出你要安装的软件包完整名称即可,其依赖包可以不用列出。当然你也可以创建新的 group id 给自己的业务定制包,也可以按照 YUM 的安装顺序将依赖包列入资源库列表中。



3 、重新生成 repo
# declare -x discinfo=$(head -1 /root/YueKeOS/.discinfo)
# createrepo -u "media://$discinfo" -g /root/minimal-x86_64.xml /root/YueKeOS/
[ 说明]:.discinfo 隐藏文件里的第一行数字为光盘介质编号,可以随便编写。并制作 repo 时必须要引用它。




自己制作RPM
暂无








其它修饰

isolinux.cfg
光盘启动时安装选项菜单。修改背景图

 

# mount -o loop images/install.img /mnt/
[ 说明 :挂载后可以浏览,但无法修改。需要将里面的全部文件拷贝到另外一个临时目录。待修改完成后再制作成 install.img 文件。假设这个临时目录名为 “install-image”
# mksquashfs install-image/ /root/install.img -all-root -noF
光盘安装软件包进度时上方背景图



制作ISO

# cd /root
# mkisofs -o YueKeOS-6.7.1_64.iso -input-charset utf-8 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T -joliet-long  /root/YueKeOS/
[ 说明]: mkisofs 实际上是链接 genisoimage命令
# implantisomd5 YueKeOS-6.7.1_64.iso


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM