一 ISO定制项清单

  1. 安装系统为centos6.5 (base server),安装方式为全新安装

  2. 使用ext4分区格式

  3. 安装前可以交互输入root密码,主机名,swap分区大小,之后安装过程自动化

  4. 关闭防火墙,selinux

  5. 网络为dhcp方式获取

  6. 时区为Asia/Shanghai

  7. 分区表类型为mbr

  8. 默认设置三个分区,boot分区200M,swap分区由用户指定,其余为根分区

  9. 更改软件包安装背景为自定义logo,更改欢迎信息

二 安装步骤

1、安装制作系统镜像所需要的工具

yum -y install anaconda repodata createrepo mkisofs rsync

2、创建光盘挂载目录、资源重构目录、自定义数据库目录

mkdir /mnt/cdrom (挂载光盘)
mkdir /data/ISO (ISO目录)
mkdir /data/ISO/mydata (需要封装的数据)

3、挂载CentOS系统光盘

mount -o loop /data/iso/CentOS-6.4-x86_64-bin-DVD1.iso /mnt/cdrom

4、拷贝定制ISO光盘所需的数据和文件

rsync -a --exclude=Packages/ /mnt/cdrom/ /data/ISO/ #--exclude=Packages/排除此目录
rm -fr /data/ISO/repodata
mkdir -p /data/ISO/{Packages,repodata} #创建yum仓库,软件包存放位置

5、拷贝定制的的软件包到ISO重构目录(/data/ISO/Packages)

#!/bin/bash
cd /root
awk '/Installing/{print $2}' install.log | sed 's/^*://g' > package.txt
PACKAGES='/mnt/cdrom/Packages'
PACKDIR='/root/package.txt'
NEW_PACKAGES='/data/ISO/Packages'
while read LINE
do
cp ${PACKAGES}/${LINE}.rpm /${NEW_PACKAGES} || echo "$LINE don't cp......."
done < package.txt
rm -f package.txt

6、创建自响应文件 ks.cfg ,把此文件放在/data/ISO/isolinux/ks.cfg

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use CDROM installation media
cdrom
#interactive
# Root password
#rootpw --plaintext
# System authorization information
auth --useshadow --passalgo=sha512
# Use text mode install
#text
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
network --onboot=yes --device=eth0 --bootproto=dhcp --noipv6
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone --isUtc Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
#part /boot --fstype="ext4" --size=
#part swap --fstype="swap" --size=
#part / --fstype="ext4" --grow --size=
%include /tmp/mydata.txt
%packages
@base
@console-internet
@core
@debugging
@directory-client
@hardware-monitoring
@java-platform
@large-systems
@network-file-system-client
@performance
@perl-runtime
@server-platform
@server-policy
@workstation-policy
pax
oddjob
sgpio
device-mapper-persistent-data
samba-winbind
certmonger
pam_krb5
krb5-workstation
perl-DBD-SQLite
%end
%pre
#!/bin/bash
exec < /dev/tty6 > /dev/tty6
chvt
clear
echo "######################################################################"
echo " Welcome to xxx OS , before install, we will set something"
echo "######################################################################"
echo -n "Please entrer the hostname:"
read hostn
hostname $hostn
echo -e "NETWORKING=yes\nHOSTNAME=$hostn" > /etc/sysconfig/network
echo -e "\n"
echo -n "Please input the root passwd:"
read -s Passwd
echo "rootpw --plaintext $Passwd" >> /tmp/mydata.txt
echo -e "\n"
echo -n "Please input the swap size(M):"
read Size
echo -e "part /boot --fstype="ext4" --size=200\npart swap --fstype="swap" --size=${Size}\npart / --fstype="ext4" --grow --size=1" >> /tmp/mydata.txt
exec < /dev/tty1 > /dev/tty1
chvt
%end

7、修改启动安装导向文件/data/ISO/isolinux/isolinux.cfg,下面为修改后内容

default vesamenu.c32
#prompt
timeout ##等待时间
display boot.msg
menu background splash.jpg
menu title Welcome to use CentOS 6.4!
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 #用ks.cfg自响应方式安装
menu label ^Install PowerSoft OS
menu default
kernel vmlinuz
append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img #加载ks应答文件作为默认配置
label vesa
menu label Install system with ^basic video driver
kernel vmlinuz
append initrd=initrd.img xdriver=vesa 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 -

8、创建软件仓库

