基于CentOS6定制自己的ISO安装光盘
警告:转载请注明出处 https://www.cnblogs.com/BoyTNT/p/9322927.html
1.目标
>> 基于CentOS-6.10-x86_64-minimal.iso进行定制,选它是因为包比较小
>> 以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
- timeout
- display boot.msg
- menu background splash.jpg
- menu title Welcome to CentOS 6.10!
- menu color border #ffffffff #
- menu color sel #ffffffff #ff000000
- menu color title #ffffffff #
- menu color tabmsg #ffffffff #
- menu color unsel #ffffffff #
- menu color hotsel #ff000000 #ffffffff
- menu color hotkey #ffffffff #ff000000
- menu color scrollbar #ffffffff #
- 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
- timeout
- display boot.msg
- menu background splash.jpg
- menu title Welcome to RVS 3.0!
- menu color border #ffffffff #
- menu color sel #ffffffff #ff000000
- menu color title #ffffffff #
- menu color tabmsg #ffffffff #
- menu color unsel #ffffffff #
- menu color hotsel #ff000000 #ffffffff
- menu color hotkey #ffffffff #ff000000
- menu color scrollbar #ffffffff #
- 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文件,原始内容为:
- .x86_64
- CentOS
- 6.10
- FINAL=YES
- http://bugs.centos.org/
修改为:
- .x86_64
- RVS
- 3.0
- FINAL=YES
- http://www.your-company.com.cn/
>> 重新压缩img文件,并覆盖工作目录下的原文件,然后清理
- cd /root/initrd
- find . | cpio -c -o | xz - --format=lzma > /root/initrd.img
- cp /root/initrd.img /root/iso/isolinux/initrd.img
- cd /root
- rm –rf /root/initrd
rm -rf /root/initrd.img
4.2.定制自动安装参数
定制自动安装参数需要依赖kickstart,生成/root/iso/isolinux/ks.cfg,填写内容为(#为注释行,不需要):
- #全新安装,使用cdrom作为安装源
- install
- cdrom
- #使用text模式而不要用图形模式安装
- text
- #设置键盘与语言
- keyboard us
- lang en_US.UTF-
- #设置root密码与认证加密方式,此处设置root密码为PASSWD1!
- rootpw --iscrypted $$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--.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--.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--.el6.12.3.x86_64.rpm /root/iso/Packages/centos-release--.el6.centos.12.3.x86_64.rpm
执行每条命令时注意观察有无错误产生。
>> 更新repodata数据
- cd /root/iso
- declare -x discinfo=`head - .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 -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包进行剪裁,需要重新生成repodata,但要注意的是rpm包之间有依赖,如果依赖关系出现问题,安装时会给出警告,可以继续,但完成后相应组件无法使用。
PS:感谢 https://www.cnblogs.com/appresearch/p/5484450.html 的作者。
警告:转载请注明出处 https://www.cnblogs.com/BoyTNT/p/9322927.html
基于CentOS6定制自己的ISO安装光盘的更多相关文章
- 用Remastersys定制自己的Ubuntu安装光盘
这两天因为要做Ubuntu的平台移植,一直在给自己电脑上的Ubuntu系统装各种软件,其间几次将内核破坏,导致不得不重装系统,经过几次痛苦的等待,痛定思痛,决定试一试能不能将自己的Ubuntu系统定制 ...
- 基于CentOS6.5下如何正确安装和使用Tcpreplay来重放数据(图文详解)
前期博客 基于CentOS6.5下snort+barnyard2+base的入侵检测系统的搭建(图文详解)(博主推荐) tcpreplay是什么? 简单的说, tcpreplay是一种pcap包的重放 ...
- 基于centos6.5 hadoop 伪分布式安装
步骤1:修改IP 地址和主机名: vi /etc/sysconfig/network-scripts/ifcfg-eth0 如果该文件打开为空白文件代表你计算机上的网卡文件不是这个名称“ifcfg-e ...
- 基于centos6.5 hadoop 集群搭建
1.修改Linux主机名2.修改IP3.修改主机名和IP的映射关系 ######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机.阿里云主机等) /etc/hosts里面要配置 ...
- CentOS6.7定制化制作ISO
CentOS6.7定制化制作ISO 以CentOS 6.7-minimal为例. 欢迎大家转载,并保留原文出处.内容若有错误或补充,请联系:szyzln@126.com 本文主要讲解如何在已有官方Ce ...
- CentOS 6.4一键自动化安装ISO镜像光盘
下载CentOS-6.4-x86_64-minimal.iso 1 http://mirrors.163.com/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-mi ...
- 基于kickstart定制自动化安装的linux镜像系统
使用软件和平台 1.基于平台: Vmware workstation 8.0 2.基于系统镜像: rhel-server-5.8-i386 ...
- Visual Studio 2015和.Net 2015 预览版在线安装和ISO镜像安装光盘下载
微软刚刚宣布了 Visual Studio 2015和.Net 2015 预览版,并同时提供了下载. 微软在纽约正进行中的#Connect# 全球开发者在线大会上宣布了Visual Studio 20 ...
- 基于centos6.5安装部署mongdb3.6
注意:不同的版本的centos,mongdb安装方式不同,请注意版本号!! 基于centos6.5安装部署mongdb3.6 方式有多种,本文介绍使用wget命令来下载获取mongdb,具体命令如下 ...
随机推荐
- java里的switch循环--你妹考试落榜了
总结:switch循环,不用break.那么程序每一个case都会运行到,直到遇到break停止 package com.aa; //格子区域 //3行3列的格子 public class Bu { ...
- elasticsearch pinyin 拼音分词器
安装pinyin分词 地址:https://github.com/medcl/elasticsearch-analysis-pinyin PUT py_test { "index" ...
- mul 指令
mul 是乘法指令 两个相乘的数:两个相乘的数,要么都是 8 位,要么都是 16 位. 如果是 8 位,一个默认放在 AL 中,另一个放在 8 位寄存器或内存字节单元中: 如果是 16 位,一个默认在 ...
- PHP函数(三)-递归函数
递归函数就是函数本身在内部调用自己 <?php function DiGui($n){ echo $n." "; if($n>0) DiGui($n-1); else ...
- HTML5 使用sessionStorage实现页面返回刷新
需求:在某个列表页面跳转到增加新项目页面后需要返回到前一个页面 并且数据最新数据.刚开始是做法是 history.back();方法 返回后页面不会自动刷新的.在新的页面重新访问之前页面的链接可以访问 ...
- 设置html页面不被浏览器缓存
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" ...
- 使用百度翻译的API接口
http://api.fanyi.baidu.com/api/trans/product/desktop 这是申请的接口地址,会得到一个APPID和一个钥密 然后下载PHP的对应的代码 有一个PHP文 ...
- tomcat的配置文件有那些
配置文件一般都在conf文件夹里,主要有server.xml,context.xml,tomcat_user.xml,web.xml四个常用配置文件,server主要是服务器设置的,例如端口设置,路径 ...
- Django--model模型绑定_数据库操作
1.创建model类 app01/models.py 1 2 3 4 5 6 7 from django.db import models # Create your models here. c ...
- 35.MID() 函数
MID() 函数 MID() 函数 MID 函数用于从文本字段中提取字符. SQL MID() 语法 SELECT MID(column_name,start[,length]) FROM table ...