PXE的工作过程:
1.PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;
2.DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;
3.PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;
4.PXE Client 取得pxelinux.0 文件后之执行该文件;
5.根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;
6.进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;
系统环境:
- 实验环境:VirtualBox5.0
- 系统平台:CentOS release 6.7 (最小化安装)
- 网络模式:Host Only
- DHCP/TFTP/HTTP IP:192.168.55.101
- SELINUX:disabled
- 防火墙:关闭
一、服务器预配置
1.1 配置虚拟机联网方式
为了不影响已有网络DHCP的功能,我们使用Host Only的联网方式,在此需要新建一网卡,同时新网卡的DHCP功能需要禁用,宿主机IP使用192.168.55.1即可
服务器在联网方式上同时需要启用Adapter 1: NAT/Bridge(确保可以联外网)和Adapter2: Host only(提供DHCP和HTTP服务)两种方式.
1.2 配置静态IP
登录服务器后,设置eth1为静态IP。编辑/etc/sysconfig/network-scripts/ifcfg-eth1
BOOTPROTO=static
ONBOOT=yes
DEVICE=eth1
IPADDR=192.168.55.101
NETMASK=255.255.255.0
GATEWAY=192.168.55.1
1.3 启用eth1
ifdown eth1
ifup eth1
1.4 关闭Selinux和防火墙
setenforce 0
service iptables stop
chkconfig iptables off
1.5 修改YUM源为阿里云(可选)
yum install -y wget curl
curl https://git.oschina.net/pauldeng/scripts/raw/master/docker/aliyun-centos6-yum.sh | sh
二、配置HTTP服务
2.1 安装HTTP服务
yum -y install httpd
rpm -qa|grep httpd
2.2 开启服务并设置开机启动
service httpd start
chkconfig httpd on
2.3 挂载ISO源
在虚拟机中选择好CentOS的安装源iso文件后执行以下操作
mkdir /media/CentOS
mount /dev/cdrom /media/CentOS
2.4 复制ISO源到/var/www/html
cp -r /media/CentOS/ /var/www/html/
三、配置DHCP服务
3.1安装DHCP服务
yum -y install dhcp
3.2 修改/etc/dhcp/dhcpd.conf 配置文件,内容如下
ddns-update-style interim;
ignore client-updates;
filename "pxelinux.0";
next-server 192.168.55.101;
allow booting;
allow bootp;
subnet 192.168.55.0 netmask 255.255.255.0 {
option routers 192.168.55.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.55.1 192.168.55.100;
default-lease-time 21600;
max-lease-time 43200;
}
3.3 修改/etc/sysconfig/dhcpd, 绑定DHCP服务到网卡
# Command line options here
DHCPDARGS=eth1
3.4 启动DHCP服务
service dhcpd start
chkconfig dhcpd on
四、配置TFTP
4.1 安装tftp-server
yum -y install tftp-server
4.2 启用tftp 服务
编辑/etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
将disable 设置为no
4.3 启动tftp服务
因为tftp服务是挂载在超级进程xinetd 下的,所以通过启动xinetd 来启动tftp服务。
service xinetd restart
设置开机启动xinetd
chkconfig xinetd on
五、配置PXE程序
5.1 安装syslinux
yum -y install syslinux
说明:syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。
5.2 复制pxelinux.0 文件至/var/lib/tftpboot/ 文件夹中
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
5.3 复制iso 镜像中的/image/pxeboot/initrd.img 和vmlinux 至/var/lib/tftpboot/
cp /var/www/html/CentOS/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/
5.4 复制iso 镜像中的/isolinux/*.msg 至/var/lib/tftpboot/
cp /var/www/html/CentOS/isolinux/*.msg /var/lib/tftpboot/
5.5 在/var/lib/tftpboot/ 中新建一个pxelinux.cfg目录
mkdir /var/lib/tftpboot/pxelinux.cfg
5.6 将iso 镜像中的/isolinux 目录中的isolinux.cfg复制到pxelinux.cfg目录中,同时更改文件名称为default
cp /var/www/html/CentOS/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
chmod 755 /var/lib/tftpboot/pxelinux.cfg/default
5.7 编辑 /var/lib/tftpboot/pxelinux.cfg/default,内容为
#default vesamenu.c32
default linux
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.7!
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 ks=http://192.168.55.101/ks.cfg
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 -
说明:pxelinux.cfg/default是pxelinux的配置文件。Pxelinux会以IP地址的16进制表示来搜索配置文件,如果没找到去除最低一位继续找。如果所有匹配都失败,就使用default文件。
举例来说:192.168.0.15 16进制表示是 C0A8000F.它会搜索下面的配置文件,最先找到的会被使用。
pxelinux.cfg/C0A8000F
pxelinux.cfg/C0A8000
pxelinux.cfg/C0A800
pxelinux.cfg/C0A80
pxelinux.cfg/C0A8
pxelinux.cfg/C0A
pxelinux.cfg/C0
pxelinux.cfg/C
pxelinux.cfg/default
六、配置kickstart参数文件
可以借助system-config-kickstart这个工具生成kicksart的参数文件ks.cfg。我们这里直接贴上最终结果,保存在/var/www/html下:
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url=http://192.168.55.101/CentOS/
#cdrom
# Root password
rootpw password
# System authorization information
auth --useshadow --enablemd5
# Use graphical install
#graphical
text
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone --isUtc Asia/Shanghai
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
key --skip
bootloader --append="rhgb quiet" --location=mbr --driveorder=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --fstype="ext4" --size=4096
part swap --fstype="swap" --size=1024
part /home --fstype="ext4" --size=2048
%packages --nobase
@core
%end
七、测试安装
新建一个新的虚拟机,网络选择之前创建的Host Only新网卡,启动顺序注意要是硬盘第一,网络第二
启动虚拟机,正常情况会自动从DHCP服务器(192.168.56.101)获得IP和预安装系统进行自动安装。自此PXE+Kickstart 无人值守安装操作系统环境搭建完毕。