定制自己的CentOS安装光盘ISO

1.目标

>> 基于CentOS-6.10-x86_64-minimal.iso进行定制,选它是因为包比较小,才400M

>> 以text方式安装,安装过程尽量无需用户参与

>> 固定root密码,并创建好内置用户与权限

>> 隐藏与CentOS相关的信息,更换为自己的产品名称

>> 携带自己的软件,如jre环境等

2.环境准备

>> 下载CentOS6.10,地址:http://mirrors.aliyun.com/centos/6.10/isos/x86_64/CentOS-6.10-x86_64-minimal.iso

>> 准备linux环境,建议直接使用要定制的基础iso安装

>> 以root登录系统,配置好网络

>> 通过yum安装必备组件

yum install anaconda createrepo mkisofs rpm-build

>> 上传iso到/root,并挂载到/mnt/src,之后拷贝所有文件到工作目录下,注意包含两个隐藏文件.diskinfo和.treeinfo

mkdir /mnt/src
mount –o loop /root/CentOS-6.9-x86_64-minimal.iso /mnt/src
mkdir /root/iso
cp –r /mnt/src/. /root/iso

3.修改欢迎界面

3.1.修改背景图

原始界面为:

替换界面需要修改/root/iso/isolinux/splash.jpg,替换为需要的图片,保持文件名不变,图片大小640x480。

3.2.修改产品名与选项

修改/root/iso/isolinux/isolinux.cfg,原始内容为:

default vesamenu.c32
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.10!
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 or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

修改为:

default vesamenu.c32
#prompt 1
timeout 150
display boot.msg
menu background splash.jpg
menu title Welcome to RVS 3.0!
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 RVS 3.0
  menu default
  kernel vmlinuz
  append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img
label local
  menu label ^Boot from local drive
  localboot 0xffff

做了以下几处调整:

◇ 修改timeout,默认超时是60秒,改为15秒,即15秒内不做选择默认执行菜单中的default项

◇ 修改memu title行,可以定制欢迎标题

◇ 去掉部分菜单项,只保留安装(label linux)和从硬盘启动(label local)这两项

◇ 调整了label linux项的文字,同时调整了append项,增加了对kickstart的支持,指定ks.cfg位置,此配置用于自动安装,后面会涉及

4.修改安装过程

4.1.调整安装界面名称

安装界面左上角会显示产品名称,原始界面如下:

想更换CentOS为自定义名称,需要调整/root/iso/isolinux/initrd.img:

>> 解开initrd.img到工作目录

mkdir /root/initrd
cd /root/initrd
xz -dc /root/iso/isolinux/initrd.img | cpio -id

>> 修改.buildstamp文件,原始内容为:

201806291108.x86_64
CentOS
6.10
FINAL=YES
http://bugs.centos.org/

修改为:

201806291108.x86_64
RVS
3.0
FINAL=YES
http://www.your-company.com.cn/

>> 重新压缩img文件,并覆盖工作目录下的原文件,然后清理

cd /root/initrd
find . | cpio -c -o | xz -9 --format=lzma > initrd2.img
cp initrd2.img /root/iso/isolinux/initrd.img
cd /root
rm –rf /root/initrd

这里比较奇怪的是,如果直接压缩生成initrd.img,文件会比较大,但压缩initrd2.img就能基本等于原尺寸。

4.2.定制自动安装参数

