无忧启动论坛

标题: dnsmasq设置bios和uefi双启动多引导菜单(完美) [打印本页]

作者: 星体投射    时间: 2019-10-9 13:50
标题: dnsmasq设置bios和uefi双启动多引导菜单(完美)
本帖最后由 星体投射 于 2019-10-11 07:48 编辑

按F8手动选菜单,不按自动加载第一项,并实现自动ipxe加载菜单(网启目录下放ipxemenu.txt),ipxe可以直接用官方的文件,无需编译内置菜单

dnsmasq的UEFI网启非常古怪,反复捉摸网上的各种别人写的菜单,最终总结只能这么写

小技巧:openwrt 路由器上一般都是u盘和sd卡上放网启目录,可以把该目录软链接到/www下就实现了http服务,方便用ipxe的http启动
  1.        ln -s /mnt/sda1/pxeboot /www/pxeboot
复制代码


dnsmasq版本2.76以上
dnsmasq.conf配置
  1. enable-tftp
  2. tftp-lowercase
  3. dhcp-no-override
  4. tftp-root=/mnt/sda1/pxeboot

  5. dhcp-match=set:iPXE,175

  6. dhcp-vendorclass=set:flag,PXEClient:Arch:00000
  7. dhcp-vendorclass=set:flag,PXEClient:Arch:00006
  8. dhcp-vendorclass=set:flag,PXEClient:Arch:00007
  9. dhcp-vendorclass=set:flag,PXEClient:Arch:00009

  10. tag-if=set:load,tag:!iPXE,tag:flag

  11. pxe-prompt="Press F8 or Enter key for PXE menu.", 5
  12. #BIOS MENU
  13. pxe-service=tag:load,X86PC, "BIOS ipxe undionly", undionly.kpxe
  14. pxe-service=tag:load,X86PC, "BIOS ipxe.pxe", ipxe.pxe
  15. pxe-service=tag:load,X86PC, "BIOS Microsoft PXE", pxeboot.n12
  16. pxe-service=tag:load,X86PC, "boot from local", 0
  17. #UEFI MENU
  18. pxe-service=tag:load,IA32_EFI, "Microsoft UEFI (IA32_EFI)", bootia32.efi
  19. pxe-service=tag:load,X86-64_EFI, "Microsoft UEFI (X86-64_EFI)", bootx64.efi
  20. pxe-service=tag:load,BC_EFI, "Microsoft UEFI(BC-EFI)", bootx64.efi
  21. pxe-service=tag:load,6, "iPXE snponly UEFI32(6)", snponly32.efi
  22. pxe-service=tag:load,7, "iPXE snponly UEFI(7)", snponly.efi
  23. pxe-service=tag:load,9, "iPXE snponly UEFI(9)", snponly.efi
  24. pxe-service=tag:load,06,  "iPXE UEFI32(06)", ipxe32.efi
  25. pxe-service=tag:load,07,  "iPXE UEFI(07)", ipxe.efi
  26. pxe-service=tag:load,09,  "iPXE UEFI(09)", ipxe.efi

  27. dhcp-boot=tag:iPXE,ipxemenu.txt
复制代码


bios加菜单很简单
uefi加菜单方法:
比如添加grub2的64位efi,如下多加个0
pxe-service=tag:load,007,  "GRUB2 UEFI(007)", grub2.efi
pxe-service=tag:load,009,  "GRUB2 UEFI(009)", grub2.efi
作者: pennlau    时间: 2019-10-9 15:36
前来学习
作者: enlist    时间: 2019-10-9 15:51
感谢大神
作者: goodtime    时间: 2019-10-10 08:25
这个我琢磨半天没搞出来, 谢谢分享
作者: 2013dgyangxf    时间: 2019-10-10 17:07
正在研究,不知道文件目录要怎么放

作者: 2013dgyangxf    时间: 2019-10-10 17:09
这下子不管是新电脑还是老电脑都可以方便启动了,太感谢了
作者: 2013dgyangxf    时间: 2019-10-10 17:40
这下子不管是新电脑还是老电脑都可以方便启动了,太感谢了
作者: hkkitlee    时间: 2019-10-10 18:49
http://bbs.wuyou.net/forum.php?m ... &fromuid=678562
我摸索的不用tag,感覺就是有多種寫法頗混亂

pxe-service=X86PC, "Install Legacy BIOS", undionly.kpxe
pxe-service=IA32_EFI, "Boot BC_EFI", uefi/ipxe.efi
pxe-service=BC_EFI, "Boot BC_EFI", uefi/ipxe.efi
pxe-service=X86-64_EFI, "Boot X86-64", uefi/ipxe.efi


作者: chenall    时间: 2019-10-11 14:39
本帖最后由 chenall 于 2019-10-11 16:15 编辑

我目前使用的配置.(后面的192.168.103.15是因为我DHCP和TFTP服务器是分开的,同一台可以不用)

使用VMWARE测试 BIOS /EFI32/EFI64都可以正常启动,实机测试BIOS和EFI64都可以,EFI32的机器没有找到.


  1. dhcp-match=set:x86pc,option:client-arch,0
  2. dhcp-match=set:IA32_EFI,option:client-arch,6
  3. dhcp-match=set:x86_64-uefi,option:client-arch,7
  4. dhcp-match=set:x86_64-uefi,option:client-arch,9
  5. dhcp-match=set:ipxe,77,"iPXE"

  6. dhcp-boot=tag:x86pc,ipxe/undionly.kpxe,,192.168.103.15
  7. dhcp-boot=tag:x86_64-uefi,ipxe/snponly64.efi,,192.168.103.15
  8. dhcp-boot=tag:IA32_EFI,ipxe/snponly32.efi,,192.168.103.15
  9. dhcp-boot=tag:ipxe,boot.ipxe,,192.168.103.15
复制代码


@hkkitlee 这种方式我也有试过,感觉兼容性不好,不知是我配置有问题还是其它,只有BIOS可以正常启动.EFI不行.
作者: 星体投射    时间: 2019-10-11 15:06
chenall 发表于 2019-10-11 14:39
我目前使用的配置.(后面的192.168.103.15是因为我DHCP和TFTP服务器是分开的,同一台可以不用)

使用VMWARE ...

他写的EFI根本不会引导,EFI想要出菜单,只能按我的方法写
必须至少写两项才行,X86-64_EFI和7,单独写其中一个都不会引导,非常神奇

作者: 江南一根葱    时间: 2019-10-11 17:53
chenall 发表于 2019-10-11 14:39
我目前使用的配置.(后面的192.168.103.15是因为我DHCP和TFTP服务器是分开的,同一台可以不用)

使用VMWARE ...

pxe-service=X86PC, "Install Legacy BIOS", undionly.kpxe
pxe-service=IA32_EFI, "Boot BC_EFI", uefi/ipxe.efi
pxe-service=BC_EFI, "Boot BC_EFI", uefi/ipxe.efi
pxe-service=X86-64_EFI, "Boot X86-64", uefi/ipxe.efi
他这个可以的,不过我是linux上用的dnsmasq,估计差不多的吧。

只不过显示的是ipxe.efi,但实际上获取的文件又是ipxe.efi.0,很诡异,我也是折腾了n多天,最后查弄了log才研究出来的

