1、所需软件套件
(1)OS:redhat 7.4镜像文件
(2)DHCP服务器
(3)TFTP server服务器
(4)NFS服务搭建
注意:
~redhat 7.4默认开启防火墙,导致装OS的服务器PXE无法引导
~通过步骤3中配置服务,第四步中,可以选httpd或者nfs都可以使用,但是ubuntu系统的镜像为live表示代表只能线上安装,所以只能用httpd服务安装
~注意Ubuntu系统的vmlinuz和initrd.img文件命名
~CY(长杨系统)在grub.cfg配置文件夹中配置不能为镜像路径,需要在共享文件夹中创建文件夹,然后将镜像内容复制到文件夹中
2、通过YUM安装所需软件
2.1搭建yum服务器
安装好redhat7.4后,通过配置yum 服务可以很容易安装以上套件
配置yum服务只需要编辑/etc/yum.repos.d/xxx.repo文件,配置步骤如下:
(1)挂载安装光盘
mount /dev/cdrom /mnt
(2)编辑/etc/yum.repos.d/xxx.repo文件
用编辑器打开/etc/yum.repos.d/xxx.repo文件,把如下内容复制进去
[cdrom]
name=cdrom
baseurl=file:///mnt/
enabled=1
gpgcheck=0
(3)保存退出后,执行yum repolist all
2.2通过YUM安装软件
(1)安装DHCP服务器软件
yum install dhcp
(2)安装tftp服务及其xinetd服务
yum install tftp xinetd tftp-server
(3)安装nfs服务(或者http服务)
yum install nfs-utils rpcbind (http)
3、配置各个服务
3.1 配置DHCP服务器
3.1.1 配置业务网口固定IP,这个网口作为PXE服务网口,pxe文件和dhcp都是走这个网口出去
如果是eth0,则编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件
该文件内容为加入以下内容
DEVICE=eth0
BOOTPROTO=none(需要改)
NM_CONTROLLED=no:
ONBOOT=yes
TYPE=Ethernet
IPADDR=9.43.3.1(需要改)
NETMASK=255.255.0.0(需要改)
GATEWAY=9.43.0.1(需要改)
IPV6INIT=no
USERCTL=no
保存退出后用命令systemctl restart network重启网络。
3.1.2 编辑dhcp配置文件 /etc/dhcp/dhcpd.conf
(1 ARM机器或者x86单UEFI可以如下配置,在该文件中加入如下内容(指定主机启动文件中是tftp服务指定的文件夹,下面需要在/var/lib/tftpboot/文件夹创建uefi文件夹)
ddns-update-style none;
ignore client-updates; #忽略客户端更新此参数只在服务器端使用
#定义作用域指定子网网络号必须与DHCP服务器网络号相同
subnet 9.43.0.0 netmask 255.255.0.0 { #注意9.43.0.0,不是指定的主机ip
option routers 9.43.0.1;
option subnet-mask 255.255.0.0;
option domain-name-servers 9.43.3.1;
range dynamic-bootp 9.43.3.100 9.43.200.250; #指定动态IP地址范围
filename "uefi/shim.efi"; #指定了主机启动文件
default-lease-time 359200;
max-lease-time 800000; #指DHCP client端的地址租借期限
next-server 9.43.3.1; #指定主机启动文件从哪个地址的服务器上获取
log-facility local4; #分离dhcp服务日志
}
(2 x86同时配置UEFI和Legacy模式的dhcpd文件配置如下:(指定主机启动文件中是tftp服务指定的文件夹,下面需要在/var/lib/tftpboot/文件夹创建uefi和pxelinux文件夹)
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
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 9.43.0.0 netmask 255.255.0.0 {
option routers 9.43.0.1;
range 9.43.3.100 9.43.200.250;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 9.43.3.1;
if option architecture-type = 00:07 {
filename "uefi/shim.efi";
} else {
filename "pxelinux/pxelinux.0";
}
}
}
保存退出后用命令systemctl restart dhcpd,检查下是否能够启动服务。
用命令chkconfig dhcpd on,开机启动dhcp服务
将DHCP服务的日志信息从系统的日志服务中分离
• vi /etc/rsyslog.conf 修改日志服务的主配置文件为如下所示:
*.info;mail.none;authpriv.none;cron.none;local4.none /var/log/messages
local4.* /var/log/dhcp.log
• 文件/var/log/dhcp.log会自动生成
3.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/ -u nobody #tftp根目录
disable = no #将yes改成no是启用
per_source =11
cps =100 2
flags = IPv4
}
修改/etc/sysconfig/selinux文件
SELINUX=disabled (系统默认是enforcing,要改成disabled)
设置tftp服务开机启动chkconfig tftp on,然后执行/etc/init.d/xinetd restart 启动。
注: 更改tftp服务根目录,如果在/etc/xinetd.d/tftp配置文件更改无效,
可以在/usr/lib/systemd/system/tftp.service文件修改,systemctl daemon-reload启用配置 (修改的内容为tftp的根目录)
3.3 配置共享文件夹(安装源)
(1)配置NFS服务
安装好NFS后要启动相关软件,需要启动服务
chkconfig nfs on
chkconfig rpcbind on
配置NFS只涉及一个文件/etc/exports,在里面添加要共享的目录及其一些相关设置
我们需要共享/redhat目录可以在exports文件添加如下内容
/redhat/ *(root_squash,crossmnt)
编辑好该文件后要重新启动NFS服务命令如下:service nfs restart
验证nfs是否成功共享文件:
showmount –e localhost 如果有如下输出则NFS成功共享文件
[root@wurenzhishou ~]# showmount -e localhost
Export list for localhost:
/redhat *
[root@wurenzhishou ~]#
(2)配置httpd服务
安装好httpd服务后
[root@localhost ~]# yum install -y httpd
# 启动HTTP服务
[root@localhost ~]# systemctl start httpd
# 设置开机启动
[root@localhost ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
# 系统通过网络安装时需要指定安装源,这里使用HTTP服务提供安装源
# 将ISO文件挂载后复制到/var/www/html目录即可
[root@localhost ~]# mount -o loop,ro -t iso9660 CentOS-7-x86_64-DVD-1810.iso /media
# cdrom光盘挂载(根据自己的情况二选一)
[root@localhost ~]# mount /dev/cdrom /media
[root@localhost ~]# cp -r /media /var/www/html/centos7.6
备注:修改httpd服务默认文件夹路径,修改/etc/httpd/conf/httpd.conf文件,将里面的DocumentRoot “/var/www/html”修改为想要修改的路径,如/redhat,再修改<Directory “/var/www/html”>改为想要的路径,重启httpd服务即可
httpd -t查看状态,如果有AH00558报错,修改/etc/httpd/conf/httpd.conf文件的第95行取消注释,改为ServerName localhost:80
4 、配置支持PXE启动
4.1 挂载安装源(nfs方法配置)
创建共享目录/redhat
mkdir /redhat
挂载redhat7.4的安装源iso到/mnt/目录。
光驱挂载方式:mount /dev/sr0 /mnt/
之后把整个镜像放到/redhel/目录下
4.2 配置uefi 启动和legacy启动设置
(1)进入在tftpboot目录下创建一个uefi目录,上述步骤已经提及
cd /var/lib/tftpboot/
mkdir -p uefi(UEFI模式) pxelinux/pxelinux.0(Legacy模式)
(2)解压shim文件并拷贝shim.ufi启动文件到/vat/lib/tftpboot/uefi目录下。
cp /mnt/Packages/shim-x64-12-1.el7.centos.x86_64.rpm /tmp/
cp /mnt/Packages/grub2-efi-x64-2.02-0.76.el7.centos.x86_64.rpm /tmp/
cd /tmp
rpm2cpio shim-x64-12-1.el7.aarch64.rpm |cpio -idmv
rpm2cpio grub2-efi-x64-2.02-0.76.el7.centos.x86_64.rpm |cpio -idmv
cp /tmp/boot/efi/EFI/redhat/shim.efi /var/lib/tftpboot/uefi/(UEFI模式)
cp /tmp/boot/efi/EFI/redhat/grubx64.efi /var/lib/tftpboot/uefi/(UEFI模式)
cp /tmp/boot/efi/EFI/redhat/shim.efi /var/lib/tftpboot/pxelinux/ (Legacy模式)
cp /tmp/boot/efi/EFI/redhat/grubx64.efi /var/lib/tftpboot/pxelinux/ (Legacy模式)
(3)拷贝安装源中的相应文件到/var/lib/tftpboot/uefi/目录下。
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/uefi/
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/uefi/
(4.1)UEFI创建grub.cfg引导文件。(注意中文空格和中文字符)
cd /var/lib/tftpboot/uefi/
vi grub.cfg
(编辑内容如下)
set timeout=60
menuentry 'REDHAT 7' {
linuxefi uefi/vmlinuz ip=dhcp inst.repo=nfs:9.43.3.1:/redhat/rhel-server-7.9-x86_64-dvd.iso
inst.resolution=1024x768
initrdefi uefi/initrd.img
}
备注:inst.repo 为安装源路径,inst.resolution设置分辨率,ip=dhcp设置dhcp动态IP。
如果后续需要配置别的系统,可以如下配置
menuentry 'centos 7.8' {
linuxefi uefi/centos7.8/vmlinuz ip=dhcp inst.repo=nfs:9.43.3.1:/redhat/CentOS-7-x86_64-Everything-2003.iso
inst.resolution=1024x768
initrdefi uefi/centosl7.8/initrd.img
在uefi文件夹中创建对应文件夹即可
(4.2)LEGACY创建default引导文件。(注意中文空格和中文字符)
cd /var/lib/tftpboot/pxelinux/pxelinux.cfg/
vi default
(编辑内容如下)
default linux
prompt 1
timeout 600
label rhel7.9
menu label ^Install system
kernel rhel7.9/vmlinuz
append initrd=rhel7.9/initrd.img ip=dhcp inst.repo=nfs:9.43.3.1:/redhat/rhel-server-7.9-x86_64-dvd.iso
执行下面两个命令查看有这些文件
[root@localhost ~]# tree /var/lib/tftpboot/uefi/
• /var/lib/tftpboot/uefi/
• ├── grub.cfg
• ├── grubx64.efi
• ├── initrd.img
• ├── shim.efi
• └── vmlinuz
[root@localhost ~]# tree /var/lib/tftpboot/pxelinux/
• /var/lib/tftpboot/pxelinux/
• ├── initrd.img
• ├── pxelinux.0
• ├── pxelinux.cfg
• │ └── default
• └── vmlinuz
最后在个文件夹中执行命令chmod 777 *
至此PXE搭建完成。
后续添加系统到PXE服务器中:
1、nfs只需要把镜像放在/redhat/文件夹中,httpd需要把镜像放在/var/www/html/文件夹中(默认没有修改路径的情况下)
2、修改grub.cfg和pxelinux.cfg/default文件
3、在uefi文件夹中和pxelinux文件夹中创建对应系统名文件夹,将OS的vmlinuz和initrd.img文件放进去