公司最近新购一批服务器,要求安装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文件即可。这里不再复述
网友评论