2019年10月16日上午,我们开始了第三天的实训周练习,今天的实训周练习是在CentOS上安装PXE服务器,PXE分为服务器,客户两个模式,PXE客户作为访问对象,可以通过网络连接到PXE服务器上,提供出小型的终端工作模式,在这一次任务里,我们需要完成的任务分为5个部分,第一个是安装dhcp、tftp、vsftpd服务器等软件;第二个为设置ip地址,ip地址为192.168.1.1;第三哥为关闭防火墙等(SELinux、firewalld);第四个为配置dhcpd、tftp;第五个为将CentOS 7映像文件部署到FTP服务器的输入目录中。具体的操作步骤如下:
首先第一步,我们要先对其虚拟机能否上网进行测试,紧接着更新yum仓库源,使其更新到最新版。yum repolist
再接下来对虚拟机进行安装dhcpd、tftp、syslinux、wget和vsftpd
yum install -y dhcp tftp tftp-server syslinux wget vsftpd
等它安装完毕后,将关闭SELinux和防火墙,在这一步细节里我没有做好,导致在最后测试的时候出现问题,后面重新修改了。(手动修改/etc/selinux/config,确保SELINUX=permissive)为该步骤具体
setenforce 0
systemctl disable firewalld
systemctl stop firewalld
poweroff
在将SElinux 防火墙关闭后,我们将虚拟机的网络适配器设置为vmnet2模式,在虚拟网络编辑器中,添加vmnet2,去掉勾选,即不允许本地的dhcp服务器分配ip,设置ip地址为192.168.1.0/24 255.255.255.0,使网络配置到该虚拟机里,这时候我们已经不需要上网了,随机将虚拟机的ip进行修改设置
nmcli con show
nmcli con modi ens33 ipv4.method manual ipv4.addresses 192.168.1.1/24
nmcli con up ens33
nmcli con show
因我的网卡接口id为end33,所以上方可以将它设置为192.168.1.1
后边的操作步骤为配置dncp服务器,tftp服务器,为tftp设置服务器启动文件,创建路径等等,操作如图
vim /etc/dhcp/dhcpd.conf
确保配置文件内容如下:
ddns-update-style interim;
ignore client-updates;
authoritative;
allow booting;
allow bootp;
allow unknown-clients;
A slightly different configuration for an internal subnet.
subnet 192.168.1.0 netmask 255.255.255.0
{
range 192.168.1.2 192.168.1.253;
option domain-name-servers 192.168.1.1;
option domain-name “server1.example.com”;
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
PXE SERVER IP
next-server 192.168.1.1; # DHCP server ip
filename “pxelinux.0”;
}
tftp服务器配置
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
将tftp服务器位置挪至另外一个路径中
vim /usr/lib/systemd/system/tftp.service
将ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot
修改为:ExecStart=/usr/sbin/in.tftpd -s /tftpboot
为tftp设置一个路径
mkdir /tftpboot
chmod 777 /tftpboot
复制
cp -v /usr/share/syslinux/pxelinux.0 /tftpboot
cp -v /usr/share/syslinux/menu.c32 /tftpboot
cp -v /usr/share/syslinux/memdisk /tftpboot
cp -v /usr/share/syslinux/mboot.c32 /tftpboot
cp -v /usr/share/syslinux/chain.c32 /tftpboot
再次创建
mkdir /tftpboot/pxelinux.cfg
mkdir /tftpboot/netboot/
随即在右下角的光盘图标,点击连接到主机,并用lsblk查看光盘挂载路径,
mkdir -p /var/ftp/pub
cp -r /run/media/roott/CentOS 7\ x86_64/* /var/ftp/pub
而后则是将启动时的镜像拷贝至目录位置
cp /var/ftp/pub/images/pxeboot/vmlinuz /tftpboot/netboot/
cp /var/ftp/pub/images/pxeboot/initrd.img /tftpboot/netboot/
创建一个无人值守,也就类似于安装文件,名字为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.1.1/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
保存之后利用ksvalidator查看是否语法错误
ksvalidator /var/ftp/pub/ks.cfg
创建一个pxe菜单,配置内容
vim /tftpboot/pxelinux.cfg/default
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.1.1/pub ks=ftp://192.168.1.1/pub/ks.cfg
最后一步,将dncpd tftp vsftpd服务全部设置为开机自动启动,并重启以上服务
systemctl enable dhcpd
systemctl enable tftp
systemctl enable vsftpd
systemctl restart vsftpd
systemctl restart dhcpd
systemctl restart tftp
在测试阶段,因为前期防火墙的错误,所以导致错了点小差错,最后在老师的指导下,成功进入到界面。
重新创建一台新的虚拟机,充当pxe客户机,并将其网络设置为vmnet2,随机启动,会发现他显示出pxe服务器的ip地址以及它获取pxe服务器的ip段。同时在加载后将一个小型的终端工作模式呈现出来。
在今天这节课里面,我将总结我在任务的过程中所出现的错误,并重新梳理知识点,将老师所讲的牢记在心里,成为我自己的知识库。