不过反正有ln -s
作者: 江南一根葱    时间: 2019-10-11 17:56
这个东西我也折腾了好多天,最后是开启log,开启webserver
然后从http访问这个log,实时观测客户端是怎么取文件,再判断哪步出了错

作者: hkkitlee    时间: 2019-10-11 19:06
本帖最后由 hkkitlee 于 2019-10-11 19:22 编辑

其實寫法我不只一個,我貼中加了#號的就是在ddwrt路由器用的,當搬到x86 Centos7就啟動不了。

話說為何那般肯定我寫法啟動不了呢?
兩台x86-efi,兩台bios及kvm bios/efi已經實測啟動過了
始終不同架構的實體機不多,不過理論上回報arch是一樣的

x86-64用的是dnsmasq-2.76-9.el7.x86_64
ddwrt用Dnsmasq version 2.78  Copyright (c) 2000-2017 Simon Kelley
作者: 星体投射    时间: 2019-10-11 19:53
cckp 发表于 2019-10-11 19:03
dnsmasq对pxe的支持比较差,那个菜单什么的,没啥用。现在有ipxe grub等各种loader更高级的菜单 抛弃旧的吧

这菜单是在加载引导文件之前就给你选择,很有用的,已知ipxe的efi引导文件在某些机器上加载会死机(你有更高级的菜单也无用武之地了),这时就可以马上重启机器换别的引导文件,而不用跑服务器上去改引导文件,而且不受secure boot开关影响
作者: 江南一根葱    时间: 2019-10-11 20:39
cckp 发表于 2019-10-11 19:03
dnsmasq对pxe的支持比较差,那个菜单什么的,没啥用。现在有ipxe grub等各种loader更高级的菜单 抛弃旧的吧

那个菜单是挺有用的,兼容性最好的就是pxemenu,别的loader因为高级所以各种黑屏和不兼容
作者: 江南一根葱    时间: 2019-10-11 21:04
cckp 发表于 2019-10-11 21:02
有时确实有用吧。我只是在vmware测试,很少用实机启动,所以没怎么研究兼容性问题。

pxemenu在ipxe中也 ...

从ipxe启动的pxemenu貌似是带热键选项,前面有标记ABCD的
作者: 江南一根葱    时间: 2019-10-11 21:09
我有时候还在用这个,当年都是用这个兼容性打遍天下

win环境,efi下不知道有没有工具可以出类似的菜单
作者: 友联电脑    时间: 2019-10-11 23:28
本帖最后由 友联电脑 于 2019-10-11 23:38 编辑

uefi和legacy一网混合启动,在dhcp时,判断类型,legacy,efi32,efi64在分别去调用相应的tftp下引导文件,进而再去加载菜单,不知道这样好不好,楼主这个F8,需要在出始化后手动一下哈
作者: 江南一根葱    时间: 2019-10-12 10:05
本帖最后由 江南一根葱 于 2019-10-12 10:21 编辑
友联电脑 发表于 2019-10-11 23:28
uefi和legacy一网混合启动,在dhcp时,判断类型,legacy,efi32,efi64在分别去调用相应的tftp下引导文件, ...


手动是备胎制度,有些环境没必要关安全启动用来启bootmgfw.efi
有些环境要启grub2.efi,有些环境要启ipxe.efi,
作者: 友联电脑    时间: 2019-10-12 10:15
江南一根葱 发表于 2019-10-12 10:05
手动是备胎制度,有些环境没必要关安全启动用来启bootmgrfw.efi
有些环境要启grub2.efi,有些环境要启i ...

假如在没有关闭安全启动时,网络初始化时,可以手动选择一下,调用哪个去引导。是这么个情况

作者: hkkitlee    时间: 2019-10-12 12:42
友联电脑 发表于 2019-10-12 10:15
假如在没有关闭安全启动时,网络初始化时,可以手动选择一下,调用哪个去引导。是这么个情况

安全啟動沒關係

F8只是切入手動選擇啟動程式,也可以設timeout作「預選擇」自動化啟動
作者: 友联电脑    时间: 2019-10-12 13:47
hkkitlee 发表于 2019-10-12 12:42
安全啟動沒關係

F8只是切入手動選擇啟動程式,也可以設timeout作「預選擇」自動化啟動

嗯嗯,给失败时多一种选择得,省的去调整默认值,了解,了解。
作者: hkkitlee    时间: 2019-10-13 12:13
cckp 发表于 2019-10-12 17:34
很有用。感觉大多数时候用不上 白白增加几秒钟

另一個角度看,不同loader有其不同長處:
grub2沒https
Ipxe下幾個載入方法(pxe,kpxe,kkpxe)也有分別
作者: 江南一根葱    时间: 2019-10-13 22:47
本帖最后由 江南一根葱 于 2019-10-14 15:26 编辑
cckp  2019-10-12 17:34
áоò





f8通常是到不同场景用作调试用的,调试完了如果客户端比较多,还是会改下默认值的,不会浪费,
作者: a1379388505    时间: 2019-12-12 14:32
求助openwrt的dnsmasq配置在/etc/config/dhcp中,我改写了一下不生效
把内容写到config dnsmasq段以下

config dnsmasq
        option domainneeded '1'
        option localise_queries '1'
        option rebind_protection '1'
        option rebind_localhost '1'
        option local '/lan/'
        option domain 'lan'
        option expandhosts '1'
        option authoritative '1'
        option leasefile '/tmp/dhcp.leases'
        option resolvfile '/tmp/resolv.conf.auto'
        option nonwildcard '1'
        option localservice '1'
        option enable_tftp '1'
        option tftp_root '/root/ipxe'
#        option dhcp_boot 'ipxe64.efi'
        option quietdhcp '1'
        option sequential_ip '1'

#        enable-tftp
#        tftp-lowercase
#        dhcp-no-override
#        tftp-root=/mnt/sda1/pxeboot

        option dhcp_match 'set:iPXE,175'

        option dhcp_vendorclass 'set:flag,PXEClient:Arch:00000'
        option dhcp_vendorclass 'set:flag,PXEClient:Arch:00006'
        option dhcp_vendorclass 'set:flag,PXEClient:Arch:00007'
        option dhcp_vendorclass 'set:flag,PXEClient:Arch:00009'

        option tag_if 'set:load,tag:!iPXE,tag:flag'

        option pxe_prompt '"Press F8 or Enter key for PXE menu.", 5'
#        BIOS MENU
        option pxe_service 'tag:load,X86PC, "BIOS ipxe undionly", undionly.kpxe'
        option pxe_service 'tag:load,X86PC, "BIOS ipxe.pxe", ipxe.pxe'
        option pxe_service 'tag:load,X86PC, "BIOS Microsoft PXE", pxeboot.n12'
        option pxe_service 'tag:load,X86PC, "boot from local", 0'
