我们在企业运维环境中,难免会遇到使用多个Linux操作系统的情况,如果每天都需要安装不同版本的Linux系统的话,那么使用Kickstart只能安装一种版本的Linux系统的方法则显得有些捉襟见肘。
    下面介绍使用Kickstart同时部署Centos6、Centos7。
 

*安装条件*

DHCP服务器:为 PXE-client 分配 IP ,获得安装程序文件位置
TFTP服务器:传输安装文件、内核、菜单文件等给 PXE-client
Kickstart:生成的ks.cfg配置文件
HTTP/NFS/FTP 服务中的任意一种,本次采用FTP文件传输协议,用于传送安装源文件给 PXE-client

系统环境

实验环境:DELL720服务器
系统平台:CentOS Linux release 7.2.1511 (Core)
上述安装条件的涉及服务全部部署在同一台服务器(Server端)

安装步骤

1、准备工作:关闭 防火墙 和 SELINUX

[root@PxeServer ~]# systemctl stop firewalld.service #关闭当前系统防火墙
[root@PxeServer ~]# systemctl disable firewalld.service #关闭防火墙开机启动
[root@PxeServer ~]# systemctl status firewalld.service #查看防火墙的状态
[root@PxeServer ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/'/etc/selinux/config
[root@PxeServer ~]# setenforce 0

2、配置DHCP服务

[root@PxeServer ~]# yum -y install dhcp
[root@PxeServer ~]# cp -f /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf #复制配置模板文件到DHCP的配置目录中
[root@PxeServer ~]# vi /etc/dhcp/dhcpd.conf
#default-lease-time 600; #默认租约期限
#max-lease-time 7200; #最长租约期限
#log-facility local7; #日志反动地址
subnet 10.9.1.0 netmask 255.255.255.0 {
range 10.9.1.150 10.9.1.200; # 可分配的起始IP-结束IP
option subnet-mask 255.255.255.0; # 设定netmask
option routers 10.9.0.1; # 客户端的默认网关的地址
default-lease-time 21600; # 设置默认的IP租用期限
max-lease-time 43200; # 设置最大的IP租用期限
next-server 10.9.1.252; # 告知客户端TFTP服务器的ip
filename "pxelinux.0"; # 告知客户端从TFTP根目录下载pxelinux.0文件
}
设置开机自启动,启动DCHP服务
[root@PxeServer ~]# systemctl enable dhcpd
[root@PxeServer ~]# systemctl start dhcpd

查看DCHP端口是否启动

[root@PxeServer ~]# ss -lntup|grep 67

3、配置FTP(共享文件)服务

[root@pxeserver ~]# yum install -y vsftpd
设置开机自启动,启动FTP服务
[root@pxeserver ~]# systemctl enable vsftpd
[root@pxeserver ~]# systemctl start vsftpd
查看FTP端口是否启动
[root@noc ~]# ll -h /opt/CentOS-*
-rwxr-xr-x 1 root root 4.2G10月2817:25/opt/CentOS-6.5-x86_64-bin-DVD1.iso
-rwxr-xr-x 1 root root 4.1G10月2817:27/opt/CentOS-7.2-x86_64-DVD-1511.iso

在mnt下创建不同挂载点,挂载镜像:

[root@pxeserver ~]# mkdir -p /mnt/{6,7}
[root@pxeserver ~]# mount /opt/CentOS-6.5-x86_64-bin-DVD1.iso /mnt/6 -o loop
[root@pxeserver ~]# mount /opt/CentOS-7.2-x86_64-DVD-1511.iso /mnt/7 -o loop

在ftp下创建不同目录,将不同版本的安装文件拷贝到对应目录(相对于直接挂载,可以提升读写速度)

[root@pxeserver ~]# mkdir -p /var/ftp/{CentOS6.5,CentOS7.2}
[root@pxeserver ~]# cp -a /mnt/6/* /var/ftp/CentOS6.5/
[root@pxeserver ~]# cp -a /mnt/7/* /var/ftp/CentOS7.2/
浏览器测试是否可以通过ftp服务访问:

4、配置Kickstart一键安装应答文件

生成kickstart配置文件的三种方法:
方法1、 每安装好一台Centos机器,Centos安装程序都会创建一个kickstart配置文件,记录你的真实安装配置。如果你希望实现和某系统类似的安装,可以基于该系统的kickstart配置文件来生成你自己的kickstart配置文件。(生成的文件名字叫anaconda-ks.cfg位于/root/anaconda-ks.cfg)
方法2、Centos提供了一个图形化的kickstart配置工具。在任何一个安装好的Linux系统上运行该工具,就可以很容易地创建你自己的kickstart配置文件。kickstart配置工具命令为redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL4,RHEL5).网上有很多用CentOS桌面版生成ks文件的文章,如果有现成的系统就没什么可说。但没有现成的,也没有必要去用桌面版,命令行也很简单。
方法3、阅读kickstart配置文件的手册。用任何一个文本编辑器都可以创建你自己的kickstart配置文件。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
创建CentOS6.5和7.2各自的ks.cfg文件(通过ftp服务提供给pxe client):
[root@pxeserver ~]# mkdir /var/ftp/ks -p
[root@pxeserver ~]# touch /var/ftp/ks/centos{6.5,7.2}_ks.cfg

