无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
楼主: 星体投射

[原创] dnsmasq设置bios和uefi双启动多引导菜单(完美)

  [复制链接]
 楼主| 发表于 2019-12-12 15:02:59 | 显示全部楼层
a1379388505 发表于 2019-12-12 14:58
我百度到的我用的Tiny PXE Serve是一个exe的windows程序,而我是用的openwrt里面的tftp启动的ipxe来无盘 ...

那你用9楼的那个方法吧,我不用openwrt是因为切换引导不方便
回复

使用道具 举报

发表于 2019-12-12 15:36:27 | 显示全部楼层
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版本
我去百度找找语法
回复

使用道具 举报

发表于 2019-12-12 16:27:15 | 显示全部楼层
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,,'

最后提示文件名找不到 不知道语法哪里有问题
回复

使用道具 举报

发表于 2019-12-12 16:37:14 | 显示全部楼层
江南一根葱 发表于 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根目录里面

点评

http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=415206&pid=3818975&fromuid=678562 二樓有我wrt的寫法,打了#號的一埋啟動就是,可以參考一下。 另外你arch可再加入2和8,理論上就可以支援  详情 回复 发表于 2019-12-12 17:15
文件名不知道要不要加.0  详情 回复 发表于 2019-12-12 16:43
回复

使用道具 举报

发表于 2019-12-12 16:43:37 | 显示全部楼层
a1379388505 发表于 2019-12-12 16:37
求助 我需要将9楼的内容转化成openwrt用的
我需要转化写法儿,但是      
option dhcp_match 'set:x86 ...

文件名不知道要不要加.0

点评

這個你印象很深刻!😂  详情 回复 发表于 2019-12-12 17:09
回复

使用道具 举报

发表于 2019-12-12 16:45:12 | 显示全部楼层
江南一根葱 发表于 2019-12-12 16:43
文件名不知道要不要加.0

好的 我加.0试试 这个语法转换的不知道有没有错
回复

使用道具 举报

发表于 2019-12-12 17:09:21 | 显示全部楼层
江南一根葱 发表于 2019-12-12 16:43
文件名不知道要不要加.0

這個你印象很深刻!
回复

使用道具 举报

发表于 2019-12-12 17:15:44 | 显示全部楼层
本帖最后由 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)
回复

使用道具 举报

发表于 2019-12-12 17:31:48 | 显示全部楼层
本帖最后由 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
应该还是我语法转换的有问题
但是我找不到参考资料

点评

另一個網,現成的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:0000  详情 回复 发表于 2019-12-12 17:59
https://openwrt.org/docs/guide-user/services/tftp.pxe-server 3. Enable TFTP and NFS ServiceConfigure dnsmasq service to enable read-only tftp-serviceroot@OpenWrt:~# vim /etc/config/dhcpconfig dnsma  详情 回复 发表于 2019-12-12 17:46
回复

使用道具 举报

发表于 2019-12-12 17:46:53 | 显示全部楼层
本帖最后由 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'這個官網出的參考,紅色是我見你好像沒有的
回复

使用道具 举报

发表于 2019-12-12 17:59:11 | 显示全部楼层
本帖最后由 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'


回复

使用道具 举报

发表于 2019-12-12 18:06:48 | 显示全部楼层
本帖最后由 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'
复制代码




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

回复

使用道具 举报

发表于 2019-12-12 18:47:30 | 显示全部楼层
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
我想让它同时能加载菜单

点评

一次兩個文件是不行的! 具體操作方案有兩個: A是將ipxe的script一同編譯成一個文件。 B是將ipxe的回應碼:175加進dnsmasq,引導客戶端下載script 兩個方法各有千秋。我用1的 但B有個兩個缺點: 1是慢  详情 回复 发表于 2019-12-12 21:21
回复

使用道具 举报

发表于 2019-12-12 19:22:46 | 显示全部楼层
星体投射 发表于 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:41 | 显示全部楼层
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'

评分

参与人数 1无忧币 +5 收起 理由
a1379388505 + 5 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2019-12-12 19:46:23 | 显示全部楼层
好久没折腾dnsmasq了,不过前几个月折腾这个时最后发觉,

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

评分

参与人数 1无忧币 +5 收起 理由
a1379388505 + 5 神马都是浮云

查看全部评分

回复

使用道具 举报

发表于 2019-12-12 21:21:36 | 显示全部楼层
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引用此類「變量」有機會會做成錯誤!
回复

使用道具 举报

发表于 2019-12-12 21:31:10 | 显示全部楼层
本帖最后由 a1379388505 于 2019-12-12 21:37 编辑
hkkitlee 发表于 2019-12-12 21:21
一次兩個文件是不行的!