#        UEFI MENU
        option pxe_service 'tag:load,IA32_EFI, "Microsoft UEFI (IA32_EFI)", bootia32.efi'
        option pxe_service 'tag:load,X86-64_EFI, "Microsoft UEFI (X86-64_EFI)", bootx64.efi'
        option pxe_service 'tag:load,BC_EFI, "Microsoft UEFI(BC-EFI)", bootx64.efi'
        option pxe_service 'tag:load,6, "iPXE snponly UEFI32(6)", snponly32.efi'
        option pxe_service 'tag:load,7, "iPXE snponly UEFI(7)", snponly.efi'
        option pxe_service 'tag:load,9, "iPXE snponly UEFI(9)", snponly.efi'
        option pxe_service 'tag:load,06,  "iPXE UEFI32(06)", ipxe32.efi'
        option pxe_service 'tag:load,07,  "iPXE UEFI(07)", ipxe.efi'
        option pxe_service 'tag:load,09,  "iPXE UEFI(09)", ipxe.efi'
        option pxe_service 'tag:load,007,  "GRUB2 UEFI(007)", grub2.efi'
        option pxe_service 'tag:load,009,  "GRUB2 UEFI(009)", grub2.efi'

        option dhcp_boot 'tag:iPXE,ipxemenu.txt'



作者: 星体投射    时间: 2019-12-12 14:37
a1379388505 发表于 2019-12-12 14:32
求助openwrt的dnsmasq配置在/etc/config/dhcp中,我改写了一下不生效
把内容写到config dnsmasq段以下

我的是改etc/dnsmasq.conf
另外我不用这个方法了,因为遇到有实体机不兼容
还是用tiny pxe 吧 右键切换配置文件来切换引导
作者: a1379388505    时间: 2019-12-12 14:41
星体投射 发表于 2019-12-12 14:37
我的是改etc/dnsmasq.conf
另外我不用这个方法了,因为遇到有实体机不兼容
还是用tiny pxe 吧 右键切换 ...

非常感谢指导,请问我用的openwrt  可以用 tiny pxe吗 我百度经常没找到openwrt 和 tiny pxe在一起的文章
作者: 星体投射    时间: 2019-12-12 14:42
a1379388505 发表于 2019-12-12 14:41
非常感谢指导,请问我用的openwrt  可以用 tiny pxe吗 我百度经常没找到openwrt 和 tiny pxe在一起的文章

任何路由器都可以,路由器不用设置,tiny pxe 设置勾选Proxy DHCP即可
作者: hkkitlee    时间: 2019-12-12 14:57
本帖最后由 hkkitlee 于 2019-12-12 14:59 编辑
a1379388505 发表于 2019-12-12 14:32
求助openwrt的dnsmasq配置在/etc/config/dhcp中,我改写了一下不生效
把内容写到config dnsmasq段以下

建議在openwrt 的 terminal 輸入 :netstat -tunlp
先看看port有沒有正確啟動,如udp67,69,4011

有的話就可以縮小範圍在下半部的啟動語句部份。

我經驗是ddwrt與linux的config寫法是不同的,互換沒有作用的。(就是亂)
建議你查看一下版本(dnsmasq -v),再找版本語句說明就是。

還有些wrt版的原dnsmasq閹掉了tftp,即沒有編譯進dnsmasq;那時候就要升級一下你的dnsmasq了
作者: a1379388505    时间: 2019-12-12 14:58
星体投射 发表于 2019-12-12 14:42
任何路由器都可以,路由器不用设置,tiny pxe 设置勾选Proxy DHCP即可

我百度到的我用的Tiny PXE Serve是一个exe的windows程序,而我是用的openwrt里面的tftp启动的ipxe来无盘启动的
我就蒙了 这个exe文件用到哪里。。。。
作者: 星体投射    时间: 2019-12-12 15:02
a1379388505 发表于 2019-12-12 14:58
我百度到的我用的Tiny PXE Serve是一个exe的windows程序,而我是用的openwrt里面的tftp启动的ipxe来无盘 ...

那你用9楼的那个方法吧,我不用openwrt是因为切换引导不方便
作者: a1379388505    时间: 2019-12-12 15:36
hkkitlee 发表于 2019-12-12 14:57
建議在openwrt 的 terminal 輸入 :netstat -tunlp
先看看port有沒有正確啟動,如udp67,69,4011

非常感谢
我按照9楼的改写了语法
        option dhcp_match 'set:x86pc,option:client-arch,0'                     
        option dhcp_match 'set:IA32_EFI,option:client-arch,6'                  
        option dhcp_match 'set:x86_64-uefi,option:client-arch,7'               
        option dhcp_match 'set:x86_64-uefi,option:client-arch,9'               
        option dhcp_match 'set:ipxe,77,"iPXE"'                                 
                                                                                
        option dhcp_boot 'tag:x86pc,undionly.kpxe,,'                           
        option dhcp_boot 'tag:x86_64-uefi,ipxe64.efi,,'                        
        option dhcp_boot 'tag:IA32_EFI,ipxe.efi,,'                              
        option dhcp_boot 'tag:ipxe,boot.ipxe,,'

可以dhcp了 但是提示文件名未找到

可能就是你说的语法还是有问题,我的是 dnsmasq 2.80版本
我去百度找找语法
作者: a1379388505    时间: 2019-12-12 16:27
chenall 发表于 2019-10-11 14:39
我目前使用的配置.(后面的192.168.103.15是因为我DHCP和TFTP服务器是分开的,同一台可以不用)

使用VMWARE ...

我需要转化写法儿,但是      
option dhcp_match 'set:x86pc,option:client-arch,0'                     
        option dhcp_match 'set:IA32_EFI,option:client-arch,6'                  
        option dhcp_match 'set:x86_64-uefi,option:client-arch,7'               
        option dhcp_match 'set:x86_64-uefi,option:client-arch,9'               
        option dhcp_match 'set:ipxe,77,"iPXE"'                                 
                                                                                
        option dhcp_boot 'tag:x86pc,undionly.kpxe,,'                           
        option dhcp_boot 'tag:x86_64-uefi,ipxe64.efi,,'                        
        option dhcp_boot 'tag:IA32_EFI,ipxe.efi,,'                              
        option dhcp_boot 'tag:ipxe,boot.ipxe,,'

最后提示文件名找不到 不知道语法哪里有问题
作者: a1379388505    时间: 2019-12-12 16:37
江南一根葱 发表于 2019-10-11 17:53
pxe-service=X86PC, "Install Legacy BIOS", undionly.kpxe
pxe-service=IA32_EFI, "Boot BC_EFI", uefi ...

求助 我需要将9楼的内容转化成openwrt用的
我需要转化写法儿,但是      
option dhcp_match 'set:x86pc,option:client-arch,0'                     
        option dhcp_match 'set:IA32_EFI,option:client-arch,6'                  
        option dhcp_match 'set:x86_64-uefi,option:client-arch,7'               
        option dhcp_match 'set:x86_64-uefi,option:client-arch,9'               
        option dhcp_match 'set:ipxe,77,"iPXE"'                                 
                                                                                
        option dhcp_boot 'tag:x86pc,undionly.kpxe'                           
        option dhcp_boot 'tag:x86_64-uefi,ipxe64.efi'                        
        option dhcp_boot 'tag:IA32_EFI,ipxe.efi'                              
        option dhcp_boot 'tag:ipxe,boot.ipxe'

最后提示文件名找不到 不知道语法哪里有问题
确定上面需要的文件都在tftp根目录里面

作者: 江南一根葱    时间: 2019-12-12 16:43
a1379388505 发表于 2019-12-12 16:37
求助 我需要将9楼的内容转化成openwrt用的
我需要转化写法儿,但是      
option dhcp_match 'set:x86 ...