给ks.cfg文件加上读权限

[root@pxeserver ~]# chmod +r /var/ftp/ks/centos{6.5,7.2}_ks.cfg

#---编辑CentOS6.5_ks.cfg

# Kickstart Configurator for CentOS 6.5 by author Mr.Gao!
#-------------------分割线-------------------------#
#this is new install,is not upgrade
install
#通过 FTP或HTTP协议 从远程服务器上的安装源中提取安装配置
url --url="ftp://10.9.1.252/CentOS6.5/"
#安装方式,文本界面,图形的话graphy
text
#设置在安装过程中使用的语言或者说系统语言类型
lang en_US.UTF-8
#键盘类型
keyboard us
#清除mbr-主引导记录
zerombr
#bootloader:系统引导相关配置
# --location=,指定引导记录被写入的位置. 有效的值如下:mbr(缺省);partition(在包含内核的分区的第一个扇区安装引导装载程序);none(不安装引导装载程序)
# --driveorder,指定在BIOS引导顺序中首位的驱动器
# --append=,指定内核参数.要指定多个参数,使用空格分隔它们
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
#为通过网络的kickstart安装以及所安装的系统配置联网信息
#--bootproto=[dhcp/bootp/static]中的一种,缺省值是dhcp。bootp和dhcp被认为是相同的;static方法要求在kickstart文件里输入所有的网络信息
#!请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行
#--ip=,要安装的机器的IP地址.
#--gateway=,IP地址格式的默认网关.
#--netmask=,安装的系统的子网掩码.
#--hostname=,安装的系统的主机名.
#--onboot=,是否在引导时启用该设备.
#--noipv6=,禁用此设备的IPv6.
#--nameserver=,配置dns解析.
#network --bootproto=dhcp --device=eno16777736 --onboot=yes --noipv6 --hostname=hjl_nb_V6.5
network --bootproto=dhcp --device=em1 --onboot=yes --noipv6 --nameserver=8.8.8.8--hostname=hjl_nb_V6.5
#时区
timezone --utc Asia/Shanghai
#系统认证信息:设置密码加密方式为sha512 启用shadow文件
authconfig --enableshadow --passalgo=sha512
#root密码:可从首次安装后的"~/anaconda-ks.cfg"中提取(若root密码已修改请重新生成一次)
rootpw --xxx(密)
#清空分区:--all 从系统中清除所有分区;--initlable 初始化磁盘标签
#clearpart --none --initlabel
clearpart --all --initlabel
#-------part:磁盘分区--------#
#--fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat
#!--asprimary,强迫把分区分配为主分区,否则提示分区失败
#--size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB
#!--grow,告诉分区使用所有可用空间(若有),或使用设置的最大值
part /boot --fstype=ext4 --asprimary --size=300--ondisk=sda
part swap --fstype=swap --size=32768--ondisk=sda
part /--fstype=ext4 --asprimary --grow --size=300--ondisk=sda
#负责协助配置centos一些重要的信息
firstboot --disable
#首次安装关闭selinux、防火墙
selinux --disabled
firewall --disabled
#设置日志级别
logging --level=info
#!!设定安装完成后重启,此选项必须存在,否则kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择halt关机
reboot
#软件包段
%packages
#基本系统组件
@base
@chinese-support
@compat-libraries
@debugging
@development
net-tools
#bind-utils
wget
tree
nmap
sysstat
lrzsz
dos2unix
#脚本段:安装系统后执行的命令或脚本
%post
wget -O /tmp/optimization.sh ftp://10.9.1.252/fresh/optimization.sh &>/dev/null
/bin/sh /tmp/optimization.sh
%end

