无忧启动论坛
标题: 国庆快乐,分享一个自编译的ipxe [打印本页]
作者: chenall 时间: 2019-10-1 11:49
标题: 国庆快乐,分享一个自编译的ipxe
本帖最后由 chenall 于 2019-10-3 10:13 编辑
现在由于工作关系很少发贴和回复了,但是还是会经常上来看看
最近为了方便使用修改了ipxe的一些代码重新编译了一个(使用github上的最新源码修改编译的)
相对于默认编译额外开启了以下功能
FTP NFS COMBOOT HTTPS
ipxe1.zip 的开启了更多的功能. 像CONSOLE_CMD POWEROFF PING等
增加的功能
对于脚本或goto 增加了参数变量, 可以简化ipxe菜单的写法
比如启动命令 chain boot.ipxe aa bb cc dd
在boot.ipxe脚本里面就可以使用 ${%0} ${%1} 这些变量
其中 %0 就是boot.ipxe %1 第一个参数 %n 第n个参数 最多是 %9
goto 命令也是一样
比如:
goto winpe bootmgr.exe winpe.wim
在winpe标签下就可以使用${%1} bootmgr.exe
注: 使用了比较直接而且暴力的方式 简单的把参数设为变量,所以....你懂的.
附后使用wimboot启动各种PE的例子.
- #!ipxe
- #bootmgr启动文件判断
- iseq "${platform}" "pcbios" && set bootmgr bootmgr.exe || set bootmgr bootx64.efi
- iseq "${platform}_${buildarch}" "efi_i386" && set bootmgr bootia32.efi ||
- :menu
- menu Windows Preinstallation Environment
- item --gap -- -------Windows Preinstallation Environment-----------------------------
- item ljycslg/pe32.wim Windows 10 PE x86 with Network (by ljycslg)
- iseq ${buildarch} i386 || item ljycslg/pe64.wim Windows 10 PE x64 with Network (by ljycslg)
- item WEPE/WePE_32_V2.0.WIM Windows 10 PE x86 (WePe v2.0 2017-03-21)
- iseq ${buildarch} i386 || item WEPE/WePE_64_V2.0.WIM Windows 10 PE x64 (WePe v2.0 2017-03-21)
- iseq ${buildarch} i386 || item WEPE/WePE_64_V2.0_mod.WIM Windows 10 PE x64 (WePe v2.0 mod by 027sun 2019-09-27)
- item --gap -- ------------------------------ Advanced ---------------------------------
- item shell Drop to iPXE shell
- item exit Exit or Return
- choose --timeout 5000 MENU.SELECT
- ${MENU.SELECT} || goto wimboot ${MENU.SELECT}
- goto menu
- :wimboot
- imgfree
- kernel -a wimboot
- #附加文件会存放到 windows/system32 目录下
- initrd -n ${next-server}.cmd pxeautorun.txt ${next-server}.cmd ||
- initrd -n custom.7z custom/${ip}.7z custom.7z ||
- initrd -n custom.cmd custom/${ip}.cmd custom.cmd ||
- #pe wimboot启动通用文件
- initrd -n boot.sdi pxe/boot.sdi boot.sdi
- initrd -n ${bootmgr} pxe/${bootmgr} ${bootmgr}
- initrd -n bcd pxe/bcd bcd
- #PE WIM文件
- initrd -n boot.wim ${%1} boot.wim
- boot || prompt Boot failure press any key to continue
- goto menu
复制代码
-
-
ipxe.zip
1.18 MB, 下载次数: 149, 下载积分: 无忧币 -2
基础功能
-
-
ipxe1.zip
1.57 MB, 下载次数: 117, 下载积分: 无忧币 -2
大部份功能
作者: chishingchan 时间: 2019-10-1 12:02
不知是何物!只有坐沙发帮顶!
作者: 江南一根葱 时间: 2019-10-1 12:34
楼主也玩射文件了 ipxe.efi如果嵌入了脚本貌似就不支持参数了,有办法支持不
作者: 江南一根葱 时间: 2019-10-1 12:45
能编译个开齐全家桶功能的不,比如所有可以被支持的协议、图片支持
问下chain boot.ipxe fuck.wim
和chain ipxe.efi set %1 fuck.wim && chain boot.ipxe(或一段脚本)是不是等效的。
作者: chenall 时间: 2019-10-1 12:51
不等效.
chain boot.ipxe之后会把所有有%n都重置.
有需要什么协议或功能支持,我有空可以帮忙编译..
很多协议基本上用不到.
也可以自己在
https://rom-o-matic.eu/
选择编译.
作者: chenall 时间: 2019-10-1 12:52
是指嵌入的脚本内部要接收参数?理论上应该是可行的,
作者: 江南一根葱 时间: 2019-10-1 14:07
本帖最后由 江南一根葱 于 2019-10-1 14:09 编辑
https支持,所有的sanboot支持,不过我需要的是本地文件系统支持,
#define DOWNLOAD_PROTO_FILE /* Local filesystem access */
要chain fiile:xx.ipxe
我试了试本地启动grub2后再chainloader ipxe.efi好像不支持参数
我在折腾是不是能像bios下那样通过
kernel ipxe.lkrn
initrd xxx. ipxe
这样来启动本地FAT,或u盘上的ipxe文件
作者: zicell 时间: 2019-10-2 17:30
大佬大佬,ipxe能支持背景图片吗?是不是要在编译的时候加入?
作者: hkkitlee 时间: 2019-10-2 18:18
是,功能要編譯進去的
作者: chenall 时间: 2019-10-3 10:14
上传了一个今天编译的版本ipxe1.zip , 编译参数如下
- #define DOWNLOAD_PROTO_HTTPS
- #define DOWNLOAD_PROTO_FTP
- #define DOWNLOAD_PROTO_NFS
- #define DOWNLOAD_PROTO_FILE
- #define DOWNLOAD_PROTO_SLAM
- #define SANBOOT_PROTO_HTTP
- #define SANBOOT_PROTO_FCP
- #define SANBOOT_PROTO_ISCSI
- #define SANBOOT_PROTO_AOE
- #define SANBOOT_PROTO_IB_SRP
- #define CONSOLE_CMD
- #define PING_CMD
- #define PROFSTAT_CMD
- #define POWEROFF_CMD
- #define TIME_CMD
- #define VLAN_CMD
- #define IMAGE_PNG
- #define CONSOLE_FRAMEBUFFER
- #define IMAGE_DER
- #define IMAGE_PEM
- #define PARAM_CMD
- #define PCI_CMD
- #ifndef IMAGE_EFI
- #define IMAGE_COMBOOT
- #define IMAGE_PXE
- #define IMAGE_ELF
- #define IMAGE_SDI
- #endif
复制代码
作者: 江南一根葱 时间: 2019-10-3 10:25
嗯,bios下就不需要它了
作者: 江南一根葱 时间: 2019-10-7 09:12
还能p2p?有没有知道怎么用
作者: 江南一根葱 时间: 2019-10-7 11:16
https://github.com/multun/ipxe-bt
这个看上去很屌,有没有研究过
作者: beenb 时间: 2019-10-12 18:29
真好~
作者: a1379388505 时间: 2019-11-1 03:17
配置文件怎么加载或者使用什么文件名
作者: chenall 时间: 2019-11-1 10:40
文件名是随意的.
脚本文件最主要的是开头的#!ipxe的标识符.
chain xxxx 就行了
作者: a1379388505 时间: 2019-11-16 04:18
好的 懂了 另外请问启动iscsi中UEFI的安装的win系统命令是怎么写的 我用传统引导的命令中途启动失败
sanboot iscsi:10.0.0.2:::1:iqn.acer2
这样启动到一半说检测不到磁盘了
作者: 江南一根葱 时间: 2019-11-23 11:44
请教现在本地编译ipxe.efi如何嵌入ipxe脚本,在线编译貌似房租到期倒闭了
作者: 江南一根葱 时间: 2019-11-23 21:37
efi版离线编译嵌入脚本无效啊。。。
在线编译才能嵌入,头疼,撸者让我们自己用docker镜像。
作者: 江南一根葱 时间: 2019-11-24 14:30
难道已经修复了?
https://forum.ipxe.org/showthread.php?tid=10083
这问题有好长时间了
作者: 江南一根葱 时间: 2019-11-24 14:31
不嵌入的话用chainloader ipxe.efi dhcp &&这种方式么?
作者: qzwhok 时间: 2019-11-24 14:48
我在虚拟机中安装Ubuntu,然后搭建ipxe编译环境,从来未发现嵌入脚本出问题
作者: hkkitlee 时间: 2019-11-24 19:07
編譯有沒有錯誤提示?
還是dhcp175等待腳本?
你也可試一試tinycore來編譯,我用沒問題
作者: 江南一根葱 时间: 2019-11-24 20:30
去年还是前年试是不行的,都没什么错误提示,编译是成功的,难道已经修好了。
n久没试了。。。
作者: 江南一根葱 时间: 2019-11-24 21:11
试了下是可以,又可以愉快地装B了
作者: yujie1911 时间: 2019-12-16 23:27
好东东啊,下了。
作者: 时光凉了年少梦 时间: 2020-1-3 00:45
大佬能否给个网盘链接 信任下载不了
作者: hhh333 时间: 2020-1-3 11:14
在Cygwin下用 make bin-i386-efi/ipxe32.efi EMBED=efirom32.txt命令
编译出错了,不知啥情况
/tmp/ccx2vTtr.s: Assembler messages:
/tmp/ccx2vTtr.s:15: 错误:junk at end of line, first unrecognized character is `,'
/tmp/ccx2vTtr.s:31: 错误:unknown pseudo-op: `.previous'
/tmp/ccx2vTtr.s:66: 错误:junk at end of line, first unrecognized character is `,'
/tmp/ccx2vTtr.s:82: 错误:unknown pseudo-op: `.previous'
/tmp/ccx2vTtr.s:104: 错误:junk at end of line, first unrecognized character is `,'
/tmp/ccx2vTtr.s:120: 错误:unknown pseudo-op: `.previous'
/tmp/ccx2vTtr.s:168: 错误:can't resolve `.einfo' {.einfo section} - `LFB108' {.text$null_san_hook section}
/tmp/ccx2vTtr.s:184: 错误:can't resolve `.einfo' {.einfo section} - `LFB110' {.text$null_san_boot section}
/tmp/ccx2vTtr.s:192: 错误:can't resolve `.einfo' {.einfo section} - `LFB111' {.text$null_san_describe section}
/tmp/ccx2vTtr.s:3826: 错误:can't resolve `.einfo' {.einfo section} - `LFB111' {.text$null_san_describe section}
/tmp/ccx2vTtr.s:3835: 错误:can't resolve `.einfo' {.einfo section} - `LFB110' {.text$null_san_boot section}
/tmp/ccx2vTtr.s:3876: 错误:can't resolve `.einfo' {.einfo section} - `LFB108' {.text$null_san_hook section}
/tmp/ccx2vTtr.s:4502: 错误:can't resolve `.einfo' {.einfo section} - `LFB108' {.text$null_san_hook section}
/tmp/ccx2vTtr.s:4506: 错误:can't resolve `.einfo' {.einfo section} - `LFB110' {.text$null_san_boot section}
/tmp/ccx2vTtr.s:4508: 错误:can't resolve `.einfo' {.einfo section} - `LFB111' {.text$null_san_describe section}
make: *** [Makefile.housekeeping:946:bin-i386-efi/null_sanboot.o] 错误 1
作者: 江南一根葱 时间: 2020-1-3 11:22
You will need to have at least the following packages installed in order to build 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)
作者: hhh333 时间: 2020-1-3 11:38
江南一根葱 发表于 2020-1-3 11:22
You will need to have at least the following packages installed in order to build iPXE:gcc (v ...
这些好像都添加了,难道要到真linux环境下编译
作者: 江南一根葱 时间: 2020-1-3 11:54
虚拟一个好了,启livecd就可以编译
作者: 时光凉了年少梦 时间: 2020-1-3 22:34
请问一下 编译后的ipxe.efi文件在哪里呢 找了一圈没找到
作者: hkkitlee 时间: 2020-1-5 15:00
啟發到靈感!謝謝!
作者: wf90725 时间: 2020-1-5 15:37
好东西啊,下了。
作者: sytyh 时间: 2020-1-5 19:46
谢谢,最近正在学着这个。
作者: hhh333 时间: 2020-1-6 10:52
终于能够自己编译了。安装了ubuntukylin-19.04,一通升级,又出现LZMA.h找不到的错误,又找原因。
作者: liwei_show 时间: 2020-1-26 20:13
谢谢楼主分享
作者: xinzaixin 时间: 2020-2-3 12:41
表哥威武,牛牛牛。。。。。。。。。。。
作者: hnxjc 时间: 2020-2-6 15:54
我安装了Linux,下载了源码,就是编译不成功,不知哪里出了问题
作者: 一笑笑 时间: 2020-2-10 13:02
用什么 工具编译?想要学习下
作者: abe520 时间: 2020-4-22 22:02
期待更好的作品,卤煮好厉害
作者: 2011goodluckwxl 时间: 2020-10-9 00:35
太强啦,我收获很大
欢迎光临 无忧启动论坛 (http://wuyou.net./) |
Powered by Discuz! X3.3 |