Linux PXE启动逻辑中,如何实现从网络加载内核和初始化ramdisk的详细过程?

摘要:BIOS 模式: bios pxe client ———> PXE SERVER(DHCP server + TFTP server)———> DHCP OFFER &#
BIOS 模式: bios pxe client ———> PXE SERVER(DHCP server + TFTP server)———> DHCP OFFER + next-server 地址 ———> TFTP-SERVER ———> /var/lib/tftpboot/pxelinux/pxelinux.0 UEFI 模式: uefi pxe client ———> PXE SERVER(DHCP server + TFTP server)———> DHCP OFFER + next-server 地址 ———> TFTP-SERVER ———> /var/lib/tftpboot/uefi/grubx64.efi pxelinux.0 找启动项的顺序逻辑: pxelinux.0 按照顺序搜索 pxelinux/pxelinux.cfg 目录下的如下文件名的启动菜单文件: tftpboot/pxelinux/pxelinux.cfg/564d6e48-8ec9-59bb-162a-a4e4470a4a11 tftpboot/pxelinux/pxelinux.cfg/01-00-0c-29-0a-4a-11 tftpboot/pxelinux/pxelinux.cfg/0A0A0A14 0A0A0A 代表10.10.10;14 是 ip 地址最后一位20的16进制值 tftpboot/pxelinux/pxelinux.cfg/0A0A0A1 tftpboot/pxelinux/pxelinux.cfg/0A0A0A tftpboot/pxelinux/pxelinux.cfg/0A0A0 tftpboot/pxelinux/pxelinux.cfg/0A0A tftpboot/pxelinux/pxelinux.cfg/0A0 tftpboot/pxelinux/pxelinux.cfg/0A tftpboot/pxelinux/pxelinux.cfg/0 tftpboot/pxelinux/pxelinux.cfg/default grubx64.efi 找启动项的顺序逻辑: grubx64.efi 按照顺序搜索 uefi/grubx64.efi 目录下的如下文件名的启动菜单文件: tftpboot/uefi/grub.cfg-01-00-0c-29-4e-34-16 tftpboot/uefi/grub.cfg-0A0A0A15 0A0A0A 代表10.10.10;15 是 ip 地址最后一位的16进制值 tftpboot/uefi/grub.cfg-0A0A0A1 tftpboot/uefi/grub.cfg-0A0A0A tftpboot/uefi/grub.cfg-0A0A0 tftpboot/uefi/grub.cfg-0A0A tftpboot/uefi/grub.cfg-0A0 tftpboot/uefi/grub.cfg-0A tftpboot/uefi/grub.cfg-0 tftpboot/uefi/grub.cfg 然后根据加载到的启动 menu 内容中的启动 label ; 加载内核 vmlinuz 与 initrd 文件; 然后就是正式启动加载对应 label 启动项的 root 文件系统了