cd /data/ISO
declare -x discinfo=$(head - .discinfo)
cp /mnt/cdrom/repodata/*-c6-x86_64-comps.xml repodata/c6-x86_64-comps.xml
createrepo -g repodata/c6-x86_64-comps.xml ./

9.修改光盘背景,文字等信息

9.1修改系统自动安装过程中显示的背景图片.修改光盘背景,文字等信息
#进入光盘images目录
cd /data/ISO/images/
#install.img镜像中包含了光盘安装过程中使用到的背景图片,挂载此img文件
mount -o loop -t squashfs install.img /mnt/install
mkdir tmp
#挂载的install.img不能编辑,需要拷贝一份,修改后替换原install.img文件
rsync -av /mnt/install/ tmp/
#进入背景图片所在目录,选择需要修改的图片,并替换(主机图片尺寸,格式需要与原来的相同),图片位置为:tmp/install/usr/share/anaconda/pixmaps
#重新创建新的install.img
mksquashfs tmp/ install_v1.img -all-root
#替换install.img
cp tmp/install_v1.img install.img
9.2 修改安装过程中的欢迎语
mkdir /data/ISO/isolinux/tmp
#解压initrd.img镜像
xz -dc ../initrd.img | cpio -id
#修改欢迎语.buildstamp文件,把其中的CentOS替换为PowerSoft
vim .buildstamp
#创建新的initrd.img并替换
find . | cpio -c -o | xz - --format=lzma > ../initrd.img

10、重构系统,生成ISO镜像

mkisofs -o CentOS-.5_64.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size  -boot-info-table -R -J -v -T ISO/

11、用生成的ISO刻录光盘进行安装测试

virt-install -n centos6 -r  -c CentOS-.6_64.iso --disk path=centos6_v1.qcow2,device=disk,bus=virtio,size=,format=qcow2 --vnc --vncport= --vnclisten=0.0.0.0 -v

#这里使用KVM虚拟化测试ISO文件

12 ks.cfg文件解析

#更多ks.cfg配置选项,参考redhat文档:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
#关闭防火墙
firewall --disabled #install表示为全新安装系统
install #使用的安装源为光盘
cdrom #打开此选项,使用ks.cfg中的选项作为默认配置,但是允许用户手动修改每一项配置,用户需要手动点击下一步
#interactive #设置root密码
#rootpw --plaintext #设置系统认证信息
auth --useshadow --passalgo=sha512 #打开此选项,表示安装过程使用纯文本模式,没有此选项为图形安装界面
#text #键盘类型
keyboard us #系统语言
lang en_US #关闭selinux
selinux --disabled #配置eth0网卡开机启动,使用dhcp获取IP信息,禁用ipv6
network --onboot=yes --device=eth0 --bootproto=dhcp --noipv6 #不配置x window
skipx #设置安装过程中的错误记录等级为info
logging --level=info #安装完成之后,重启系统(注:使用kvm虚拟机测试制作的ISO镜像时发现,安装完成之后是关机,不能重启)
reboot #系统时区
timezone --isUtc Asia/Shanghai #分区表类型为mbr
bootloader --location=mbr #清楚主机原有mbr分区信息
zerombr #初始化系统所有分区,执行全新安装
clearpart --all --initlabel #指定分区方式,boot分区200M,swap分区16G,其余全为主分区
#part /boot --fstype="ext4" --size=
#part swap --fstype="swap" --size=
#part / --fstype="ext4" --grow --size= #加载额外的配置信息作为ks项
%include /tmp/mydata.txt #安装软件包(base server)
%packages
@base
@console-internet
@core
@debugging
@directory-client
@hardware-monitoring
@java-platform
@large-systems
@network-file-system-client
@performance
@perl-runtime
@server-platform
@server-policy
@workstation-policy
pax
oddjob
sgpio
device-mapper-persistent-data
samba-winbind
certmonger
pam_krb5
krb5-workstation
perl-DBD-SQLite
%end #安装前执行脚本
%pre
#!/bin/bash
#切换到终端6执行脚本,然后再切换会原终端1
exec < /dev/tty6 > /dev/tty6
chvt
clear
echo "######################################################################"
echo " Welcome to xxx
echo "######################################################################"
#设置主机名
echo -n "Please entrer the hostname:"
read hostn
hostname $hostn
echo -e "NETWORKING=yes\nHOSTNAME=$hostn" > /etc/sysconfig/network
echo -e "\n"
#设置root密码
echo -n "Please input the root passwd:"
read -s Passwd
echo "rootpw --plaintext $Passwd" >> /tmp/mydata.txt
echo -e "\n"
#设置swap分区大小
echo -n "Please input the swap size(M):"
read Size
echo -e "part /boot --fstype="ext4" --size=200\npart swap --fstype="swap" --size=${Size}\npart / --fstype="ext4" --grow --size=1" >> /tmp/mydata.txt
exec < /dev/tty1 > /dev/tty1
chvt
%end

定制centos6.5自动安装ISO光盘的更多相关文章

  1. CentOS 6.9 CentOS 7.4 自动安装系统 kickstart

    通过ks文件 实现 CentOS 6.9 & 7.4 自动安装系统 环境: VMware 14.0 Pro版 光盘镜像: CentOS-6.9-x86_64-minimal.iso ks文件生 ...

  2. 使用光盘iso实现Linux操作系统的自动安装部署

    前边写了一篇使用 PXE 的方式批量安装操作系统,不是任何时候任何地方都有环境来通过 PXE 方式来进行安装.如果此时需要通过光盘安装,默认的情况下是通过交互式方式进行安装,其实也可以通过 kicks ...

  3. 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 ...

  4. 定制centos安装iso

    参考 https://gist.github.com/pauljeff/4b9ad551cb6c35870d7c https://www.redhat.com/archives/kickstart-l ...

  5. U盘安装centos6.4:缺少iso 9660映像

    方法: 1.下载安装的ISO文件    到www.centos.org网站下载对应的Centos 6.4安装文件.下载站点我一般选择网易镜像站点    64位下载参考链接:http://mirrors ...

  6. CentOS6.x/6.5/6.4/6.3/6.2/7.x 64位安装php5.2(使用YUM自动安装)

    默认情况下,CentOS6 64 bit 已经早已不支持php5.2.x ,但是某些php程序还需要zend optimizer支持,怎么办呢?目前大部分的yum repos 都已经不支持直接安装ph ...

  7. kickstart半自动安装centos系统与pxe自动安装centos系统

    一.kickstart半自动安装centos系统 关闭防火墙,关闭selinux,使用system-config-kickstart生成kickstart配置文件,启动xmanger-Passive ...

  8. cobbler无人值守自动安装

      无人值守安装(自动按定制的需求来批量安装linux系统) kickstart cobbler linux安装系统的方法: 1,光盘 把iso镜像刻录(windows下有类似nero这类软件)到光盘 ...

  9. 自动化运维之-PXE实现系统批量自动安装

    转自:https://www.linuxidc.com/Linux/2017-10/147379.htm 本节索引 需求分析 PXE简介 整体方案 服务选择 功能实现 安装调试 错误分析 总结 1 需 ...

随机推荐

  1. POJ 2342 Anniversary party 树形DP基础题

    题目链接:http://poj.org/problem?id=2342 题目大意:在一个公司中,每个职员有一个快乐值ai,现在要开一个party,邀请了一个员工就不可能邀请其直属上司,同理邀请了一个人 ...

  2. ecshop添加商品筛选功能

    ecshop商品属性一直是使用问题的难点,而“属性筛选”更是ecshop属性中的难点,那么下面来详细说明一下 属性筛选功能 第一,属性筛选的特点: 属性筛选必须是分类页才会显示,列出所有商品的唯一属性 ...

  3. iOS 多线程的简单理解(2) 队列 :串行 ,并行,MainQueue,GlobalQueue

    多线程队列是装载线程任务的队形结构.(系统以先进先出的方式调度队列中的任务执行 FIFO).在GCD中有两种队列: 串行队列.并发队列. 队列 :串行队列.并发队列,全局主对列,全局并发队列 2.1. ...

  4. Intellij IDEA Debug 多模块下断点目标源问题

    Ctrl+Alt+S进入Settings,选择Debugger->show alternative source switcher 勾选,开启显示替代源选择器 由于项目工程存放了多个应用模块,包 ...

  5. R Multiple Plots

    R Multiple Plots In this article, you will learn to use par() function to put multiple graphs in a s ...

  6. LeetCode 145. 二叉树的后序遍历(Binary Tree Postorder Traversal)

    145. 二叉树的后序遍历 145. Binary Tree Postorder Traversal 题目描述 给定一个二叉树,返回它的 后序 遍历. LeetCode145. Binary Tree ...

  7. [.NET Core] - 使用 EF Core 的 Scaffold-DbContext 脚手架命令创建 DbContext

    Scaffold-DbContext 命令 参数 Scaffold-DbContext [-Connection] <String> [-Provider] <String> ...

  8. (6)Spring Boot web开发 --- 错误处理页面

    文章目录 处理时间(`Date`)类型 thymeleaf 页面拼接字符串 映射路径占位符 使用 put.delete 方法 错误处理机制 处理时间(Date)类型 Spring Boot 进行参数绑 ...

  9. 02 Python 函数的一些小笔记

    函数的返回值 1.使用return可以返回多个值,如:return a,b 返回的数据类型是元组型2.接收返回的元组可以如:c,d=demo() (假设demo()返回a,b元组),需要注意的是,接收 ...

  10. nmap使用帮助翻译

    Nmap 7.60 ( https://nmap.org )Usage: nmap [扫描类型] [操作] {目标说明}目标说明:  可以识别主机名.IP地址.网络,等等.  例如: scanme.n ...