文件名不知道要不要加.0
作者: a1379388505    时间: 2019-12-12 16:45
江南一根葱 发表于 2019-12-12 16:43
文件名不知道要不要加.0

好的 我加.0试试 这个语法转换的不知道有没有错
作者: hkkitlee    时间: 2019-12-12 17:09
江南一根葱 发表于 2019-12-12 16:43
文件名不知道要不要加.0

這個你印象很深刻!
作者: hkkitlee    时间: 2019-12-12 17:15
本帖最后由 hkkitlee 于 2019-12-12 17:26 编辑
a1379388505 发表于 2019-12-12 16:37
求助 我需要将9楼的内容转化成openwrt用的
我需要转化写法儿,但是      
option dhcp_match 'set:x86 ...

http://bbs.wuyou.net/forum.php?m ... 8975&fromuid=678562

二樓有我wrt的寫法,打了#號的一堆啟動語句就是,可以參考一下。

另外你arch可再加入2和8,理論上就可以支援所有x86(不論32/64,bios/uefi)
作者: a1379388505    时间: 2019-12-12 17:31
本帖最后由 a1379388505 于 2019-12-12 17:33 编辑
hkkitlee 发表于 2019-12-12 17:15
http://bbs.wuyou.net/forum.php?m ... 8975&fromuid=678562

二樓有我wrt的寫法,打了#號的一堆啟動語 ...

我的openwrt的dnsmasq配置在/etc/config/dhcp中的config dnsmasq字段下面,
而且语法有很大不同

默认是这样的
onfig dnsmasq
        option domainneeded '1'
        option localise_queries '1'
        option rebind_protection '1'
        option rebind_localhost '1'
        option local '/lan/'
        option domain 'lan'
        option expandhosts '1'
        option authoritative '1'
        option leasefile '/tmp/dhcp.leases'
        option resolvfile '/tmp/resolv.conf.auto'
        option nonwildcard '1'
        option localservice '1'
        option enable_tftp '1'
        option tftp_root '/root/ipxe'
        option dhcp_boot 'ipxe64.efi'


我把最后一行注释掉,然后加上
        option dhcp_match 'set:x86pc,option:client-arch,0'                     
        option dhcp_match 'set:IA32_EFI,option:client-arch,6'                  
        option dhcp_match 'set:x86_64-uefi,option:client-arch,7'               
        option dhcp_match 'set:x86_64-uefi,option:client-arch,9'               
        option dhcp_match 'set:ipxe,77,"iPXE"'                                 
                                                                                
        option dhcp_boot 'tag:x86pc,undionly.kpxe'                           
        option dhcp_boot 'tag:x86_64-uefi,ipxe64.efi'                        
        option dhcp_boot 'tag:IA32_EFI,ipxe.efi'                             
        option dhcp_boot 'tag:ipxe,boot.ipxe'
结果并不能用
好像把需要加载的文件名识别为:tag:ipxe,boot.ipxe
应该还是我语法转换的有问题
但是我找不到参考资料

作者: hkkitlee    时间: 2019-12-12 17:46
本帖最后由 hkkitlee 于 2019-12-12 17:51 编辑
a1379388505 发表于 2019-12-12 17:31
我的openwrt的dnsmasq配置在/etc/config/dhcp中的config dnsmasq字段下面,
而且语法有很大不同

https://openwrt.org/docs/guide-user/services/tftp.pxe-server

3. Enable TFTP and NFS Service
Configure dnsmasq service to enable read-only tftp-service
option serveraddress '192.168.1.1'這個官網出的參考,紅色是我見你好像沒有的

作者: hkkitlee    时间: 2019-12-12 17:59
本帖最后由 hkkitlee 于 2019-12-12 18:01 编辑
a1379388505 发表于 2019-12-12 17:31
我的openwrt的dnsmasq配置在/etc/config/dhcp中的config dnsmasq字段下面,
而且语法有很大不同

另一個網,現成的bios/uefi 兼容


https://forum.openwrt.org/t/pxe-legacy-efi-co-existence/23856/config
config match
        option networkid 'set:bios'
        option match '60,PXEClient:Arch:00000'
config match
        option networkid 'set:efi64'
        option match '60,PXEClient:Arch:00009'
config match
        option networkid 'set:efi64'
        option match '60,PXEClient:Arch:00007'
config boot
        option filename         'tag:bios,bios/pxelinux.0'
        option serveraddress    '192.168.1.1'
        option servername       'router'
config boot
        option filename         'tag:efi64,efi64/syslinux.efi'
        option serveraddress    '192.168.1.1'
        option servername       'router'



作者: a1379388505    时间: 2019-12-12 18:06
本帖最后由 a1379388505 于 2019-12-12 18:28 编辑
hkkitlee 发表于 2019-12-12 17:59
另一個網,現成的bios/uefi 兼容

尴尬 这个字段结构又不同

我的是
onfig dnsmasq
        option domainneeded '1'
        option localise_queries '1'
        option rebind_protection '1'
        option rebind_localhost '1'
        option local '/lan/'
        option domain 'lan'
        option expandhosts '1'
        option authoritative '1'
        option leasefile '/tmp/dhcp.leases'
        option resolvfile '/tmp/resolv.conf.auto'
        option nonwildcard '1'
        option localservice '1'
        option enable_tftp '1'
        option tftp_root '/root/ipxe'
        option dhcp_boot 'ipxe64.efi'


不知道把这段强行加进去后果如何
========================
以下最新进展:
太感谢了!
强加进去竟然完美了!
我竟然还有意外的收获!TFTP服务器可以任意指定了!
成功的配置内容如下:
  1. config dnsmasq
  2.         option domainneeded '1'
  3.         option localise_queries '1'
  4.         option rebind_protection '1'
  5.         option rebind_localhost '1'
  6.         option local '/lan/'
  7.         option domain 'lan'
  8.         option expandhosts '1'
  9.         option readethers '1'
  10.         option leasefile '/tmp/dhcp.leases'
  11.         option resolvfile '/tmp/resolv.conf.auto'
  12.         option nonwildcard '1'
  13.         option localservice '1'
  14.         option enable_tftp '1'
  15.         option sequential_ip '1'
  16.         option tftp_root '/root/ipxe'
  17. #       option dhcp_boot 'undionly.kpxe'


  18. config match
  19.         option networkid 'set:bios'
  20.         option match '60,PXEClient:Arch:00000'
  21. config match
  22.         option networkid 'set:efi64'
  23.         option match '60,PXEClient:Arch:00009'
  24. config match
  25.         option networkid 'set:efi64'
  26.         option match '60,PXEClient:Arch:00007'
  27. config boot
  28.         option filename         'tag:bios,undionly.kpxe'
  29.         option serveraddress    '10.0.0.1'
  30.         option servername       'router'
  31. config boot
  32.         option filename         'tag:efi64,ipxe64.efi'
  33.         option serveraddress    '10.0.0.1'
  34.         option servername       'router'
复制代码




哈哈哈 回帖数限制了 只能这里写了
非常感谢!


作者: a1379388505    时间: 2019-12-12 18:47
hkkitlee 发表于 2019-12-12 17:59
另一個網,現成的bios/uefi 兼容

还有最后一个问题 不知道能不能
config boot
        option filename 'tag:bios,undionly.kpxe,ipxemenu.txt'
        option serveraddress '10.0.0.5'
        option servername 'DS'