#---编辑CentOS7.2_ks.cfg

#version=HQHY-CentOS7.2_v1.0
#-------------------分割线-------------------------#
#this is new install,is not upgrade
install
#通过 FTP或HTTP协议 从远程服务器上的安装源中提取安装配置
url --url="ftp://10.9.1.252/CentOS7.2"
# Use text mode install--安装方式,文本界面,图形的话graphy
text
# System language--安装过程的语言类型
lang en_US.UTF-8--addsupport=zh_CN.UTF-8
# Keyboard layouts--键盘类型
keyboard --vckeymap=us --xlayouts='us'
#清除mbr-主引导记录
zerombr
#bootloader:系统引导相关配置
# --location=,指定引导记录被写入的位置. 有效的值如下:mbr(缺省);parti tion(在包含内核的分区的第一个扇区安装引导装载程序);none(不安装引导装 载程序)
# --driveorder,指定在BIOS引导顺序中首位的驱动器
# --append=,指定内核参数.要指定多个参数,使用空格分隔它们
bootloader --location=mbr --driveorder=sda
# Network information--为通过网络的kickstart安装以及所安装的系统配置联网信息:
#--bootproto=[dhcp/bootp/static]中的一种,缺省值是dhcp。bootp和dhcp被认为是相同的;static方法要求在kickstart文件里输入所有的网络信息
#!请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行
#--ip=,要安装的机器的IP地址.
#--gateway=,IP地址格式的默认网关.
#--netmask=,安装的系统的子网掩码.
#--hostname=,安装的系统的主机名.
#--onboot=,是否在引导时启用该设备.
#--noipv6=,禁用此设备的IPv6.
#--nameserver=,配置dns解析.
#network --bootproto=dhcp --device=eno16777736 --onboot=yes --ipv6=auto
network --bootproto=dhcp --device=em1 --onboot=yes --noipv6 --nameserver=8.8.8.8--hostname=hjl_nb_V7.2
# System timezone
timezone Asia/Shanghai--isUtc --nontp
# System authorization information--加密方式
auth --enableshadow --passalgo=sha512
#root密码:可从首次安装后的"~/anaconda-ks.cfg"中提取(若root密码已修改请重新生成一次)
rootpw --xxxxx(密)
#清空分区:--all 从系统中清除所有分区;--initlable 初始化磁盘标签
#clearpart --none --initlabel
clearpart --all --initlabel
#-------part:磁盘分区--------#
#--fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat
#!--asprimary,强迫把分区分配为主分区,否则提示分区失败
#--size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数>字后面加MB
#!--grow,告诉分区使用所有可用空间(若有),或使用设置的最大值
part /boot --fstype="ext4"--asprimary --size=300
part swap --fstype="swap"--size=32768
part /--fstype="ext4"--asprimary --grow --size=300
#--负责协助配置一些重要的信息
firstboot --enable
#首次安装关闭selinux、防火墙
selinux --disabled
firewall --disabled
#设置日志级别
logging --level=info
# Reboot after installation #安装后自动重启,如果BIOS中设置从PXE首先启动,那么会重复安装
# 请注意,安装后应设置为从先硬盘启动
reboot #(默认位置)
#设定所需要的软件包,按需要调整
%packages
@^minimal
@base
@compat-libraries
@core
@development
@debugging
kexec-tools
#net-tools
#bind-utils
wget
tree
nmap
sysstat
lrzsz
dos2unix #%end
#安装脚本:Linux安装完成后执行的脚本可以写在这里
#%post
#wget -O /tmp/optimization.sh ftp://10.9.1.252/fresh/optimization.sh &>/dev/null
#/bin/sh /tmp/optimization.sh
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end

5、配置tftp服务

[root@pxeserver ftp]# yum -y install tftp-server tftp xinetd

设置开机自启动

[root@pxeserver ftp]# systemctl enable xinetd.service
[root@pxeserver ftp]# sed -i '14s#yes#no#'/etc/xinetd.d/tftp #disable=no 将yes修改no
[root@pxeserver ftp]# systemctl restart xinetd.service
查看tftp服务端口
[root@pxeserver ftp]# ss -nul |grep 69
UNCONN 0 0 *:69 *:*

