美文网首页
基于Cetnstos7.6的pxe安装 ---UEFI引导模式

基于Cetnstos7.6的pxe安装 ---UEFI引导模式

作者: 疯疯疯子子子 | 来源:发表于2019-07-22 18:43 被阅读0次

    公司最近新购一批服务器,要求安装centos7.6操作系统。由于最新的服务器BIOS中系统引导方式为UEFI并非传统的legacy模式。由于服务器台数过多,出厂时未和服务器厂商说明。故决定研究下pxe安装 --UEFI引导模式

    首先UEFI引导方式启动导致centos的启动方式发生了改变其启动流程为

    
    POST -> 镜像的EFI/BOOT/grub.cfg -> load 镜像里的内核/images/pxeboot/vmlinuz和加载/images/pxeboot/initrd.img -> 安装界面
    
    

    故原来在legacy引导方式中的pxelinux.cfg/下的default文件。系统是不会去读写的。也是不认可的。并且dhcp中filenam的文件也不再是pxelinux.0而是BOOTX64.EFI

    于是通过挂载centos7的镜像,我们可以看到 镜像中的EFI/BOOT/下 有我们所需的一系列文件 {BOOTX64.EFI,grub.cfg} 。因此我们可以开始安装研究了

    首先安装httpd tftp-server dhcp syslinux 这四个服务
    首先对dhcp服务进行相关配置

    cat >>/etc/dhcp/dhcpd.conf<<EOF 
    subnet 172.16.1.0 netmask 255.255.255.0 { ## 指定网段 range 172.16.1.100 172.16.1.199; ## 地址范围
    option subnet-mask 255.255.255.0; ## 分配的掩码 
    default-lease-time 21600; ## 地址租约 
    max-lease-time 43200; ## 最大租约 
    next-server 172.16.1.201; ## 下一步找什么 (本机地址) 
    filename "/BOOTX64.EFI";  ## 要下载的文件(请求下载启动文件) } 
    EOF
    
    

    挂载光盘并且已http的方式对外提供下载连接
    从光盘的isolinux目录下的文件拷贝至/var/lib/tftpd/下
    并将/EFI/BOOT/下的BOOTX64.EFI及group.cfg文件拷贝至 /var/lib/tftpd 目录下
    cp /var/www/html/centos7.6/isolinux/* /var/lib/tftpd
    cp /var/www/html/centos7.6/EFI/BOOT/{BOOTX64.EFI,group.cfg} /var/lib/tftpd

    首先我们来看下官网的group,cfg文件

    set default="1"
    
    function load_video {
      insmod efi_gop
      insmod efi_uga
      insmod video_bochs
      insmod video_cirrus
      insmod all_video
    }
    
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_gpt
    insmod ext2
    
    set timeout=60 ###表示引导界面等待时常 默认60秒
    ### END /etc/grub.d/00_header ###
    
    search --no-floppy --set=root -l 'CentOS 7 x86_64'
    
    ### BEGIN /etc/grub.d/10_linux ###
    menuentry 'Install CentOS 7' --class fedora --class gnu-linux --class gnu --class os {
        linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
        initrdefi /images/pxeboot/initrd.img
    }
    menuentry 'Test this media & install CentOS 7' --class fedora --class gnu-linux --class gnu --class os {
        linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
        initrdefi /images/pxeboot/initrd.img
    }
    submenu 'Troubleshooting -->' {
        menuentry 'Install CentOS 7 in basic graphics mode' --class fedora --class gnu-linux --class gnu --class os {
            linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 xdriver=vesa nomodeset quiet
            initrdefi /images/pxeboot/initrd.img
        }
        menuentry 'Rescue a CentOS system' --class fedora --class gnu-linux --class gnu --class os {
            linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rescue quiet
            initrdefi /images/pxeboot/initrd.img
        }
    }
    
    

    里面的inst.stage2=hd:LABEL=CentOS\x207\x20x86_64是指向带label的hard disk,这里需要修改为url,这里我改为

    set default="1"
    
    function load_video {
      insmod efi_gop
      insmod efi_uga
      insmod video_bochs
      insmod video_cirrus
      insmod all_video
    }
    
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_gpt
    insmod ext2
    
    set timeout=5 ###表示引导界面等待时常 默认60秒
    ### END /etc/grub.d/00_header ###
    
    search --no-floppy --set=root -l 'CentOS 7 x86_64'
    
    ### BEGIN /etc/grub.d/10_linux ###
    menuentry 'Install CentOS 7' --class fedora --class gnu-linux --class gnu --class os {
        linuxefi vmlinuz inst.repo=http://192.168.39.100/centos7.6 ks=http://192.168.39.100/ks/ks.cfg quiet
        initrdefi initrd.img
    }
    

    这里没有去指定哪个网口去获取相关的ks信息。因为在centos7引导中,引导程序会将所有网口retry一遍。指定了也可以,但是还是会所有端口检查一遍。故没有用。

    最后重启 httpd tftpd 以及dpch服务即可。
    ks文件沿用老的ks文件即可。这里不再复述

    相关文章

      网友评论

          本文标题:基于Cetnstos7.6的pxe安装 ---UEFI引导模式

          本文链接:https://www.haomeiwen.com/subject/hccglctx.html