本例子中使用了CentOS7.6 minimal 系统,并且关闭了防火墙和selinux,并使用了dhcp、tftp、vsftpd服务。
【前言】
workstation 的主机地址为 192.168.182.0/24网段,以下是宿主机的信息:
【正式搭建】
假设PXE服务器是192.168.182.10 ,tftp的根目录在/var/lib/tftpboot下面,以后参数配置,均按此配置。
关闭防火墙和selinux的步骤略。
1、安装DHCP服务
yum -y install dhcp #安装dhcp服务器
vi /etc/dhcp/dhcpd.conf #修改dhcp配置文件
option domain-name "pxe-os.org"; #按你的规划指定一个域名
option domain-name-servers 192.168.182.10; #按你的规划指定一个域名服务器
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.4.0 netmask 255.255.255.0 { #定义一个可供分配的IP地址段
range dynamic-bootp 192.168.182.200 192.168.182.250;
option broadcast-address 192.168.182.255;
option routers 192.168.182.1;
filename "pxelinux.0"; #linux 的pxe引导文件
next-server 192.168.182.10; #指定192.168.182.10为PXE服务器,从这里找PXE启动文件。
}
#编辑完成,启动dhcp服务
systemctl enable dhcpd
systemctl start dhcpd
2、安装tftp服务
yum -y install syslinux xinetd tftp-server #安装tftp所需的组件,tftp的根目录会在:/var/lib/tftpboot目录下。
mkdir /var/lib/tftpboot/pxelinux.cfg #建一个目录放pxe引导脚本
#复制syslinux中引导系统经常用到的几个软件:
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /usr/share/syslinux/memdisk /var/lib/tftpboot/
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
vi /etc/xinetd.d/tftp #修改守护进程中的tftp-server配置文件
disable = no #把disable =yes改为no
#启动tftp服务
systemctl enable xinetd
systemctl start xinetd
3、安装vsftpd服务,这个服务在安装linux系统时使用
yum -y install vsftpd #安装httpd
mkdir -p /var/ftp/pub
5、把ISO文件mount起来,然后把所有文件复制到tftpboot根目录下
【备注】ISO文件可以通过挂载方式进行挂载到虚拟机光驱
cd /mnt
mkdir cdrom
mount -t iso9660 -o loop /dev/cdrom /mnt/cdrom
cp -R * /var/ftp/pub
将启动时需要使用的镜像文件拷贝到目录位置
cp /var/ftp/pub/images/pxeboot/vmlinuz /var/lib/tftpboot/netboot/
cp /var/ftp/pub/images/pxeboot/initrd.img /var/lib/tftpboot/netboot/
6、拷贝配置
cp -v /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
cp -v /usr/share/syslinux/menu.c32 /var/lib/tftpboot
cp -v /usr/share/syslinux/memdisk /var/lib/tftpboot
cp -v /usr/share/syslinux/mboot.c32 /var/lib/tftpboot
cp -v /usr/share/syslinux/chain.c32 /var/lib/tftpboot
7、创建无值守安装ks.cfg文件
创建一个 kickstart,即无人值守安装文件,名字叫 ks.cfg
vim /var/ftp/pub/ks.cfg
其内容如下:
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use NFS installation media
url --url="ftp://192.168.182.10/pub/"
rootpw --plaintext 123456
#root 的密码设为 123456
# Use graphical install
graphical
firstboot disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux disabled
# Installation logging level
logging level=info
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader location=mbr
clearpart --all --initlabel
part swap --asprimary --fstype="swap" --size=1024
part /boot --fstype xfs --size=200
part pv.01 --size=1 --grow
volgroup rootvg01 pv.01
logvol / --fstype xfs --name=lv01 --vgname=rootvg01 --size=1 --grow
%packages
@core
wget
%end
%post
%end
8、创建PXE启动脚本
vi /var/lib/tftpboot/pxelinux.cfg/default ,写入以下内容:
default menu.c32
prompt 0
timeout 30
MENU TITLE Togogo.net Linux Training
LABEL centos7_x64
MENU LABEL CentOS 7 X64
KERNEL /netboot/vmlinuz
APPEND initrd=/netboot/initrd.img inst.repo=ftp://192.168.182.10/pub ks=ftp://192.168.182.10/pub/ks.cfg
【注意】最后这个 APPEND 写成一行,中间不要断行
9、启动所有服务
systemctl enable dhcpd
systemctl enable tftp
systemctl enable vsftpd
将以上服务设为开机自动启动
systemctl restart vsftpd
systemctl restart dhcpd
systemctl restart tftp
重新启动以上服务
【开始测试】
1、新创建虚拟机,设置如下:
2、启动虚拟机,它会自己找到PXE服务器,并通过DHCP服务获得IP地址等信息。
【错误处理】
出现/dev/root does not exist 错误,如下所示:
原因是:内存不够大,设置内存为2g就好了..