友联电脑 发表于 2018-3-14 11:46:42

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

本帖最后由 友联电脑 于 2018-3-22 19:43 编辑

无盘服务器架设之一:编译iPXE,用于网络,ISO,USB等无盘启动
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=404978&extra=page%3D1

无盘服务器架设之二:Linux基础服务器安装
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=404982&extra=page%3D1

无盘服务器架设之三:Linux平台相关服务安装与调试
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=405104&page=1&extra=#pid3537701

无盘服务器架设之四:iPxe无盘超级应用实例
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=404913&page=1&extra=#pid3528269

动起手来,编译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无盘之路

   makebin/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



2010sya 发表于 2018-3-14 12:09:59

谢谢分享

20121666 发表于 2018-3-14 15:38:41

谢谢分享 学习学习

freecat 发表于 2018-3-14 16:15:34

http://bootserver.boot.com/boot.php 内容是什么? 这网址好像 404了

友联电脑 发表于 2018-3-14 16:44:40

freecat 发表于 2018-3-14 16:15
http://bootserver.boot.com/boot.php 内容是什么? 这网址好像 404了

这个是示例,你可将服务器架设在本地或互联网上,这个地址根据自身的情况而定。如果架设在本地,然后配置好DNS解析,就可以使用你喜欢的任意域名。

假大空 发表于 2018-3-14 17:59:36

学习了,embed脚本很有用

友联电脑 发表于 2018-3-14 18:12:02

假大空 发表于 2018-3-14 17:59
学习了,embed脚本很有用

是的,脚本的用途真的很灵活

江南一根葱 发表于 2018-3-14 20:58:10

有没现成或方便的linux编译环境,

友联电脑 发表于 2018-3-14 21:20:08

江南一根葱 发表于 2018-3-14 20:58
有没现成或方便的linux编译环境,

这个好像没有,建一个这样环境也是非常方便的,稍有有点Linux基础,操作起来应该都不难,我这有一贴关于基础安装的,有空可以看看
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=404982&extra=

wintoflash 发表于 2018-3-22 21:50:57

江南一根葱 发表于 2018-3-14 20:58
有没现成或方便的linux编译环境,

porteus + 从官网(http://dl.porteus.org/)下载的devel模块就可以。
页: [1] 2
查看完整版本: 无盘服务器架设之一:编译iPXE,用于网络,ISO,USB等无盘启动