6、配置支持PXE的引导加载程序

PXE引导配置(bootstrap)

syslinux是小型的Linux操作系统,而且兼容各种介质。这个功能强大的引导加载程序,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。
[root@pxeserver ftp]# yum -y install syslinux-tftpboot #(安装引导加载程序,默认直接在tftp下生成;另外安装下面的syslinux也可以,不过需要将文件复制到tftp目录)
[root@pxeserver ftp]# yum -y install syslinux 
查看/var/lib/tftpboot下是否存在pxelinux.0这个文件,若不存在,复制引导加载程序pxelinux.0和到tftp下
[root@pxeserver ~]# cp /usr/share/syslinux/pxelinux.0/var/lib/tftpboot/ #pxelinux.0最重要的文件一定要有哦
复制启动菜单程序文件,将内核文件和initrd文件加入tftp下不同的引导目录中
注:因为是多系统引导安装,所以创建两个不同版本的文件夹,存放不同的引导文件
[root@pxeserver ~]# mkdir -p /var/lib/tftpboot/Cent{6,7}
[root@pxeserver ~]# cp /var/ftp/CentOS6.5/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/Cent6/
[root@pxeserver ~]# cp /var/ftp/CentOS7.2/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/Cent7/

制作启动菜单

创建pxelinux.cfg目录,用于编辑并存放客户端的启动菜单文件
default  vesamenu.c32 #加载菜单
prompt 1 #显示 'boot: ' 提示符。为 '0' 时则不提示,将会直接启动 'default' 参数中指定的内容。
timeout 100 #控制等待时间,单位是十分之一秒
display boot.msg #boot提示设置文件,可直接vim /var/lib/tftpboot/boot.msg添加自定义提示
menu clear #清除菜单选项
menu background splash.png #菜单背景:宽高=640x480,可自行选择png格式图标上传到/var/lib/tftpboot/下,命名为splash.png
menu title HQHY PXE BootMenu:InstallCentos6.5 or 7.2! #标题
label 1、InstallCentOS7.2
menu label ^InstallCentOSLinux7.2
#kernel 参数指定要启动的内核
kernel Cent7/vmlinuz
#append 指定追加给内核的参数,能够在grub里使用的追加给内核的参数,在这里也可以使用;ksdevice:让安装程序使用第一个网络设备
append initrd=Cent7/initrd.img text ks=ftp://10.9.1.252/ks/centos7.2_ks.cfg ksdevice=em1 label 2、InstallCentOS6.5
menu label ^InstallCentOSLinux6.5
kernel Cent6/vmlinuz
append initrd=Cent6/initrd.img text ks=ftp://10.9.1.252/ks/centos6.5_ks.cfg ksdevice=em1

检验安装

1、服务端

重启服务,检验端口
[root@pxeserver ~]# systemctl restart dhcpd.service
[root@pxeserver ~]# systemctl restart vsftpd.service
[root@pxeserver ~]# systemctl restart xinetd.service
[root@pxeserver ~]# netstat -tunlp|egrep '80|67|69'

2、客户端

开机按F12选择从PXE网口启动,通过dhcp服务器获取到动态IP
获取pxe启动文件

 

 加载启动菜单,选择需要安装的系统版本
加载内核程序

 

 loading.........等待安装完毕
