说明:
本文主要主要基于centos7 desktop虚拟机操作系统作为ipxe服务器,对ipxe如何使用pxe的方式来无盘启动Linux
========================================================================================================================================
所研究的服务(具体方案研讨):
服务器端:
iPXE: 整个无盘启动的核心
DHCP: 为客户端分配IP
NFS-utils: 网络文件系统,可供Client挂载,存储文件等(方案之一)
TFTP: Tiny FTP, 传送PXE Menu, Kernel, Initrd等文件(方案之一)
Nginx: http服务器,用来配置启动文件(方案之一)
========================================================================================================================================
对于服务器和客户机系统的制作均参看《 PXE的学习》章节(https://blog.csdn.net/hubbybob1/article/details/88319103),
只是DHCP的配置参考《ipxe的构架与学习》的章节,在此只记录脚本的编写和使用
1.ipxe的嵌入脚本的编译
pxeboot.ipxe如下:
#!ipxe
dhcp
echo Booting boot.oskarcz.net for ${hostname}
set 210:string http://192.168.56.181/download/
set 209:string pxelinux.cfg/default
set 208:hex f1:00:74:7e
set filename ${210:string}pxelinux.0
chain ${filename} ||
echo Booting ${filename} failed, dropping to shell
shell
编译:
make bin/undionly.kpxe EMBED=pxeboot.ipxe
将编译好的undionly.kpxe放到nginx的配置目录/var/www/download下(关于nginx的http服务器的配置网上很多,我不在详细解说,不懂的可以随时提问),并将事先准备好的pxelinux.cfg目录和pxelinux.0以及centos和ubuntu的vmlinuz和initrd均放到/var/www/download下,
因此在nginx服务器目录/var/www/download下的基本文件如下:
download -------------------- 此路径为/var/www/download
|____pxelinux.cfg
| |____default -------- 默认的PXE启动配置文件
|
|____pxelinux.0 -----------------PXE启动引导文件
|
|___vmlinuz-centos -----------------xxx型号机器的客户端linux kernel文件
|
|___initrd-centos.img ------------ xxx型号机器的客户端linux 启动镜像文件
|
|___vmlinuz-ubuntu -----------------xxx型号机器的客户端linux kernel文件
|
|___initrd-ubuntu.img ------------ xxx型号机器的客户端linux 启动镜像文件
有了以上文件就可以正常启动了,当然还有其他的相关文件,如下图所示:
同样default的文件的编写如下:
default vesamenu.c32
display boot.msg
timeout 600
prompt 1
menu background splash.jpg
label centos-7
linux http://192.168.56.181/download/vmlinuz-centos
append initrd=http://192.168.56.181/download/initrd-centos.img root=nfs:192.168.56.181:/diskless/centos selinux=0 ip=dhcp rw vga=0x314
label ubuntu-16
kernel vmlinuz-ubuntu
append initrd=initrd-ubuntu.img root=/dev/nfs nfsroot=192.168.56.181:/diskless/ubuntu selinux=0 ip=dhcp rw vga=0x314
对比Ubuntu和centos可以看到在linux内核(linux/kernel)和镜像initrd处可以使用http的网址,也可以不使用,会直接在http服务器上找到他们
最后将制作好的根目录放到NFS服务器的目录下,这个initrd.img和根目录的制作参看《PXE的学习》中的方法
参考网址:
https://blog.51cto.com/jerkou/2339308
http://www.ipcpu.com/2016/05/ipxe-usage/