无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 17867|回复: 50
打印 上一主题 下一主题

[原创] 菜鸟WSL环境iPXE编译及网启二三事

    [复制链接]
1#
发表于 2021-4-14 09:31:54 | 显示全部楼层
本帖最后由 江南一根葱 于 2021-4-14 09:32 编辑

赶嚼你们对wimboot误解太深了,你这菜单,可以精简掉大半,tinypxe官方包里的菜单有很好的示例。。

点评

有啥高级的用法?wimboot下过来要改名的,不好弄吧  详情 回复 发表于 2021-4-14 09:46
回复

使用道具 举报

2#
发表于 2021-4-14 09:48:21 | 显示全部楼层
hhh333 发表于 2021-4-14 09:46
有啥高级的用法?wimboot下过来要改名的,不好弄吧

从来都不需要改名,
你可以参考我折腾的ipxefm,如果一定要执意你这样改很多文件名,你可以这样弄

:wimbootmenu
  menu iPXE Boot Menu(ServerIP:${next-server})
  item --gap --             -------------------------------- H3 PE TOOL ---------------------------
  item H3_7PE.WIM                 Win7 PE
  item H3_11pe.WIM                Win11 PE
  choose --timeout ${menu-timeout} --default ${menu-default} selected
iseq ${selected} H3_7PE.WIM && set wim ${selected} && set bootmgr H3_MGRW7.BIN && set bcd BW7  && goto wimboot
iseq ${selected} H3_11PE.WIM && set wim ${selected} && set bootmgr H3_MGRW11.BIN && set bcd BW11  && goto wimboot
goto ${selected}

:wimboot
  kernel http://${next-server}/BOOT/wimboot                                #http://git.ipxe.org/releases/wimboot/wimboot-latest.zip
  initrd http://${next-server}/BOOT/${bootmgr} bootmgr
  initrd http://${next-server}/BOOT/${bcd}   ${bcd}
  initrd http://${next-server}/BOOT/boot.sdi boot.sdi
  initrd http://${next-server}/BOOT/${wim} ${wim}
  boot || goto failed
  goto wimbootmenu

点评

改了下BIOS菜单,与EFI差不多,不提前判断再goto直接统一goto ${selected},规范些  详情 回复 发表于 2021-4-14 10:37
哦,你是指BIOS菜单,EFI菜单是这么写的,大同小异。  详情 回复 发表于 2021-4-14 09:57
回复

使用道具 举报

3#
发表于 2021-4-14 09:51:25 | 显示全部楼层
hhh333 发表于 2021-4-14 09:46
有啥高级的用法?wimboot下过来要改名的,不好弄吧。我正自我感觉良好呢

我们是这样写的
:wimbootmenu
  menu iPXE Boot Menu(ServerIP:${next-server})
  item --gap --             -------------------------------- H3 PE TOOL ---------------------------
  item H3_7PE.WIM                 Win7 PE
  choose --timeout ${menu-timeout} --default ${menu-default} selected
set wim ${selected} && goto wimboot

:wimboot
  kernel http://${next-server}/BOOT/wimboot                                #http://git.ipxe.org/releases/wimboot/wimboot-latest.zip
  initrd http://${next-server}/BOOT/bootmgr bootmgr
  initrd http://${next-server}/BOOT/bcd   bcd
  initrd http://${next-server}/BOOT/boot.sdi boot.sdi
  initrd http://${next-server}/BOOT/${wim} boot.wim
  boot || goto failed
  goto wimbootmenu
只要加一两句判断,就可以bios/uefi双环境

点评

bios和efi菜单分开好些,没必要合成一个,本来启动文件就不一样。  详情 回复 发表于 2021-4-14 10:01
回复

使用道具 举报

4#
发表于 2021-4-14 10:21:42 | 显示全部楼层
本帖最后由 江南一根葱 于 2021-4-14 10:57 编辑
hhh333 发表于 2021-4-14 09:57
哦,你是指BIOS菜单,EFI菜单是这么写的,大同小异。BIOS菜单写得较早一点

efi也一样,只不过改成
initrd -n boot.wim
这样可能是bios uefi通吃的,
而且启动文件就差一个bootmgrfw.efi,
nitrd -n boot.wim http://${next-server}/BOOT/${wim} boot.wim
bios/uefi双启可以这样写
  1. :wimboot
  2. #假如取文件失败就换个地址
  3. kernel http://${booturl}/app/wimboot/wimboot quiet || goto retryip
  4. #在bios和efi不同环境取相应的文件

  5. iseq ${platform} pcbios  && initrd http://${booturl}/app/wimboot/bootmgr  bootmgr ||
  6. iseq ${platform} efi  && initrd -n bootx64.efi http://${booturl}/app/wimboot/bootmgfw.efi ||


  7. initrd http://${booturl}/app/wimboot/BCD  BCD ||
  8. initrd http://${booturl}/app/wimboot/boot.sdi   boot.sdi ||

  9. iseq ${platform} pcbios  && initrd http://${booturl}${bootfile} boot.wim ||
  10. iseq ${platform} efi && initrd -n boot.wim http://${booturl}${bootfile} ||
  11. boot ||

复制代码


回复

使用道具 举报

5#
发表于 2021-4-14 10:48:45 | 显示全部楼层
本帖最后由 江南一根葱 于 2021-4-14 11:01 编辑
hhh333 发表于 2021-4-14 10:37
改了下BIOS菜单,与EFI差不多,不提前判断再goto直接统一goto ${selected},规范些

