无忧启动论坛

标题: 无盘服务器架设之一:编译iPXE,用于网络,ISO,USB等无盘启动 [打印本页]

作者: 友联电脑    时间: 2018-3-14 11:46
标题: 无盘服务器架设之一:编译iPXE,用于网络,ISO,USB等无盘启动
本帖最后由 友联电脑 于 2021-6-17 19:47 编辑

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

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

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

无盘服务器架设之四:iPxe无盘超级应用实例
http://bbs.wuyou.net/forum.php?m ... 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无盘之路

   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




作者: 2010sya    时间: 2018-3-14 12:09
谢谢分享
作者: 20121666    时间: 2018-3-14 15:38
谢谢分享 学习学习
作者: freecat    时间: 2018-3-14 16:15
http://bootserver.boot.com/boot.php 内容是什么? 这网址好像 404了
作者: 友联电脑    时间: 2018-3-14 16:44
freecat 发表于 2018-3-14 16:15
http://bootserver.boot.com/boot.php 内容是什么? 这网址好像 404了

这个是示例,你可将服务器架设在本地或互联网上,这个地址根据自身的情况而定。如果架设在本地,然后配置好DNS解析,就可以使用你喜欢的任意域名。
作者: 假大空    时间: 2018-3-14 17:59
学习了,embed脚本很有用
作者: 友联电脑    时间: 2018-3-14 18:12
假大空 发表于 2018-3-14 17:59
学习了,embed脚本很有用

是的,脚本的用途真的很灵活
作者: 江南一根葱    时间: 2018-3-14 20:58
有没现成或方便的linux编译环境,
作者: 友联电脑    时间: 2018-3-14 21:20
江南一根葱 发表于 2018-3-14 20:58
有没现成或方便的linux编译环境,

这个好像没有,建一个这样环境也是非常方便的,稍有有点Linux基础,操作起来应该都不难,我这有一贴关于基础安装的,有空可以看看
http://bbs.wuyou.net/forum.php?m ... d=404982&extra=
作者: 江南一根葱    时间: 2018-3-31 15:24
wintoflash 发表于 2018-3-22 21:50
porteus + 从官网(http://dl.porteus.org/)下载的devel模块就可以。

果然可以,最近在折腾啥东东,啥时候复出版面,
作者: 2011hongsezhagu    时间: 2018-6-24 09:34
good
作者: QQ2810676203    时间: 2018-7-2 06:46
drivers/bus/isa.c: 在函数‘isabus_probe’中:
drivers/bus/isa.c:50:25: 错误:数组下标大于数组边界 [-Werror=array-bounds]
    isa_extra_probe_addrs[ (ioidx) + ISA_EXTRA_PROBE_ADDR_COUNT ] : \
                         ^
drivers/bus/isa.c:112:18: 附注:in expansion of macro ‘ISA_IOADDR’
    isa->ioaddr = ISA_IOADDR ( driver, ioidx );
                  ^
cc1: all warnings being treated as errors
make: *** [bin/isa.o] 错误 1
[root@FengZi-Yun src]# make  bin/ipxe.usb
  [BUILD] bin/usbdisk.o
  [OBJCOPY] bin/usbdisk.bin
  [BUILD] bin/isa.o
drivers/bus/isa.c: 在函数‘isabus_probe’中:
drivers/bus/isa.c:50:25: 错误:数组下标大于数组边界 [-Werror=array-bounds]
    isa_extra_probe_addrs[ (ioidx) + ISA_EXTRA_PROBE_ADDR_COUNT ] : \
                         ^
drivers/bus/isa.c:112:18: 附注:in expansion of macro ‘ISA_IOADDR’
    isa->ioaddr = ISA_IOADDR ( driver, ioidx );
                  ^
cc1: all warnings being treated as errors
make: *** [bin/isa.o] 错误 1



这个怎么破? 不会搞
作者: aa1992    时间: 2018-9-14 11:34
编译报错util/zbin.c:7:18: fatal error: lzma.h: No such file or directory
compilation terminated.
Makefile.housekeeping:1381: recipe for target 'util/zbin' failed
make: *** [util/zbin] Error 1
求助
作者: gs542411    时间: 2019-1-13 14:18
高级应用方法  我不会弄可以找你定做吗?
作者: 友联电脑    时间: 2019-1-13 16:05
江南一根葱 发表于 2018-3-31 15:24
果然可以,最近在折腾啥东东,啥时候复出版面,

做服务器监控,运维相关的事情
作者: beenb    时间: 2019-10-12 19:34
顶一个先~
作者: beenb    时间: 2019-10-12 19:34
顶一顶~~~
作者: 友联电脑    时间: 2019-10-13 17:32
gs542411 发表于 2019-1-13 14:18
**** 作者被禁止或删除 内容自动屏蔽 ****

找个Linux环境,然后自己动手编译,应该是可以的。确实需要找也乐意效劳
作者: m88522    时间: 2020-2-11 14:53
加油
作者: cbl    时间: 2020-2-29 18:57

作者: 9695    时间: 2020-4-14 23:03
谢谢分享
作者: 2013mqqdg    时间: 2020-4-15 17:18
高端大器
作者: 15106680608    时间: 2020-6-14 23:19
谢谢楼主分享
作者: snaca    时间: 2021-5-27 15:28
新手学习,感谢分享。
作者: bjay2008xmy    时间: 2021-6-16 13:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: 友联电脑    时间: 2021-6-17 19:49
bjay2008xmy 发表于 2021-6-16 13:14
纠正一个错误git clone git:/git.ipxe.org/ipxe.git中的git:/应为git://

动手执行过的,看样子,谢谢,手误少写了个反斜杠
作者: zhjimx    时间: 2022-12-12 17:24
感谢分享,学习了
作者: jnhfw    时间: 2024-4-18 21:19
感谢分享  非常好
作者: ycyunlong    时间: 2024-10-6 14:50
谢谢分享 学习学习




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3