这样一次加载两个文件呢?多了一个ipxemenu.txt
我想让它同时能加载菜单
作者: a1379388505    时间: 2019-12-12 19:22
星体投射 发表于 2019-12-12 15:02
那你用9楼的那个方法吧,我不用openwrt是因为切换引导不方便

非常感谢指导,我已经解决语法问题,现在引导都正常了
但是我想实现你的那个加载menu.txt的功能,可是我怎么研究都只只能加载一个文件,没读懂你是怎么绕来绕去让传递两个文件的。求给我一句可以传递两个文件,我的配置文件内容如下:
  1. config dnsmasq
  2.         option domainneeded '1'
  3.         option localise_queries '1'
  4.         option rebind_protection '1'
  5.         option rebind_localhost '1'
  6.         option local '/lan/'
  7.         option domain 'lan'
  8.         option expandhosts '1'
  9.         option readethers '1'
  10.         option leasefile '/tmp/dhcp.leases'
  11.         option resolvfile '/tmp/resolv.conf.auto'
  12.         option nonwildcard '1'
  13.         option localservice '1'
  14.         option enable_tftp '1'
  15.         option sequential_ip '1'
  16.         option tftp_root '/root/ipxe'
  17. #       option dhcp_boot 'undionly.kpxe'


  18. config match
  19.         option networkid 'set:bios'
  20.         option match '60,PXEClient:Arch:00000'
  21. config match
  22.         option networkid 'set:efi64'
  23.         option match '60,PXEClient:Arch:00009'
  24. config match
  25.         option networkid 'set:efi64'
  26.         option match '60,PXEClient:Arch:00007'
  27. config boot
  28.         option filename         'tag:bios,undionly.kpxe'
  29.         option serveraddress    '10.0.0.1'
  30.         option servername       'router'
  31. config boot
  32.         option filename         'tag:efi64,ipxe64.efi'
  33.         option serveraddress    '10.0.0.1'
  34.         option servername       'router'
复制代码

作者: 星体投射    时间: 2019-12-12 19:38
config userclass
        option networkid 'set:ipxe'
        option userclass 'iPXE'
config boot
        option filename         'tag:ipxe,menu.txt'
        option serveraddress    '10.0.0.1'
        option servername       'router'

作者: 江南一根葱    时间: 2019-12-12 19:46
好久没折腾dnsmasq了,不过前几个月折腾这个时最后发觉,

大多数问题可以通过开启log来分析,解决

作者: hkkitlee    时间: 2019-12-12 21:21
a1379388505 发表于 2019-12-12 18:47
还有最后一个问题 不知道能不能
config boot
        option filename 'tag:bios,undionly.kpxe,ipxeme ...

一次兩個文件是不行的!

具體操作方案有兩個:
A是將ipxe的script一同編譯成一個文件。
B是將ipxe的回應碼:175加進dnsmasq,引導客戶端下載script

兩個方法各有千秋。我用A的

因B有個兩個缺點:
1是慢,因為需要兩次dhcp等待回應。
2之前的版本我試過是因為第二次dhcp會導致某部份ipxe裏的「變量」變空了,如{next-server};如你之後的script引用此類「變量」有機會會做成錯誤!
作者: a1379388505    时间: 2019-12-12 21:31
本帖最后由 a1379388505 于 2019-12-12 21:37 编辑
hkkitlee 发表于 2019-12-12 21:21
一次兩個文件是不行的!

具體操作方案有兩個:

好的 非常感谢!终于知道楼主的配置内容里面的175是什么意思了

我现在B方案搞成功了,我本来追求B方案只考虑到对我来说就是
1,可以直接用官方编译的ipxe;
2,还可以bios和uefi引导共用同一个menu并且直接外置方便编辑调试。

不过你提到的2个缺点也确实,我之前没考虑到
我先用一段时间看看吧,有收获的话跟你反馈!
再次感谢!



作者: a1379388505    时间: 2019-12-12 21:33
江南一根葱 发表于 2019-12-12 19:46
好久没折腾dnsmasq了,不过前几个月折腾这个时最后发觉,

大多数问题可以通过开启log来分析,解决

非常感谢!我现在已经折腾完美了
哈哈哈哈
接下来研究另一个难题:
电脑上有两块网卡,一个专门链接外网,另一个是链接无盘启动,但是无盘的dhcp路由器也是具有外网链接的;我需要让无盘启动的网卡禁止访问外网
Openwrt里面的禁止外网的配置竟然不起作用,我猜测可能跟用dhcp无盘启动有关

作者: a1379388505    时间: 2019-12-12 21:35
本帖最后由 a1379388505 于 2019-12-12 21:38 编辑
星体投射 发表于 2019-12-12 19:38
config userclass
        option networkid 'set:ipxe'
        option userclass 'iPXE'

非常感谢!我现在已经折腾完美了
我之前自己爬你给的链接也发现了这个写法,只是没明白userclass是什么意思,你给出来以后我就立刻明白了!哈哈哈哈 现在已经完美了
非常感谢!
作者: hkkitlee    时间: 2019-12-12 22:51
a1379388505 发表于 2019-12-12 21:33
非常感谢!我现在已经折腾完美了
哈哈哈哈
接下来研究另一个难题:

我需要让无盘启动的网卡禁止访问外网?
內網訪問外網很正常的。

你是想禁止pxe服務出了外網?還是另有特殊情況需要特別設定?
作者: a1379388505    时间: 2019-12-12 23:19
hkkitlee 发表于 2019-12-12 22:51
我需要让无盘启动的网卡禁止访问外网?
內網訪問外網很正常的。

电脑装有两个网卡,网卡A连接到openwrt路由器上并且负责无盘启动系统
网卡B直接连接外网不经过路由器。
麻烦在于开机后两个网卡都是可以连接外网,并且默认流量都是走A网卡了
我需要在不影响无盘启动的前提下,禁止网卡A连接外网,只能使用网卡B连接外网
因为我有必须使用网卡B的ip对外连接的需求

但是同时A网卡要保留内网访问与无盘启动
作者: hkkitlee    时间: 2019-12-12 23:36
a1379388505 发表于 2019-12-12 23:19
电脑装有两个网卡,网卡A连接到openwrt路由器上并且负责无盘启动系统
网卡B直接连接外网不经过路由器。
...

那就是說你的網關就是裝有雙卡的電腦。
那你整個網絡的dhcp server是誰負責?網關還是openwrt?
作者: a1379388505    时间: 2019-12-12 23:47
hkkitlee 发表于 2019-12-12 23:36
那就是說你的網關就是裝有雙卡的電腦。
那你整個網絡的dhcp server是誰負責?網關還是openwrt?

openwrt
我有找到openwrt禁止网卡mac联网的命令 但是经过测试只能用于非无盘启动的电脑,无盘启动的电脑禁止不了。
作者: hkkitlee    时间: 2019-12-13 10:49
a1379388505 发表于 2019-12-12 23:47
openwrt
我有找到openwrt禁止网卡mac联网的命令 但是经过测试只能用于非无盘启动的电脑,无盘启动的电 ...

