无盘服务器架设之一:编译iPXE,用于网络,ISO,USB等无盘启动

动起手来,编译iPXE,用于网络,ISO,USB等无盘启动
iPxe的源码保存的仓库http://git.ipxe.org/ipxe.git。在Linux平台下,你可使用下面的命令将其克隆到本地

  git clone git:/git.ipxe.org/ipxe.git

命令完成以后,当前目录下就会有个ipxe文件夹,里面就是全部源码

编译之前,请确保平台上有以下软件包及支持库

    gcc (version 3 or later)
    binutils (version 2.18 or later)
    make
    perl
    liblzma or xz header files
    mtools
    mkisofs (needed only for building .iso images)
    syslinux (for isolinux, needed only for building .iso images)

各Linux平台,使用相应的命令安装以上软件包,下面开始编译你相想要的

cd ipxe/src  ##进入下级源码目录


编译光盘格式和USB存储器使用的IPXE

你可以编译一个可启动IPXE光盘或者是USB存储器,用来启动机器,引导IPXE无盘。此时主板BIOS内置PXE选项无需开启
  
     make bin/ipxe.iso   ##编译bin/ipxe.iso

如果一切顺利,就会在bin/目录下生成ipxe.iso文件,将此文件烧录或其它方法启动,即可开启ipxe无盘之路

   make  bin/ipxe.usb  ##编译bin/ipxe.usb   

使用以下类似的命令,将ipxe.usb 写入USB存储器,就可直接从U存储上开启ipxe无盘之路
  dd if=bin/ipxe.usb of=/dev/sdX   #sdX为U存储器在平台上的块设备链接

我们做无盘启动,用的最多的就是下面这种pxe rom,用于机器比较多的情况下,直接从服务器上下载ROM,然后启动IPXE

  make bin/undionly.kpxe    ##无盘启动加载的ROM

你还可以编译一个iPXE ROM替换主板或网卡内置的PXE启动为IPXE,如下
   
  make bin/808610de.rom   ##808610de  为网卡的PCI vendor 和设备ID.

下面是高级应用方法

嵌入脚本,你可以在编译之时,将脚本嵌入在ROM当中,这样ROM被加载后,就可以直接启动相应的脚本,以达到快速启动的目的。如某些品牌主板,其PXE有设置启动参数的功能,如直接启动某iscsi硬盘。像这样的用法,就是下面要讲的嵌入式脚本

新建以下文件bootserver.ipxe

#! ipxe
dhcp
chain http://bootserver.boot.com/boot.php

嵌入脚本编译IPXE

  make bin/undionly.kpxe EMBED=bootserver.ipxe

这样将会得到一个自定义的ipxe启动映像,非常方便的。

你还可以根据自身的情况,用其它的IPXE命令生做成一个脚本,嵌入rom内,这不得不说,真的不错。

ipxe启动后,直接调用dhcp获取IP参数,然后加载http://bootserver.boot.com/boot.php 文件,此时boot.php内的脚本就可更好的控制和跳转到各种启动项目。如果以上脚本直接改为相应的ISCSI硬盘启动,那么这样生成ROM将会在引导的时候,直接启动ISCSI硬盘,无需菜单,无需选项,一切都在相应的PHP文件内做好。



客户端启动信息截图
至于调试信息,网卡ROM,以及UEFI之类的,目前我还没有用上,体会不多。

参考链接

http://ipxe.org/download
 

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、付费专栏及课程。

余额充值