具體操作方案有兩個:

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

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

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


回复

使用道具 举报

发表于 2019-12-12 21:33:25 | 显示全部楼层
江南一根葱 发表于 2019-12-12 19:46
好久没折腾dnsmasq了,不过前几个月折腾这个时最后发觉,

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

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

点评

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

使用道具 举报

发表于 2019-12-12 21:35:44 | 显示全部楼层
本帖最后由 a1379388505 于 2019-12-12 21:38 编辑
星体投射 发表于 2019-12-12 19:38
config userclass
        option networkid 'set:ipxe'
        option userclass 'iPXE'

非常感谢!我现在已经折腾完美了
我之前自己爬你给的链接也发现了这个写法,只是没明白userclass是什么意思,你给出来以后我就立刻明白了!哈哈哈哈 现在已经完美了
非常感谢!
回复

使用道具 举报

发表于 2019-12-12 22:51:45 | 显示全部楼层
a1379388505 发表于 2019-12-12 21:33
非常感谢!我现在已经折腾完美了
哈哈哈哈
接下来研究另一个难题:

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

你是想禁止pxe服務出了外網?還是另有特殊情況需要特別設定?
回复

使用道具 举报

发表于 2019-12-12 23:19:53 | 显示全部楼层
hkkitlee 发表于 2019-12-12 22:51
我需要让无盘启动的网卡禁止访问外网?
內網訪問外網很正常的。

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

但是同时A网卡要保留内网访问与无盘启动

点评

那就是說你的網關就是裝有雙卡的電腦。 那你整個網絡的dhcp server是誰負責?網關還是openwrt?  详情 回复 发表于 2019-12-12 23:36
回复

使用道具 举报

发表于 2019-12-12 23:36:26 | 显示全部楼层
a1379388505 发表于 2019-12-12 23:19
电脑装有两个网卡,网卡A连接到openwrt路由器上并且负责无盘启动系统
网卡B直接连接外网不经过路由器。
...

那就是說你的網關就是裝有雙卡的電腦。
那你整個網絡的dhcp server是誰負責?網關還是openwrt?
回复

使用道具 举报

发表于 2019-12-12 23:47:18 | 显示全部楼层
hkkitlee 发表于 2019-12-12 23:36
那就是說你的網關就是裝有雙卡的電腦。
那你整個網絡的dhcp server是誰負責?網關還是openwrt?

openwrt
我有找到openwrt禁止网卡mac联网的命令 但是经过测试只能用于非无盘启动的电脑,无盘启动的电脑禁止不了。
回复

使用道具 举报

发表于 2019-12-13 10:49:11 | 显示全部楼层
a1379388505 发表于 2019-12-12 23:47
openwrt
我有找到openwrt禁止网卡mac联网的命令 但是经过测试只能用于非无盘启动的电脑,无盘启动的电 ...

那dhcp不設網關;卡a轉為固定應該就可以啦

评分

参与人数 1无忧币 +5 收起 理由
a1379388505 + 5 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2019-12-13 11:22:51 | 显示全部楼层
只走一个网很简单,win下反正是 route add 0.0.0.0 0.0.0.0 唯一网关 -p就行了
回复

使用道具 举报

发表于 2019-12-14 15:15:28 | 显示全部楼层
江南一根葱 发表于 2019-12-13 11:22
只走一个网很简单,win下反正是 route add 0.0.0.0 0.0.0.0 唯一网关 -p就行了

无盘启动的难题就在这里,不用说唯一网关了,我就是把网卡禁用,会立即蓝屏然后电脑重启,然后网卡是被禁用状态但是照样能上网。。。
各种设置都禁不了上网
回复

使用道具 举报

发表于 2019-12-14 16:36:17 | 显示全部楼层
a1379388505 发表于 2019-12-14 15:15
无盘启动的难题就在这里,不用说唯一网关了,我就是把网卡禁用,会立即蓝屏然后电脑重启,然后网卡是被禁 ...

那只是用什麼protocol 掛載目標系統根目錄的問題吧

评分

参与人数 1无忧币 +5 收起 理由
a1379388505 + 5 神马都是浮云

查看全部评分

回复

使用道具 举报

发表于 2019-12-14 16:36:30 | 显示全部楼层
a1379388505 发表于 2019-12-14 15:15
无盘启动的难题就在这里,不用说唯一网关了,我就是把网卡禁用,会立即蓝屏然后电脑重启,然后网卡是被禁 ...

禁上网多简单啊,方法千千万,不知道你是啥环境

评分

参与人数 1无忧币 +5 收起 理由
a1379388505 + 5 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2019-12-14 16:43:39 | 显示全部楼层
本帖最后由 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'
复制代码


回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2021-1-21 15:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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