- 安装前准备
[ root@vinsent ~ ]#iptables -F # 关闭防火墙
[ root@vinsent ~ ]#setenforce 0 # 临时关闭selinux
[ root@vinsent ~ ]#vim /etc/selinux/config # 修改文件永久关闭selinux
...前面省略
SELINUX=disabled # 设置SELINUX的值为disabled
...后面省略
- DHCP服务器配置静态IP
[ root@vinsent ~ ]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 # 设置静态IP
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eth0"
UUID="a45f60f6-2b53-4368-97da-6eea0c61d7fc"
DEVICE="eno16777736"
ONBOOT="yes"
IPADDR="192.168.65.130"
PREFIX="24"
GATEWAY="192.168.65.2"
DNS1="114.114.114.114"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_PRIVACY="no"
[ root@vinsent ~ ]#systemctl restart network.service #重启网络服务
- 安装服务
[ root@vinsent ~ ]#yum -y install dhcp tftp-server httpd syslimux #安装相应的服务包
[ root@vinsent ~ ]#yum -y install xinetd # 安装超级守护进程xinetd
[ root@vinsent ~ ]#systemctl enable dhcp # 设置dhcp开机启动
[ root@vinsent ~ ]#systemctl enable tftp # 设置tftp开机启动
[ root@vinsent ~ ]#systemctl start tftp # 启动tftp服务
[ root@vinsent ~ ]#systemctl enable httpd
[ root@vinsent ~ ]#systemctl start httpd # 启动http服务
[ root@vinsent ~ ]#chkconfig tftp on # 如果这天命令不能使用,请修改配置文件
[ root@vinsent ~ ]#vim /etc/xinetd.d/tftp
service tftp
{
...
disable =yes # 修改这一项为"disable =no"
...
}
[ root@vinsent ~ ]#systemctl restart xinetd # 修改之后,一定要重启xinetd服务(thfp守护进程)
- 配置DHCP服务器
[ root@vinsent ~ ]#rpm -ql dhcp # 查询dhcp相关的文件
...前面省略
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
/usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example
...后面省略
[ root@vinsent ~ ]#cd /etc/dhcp/
[ root@vinsent ~ ]#cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example . # 复制模板配置文件
[ root@vinsent ~ ]#mv dhcpd.conf.example dhcpd.conf # 改名为dhcpd.conf,顶替以前的配置文件
[ root@vinsent ~ ] #vim dhcpd.conf
option domain-name "pxe";
option domain-name-servers 114.114.114.114;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.65.0 netmask 255.255.255.0 { #这里写的ip地址为子网的地址,故为192.168.65.0
range 192.168.65.131 192.168.65.200; # 子网的范围,之后主机请求获取的ip地址就是这其中的一个
option routers 192.168.65.2; #子网网关
next-server 192.168.65.130; # 指明tftp服务器的地址
filename "pxelinux.0"; # 指明PXE文件位置,这个在申请ip的时候会发送给安装主机
}
[ root@vinsent ~ ]#systemctl dhcpd start # 重启服务
- 准备yum源文件及kickstart文件
我们规划好了目录结构,接下来便是创建这些目录结构,并提供相应的文件。
[ root@vinsent ~ ]#cd /var/www/html
[ root@vinsent html ]#mkdir -p centos/{6,7}
[ root@vinsent html ]#mkdir ksdir
然后将centos的ISO镜像挂载到相应目录
接下来准备ksdir目录下的安装引导文件ks#.cfg。ks#.cfg文件的获取方法有两种,一种是通过工具来生成。不过这个工具需要自己安装:
[ root@vinsent ~ ]#yum install -y system-config-kickstart
[ root@vinsent ~ ]#system-config-kickstart
指定时区Asia/Shanghai、设置root用户密码、指定安装后重新启动
指定安装源http://192.168.65.130/centos/7
在MBR上安装新的引导装载程序
创建必要分区/,/boot,swap,并清除主引导记录、删除所有现存分区、初始化磁盘标签
根目录使用剩余所有空间
添加网卡eth0
Authentication不需要修改,禁用firewalld
安装图形界面
Package Selection项会报错,需要手动在生成的ks.cfg文件中指定
Pre-Installation Script & Post-Installation Script 为系统安装前后要指定系统运行的脚本,没有可以不填
一般可以在Post-Installation Script中提前配置YUM源或相关服务
配置完成后点击左上角的File进行保存
[root@foundation76 ~]# vim /var/www/html/ksdir/ks7.cfg #在末尾指定需要安装的软件包
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$dE1VLq9Y$bVjWp.OjjKJnSBJti.9Lx/
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="http://192.168.65.130/centos/7"
# System language
lang en_US
# Firewall configuration
firewall --disabled
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled
# Network information
network --bootproto=dhcp --device=eth0
# Reboot after installation
reboot
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=500
part swap --fstype="swap" --size=10240
part / --fstype="xfs" --grow --size=1
#Packages selection
%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
kexec-tools
autofs
lftp
%end
- 准备内核文件菜单文件
内核文件、虚拟根文件以及菜单文件,我们都是通过tftp服务来提供的,由于系统及版本的不同,对于一个比较复制机群来说,我们需要准备不同系统,不同版本的内核文件,initrd.img文件。菜单文件只需要一份即可。/var/lib/tftpboot/目录规划如下:
规划好了目录结构,接下来自只需要按照目录内容配置相关的文件即可。菜单风格文件vesamenu.c32、不同系统的内核文件 vmlinuz 以及虚拟根文件系统 initrd.img 我们可以从光盘中复制。菜单文件defaults需要手动写
[ root@vinsent ~ ]#cd /var/lib/tftpboot/
[ root@vinsent tftpboot ]#mkdir -p centos{6,7} # 创建目录文件
[ root@vinsent tftpboot ]#cp /var/www/html/centos/6/isolinux/{vmlinuz,initrd.img} centos6/ # 复制内核,虚拟根文件
[ root@vinsent tftpboot ]#cp /var/www/html/centos/7/isolinux/{vmlinuz,initrd.img} centos7/ # 由于之前挂载了不同系统,直接复制对应文件即可
[ root@vinsent tftpboot ]#cp /var/www/html/centos/7/isolinux/vesamenu.c32 .#复制菜单风格文件
[ root@vinsent tftpboot ]#cp /usr/share/syslinux/pxelinux.0 . # pxelinux文件来自syslinux包,直接复制即可
[ root@vinsent tftpboot ]#mkdir pxelinux.cfg
[ root@vinsent tftpboot ]#cp /var/www/html/centos/6/isolinux/isolinux.cfg pxelinux.cfg/default # 复制并改名
[ root@vinsent tftpboot ]#vim pxelinux.cfg/default
default vesamenu.c32 # 指定菜单风格
timeout 600 # 安装倒计时,1/10 s为单位
menu title Auto Install | www.xxx.com
label centos7
menu label ^Install CentOS 7
kernel centos7/vmlinuz
append initrd=centos7/initrd.img ks=http://192.168.65.130/ksdir/ks7.cfg # 指明ks文件位置
label centos6
menu label ^Install CentOS 6
kernel centos6/vmlinuz
append initrd=centos6/initrd.img ks=http://192.168.65.130/centos/6
label manual7
menu label ^Manual Install CentOS Linux 7
kernel centos7/vmlinuz
append initrd=centos7/initrd.img inst.repo=http://192.168.65.130/centos/7
label manual6
menu label Manual ^Install CentOS Linux 6
kernel centos6/vmlinuz
append initrd=centos6/initrd.img inst.repo=http://192.168.65.130/centos/6
label local
menu default
menu label Boot from ^local drive
localboot 0xffff
menu end
到此所有的配置就完成了。