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

CentOS6.7定制化制作ISO的更多相关文章

  1. 基于Centos6.x定制化安装步骤

    1.获取安装界面代码      挂载image/install.img:mount image/install.img /mnt/5 -o loop      复制挂载后的代码至self_intall ...

  2. fpm定制化RPM包之nginx rpm包的制作

    fpm定制化RPM包之nginx rpm包的制作 1.安装ruby模块 # yum -y install ruby rubygems ruby-devel 2.添加阿里云的Rubygems仓库,国外资 ...

  3. 基于CentOS6定制自己的ISO安装光盘

    警告:转载请注明出处 https://www.cnblogs.com/BoyTNT/p/9322927.html  1.目标 >> 基于CentOS-6.10-x86_64-minimal ...

  4. 自动化部署必备技能—定制化RPM包[转载]

    回顾下安装软件的三种方式: 1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长. 2.yum安装软件,优点是全自动化 ...

  5. 自动化部署必备技能—定制化RPM包

    回顾下安装软件的三种方式: 1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长. 2.yum安装软件,优点是全自动化 ...

  6. Centos7.5的定制化安装

    一.前言 关于定制化centos7.5的镜像真的是历经波折,前前后后.来来回回尝试了不少于20次,上网找了各种关于定制7系统的方法,都没有成功... 但最终功夫不负有心人终于解决了,O(∩_∩)O哈哈 ...

  7. cobbler重装、web、定制化

    cobbler重装 根据此文已自动化安装centos 7的版本http://www.cnblogs.com/shhnwangjian/p/5858900.html 在cobbler-test主机上重装 ...

  8. jquery-ui-datepicker定制化,汉化,因手机布局美观化源码修改

    感谢浏览,欢迎交流=.= 公司微信网页需要使用日历控件,想到jquery-mobile,但是css影响页面布局,放弃后使用jquery-ui-datepicker. 话不多说,进入正题: 1.jque ...

  9. #openstack centos6 centos7 kvm镜像制作

    #openstack centos6 centos7 kvm 镜像制作 openstack windows 2008镜像 制作 http://www.cnblogs.com/elvi/p/800129 ...

随机推荐

  1. Windows:查看IP地址,IP地址对应的机器名,占用的端口,以及占用该端口的应用程

    Windows 服务器系列: Windows:查看IP地址,IP地址对应的机器名,占用的端口,以及占用该端口的应用程 Windows:使用Dos命令管理服务(Services) Windows:任务调 ...

  2. 事务特性,事务的隔离级别,并发事务可能出现的问题,spring事务 数据库锁

    1.0 事务特性(ACID) Atomicity:原子性,一个事务不可以被拆分 Consistency:一致性,在事务执行前数据库的数据处于正确的状态,而事务执行完成后数据库的数据还是处于正确的状态, ...

  3. OPPO A7X 刷机小结

    OPPO A7X 刷机小结: 概述:根据网上找到的教程(MTK模式刷机教程),没有成功.在QQ上询问一位提供刷机服务的大神,说是只有老版本才能刷. 操作步骤: 刷机工具: MediaTek SP Fl ...

  4. 高精度减法--C++

    高精度减法--C++ 仿照竖式减法,先对其,再对应位相减. 算法处理时,先比较大小,用大的减小的,对应位再比较大小,用于作为借位符. #include <iostream> #includ ...

  5. svn commit时报错 File already exists

    第一步: 删除当前文件所在文件夹,提交commit 第二步: 新建刚才删除的文件夹,并将先前需要commit的文件放到此文件夹下,再次commit 提交

  6. Jenkins下载安装

    Jenkins是什么? Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测 ...

  7. 《Deep Learning》(深度学习)中文版PDF免费下载

    <Deep Learning>(深度学习)中文版PDF免费下载 "深度学习"经典著作<Deep Learning>中文版pdf免费下载. <Deep ...

  8. 1093. Count PAT’s (25)-统计字符串中PAT出现的个数

    如题,统计PAT出现的个数,注意PAT不一定要相邻,看题目给的例子就知道了. num1代表目前为止P出现的个数,num12代表目前为止PA出现的个数,num123代表目前为止PAT出现的个数. 遇到P ...

  9. A Zero Flow Entry Expiration Timeout P4 Switch

    文章名称:A Zero Flow Entry Expiration Timeout P4 Switch 零流表项期满超时P4交换机 发表时间:2018 期刊来源:SOSR ABSTRACT (摘要) ...

  10. Beta冲刺——day7

    Beta冲刺--day7 作业链接 Beta冲刺随笔集 github地址 团队成员 031602636 许舒玲(队长) 031602237 吴杰婷 031602220 雷博浩 031602134 王龙 ...