ipxe下使用pxe的启动方式

说明:

本文主要主要基于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 启动镜像文件

有了以上文件就可以正常启动了,当然还有其他的相关文件,如下图所示:

ipxe下使用pxe的启动方式_第1张图片

同样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/

你可能感兴趣的:(unix编程杂谈)