定制自动安装参数需要依赖kickstart,生成/root/iso/isolinux/ks.cfg,填写内容为(#为注释行,不需要):

#全新安装,使用cdrom作为安装源
install
cdrom
#使用text模式而不要用图形模式安装
text
#设置键盘与语言
keyboard us
lang en_US.UTF-8
#设置root密码与认证加密方式,此处设置root密码为PASSWD1!
rootpw --iscrypted $6$rUp4SXGKaN7Z.eix$/6tp2c9zsSwN8a2a.TmDcKHjhjAm.CFhlunvKZRqZAO.UQ8mrOT4Im/pCiL5d388VEEHMrhha0N3Q2BwqxHPV1
auth --useshadow --passalgo=sha512
#设置防火墙,放过ssh
firewall --service=ssh
#设置selinux
selinux –-enforcing
#设置网络eth0,使用dhcp模式,设置hostname,不启用ipv6
network --onboot=yes --device=eth0 --bootproto=dhcp –hostname=rvs --noipv6
#不使用X Window
skipx
#安装完成后重启系统
reboot
#设置时区
timezone Asia/Shanghai
#设置启动引导参数
bootloader --location=mbr --driveorder=sda
#清除mbr
zerombr
#清除分区
clearpart --all --initlabel

参数很多,可以参考以下文章:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/installation_guide/s1-kickstart2-options。或者如果你有图形界面,安装一个system-config-kickstart,可以进行图形化的参数设置。

root密码是以加密方式设置的,可以通过以下方法得到密文:

python -c 'import crypt; print(crypt.crypt("PASSWD1!"))'

4.3.添加自定义软件与脚本

以安装oracle server jre为例:

>> 在iso目录中创建软件存放目录,放入待安装的软件

mkdir /root/iso/soft
cp /root/server-jre-8u172-linux-x64.tar.gz /root/iso/soft

>> 修改ks.cfg,以末尾添加内容

%post
mkdir -p /media/cdrom
ln -s /dev/scd0 /dev/cdrom
mount -o loop /dev/cdrom /media/cdrom
tar -zxvf /media/cdrom/soft/server-jre-8u172-linux-x64.tar.gz -C /usr/local
echo "JAVA_HOME=/usr/local/jdk1.8.0_172" >> /etc/profile
echo "PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile
echo "export JAVA_HOME PATH" >> /etc/profile
%end

%post表示安装完成后执行的脚本,这里首先挂载光驱,然后解压jre并设置环境变量。

5.修改产品名称

产品名称出现在启动界面以及登录前,想变更需要修改centos-release-6-10.el6.centos.12.3.x86_64.rpm,但此包无法直接修改,需要从源码包修改,步骤如下:

>> 下载源码包到/root,并解开

cd /root
wget http://vault.centos.org/6.10/os/Source/SPackages/centos-release-6-10.el6.centos.12.3.src.rpm
rpm2cpio /root/centos-release-6-10.el6.centos.12.3.src.rpm | cpio -id

>> 建立root用户的rpm环境,并将解压得到的文件放入

echo "%_topdir /root/rpmbuild" > /root/.rpmmacros
mkdir -pv /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
cp centos-release-6-10.tar.gz /root/rpmbuild/SOURCES
cp centos-release.spec /root/rpmbuild/SPECS

>> 修改centos-release.spec,分别找到%define product_family和%define full_release_version这两行,改为需要的值:

%define product_family RVS
%define full_release_version 3.0

注意%define base_release_version这一行不要修改,否则会生成错误。

>> 重新生成rpm包,覆盖原始文件

cd /root/rpmbuild/SPECS
rpmbuild -bp centos-release.spec
rpmbuild -bc centos-release.spec
rpmbuild -bi centos-release.spec
rpmbuild -bb centos-release.spec
cp /root/rpmbuild/RPMS/x86_64/centos-release-6-10.el6.12.3.x86_64.rpm /root/iso/Packages/centos-release-6-10.el6.centos.12.3.x86_64.rpm

执行每条命令时注意观察有无错误产生。

>> 更新repodata数据

cd /root/iso
declare -x discinfo=`head -1 .discinfo`
cp /root/iso/repodata/*-x86_64.xml /root/iso/comps.xml
rm –rf /root/iso/repodata
createrepo -u "media://$discinfo" -g comps.xml ./

6.重新生成ISO

cd /root
mkisofs -o rvs-3.0.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T iso/

成功后会在/root目录下生成rvs-3.0.iso。

7.检验成果

使用VMware虚拟机安装,欢迎页面,已显示RVS 3.0,且菜单项只剩2项:

进入text模式,左上角显示产品名为RVS,安装过程中只需要选择磁盘,其它参数都不需要设置:

安装完成后自动重启,GRUB里及启动过程右下角已显示RVS 3.0:

启动完成,显示RVS release 3.0 (Final),以root登录,密码PASSWD1!,执行java命令可正常运行,查看IP已通过dhcp分配成功。

大家可以在此基础上添加更多个性化的内容,来生成自己专属的iso安装包。

没有涉及rpm包剪裁,试着去掉了几个rpm再重新生成repodata,比如我去掉了python相关组件,但由于yum对它有依赖,在安装时会给出警告,不影响安装,但安装完成后yum无法使用。

原文地址:http://blog.51cto.com/boytnt/2147184

时间: 2024-08-30 09:59:24

定制自己的CentOS安装光盘ISO的相关文章

用Remastersys定制自己的Ubuntu安装光盘

这两天因为要做Ubuntu的平台移植,一直在给自己电脑上的Ubuntu系统装各种软件,其间几次将内核破坏,导致不得不重装系统,经过几次痛苦的等待,痛定思痛,决定试一试能不能将自己的Ubuntu系统定制好,制作成安装光盘. 经过在CSDN的一番寻找,终于找到了我要的方法,哈哈.在这里非常感谢软件的原作者,也是很佩服他,Remastersys是由他一个人写成的. 本方法主要是依靠名为Remastersys的工具,当然,据我猜测,写出这个软件的大神也是根据Ubuntu官网上那一堆我看不懂的英文讲解做的

定制centos6.5自动安装ISO光盘

一 ISO定制项清单 安装系统为centos6.5 (base server),安装方式为全新安装 使用ext4分区格式 安装前可以交互输入root密码,主机名,swap分区大小,之后安装过程自动化 关闭防火墙,selinux 网络为dhcp方式获取 时区为Asia/Shanghai 分区表类型为mbr 默认设置三个分区,boot分区200M,swap分区由用户指定,其余为根分区 更改软件包安装背景为自定义logo,更改欢迎信息 二 安装步骤 1.安装制作系统镜像所需要的工具 yum -y in

CentOS 7.1全自动安装光盘制作详解

安装系统的话,常用方式就是通过U盘,光盘,kickstart网络自动化安装,网络自动化安装固然好,但是有时候在现场做项目的话根本就没有kickstart环境,甚至连基本的网络建设都没有弄好,此时该如何安装系统呢,通过u盘或者光盘,手动安装的话需要很多选项要自己填写,那么我们能不能把自动化的ks环境做到系统镜像里面去呢,答案是很定的,接下来我们就来介绍CentOS 7.1全自动安装光盘制作 第一步我们挂载原始光盘镜像,假如挂载点是/mnt/cdrom,然后做如下操作 cp -ar /mnt/cdr

CentOS 7.2 自动安装光盘实验全过程记录

实验过程: 本文在一台RHEL6.5机器上,通过向原生CentOS7.2 iso中添加kickstart启动脚本ks.cfg和读取脚本的开机选项,再对该iso镜像重新封装的方式,完成CentOS7.2自动安装光盘的制作,并新建一台虚拟机挂载该光盘,来验证操作系统的自动安装. 所需工具: 1. 一台RHEL6.5主机(虚拟机也可以,但本文涉及要在该主机上新建虚拟机,因此建议该主机应支持KVM或别的虚拟机技术) 2. virt-manager 可视化的虚拟机管理工具 3. virt-install

[CentOS]使用光盘作为yum软件安装源

[CentOS]使用光盘作为yum软件安装源 当Linux无法上网,但是有需要安装一些软件时,如果有系统镜像iso,那么我们可以从光盘中来安装一些软件,当然前提是光盘中有这些软件. 首先插入光驱,并挂载到文件系统中来 # 挂载光驱 mkdir /media/cdrom mount /dev/cdrom /media/cdrom 然后到yum的源配置文件路径 cd /etc/yum.repo.d/ 这个目录下默认应该有很多文件,例如 CentOS-Base.repo CentOS-Media.re

Visual Studio 2015和.Net 2015 预览版在线安装和ISO镜像安装光盘下载

Visual Studio 2015和.Net 2015 预览版在线安装和ISO镜像安装光盘下载 微软刚刚宣布了 Visual Studio 2015和.Net 2015 预览版,并同时提供了下载. 微软在纽约正进行中的#Connect# 全球开发者在线大会上宣布了Visual Studio 2015 和.NET 2015预览版,将为开发者提供构建跨多个平台应用程序的新功能,包括从Windows 到 Linux 到iOS,是的,以及到Android. 微软MSDN介绍称,目前移动开发者需要面对A

光盘上CentOS 安装程序启动过程

光盘上CentOS 安装程序启动过程 MBR:boot.cat stage2: isolinux/isolinux.bin 配置文件:isolinux/isolinux.bin 每个对应菜单选项 加载内核:isolinuz/vmlinuz 向内核传递参数:append initrd=initrd.img .. 随后装载根文件系统,并启动anaconda ##anaconda应用的工作过程 安装前的配置 键盘类型 语言 .. 安装阶段 在目标磁盘创建分区.格式化.安装bootloader.. 首次

Hadoop集群(第1期)CentOS安装配置

1.准备安装 1.1 系统简介 CentOS 是什么? CentOS是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本.每个版本的 CentOS 都会获得七年的支持(通过安全更新方式).新版本的 CentOS 每两年发行一次,而每个版本的 CentOS 会定期(大概每六个月)更新一次,以便支持新的硬件.这样,建立一个安全.低维护.稳定.高预测性.高重复性的 Linux 环境. CentOS(Community Enterprise Operati

Centos使用光盘作为本地yum源

[[email protected] CentOS]# mkdir /media/CentOS把光盘加载到本地[[email protected] CentOS]# mount /dev/cdrom /media/CentOS 在/etc/yum.repos.d/目录下,有两个文件CentOS-Base.repo记录着网络上的yum源的地址和路径信息等CentOS-Media.repo录着可以从本地作为yum源的介质和路径.其中还有这样一个说明:修改 CentOS-Media.repo 如下:#