...............
...........
......
...
安装后简单检验:
PING baidu.com (111.13.101.208) 56(84) bytes of data.
64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=44.4 ms
64 bytes from 111.13.101.208: icmp_seq=2 ttl=128 time=30.6 ms
64 bytes from 111.13.101.208: icmp_seq=3 ttl=128 time=31.1 ms
--- baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 30.653/35.437/44.481/6.401 ms [root@hjlnb_V7-2 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 278.9G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 31.3G 0 part [SWAP]
└─sda3 8:3 0 247.3G 0 part /
sr0 11:0 1 1024M 0 rom
 
 
参考链接:
 

pxe+kickstart部署多个版本的Linux操作系统(下)---实践篇的更多相关文章

  1. pxe+kickstart部署多个版本的Linux操作系统(上)---原理篇

    PXE概述: 1.PXE(Pre-bootExecution Environment),预启动执行环境2.通过网络接口启动计算机3.支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系 ...

  2. 在Linux操作系统下备份恢复技术的应用 转自https://yq.aliyun.com/articles/50205?spm=5176.100239.blogcont24250.9.CfBYE9

    摘要: 安全防护:在Linux操作系统下备份恢复技术的应用  原文参见:http://linux.chinaunix.net/techdoc/system/2005/12/19/925898.shtm ...

  3. Linux 操作系统下为网卡配置ip

    Linux操作系统下为网卡配置ip by:授客 QQ:1033553122 1.   Linux单一网卡设置多IP的配置方法 在Linux下网卡接口逻辑名被称为eth0,eth1,eth2,..... ...

  4. Linux 操作系统下,安装软件 apt-get、yum 的区别

    Linux 操作系统主要分为两大类: RedHat系列:Redhat.Centos.Fedora等: Debian系列:Debian.Ubuntu等. yum(Yellow dog Updater, ...

  5. Linux操作系统下Oracle主要监控工具介绍

    Oracle监控包括有效且完全地监控Oracle数据库的性能.可用性和使用率等统计量,还包括即时的错误通知和纠正措施,并提供全面的报表和图表.本文中主要介绍几种Linux操作系统下Oracle主要监控 ...

  6. 15.1 linux操作系统下nand flash驱动框架2

    当我们需要在操作系统上读写普通文件的时候,总是需要一层层往下,最终到达硬件相关操作,当然底层设备大多数都是块设备 NAND FLASH就作为一个最底层的块设备. 而写驱动,就是要构建硬件与操作系统之间 ...

  7. 第19章 使用PXE+Kickstart部署无人值守安装

    章节概述: 本章节将教会您通过PXE+DHCP+TFTP+VSftpd+Kickstart服务程序搭建出无人值守安装系统,从而批量部署客户机系统. 这种系统能够实现自动化运维.避免了重复性劳动,帮助提 ...

  8. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  9. Linux操作系统下的常见系统资源共享

    转:http://www.360doc.com/content/07/0420/10/25127_457022.shtml linux下如何挂接(mount)光盘镜像文件.移动硬盘.U盘.Window ...

随机推荐

  1. 重新整理 .net core 实践篇—————配置系统之军令状[七](配置文件)

    前言 介绍一下配置系统中的配置文件,很多服务的配置都写在配置文件中,也是配置系统的大头. 正文 在asp .net core 提供了下面几种配置文件格式的读取方式. Microsoft.extensi ...

  2. Spring的controller接受Date类型数据,接受枚举类型数据

    1. Controller接收Date类型的数据 核心使用@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 来将传递过来的时间字符串 ...

  3. 计图MPI分布式多卡

    计图MPI分布式多卡 计图分布式基于MPI(Message Passing Interface),主要阐述使用计图MPI,进行多卡和分布式训练.目前计图分布式处于测试阶段. 计图MPI安装 计图依赖O ...

  4. 移动通信-5G

    1.移动通信的发展历程: "G"代表一代,每10年一个周期 1G 2G 3G 4G 5G 1980s 1990s 2000s 2010s 2020s 语音 短信 社交应用 在线.互 ...

  5. 【NX二次开发】Block UI 从列表选择部件

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  6. ConcurrentSkipListMap - 秒懂

    疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 面试必备 + 面试必备 [博客园总入口 ] 疯狂创客圈 经典图书 : <Sprin ...

  7. Django(68)drf分页器的使用

    前言 当后台返回的数据过多时,我们就要配置分页器,比如一页最多只能展示10条等等,drf中默认配置了3个分页面 PageNumberPagination:基础分页器,性能略差 LimitOffsetP ...

  8. 『心善渊』Selenium3.0基础 — 5、XPath路径表达式详细介绍

    目录 1.XPath介绍 2.什么是XML 3.XML与HTML对比 4.为什么使用XPath定位页面中的元素 5.XPath中节点之间的关系 (1)节点的概念 (2)节点之间的关系类型 6.XPat ...

  9. python-geopandas读取、创建shapefile文件

    作者:fungis 描述:一个热带生活.乐于分享.努力搬砖的giser 交流邮箱:fungis@163.com shapefile是GIS中非常重要的一种数据类型,在ArcGIS中被称为要素类(Fea ...

  10. SQL Prompt快捷键

    1. DF DELETE FROM  2. ssf SELECT * FROM  3. be BEGIN  END 4. ij INNER JOIN  5. ap ALTER PROCEDURE  6 ...