那dhcp不設網關;卡a轉為固定應該就可以啦
作者: 江南一根葱    时间: 2019-12-13 11:22
只走一个网很简单,win下反正是 route add 0.0.0.0 0.0.0.0 唯一网关 -p就行了
作者: a1379388505    时间: 2019-12-14 15:15
江南一根葱 发表于 2019-12-13 11:22
只走一个网很简单,win下反正是 route add 0.0.0.0 0.0.0.0 唯一网关 -p就行了

无盘启动的难题就在这里,不用说唯一网关了,我就是把网卡禁用,会立即蓝屏然后电脑重启,然后网卡是被禁用状态但是照样能上网。。。
各种设置都禁不了上网
作者: hkkitlee    时间: 2019-12-14 16:36
a1379388505 发表于 2019-12-14 15:15
无盘启动的难题就在这里,不用说唯一网关了,我就是把网卡禁用,会立即蓝屏然后电脑重启,然后网卡是被禁 ...

那只是用什麼protocol 掛載目標系統根目錄的問題吧
作者: 江南一根葱    时间: 2019-12-14 16:36
a1379388505 发表于 2019-12-14 15:15
无盘启动的难题就在这里,不用说唯一网关了,我就是把网卡禁用,会立即蓝屏然后电脑重启,然后网卡是被禁 ...

禁上网多简单啊,方法千千万,不知道你是啥环境
作者: a1379388505    时间: 2019-12-14 16:43
本帖最后由 a1379388505 于 2019-12-14 16:54 编辑
hkkitlee 发表于 2019-12-13 10:49
那dhcp不設網關;卡a轉為固定應該就可以啦

找到设置网关的方案了 但是我设置空网关无效,不知道这个网关指定为几还是
下面是空网关设置,结果是还是被分配了网关
  1. config host
  2.         option dns '1'
  3.         option mac '20:cf:30:5e:0f:64'
  4.         option ip '10.0.0.6'
  5.         option name 'ASUS'
  6.         option tag 'need_outernet'

  7. config tag 'need_outernet'
  8.         list dhcp_option '3,'
  9.         option force '1'
复制代码



作者: a1379388505    时间: 2019-12-14 16:52
江南一根葱 发表于 2019-12-14 16:36
禁上网多简单啊,方法千千万,不知道你是啥环境

我找到一个方法,在hdcp的时候就不分配网关
但是设置不成功不知道这个不分配网关怎么设置
我是这样留空网关的 但是结果是dhcp都不给了,不知道想设置空网关应该填什么
  1. config host
  2.         option dns '1'
  3.         option mac '20:cf:30:5e:0f:64'
  4.         option ip '10.0.0.6'
  5.         option name 'ASUS'
  6.         option tag 'need_outernet'

  7. config tag 'need_outernet'
  8.         list dhcp_option '3,'
  9.         option force '1'
复制代码

作者: a1379388505    时间: 2019-12-14 17:03
本帖最后由 a1379388505 于 2019-12-14 17:19 编辑
江南一根葱 发表于 2019-12-14 16:36
禁上网多简单啊,方法千千万,不知道你是啥环境

万分感谢!折腾了快一周了现在终于禁掉了 在win系统里面不管怎么设置都不能断网,我怀疑应该是底层pxe启动的时候分配的ip信息有关
现在在openwrt的dhcp里面不分配网关和dns就彻底断网了代码如下
  1. config host
  2.         option dns '1'
  3.         option mac '20:cf:30:5e:0f:64'
  4.         option ip '10.0.0.6'
  5.         option name 'ASUS'
  6.         option tag 'need_outernet'

  7. config tag 'need_outernet'
  8.         list dhcp_option '3'
  9.         list dhcp_option '6'
  10.         option force '1'
复制代码



作者: a1379388505    时间: 2019-12-14 17:44
本帖最后由 a1379388505 于 2019-12-14 17:50 编辑
hkkitlee 发表于 2019-12-14 16:36
那只是用什麼protocol 掛載目標系統根目錄的問題吧

不对 哭死了
都禁到这样了,只是网址打不开了,iP还是可以打开网页!
网卡的网络信息里面只有ip地址和dhcp地址,网关和dns都是空的

结果打开百度的ip地址竟然还能正常访问网页。。。

作者: a1379388505    时间: 2019-12-14 17:56
江南一根葱 发表于 2019-12-14 16:36
禁上网多简单啊,方法千千万,不知道你是啥环境

不对 哭死了
都禁到这样了,只是网址打不开了,iP还是可以打开网页!

网卡的网络信息里面只有ip地址和dhcp地址,网关和dns都是空的

结果打开百度的ip地址竟然还能正常访问网页。。。

我的环境是:
openwrt作为路由器,提供dhcp服务,网关等
一台群晖nas提供tftp服务和iscsi服务。
电脑系统是win7
我把win7的ipv4去掉内网都连不上了 但是还能打开网页,网卡禁掉都没有可用网卡了还是可以打开网页。
我在openwrt中设置了禁止这台电脑的所有访问wan的包都丢弃或者拒绝,还是可以打开网页。
我按照hkkitlee大的说法不分配网关,我连dns 网关都为空了 ,还是可以打开ip的网页,只是网址的不能解析了。
作者: 江南一根葱    时间: 2019-12-14 18:05
a1379388505 发表于 2019-12-14 17:56
不对 哭死了
都禁到这样了,只是网址打不开了,iP还是可以打开网页!

你电脑上执行
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 一个不存在的同网段ip -p

我不信还能上网。。。



route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 192.168.1.2 -p

作者: a1379388505    时间: 2019-12-14 18:14
本帖最后由 a1379388505 于 2019-12-14 18:16 编辑
江南一根葱 发表于 2019-12-14 18:05
你电脑上执行
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 一个不存在的同网段ip -p

哈哈哈哈 非常感谢你的提醒 我想起我以前为了断网好像设置过永久网关,我先用了route print 发现我以前真设置了永久网关  不过奇怪的是永久网关是10.0.0.6,并不是真正的网关10.0.0.1,但是确实可以上网,然后我route -f 重启电脑终于不能上网了
作者: hkkitlee    时间: 2019-12-14 21:10
a1379388505 发表于 2019-12-14 17:56
不对 哭死了
都禁到这样了,只是网址打不开了,iP还是可以打开网页!

那你的openwrt有firewall,就可以用來「禁斷網絡」。

我之前說的protocol 指的是藍屏,不是斷網
作者: a1379388505    时间: 2019-12-15 14:31
hkkitlee 发表于 2019-12-14 21:10
那你的openwrt有firewall,就可以用來「禁斷網絡」。

我之前說的protocol 指的是藍屏,不是斷網

openwrt的firewall禁不住他 各种禁止都不行 可能跟底层pxe启动有关,最后按照你说的不分配网关和dns解决的
作者: hkkitlee    时间: 2019-12-15 15:07
a1379388505 发表于 2019-12-15 14:31
openwrt的firewall禁不住他 各种禁止都不行 可能跟底层pxe启动有关,最后按照你说的不分配网关和dns解决 ...

能用就好
作者: a1379388505    时间: 2019-12-22 19:23
江南一根葱 发表于 2019-12-14 18:05
你电脑上执行
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 一个不存在的同网段ip -p

今天我另一台电脑需要禁网
我用了
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 10.0.0.254 -p

查看路由表0000ip的网关也只有 10.0.0.254 这一个了
但是网页还是可以打开 只是巨慢 而且网页残破不全,最后终于找到原因了,竟然是是走了ipv6

