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 启动镜像文件

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

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

iPXE是一种网络引导程序,可以通过网络启动计算机。在使用iPXE无盘启动CentOS7时,需要以下几个步骤: 1. 准备安装镜像和内核文件:在安装CentOS7时需要先下载CentOS7的ISO镜像和内核文件,这些文件需要放到TFTP服务器上。你可以使用FTP或HTTP服务器来提供这些文件。 2. 设置DHCP服务器:在网络启动时,需要将IP地址和其他信息分配给计算机。这可以通过DHCP服务器完成。你需要配置DHCP服务器以便将计算机的IP地址和iPXE文件的位置发送给计算机。 3. 配置TFTP服务器:TFTP服务器用于存储iPXE文件和CentOS7镜像。你需要将这些文件放到TFTP根目录下,并且确保TFTP服务器对其它计算机可见。 4. 编写iPXE启动脚本:iPXE启动脚本是一个文本文件,包含了用于启动CentOS7的命令和选项。你需要根据你的网络环境和CentOS7的安装方式编写自己的脚本。 以下是一个示例iPXE启动脚本: ``` #!ipxe set base-url http://your.tftp.server.ip/c7/ set initrd c7/initrd.img set kernel c7/vmlinuz kernel ${base-url}/${kernel} inst.repo=http://your.repo.server.ip/centos/7/os/x86_64/ inst.ks=http://your.http.server.ip/c7/kickstart.cfg console=ttyS0,115200n8 initrd ${base-url}/${initrd} boot ``` 在这个脚本中,你需要设置`base-url`为你的TFTP服务器的IP地址,并且设置`initrd`和`kernel`为你下载的CentOS7内核文件的名称。接下来是启动命令,包括`inst.repo`、`inst.ks`和`console`等选项,这些选项根据你的安装方式可能会有所不同。最后是`boot`命令,启动CentOS7安装程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值