使用PXE EFI引導安裝RHEL7.3
Operating System: Red Hat Enterprise Linux Server 7.3 (Maipo)
IPADDR:10.10.0.123
==================
==================
傳統Legacy BIOS和EFI BIOS引導區別:
對于傳統Legacy BIOS,一般使用syslinux提供的pxelinux.0來引導。對于EFI BIOS,需要使用efi文件引導,一般可使用Grub2。為實現UEFI SecureBoot,大多數Linux使用shim.efi嵌套調用grub.efi來引導。
grubx64.efi和shimx64.efi有什么區別呢?在安全啟動(serureboot)關閉的情況下,你可以使用grubx64.efi。如果安全啟動打開則需要選擇shimx64.efi。
傳統Legacy BIOS引導,在pxelinux.0引導后,它會請求并加載server端tftpboot目錄中,與pxelinux.0同目錄下的pxelinux.cfg目錄里的default文件。
Apr 17 21:21:48 localhost in.tftpd[23465]: Client ::ffff:10.10.0.133 finished pxelinux.0
Apr 17 21:21:48 localhost in.tftpd[23476]: Client ::ffff:10.10.0.133 finished pxelinux.cfg/default
Apr 17 21:21:48 localhost in.tftpd[23477]: Client ::ffff:10.10.0.133 finished boot.msg
Apr 17 21:21:48 localhost in.tftpd[23479]: Client ::ffff:10.10.0.133 finished vesamenu.c32
Apr 17 21:21:48 localhost in.tftpd[23480]: Client ::ffff:10.10.0.133 finished pxelinux.cfg/default
Apr 17 21:21:48 localhost in.tftpd[23481]: Client ::ffff:10.10.0.133 finished splash.png
Apr 17 21:21:59 localhost in.tftpd[23482]: Client ::ffff:10.10.0.133 finished vmlinuz
Apr 17 21:22:04 localhost in.tftpd[23483]: Client ::ffff:10.10.0.133 finished initrd.im
EFI BIOS引導,在shim.efi嵌套引導了grubx64.efi之后,它會請求grubx64.efi同目錄下的grub.cfg配置文件(redhat7),同時加載顯示引導菜單。而對于RHEL6來說,它并不支持SecureBoot,所以必須要使用grub-efi 0.97來引導,一般是BOOTX64.efi,同時它會請求同目錄下的efidefault配置文件(redhat6),加載并顯示引導菜單。
RHEL6對EFI支持并不好,所以RHEL6推薦使用Legacy而不是EFI模式來安裝。
--------以下日志為redhat 7.3 uefi 引導日志。
Apr 17 21:16:03 localhost in.tftpd[22088]: Client ::ffff:10.10.0.131 finished uefi/shim.efi
Apr 17 21:16:03 localhost in.tftpd[22089]: Client ::ffff:10.10.0.131 finished uefi/grubx64.efi
Apr 17 21:16:03 localhost in.tftpd[22099]: Client ::ffff:10.10.0.131 finished /uefi/grub.cfg
Apr 17 21:16:03 localhost in.tftpd[22100]: Client ::ffff:10.10.0.131 finished /uefi/grub.cfg
Apr 17 21:16:03 localhost in.tftpd[22105]: Client ::ffff:10.10.0.131 finished /uefi/grub.cfg
Apr 17 21:16:03 localhost in.tftpd[22106]: Client ::ffff:10.10.0.131 finished /uefi/grub.cfg
Apr 17 21:16:03 localhost in.tftpd[22107]: Client ::ffff:10.10.0.131 finished /uefi/grub.cfg
Apr 17 21:16:09 localhost in.tftpd[22108]: Client ::ffff:10.10.0.131 finished images/vmlinuz
Apr 17 21:16:11 localhost in.tftpd[22109]: Client ::ffff:10.10.0.131 finished images/vmlinuz
Apr 17 21:16:16 localhost in.tftpd[22110]: Client ::ffff:10.10.0.131 finished images/initrd.img
=================
1.軟件安裝
yum -y install vsftpd dhcp xinetd* tftp-server
=================
2.準備文件:
BOOTX64.EFI grub.cfg grubx64.efi initrd.img shim.efi vmlinuz
=================
從RHEL7光盤中提取shim.efi和grubx64.efi:
cp /mnt/Packages/shim-0.9-2.el7.x86_64.rpm /tmp
cp /mnt/Packages/grub2-efi-2.02-0.44.el7.x86_64.rpm /tmp
rpm2cpio /tmp/shim-0.9-2.el7.x86_64.rpm | cpio -dimv
rpm2cpio /tmp/grub2-efi-2.02-0.44.el7.x86_64.rpm| cpio -dimv
mkdir -p /var/lib/tftpboot/uefi/
cp /tmp/boot/efi/EFI/redhat/shim.efi /var/lib/tftpboot/uefi/
cp /tmp/boot/efi/EFI/redhat/grubx64.efi /var/lib/tftpboot/uefi/
從RHEL7光盤拷貝內核文件:
cp /mnt/EFI/BOOT/BOOTX64.EFI /var/lib/tftpboot/uefi/
cp /mnt/isolinux/vmlinuz /var/lib/tftpboot/uefi/
cp /mnt/isolinux/initrd.img /var/lib/tftpboot/uefi/
//grubx64.efi和shimx64.efi有什么區別呢?在安全啟動(serureboot)關閉的情況下,你可以使用grubx64.efi。如果安全啟動打開則需要選擇shimx64.efi。
grub.cfg文件配置:
cat >> /var/lib/tftpboot/uefi/grub.cfg <<eof </eof<>
set timeout=5
menuentry 'Install RHEL 7.3 via [UEFI] PXE+Kickstart' {
linuxefi uefi/vmlinuz inst.repo=ftp://10.10.0.123/pub inst.ks=ftp://10.10.0.123/ks.cfg
initrdefi uefi/initrd.img
}
eof
=================
3.DHCP配置
=================
修改配置設定提供DHCP的網卡/etc/sysconfig/dhcpd: (可選)
DHCPDARGS=ens33 //根據實際需求更改!
cat>> /etc/dhcp/dhcpd.conf<<eof </eof<>
option architecture-type code 93 = unsigned integer 16;
subnet 10.10.0.0 netmask 255.255.255.0 {
range 10.10.0.124 10.10.0.254;
option routers 10.10.0.1;
class "pxeclients" {
match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 10.10.0.123;
if option architecture-type = 00:07 or
option architecture-type = 00:09 {
filename "uefi/shim.efi";
} else {
filename "pxelinux.0"; # tftp 目錄下pxelinux的文件名
}
}
}
eof
//RHEL7以支持UEFI SecureBoot。通過TFTP把shim.efi加載后會繼續嵌套加載引導同目錄下的grubx64.efi,然后grub會獲取同目錄下的grub.cfg以顯示引導菜單。
//對于EFI模式下RHEL6 PXE引導,需要dhcpd.conf指定filename "images/BOOTX64.efi",它其實是grub 0.97。通過TFTP加載了BOOTX64.efi之后它會繼續加載同目錄下的efidefault引導配置文件,并顯示引導菜單。
=================
4,ks.cfg文件配置
kickstart文件說明參見:https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-syntax.html
=================
UEFI操作系統安裝分區注意事項:
part /boot/efi --fstype=efi --size=200 #UEFI引導安裝時需要,傳統LEGACY引導時可屏蔽此選項
part /boot --fstype="ext4" --size=500 --ondisk=sda
part pv.01 --grow --size=20000 --ondisk=sda
volgroup rootvg pv.01
logvol / --fstype="ext4" --size=10240 --name=root --vgname=rootvg
logvol swap --fstype="swap" --size=1024 --name=swap --vgname=rootvg
//安裝完成系統,默認分區磁盤類型為GPT。
參考:
http://hmli.ustc.edu.cn/doc/linux/centos-autoinstall.htm
http://blog.sina.com.cn/s/blog_5f2e119b0102x6dd.html