因为工作过程中需要装机的机器比较多,所以想搭建一个PXE的服务来简化平时的工作量。在这期间也踩到很多坑。足足花了我一个星期的时间才给搭建好。所以写个文章记录一下。
搭建PXE服务所用到的服务
我所用到的是服务是:DHCP+TFTP+HTTP
DHCP(未pxe客户端分配地址)
TFTP(给pxe客户端提供下载的文件)
HTTP(给pxe客户端提供镜像)
1.挂载yum源,配置yum仓库
mkdir /mnt/mount #创建挂载的地址 mount /dev/cdrom /mnt/mount/ #挂载镜像 配置yum仓库 cat > /etc/yum.repos.d/pxe.repo << EOF > [development] #仓库的名字必须是这个命令,否在在编写ks.cfg 脚本时。系统是识别不到软件包的 > name = pxe > baseurl = file:///mnt/mount > enabled = 1 > gpgcheck = 0 > EOF yum clean all #清楚yum仓库缓存 yum makecache #加载yum仓库缓存
2.安装dhcp服务
yum install dhcp -y #安装dhcp服务 systemctl enable dhcpd #将dhcp服务设为开机自启 systemctl start dhcpd #启动dhcp服务 编辑dhcp的配置文件 ddns-update-style interim; ignore client-updates; option space pxelinux; option pxelinux.magic code 208 = string; option pxelinux.configfile code 209 = text; option pxelinux.pathprefix code 210 = text; option pxelinux.reboottime code 211 = unsigned integer 32; option architecture-type code 93 = unsigned integer 16; subnet 192.168.1.0 netmask 255.255.255.0 { #dhcp分配的网段 range 192.168.1.100 192.168.1.200; #dhcp服务器可分配的ip地址 option routers 192.168.1.254; #dhcp的网关地址 default-lease-time 21600; max-lease-time43200; class "pxeclients" { match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; next-server 192.168.1.20; #tftp服务器的地址(我这里指的是本机的地址) filename = "uefi/bootx64.efi"; #pxe UEFI启动时下载的引导文件 } } systemctl restart dhcpd #配置完之后重启dhcp服务 systemctl status dhcpd :查看服务状态是否起来
#filename 这里需要好好说一下,我当时就是在这里栽的跟头。
服务器bios的启动模式时分为两种的,一种是传统的启动模式:“legacy” 在一些老的服务器中是使用这个作为默认的启动的模式的。另一种是“uefi”的启动方式,现在绝大部分服务器的启动方式都是uefi的。
不同的启动方式需要下载的启动文件是不同的,legacy的启动方式需要下载的文件是 “pxelinux.0” 由这个软件包提供“syslinux”。UEFI的启动方式需要下载的文件就是我所写的这个“bootx64.efi” 这个文件是自己手动生成的,我后面会说到这个文件怎么生成的。 我这里主要讲的是UEFI的启动方式,legacy的就不多说了,需要的同学可以看一下这篇文章:https://blog.csdn.net/qq_42130112/article/details/104960479
3.安装http服务,后续提供镜像地址
yum install httpd -y #安装httpd服务 systemctl enable httpd systemctl start httpd mkdir /var/www/html/dvd #创建挂载镜像的目录 umount /mnt/mount #将之前挂载的镜像卸载掉,重新挂载 mount /dev/cdrom /var/www/html/dvd #重新挂载镜像 systemctl restart httpd #重启httpd 服务 cat > /etc/yum.repos.d/pxe.repo << EOF #重新配置yum仓库 > [development] #名字还是不能变地 > name = pxe > baseurl = http://192.168.1.20/dvd #将原本的file 改为http > enabled = 1 > gpgcheck = 0 > EOF yum clean all #清楚yum仓库缓存 yum makecache #加载yum仓库缓存
3.安装tftp服务
yum install tftp-server #安装tftp服务 systemctl enabled tftp #启动tftp服务 systemctl start tftp #启动tfto服务 systemctl status tftp #查看tftp服务的状态是否起来
4.拷贝所需的文件到tftp目录下
tftp的默认的下载目录在cd /var/lib/tftpboot/下。
因为我们之前dhcpd的配置文件 filename 这个配置中写到,启动文件是在 uefi/bootx64.efi
所以我们需要在/var/lib/tftpboot目录下新建一个名为uefi的目录,并把启动文件放在该目录下。
mkdir /var/lib/tftpboot/uefi #创建新文件夹 cp /var/www/html/dvd/isolinux/{vmlinuz,initrd.img} /var/lib/tftp/uefi #vmlinuz pxe启动时用到的内核,initrd.img pxe启动时用到的镜像。复制到uefi目录下。 cp /boot/efi/EFI/redhat/*.efi /var/lib/tftpboot/uefi/ #将PXE启动时需要的文件拷到uefi目录下。(有些文件在加载时其实时不需要的,图方便就一起复制过来了)
5.生成bootx64.efi文件
现在就差bootx64.efi 这个文件了,我们现在来生成他。
生成这个文件需要先安装一个软件包。
yum install -y grub2-efi-modules #安装所需的软件包
[root@localhost ~]# grub2-mkstandalone -d /usr/lib/grub/x86_64-efi/ -O x86_64-efi –modules="tftp net efinet linux part_gpt efifwsetup" -o bootx64.efi #执行这条命令就会在当前目录下生成bootx64.efi 这个文件
cp bootx64.efi /var/lib/tftpboot/uefi #将bootx64文件拷进uefi目录中
6.生成grub.cfg文件
grub.cfg 文件是你进入系统时,选择系统的那个导航栏。这个文件可以自己手动写,也可以从镜像中复制过来更改。 cat /var/lib/tftpboot/uefi/grub.cfg #还是要在uefi目录下 set default="0" function load_video { insmod efi_gop insmod efi_uga insmod video_bochs insmod video_cirrus insmod all_video } load_video set gfxpayload=keep insmod net insmod efinet insmod tftp insmod gzio insmod part_gpt insmod ext2 set timeout=60 #等待手动选择的时间 menuentry 'Install UEFI CentOS Linux 7' --class fedora --class gnu-linux --class gnu --class os { linuxefi (tftp)/uefi/vmlinuz ip=dhcp inst.repo=http://192.168.1.20/dvd initrdefi (tftp)/uefi/initrd.img } # (tftp)/uefi/vmlinuz :PXE启动时内核文件的地址,前面要加(tftp)照着我的格式写 # inst.repo=http://192.168.1.20/dvd :指定镜像的挂载地址 # (tftp)/uefi/initrd.img :PXE启动时镜像文件的地址,前面也要加(tftp)
7.关掉防火墙和selinux
systemctl stop firewalld.service #关闭防火墙 systemctl mask firewalld.service #不让防火墙被其他服务带活 setenforce 0 #关闭selinux getenforce #查看selinux状态。为Permissive着放行。这样改只是临时生效,如果想永久生效建议修改/etc/selinux/config Permissive
现在就可以开始测试了,虚拟就如果要模拟uefi启动模式需要修改配置文件
右击虚拟机选择“打开虚拟机目录”,找到一个以*.vmx结尾的文件,进去添加一行参数
保存退出即可
新建虚拟机开始测试:
成功进入到选择系统界面,pxe搭建成功。
原文链接:https://blog.csdn.net/Kill_erode/article/details/129041631?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168449620216800192241364%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=168449620216800192241364&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-1-129041631-null-null.blog_rank_default&utm_term=NAS%E3%80%81%E7%BE%A4%E6%99%96%E3%80%81%E9%98%BF%E9%87%8C%E4%BA%91%E3%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E3%80%81%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E3%80%81ipv6%E3%80%81ddns%E3%80%81%E8%BD%BB%E9%87%8F%E7%BA%A7%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E9%93%81%E5%A8%81%E9%A9%AC%E3%80%81%E5%A8%81%E8%81%94%E9%80%9A%E3%80%81DSM%E3%80%81DSM6.0%E3%80%81%E7%BE%A4%E6%99%96nas%E3%80%81%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85%E3%80%81%E9%BB%91%E7%BE%A4%E6%99%96%E3%80%81docker%E3%80%81%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E3%80%81%E5%9F%9F%E5%90%8D%E6%B3%A8%E5%86%8C%E3%80%81%E5%AE%9D%E5%A1%94%E3%80%81%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E3%80%81nginx%E3%80%81frp%E3%80%81%E5%8A%A8%E6%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90