作者: 江南一根葱    时间: 2019-12-22 20:23
a1379388505 发表于 2019-12-22 19:23
今天我另一台电脑需要禁网
我用了
route delete 0.0.0.0

以前是上不了网找原因,现在是上得了网找原因啊。。
作者: a1379388505    时间: 2019-12-22 20:43
本帖最后由 a1379388505 于 2019-12-22 21:52 编辑
江南一根葱 发表于 2019-12-22 20:23
以前是上不了网找原因,现在是上得了网找原因啊。。

哈哈哈哈哈哈哈哈 被阿里逼的,这边电商部门的特殊需求,有几个电脑需要分别登陆不能的店铺账号,要求外网ip不能是相同的,本来网线拉了好几条但是麻烦在于这几个电脑都是无盘系统 这个无盘系统的网关还给其他电脑提供连接外网的服务。。。所以要禁掉无盘的这跟网线的外网 使用专线连接外网

作者: a1379388505    时间: 2019-12-26 22:04
chenall 发表于 2019-10-11 14:39
我目前使用的配置.(后面的192.168.103.15是因为我DHCP和TFTP服务器是分开的,同一台可以不用)

使用VMWARE ...

dhcp-vendorclass跟dhcp-match有啥区别 我看语法有点差别但是功能都一样  我群晖内置的默认是dhcp-vendorclass 我纠结是按照dhcp-vendorclass继续写还是都注释掉改成dhcp-match
作者: 2013dgyangxf    时间: 2020-1-5 16:06
a1379388505 发表于 2019-12-12 14:58
我百度到的我用的Tiny PXE Serve是一个exe的windows程序,而我是用的openwrt里面的tftp启动的ipxe来无盘 ...

这个不是用那个tiny来启动的,你只需要改openwrt的dnsmasq文件,就可以网启的时候自动选择bios或者uefi了

作者: a1379388505    时间: 2020-1-5 18:28
2013dgyangxf 发表于 2020-1-5 16:06
这个不是用那个tiny来启动的,你只需要改openwrt的dnsmasq文件,就可以网启的时候自动选择bios或者uefi了 ...

嗯嗯 我已经改成功了 非常感谢!
作者: wf90725    时间: 2020-1-5 21:27
感谢大神
作者: abe520    时间: 2020-4-23 00:03
使用局域网(非网关)tftp服务,要怎么修改配置?
作者: tigerhuang    时间: 2021-5-13 22:11
非常感谢!我第一次接触ipxe,有小白问题要请教。

