pxe服务使用nfs和httpd服务配置uefi和legacy模式的pxe

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文件放进去

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值