所有的bootmgr和bcd是可以共用一个的,
tinypxe官方包里有提供。。
所以其实只需要单独写个wimboot菜单出来,然后在主菜单引用,
set wim ${selected} && goto wimboot一句就可以了。。
可以用这些文件,
wimboot.7z (1017.12 KB, 下载次数: 13)
另外就是最新版的wimboot下载地址变了,现在是
https://github.com/ipxe/wimboot/releases/latest/download/wimboot
我附件中的wimboot是最新的,修复了很多bios下启动的问题,还添加了静默参数 quiet,用法
kernel http://${booturl}/app/wimboot/wimboot quiet
这样可以不显示那些字符,,兼容bios/uefi可以这样写
  1. :wimboot
  2. #假如取文件失败就换个地址
  3. kernel http://${booturl}/app/wimboot/wimboot quiet || goto retryip
  4. #在bios和efi不同环境取相应的文件
  5. iseq ${platform} pcbios  && initrd http://${booturl}/app/wimboot/bootmgr  bootmgr ||
  6. iseq ${platform} efi  && initrd -n bootx64.efi http://${booturl}/app/wimboot/bootmgfw.efi ||
  7. initrd http://${booturl}/app/wimboot/BCD  BCD ||
  8. initrd http://${booturl}/app/wimboot/boot.sdi   boot.sdi ||
  9. iseq ${platform} pcbios  && initrd http://${booturl}${bootfile} boot.wim ||
  10. iseq ${platform} efi && initrd -n boot.wim http://${booturl}${bootfile} ||
  11. boot ||

复制代码


点评

哦,好像新版可以用大内存是吧  详情 回复 发表于 2021-4-14 10:58
回复

使用道具 举报

6#
发表于 2021-4-14 11:06:27 | 显示全部楼层
item 后面的这些,最好替换成有价值的,引用方便,把w7pe什么的,写成H3_7PE.WIM不是更香吗,也更容易看得懂
可以pefile就是${selected}。

点评

哈哈,也是,小技巧多啊  详情 回复 发表于 2021-4-14 11:11
回复

使用道具 举报

7#
发表于 2021-4-14 18:02:50 | 显示全部楼层
本帖最后由 江南一根葱 于 2021-4-14 18:58 编辑
hhh333 发表于 2021-4-14 16:53
我不知道仔细读了TinyPXE的菜单没有,记不起了。不过我还是坚持把bios和efi分开的观点。毕竟差异比较大, ...

不需要分开,更不需要判断,脑洞够大的话,据说还可以这样写
  • :wimmenu
  • menu wimfile
  •    item --gap Choose Resolution ratio
  •    item --key 1 win8.wim           1. win8pe
  •    item --key 2 win9.wim           2. win9pe
  •    item --key 3 win10.wim          3. win10pe
  •    item --key m menu             M. Back to menu
  • choose --timeout ${bootfile-timeout} --default 800x600 selected ||
  • iseq ${selected} menu && goto menu ||
  • set wim ${selected} && goto wimboot ||
  • :wimboot
  • kernel ${booturl}/app/wimboot/wimboot ||
  • initrd ${booturl}/app/wimboot/bootmgr.exe bootmgr.exe ||
  • initrd ${booturl}/app/wimboot/bootx64.efi bootx64.efi ||
  • initrd ${booturl}/app/wimboot/bootia32.efi bootia32.efi ||
  • initrd ${booturl}/app/wimboot/bcd bcd ||
  • initrd ${booturl}/app/wimboot/boot.sdi boot.sdi ||
  • initrd -n boot.wim ${booturl}/${wim}  boot.wim ||
  • boot || goto wimmenu

通吃bios/uefi64/uefi32

点评

呵,三个启动都down下来,确实也是个思路,不过不经济吧,浪费两个文件  详情 回复 发表于 2021-4-15 10:07
回复

使用道具 举报

8#
发表于 2021-4-15 10:47:57 | 显示全部楼层
本帖最后由 江南一根葱 于 2021-4-15 10:49 编辑
hhh333 发表于 2021-4-15 10:07
呵,三个启动都down下来,确实也是个思路,不过不经济吧,浪费两个文件

哈哈,你更浪费啊,,每个wim都配一份bcd和bootmgfw.efi,
用你的文件的话,连wimboot都不需要的,而且,这样让电脑自己去判断,还不会出错,“代码”也有高强的可读性

点评

我浪费几个字,你浪费流量,就这区别  详情 回复 发表于 2021-4-15 11:45
回复

使用道具 举报

9#
发表于 2021-4-15 13:43:44 | 显示全部楼层
hhh333 发表于 2021-4-15 11:45
我浪费几个字,你浪费流量,就这区别

  • 喜欢改文件名且又想节省几m流量的话,再加个判断,这样写姿势更丰富,更容易看懂(个人觉得)。
     #判断
  • issq ${platform} pcbios && set msboot bootmgr.exe ||
  • issq ${platform} efi && set msboot bootx64.efi ||
     #启动
  • :wimboot
  • kernel ${booturl}/app/wimboot/wimboot ||
  • initrd ${booturl}/app/wimboot/${msboot} ${msboot} ||
  • initrd ${booturl}/app/wimboot/bcd bcd ||
  • initrd ${booturl}/app/wimboot/boot.sdi boot.sdi ||
  • initrd -n boot.wim ${booturl}/${wim}  boot.wim ||
  • boot || goto wimmenu
至于其它提高代码可读性的方法,我觉得稍对齐些(完全遵守缩进规则太难),用notepad艹打开编辑,完全没问题。

回复

使用道具 举报

10#
发表于 2021-4-16 08:18:15 来自手机 | 显示全部楼层
hhh333 发表于 2021-4-16 06:36
虽然有自己的一些原创搞法,但总的算是入门级。iSCSI以前玩过,sanboot/nfs没玩过。写这个一是怕自己忘记 ...

可以参考下我的自动编译
https://github.com/zwj4031/ipxe
直接clone下来本地编译也很方便
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-9 04:15

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表