1.你说ipxe可以直接用官方的文件,但我点击了http://boot.ipxe.org/,并没有发现bootia32.efi,bootx64.efi和ipxe32.efi。
2.在哪里配置菜单文件,能否提供一个样本用于启动win10pe.iso(或win10pe.wim。
作者: vvqk    时间: 2021-5-13 22:19
学习了,多谢分享。
作者: liquanyi    时间: 2021-10-16 15:16
本帖最后由 liquanyi 于 2021-10-16 15:33 编辑

我的方法很简单,在/etc/dnsmasq.conf里面添加如下内容,不用修改ipxe的内置菜单,直接加载ipxe后第二次加载menu.ipxe菜单,然后菜单根据变量判断生成BIOS或EFI32或EFI64的菜单
  1. enable-tftp
  2. tftp-root=/opt/tftpboot
  3. dhcp-userclass=set:ipxe,iPXE
  4. dhcp-match=set:pcbios,option:client-arch,0
  5. dhcp-match=set:efi-x86,option:client-arch,6
  6. dhcp-match=set:efi-x86_64,option:client-arch,7
  7. dhcp-match=set:efi-x86_64,option:client-arch,9
  8. dhcp-match=set:efi-arm32,option:client-arch,10
  9. dhcp-match=set:efi-arm64,option:client-arch,11
  10. dhcp-boot=tag:!ipxe,tag:pcbios,"undionly.kpxe"
  11. dhcp-boot=tag:!ipxe,tag:efi-x86_64,"snponly.efi"
  12. dhcp-boot=tag:!ipxe,tag:efi-x86,"snponly32.efi"
  13. dhcp-boot=tag:ipxe,tag:pcbios,"menu.ipxe"
  14. dhcp-boot=tag:ipxe,tag:efi-x86_64,"menu.ipxe"
  15. dhcp-boot=tag:ipxe,tag:efi-x86,"menu.ipxe"
复制代码


menu.ipxe菜单文件如下
  1. #!ipxe

  2. set base-url http://openwrt.lan/wwwboot
  3. set menu-timeout 10000
  4. set kspath ${base-url}/kickstarts
  5. cpuid --ext 29 && set arch x86_64 || set arch i386
  6. set start_menu ${platform}_${buildarch}_menu
  7. echo ${start_menu}
  8. goto ${start_menu}

  9. :pcbios_x86_64_menu
  10. goto pcbios_i386_menu

  11. :pcbios_i386_menu
  12. menu My iPXE Boot Menu ${buildarch}_${platform}
  13. set menu-default win10x64
  14. item --gap Linux series
  15. item centos7 --CentOS 7
  16. item debian10 --Debian 10
  17. item --gap Windows series
  18. item win8x32 --Win8 PE x32
  19. item win10x64 --Win10 PE x64
  20. item HardDisk --From hard disk
  21. item --gap Dos series
  22. item mhdd46 --mhdd4.6
  23. item custom_exit --Exit

  24. choose --timeout ${menu-timeout} --default ${menu-default} selected
  25. goto ${selected}

  26. :efi_x86_64_menu
  27. menu My iPXE Boot Menu ${buildarch}_${platform}
  28. set menu-default win10x64
  29. item --gap Linux series
  30. item centos7 --CentOS 7
  31. item debian10 --Debian 10
  32. item --gap Windows series
  33. item win10x64 --Win10 PE x64
  34. item grub2 --Grub2 Shell
  35. item HardDisk --From hard disk

  36. choose --timeout ${menu-timeout} --default ${menu-default} selected
  37. goto ${selected}

  38. :efi_i386_menu
  39. menu My iPXE Boot Menu ${buildarch}_${platform}
  40. set menu-default win8x32
  41. item --gap Windows series
  42. item win8x32 --Win8 PE x32
  43. item HardDisk --From hard disk

  44. choose --timeout ${menu-timeout} --default ${menu-default} selected
  45. goto ${selected}

  46. :shell
  47. echo Type 'Exit' to get the back to the menu
  48. shell
  49. goto ${start_menu}

  50. :failed
  51. echo Booting failed, dropping to shell
  52. goto shell

  53. :reboot
  54. reboot

  55. :HardDisk
  56. exit

  57. :localdisk
  58. sanboot --no-describe --drive 0x80

  59. :centos7
  60. kernel ${base-url}/centos7.4/isolinux/vmlinuz ip=dhcp ks=${kspath}/Centos-7.x-min.cfg repo=${base-url}/centos7.4
  61. initrd ${base-url}/centos7.4/isolinux/initrd.img
  62. boot || goto failed

  63. :debian10
  64. kernel ${base-url}/debian/buster/amd64/linux initrd=initrd.gz
  65. initrd ${base-url}/debian/buster/amd64/initrd.gz
  66. boot || goto failed

  67. :debian10-i386
  68. kernel ${base-url}/debian/buster/i386/linux initrd=initrd.gz
  69. initrd ${base-url}/debian/buster/i386/initrd.gz
  70. boot || goto failed

  71. :win8x32
  72. kernel wimboot.${buildarch}
  73. initrd --name bootmgr.exe ${base-url}/boot/bootmgr.exe bootmgr.exe
  74. initrd --name bootmgfw.efi ${base-url}/boot/bootmgfw32.efi bootmgfw.efi
  75. initrd --name BCD ${base-url}/boot/bcd BCD
  76. initrd --name boot.sdi ${base-url}/boot/boot.sdi boot.sdi
  77. initrd --name boot.wim ${base-url}/sources/WEPE32.WIM boot.wim
  78. boot || goto failed

  79. :win10x64
  80. kernel wimboot.${buildarch}
  81. initrd --name bootmgr.exe ${base-url}/boot/bootmgr.exe bootmgr.exe
  82. initrd --name bootmgfw.efi ${base-url}/boot/bootmgfw.efi bootmgfw.efi
  83. initrd --name BCD ${base-url}/boot/bcd BCD
  84. initrd --name boot.sdi ${base-url}/boot/boot.sdi boot.sdi
  85. initrd --name boot.wim ${base-url}/sources/WEPE64.WIM boot.wim
  86. boot || goto failed

  87. :grub2
  88. kernel ${base-url}/boot/GRUBShell.efi
  89. boot || goto failed

  90. :mhdd46
  91. kernel ${base-url}/boot/memdisk
  92. initrd ${base-url}/boot/mhdd46.ima
  93. boot || goto failed

复制代码

作者: liquanyi    时间: 2021-10-16 15:45
效果









作者: tigerhuang    时间: 2021-10-16 22:28
liquanyi 发表于 2021-10-16 15:16
我的方法很简单,在/etc/dnsmasq.conf里面添加如下内容,不用修改ipxe的内置菜单,直接加载ipxe后第二次加 ...

大佬,太感谢你了,这正是我要找的。能提供包括ipxe的模板文件下载吗?另外能否支持ftp?
作者: liquanyi    时间: 2021-10-16 23:28
tigerhuang 发表于 2021-10-16 22:28
大佬,太感谢你了,这正是我要找的。能提供包括ipxe的模板文件下载吗?另外能否支持ftp?

pxe启动ipxe与拿配置文件用tftp,后面用http
作者: liquanyi    时间: 2021-10-16 23:53
tigerhuang 发表于 2021-10-16 22:28
大佬,太感谢你了,这正是我要找的。能提供包括ipxe的模板文件下载吗?另外能否支持ftp?

启动PE由于大多数PE精简了启动所需文件,所以需要从官方winre.wim或boot.wim里面提取后放http目录
注意把32位的bootmgfw.efi改名为bootmgfw32.efi
tftpboot.7z (261.45 KB, 下载次数: 5)

bcd.7z (1.42 KB, 下载次数: 2)



作者: tigerhuang    时间: 2021-10-17 00:40
本帖最后由 tigerhuang 于 2021-10-17 01:04 编辑
liquanyi 发表于 2021-10-16 23:28
pxe启动ipxe与拿配置文件用tftp,后面用http

我知道tftp是启动以及拿配置用的,不能少。我的HTTP有其他用途,能改为支持FTP(不是tftp)下载镜像文件吗?
作者: liquanyi    时间: 2021-10-17 02:09
tigerhuang 发表于 2021-10-17 00:40
我知道tftp是启动以及拿配置用的,不能少。我的HTTP有其他用途,能改为支持FTP(不是tftp)下载镜像文件吗 ...

应该可以的,你把set base-url http://openwrt.lan/wwwboot改成set base-url ftp://你的ftp目录试试
作者: tigerhuang    时间: 2021-10-18 20:50
本帖最后由 tigerhuang 于 2021-10-18 23:28 编辑
liquanyi 发表于 2021-10-17 02:09
应该可以的,你把set base-url http://openwrt.lan/wwwboot改成set base-url ftp://你的ftp目录试试

抱歉,前两天在忙,没上网。

请问,你的附件里我只看到snponly32.efi,没有snponly.efi这个文件,如何能实现以下的这个功能?
    dhcp-boot=tag:!ipxe,tag:efi-x86_64,"snponly.efi"
    dhcp-boot=tag:!ipxe,tag:efi-x86,"snponly32.efi"

还有,能麻烦你将boot目录的模板也打包后提供下载吗?

最后请教,如果是BIOS启动,你的模板可以直接支持启动ISO文件吗?我在你的menu.ipxe里面没有找到任何启动ISO文件的语句。


作者: liquanyi    时间: 2021-10-19 17:56
本帖最后由 liquanyi 于 2021-10-19 17:59 编辑
tigerhuang 发表于 2021-10-18 20:50
抱歉,前两天在忙,没上网。

请问,你的附件里我只看到snponly32.efi,没有snponly.efi这个文件,如何 ...

附件包里面有snponly.efi,undionly.kpxe啊,另外最新的snponly.efi,undionly.kpxe可以在官网下载http://boot.ipxe.org/,snponly32.efi由于官网默认没编译提供需要自己下载源码编译,启动iso的大概这样,你可以自己试试。memdisk从syslinux包里面找
  1. :win10x32
  2. kernel ${dirpath}/win10/memdisk raw iso
  3. initrd ${dirpath}/win10/W10X32_CN_PE.iso
  4. boot || goto failed
复制代码

作者: tigerhuang    时间: 2021-10-20 06:04
liquanyi 发表于 2021-10-19 17:56
附件包里面有snponly.efi,undionly.kpxe啊,另外最新的snponly.efi,undionly.kpxe可以在官网下载http://b ...

请问bootmgr.exe,bootmgfw.efi,BCD,boot.sdi这些文件要到哪里去下载?任何一个Win10里面的可以吗?现在头疼是不知道去哪里找所需要的文件。
作者: liquanyi    时间: 2021-10-20 08:44
tigerhuang 发表于 2021-10-20 06:04
请问bootmgr.exe,bootmgfw.efi,BCD,boot.sdi这些文件要到哪里去下载?任何一个Win10里面的可以吗?现在头 ...

winre.wim或boot.wim的Windows\Boot目录下面的各个目录去找,BCD我附件上传的有
作者: tigerhuang    时间: 2021-10-21 04:31
liquanyi 发表于 2021-10-20 08:44
winre.wim或boot.wim的Windows\Boot目录下面的各个目录去找,BCD我附件上传的有

还是多谢你!

又要考虑去哪里下载Boot目录里的启动文件,想想还是算了,一个问题有牵涉到另外一个问题,要是有人能一次性提供除WinPE外所有启动文件就好了

我另起一个悬赏帖吧,希望有人能实现我的要求。
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
作者: jpzsj    时间: 2022-4-17 00:28
liquanyi 发表于 2021-10-16 15:16
我的方法很简单,在/etc/dnsmasq.conf里面添加如下内容,不用修改ipxe的内置菜单,直接加载ipxe后第二次加 ...

我的是群晖,怎么改?
作者: minchengan    时间: 2022-4-17 19:46
用这个方法,成功实现了dnsmasq加载ipxe菜单文件。非常感谢
作者: 陈胡妫    时间: 2023-12-4 23:49
收藏,然后学习了




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