无忧启动论坛

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

希望grub4dos在pxe启动时能够支持http协议

    [复制链接]
跳转到指定楼层
#
发表于 2019-12-19 16:31:40 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 liuzhaoyzz 于 2019-12-21 10:13 编辑

grub4dos在pxe启动时目前是不是只支持tftp协议,不支持http协议?希望以后(一年、两年、或者更久,等chenall、2011yaya2007777有时间有兴趣)能够支持,tftp传输太慢了,不论百兆网还是千兆网,只有1-3MB/s左右,http或者ftp能够充分利用网速,能够达到12MB/s~100MB/s,现有的pxe高速启动PE.ISO方案,无论是lpxelinux.0,ipxe,对于整体仿真PE.ISO启动都是用的memdisk,感觉没有grub4dos的map --mem强大稳定,比如说memdisk似乎只能仿真一个磁盘并启动,不支持仿真多个磁盘,如果grub4dos支持http协议,BIOS下的pxe启动,也不用学习那么多启动软件了。

43#
发表于 2020-1-23 17:56:38 | 只看该作者
chenall 发表于 2019-12-23 09:52
在本地启动系统引导器可以传递启动磁盘信息给 grub4dos

但是网络启动是没有办法的,最多只能告诉你我是 ...

在折腾ipxe中转传递给grldr的信息,set net0/filename后好像g4d环境的bootfile值没改变
回复

使用道具 举报

42#
发表于 2019-12-23 09:52:27 | 只看该作者
cckp 发表于 2019-12-21 23:00
照教程的说法 应该是在命令行里面简单的设置一下boot filename变量就能改。现在只是不知道哪里被改了, ...

在本地启动系统引导器可以传递启动磁盘信息给 grub4dos

但是网络启动是没有办法的,最多只能告诉你我是从pxe网络启动的.
这时只能通过 pxe的bootfile 来告诉它启动文件的路径.
这个路径一般是在dhcp服务器上设置,比如pxe直接启动grldr那就是tftp服务器.

如果是ipxe中转的,可以在ipxe环境中进行修改
太概就是如下的样子.

isset ${proxydhcp/filename} && set proxydhcp/filename ${grldrurl}
isset ${net0/filename} &&  set net0/filename ${grldrurl}






点评

在折腾ipxe中转传递给grldr的信息,set net0/filename后好像g4d环境的bootfile值没改变  详情 回复 发表于 2020-1-23 17:56

评分

参与人数 1无忧币 +5 收起 理由
cckp + 5

查看全部评分

回复

使用道具 举报

41#
 楼主| 发表于 2019-12-21 22:41:36 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-12-21 22:48 编辑

我想你误解了吧。相对路径优先的前提是grldr所在的盘符与PE所在的盘符一直才好用,否则还是要用find。pxe-tftp也是可以用find的,所以pxe-tftp可以和本地菜单统一为一个。pxe-http就不行,因为webserver地址可能是变化的。

pxe-http启动即使用http://b.chenall.net/grldr,菜单肯定要本地的menu.lst优先,如果不是本地优先的话,你怎么自定义自己的启动菜单?都用http://b.chenall.net/menu.lst这个?谁有权限修改这个?除了chenall,大家都不能修改,是只读的。

点评

照教程的说法 应该是在命令行里面简单的设置一下boot filename变量就能改。现在只是不知道哪里被改了,好像是偏离了原来的说法  详情 回复 发表于 2019-12-21 23:00
回复

使用道具 举报

40#
 楼主| 发表于 2019-12-21 22:20:57 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-12-21 22:23 编辑
cckp 发表于 2019-12-21 22:15
ipxegrldr感觉是不是已经没有维护了?或者说没有加入自动编译机制 看最新的grub4dos-0.4.6a-2019-12-20版, ...

潜意识里,我觉得chenall默认加载互联网上的最新版grldr不太好,目前看起来加载速度还行,问题是网站能保持多久啊,让用户自己下载并本地的grldr最好吧,grub4dos国内国外用的人都挺多,http://b.chenall.net/grldr国外的网友不知道访问速度怎么样呢。以上纯属个人臆想,不当之处请chenall大见谅。


关于pxe网启菜单menu.lst,肯定是优先要用本地的啊!怎么能用网上的呢?如果网上的菜单优先,那么本地的菜单永远不可能用得上,chenall大的做法是对的!



点评

chenall说的是要相对路径优先 ,目前的现状应该是偏离了chenall的本意了吧? quote: 启动本地的grldr当然是优先本地的menu.lst,但如果启动的文件路径直接指定的是http://b.chenall.net/grldr,那其实可以说  详情 回复 发表于 2019-12-21 22:29
回复

使用道具 举报

39#
 楼主| 发表于 2019-12-21 21:48:34 | 只看该作者
感谢分享!包里面的知识点很多啊,我看你分享了很多经验,我看得眼花缭乱,目不暇接啊!
回复

使用道具 举报

38#
发表于 2019-12-21 20:38:05 | 只看该作者
liuzhaoyzz 发表于 2019-12-21 10:11
原来,潜意识里面,我觉得,ipxe/lpxelinux.0+http+memdisk+pe.iso似乎更好,因为他们一直就是这样子搭配 ...

http://bbs.wuyou.net/forum.php?m ... d=417622&extra=

这个包是ipxe+g4d  ipxe+grub2的终极大包
vm不同环境,实机不同环境多次实战通过,只是不适合甲骨文虚拟机网启 你可以折腾折腾

评分

参与人数 1无忧币 +10 收起 理由
liuzhaoyzz + 10 很给力!

查看全部评分

回复

使用道具 举报

37#
 楼主| 发表于 2019-12-21 10:11:39 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-12-21 10:24 编辑
江南一根葱 发表于 2019-12-20 21:56
哈哈,你也“来回倒腾”了,我都这样用了好几年了。
不过我遇到很老的机器网启还是要用支持ipxe前的版本 ...

原来,潜意识里面,我觉得,ipxe/lpxelinux.0+http+memdisk+pe.iso似乎更好,因为他们一直就是这样子搭配的,lpxelinux.0和memdisk都是syslinux这同一个体系里面的组件(不过syslinux基本不更新了)。
要么就用grldr+tftp+map --mem+pe.iso,这个组合是grub4dos体系的,似乎搭配挺好。
我没想到的是ipxe和grldr还能够通过ipxe的chain grldr组合能够让grub4dos支持http,真的很奇妙!
原来我看到论坛有chain grldr这样的写法,但是不知道这样搞之后能够
让grub4dos支持http。(看了不点大的回帖,似乎他也没有这样子用过。。。)

葱大,【史上最伟大网管】(这个头衔挺酷啊),网络启动区你搞了很多经验分享啊,ipxe+g4d的组合没见你分享过,或者是我没有注意到。



点评

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=417622&extra= 这个包是ipxe+g4d ipxe+grub2的终极大包 vm不同环境,实机不同环境多次实战通过,只是不适合甲骨文虚拟机网启 你可以折腾折腾  详情 回复 发表于 2019-12-21 20:38
回复

使用道具 举报

36#
发表于 2019-12-20 21:56:22 | 只看该作者
本帖最后由 江南一根葱 于 2019-12-20 21:57 编辑
liuzhaoyzz 发表于 2019-12-20 15:57
刚才又试了下,用tinypxeserver+undionly.kpxe+最新版20191028grldr+同目录menu.lst+http启动PE.ISO成功。
...

哈哈,你也“来回倒腾”了,我都这样用了好几年了。
不过我遇到很老的机器网启还是要用支持ipxe前的版本,用纯tftp干才能启。

点评

原来,潜意识里面,我觉得,ipxe/lpxelinux.0+http+memdisk+pe.iso似乎更好,因为他们一直就是这样子搭配的,lpxelinux.0和memdisk都是syslinux这同一个体系里面的组件(不过syslinux基本不更新了)。 要么就用grld  详情 回复 发表于 2019-12-21 10:11
回复

使用道具 举报

35#
发表于 2019-12-20 21:17:45 | 只看该作者
wintoflash 发表于 2019-12-20 20:40
感谢。

这个还是算了,我水平不够,不懂汇编。

找红毛,他有。红毛看到别打我
回复

使用道具 举报

34#
 楼主| 发表于 2019-12-20 21:11:27 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-12-21 10:19 编辑
wintoflash 发表于 2019-12-20 20:40
感谢。

这个还是算了,我水平不够,不懂汇编。

bean当时开发burg的时候,我没有关注,没用过(早些年再fbinstool里面有涉及到),也没有做过笔记,没想到burgloader论坛就这么挂了。确实可惜。
回复

使用道具 举报

33#
发表于 2019-12-20 20:40:51 | 只看该作者
liuzhaoyzz 发表于 2019-12-20 12:52
当时刚开始接触grub4dos,从sysoft时空论坛到无忧,grub4dos的知识点太多,看了前面忘了后面的,于是我做了 ...

感谢。
wintoflash大神如果有兴趣加入grub4dos开发,那就好了!

这个还是算了,我水平不够,不懂汇编。
我主要是对bean开发的burg比较感兴趣,可惜burgloader的论坛数据应该都没有了。

点评

找红毛,他有。红毛看到别打我  详情 回复 发表于 2019-12-20 21:17
bean当时开发burg的时候,我没有关注,没用过,也没有做过笔记,没想到burgloader论坛就这么挂了。确实可惜。  详情 回复 发表于 2019-12-20 21:11
回复

使用道具 举报

32#
 楼主| 发表于 2019-12-20 15:57:32 | 只看该作者
刚才又试了下,用tinypxeserver+undionly.kpxe+最新版20191028grldr+同目录menu.lst+http启动PE.ISO成功。
undionly.kpxe+最新版20191028grldr在一起会发生神奇的“化学反应”,使grldr支持http协议,真奇妙!这样的用法几年前就有了,我才知道。。。惭愧!
感谢chenall!
        

点评

哈哈,你也“来回倒腾”了,我都这样用了好几年了。  详情 回复 发表于 2019-12-20 21:56
回复

使用道具 举报

31#
发表于 2019-12-20 15:22:24 | 只看该作者
看了下我的网站的记录,应该是有ipxegrldr的时候就已经支持了的

http://chenall.net/post/grub4dos_ipxe/
回复

使用道具 举报

30#
 楼主| 发表于 2019-12-20 15:16:30 | 只看该作者
chenall 发表于 2019-12-20 14:53
不是很明白你具体的需求

我觉得菜单要通用最好是使用相对路径,, 可以了解一下相对路径的概念.

ipxegrldr的:map --mem http://192.168.103.15/test/test.iso (0xff)这样子的语句具体是什么时候开始支持http的?刚开始(2014-12-28)不支持这样的吧?我想知道我out多久了!        
回复

使用道具 举报

29#
 楼主| 发表于 2019-12-20 15:04:47 | 只看该作者

我看笨办法还是用两套菜单,简单明了粗暴。      
回复

使用道具 举报

28#
发表于 2019-12-20 15:01:59 | 只看该作者
liuzhaoyzz 发表于 2019-12-20 14:58
你说的都是本地启动的情况下或者一个本地,一个pxe-tfptd启动的情况,的确可以本地和网络共用同一个菜单 ...

加判断就行了 if ***
回复

使用道具 举报

27#
 楼主| 发表于 2019-12-20 14:58:59 | 只看该作者
chenall 发表于 2019-12-20 14:53
不是很明白你具体的需求

我觉得菜单要通用最好是使用相对路径,, 可以了解一下相对路径的概念.

你说的都是本地启动的情况下或者一个本地,一个pxe-tfptd启动的情况,的确可以本地和网络共用同一个菜单。

那pxe-http启动涉及到webserver的地址变化,和本地的菜单是不同的啊,怎么用同一套菜单?
        
回复

使用道具 举报

26#
发表于 2019-12-20 14:55:47 | 只看该作者
本帖最后由 江南一根葱 于 2019-12-20 14:59 编辑
liuzhaoyzz 发表于 2019-12-20 14:39
ipxegrldr为什么要用内置菜单?不是会直接搜索同目录的menu.lst吗?menu.lst不是很好编辑的吗?

不想用menu.lst呗,我需要内置菜单里干很多活不过通常还是喜欢用ipxe来引导g4d
回复

使用道具 举报

25#
发表于 2019-12-20 14:53:54 | 只看该作者
liuzhaoyzz 发表于 2019-12-20 14:36
不用find不行啊,因为grldr启动盘符(bd)和PE.ISO不一定是同一个盘符,比如grldr从C盘grldr引导,(bd)=(hd0, ...

不是很明白你具体的需求

我觉得菜单要通用最好是使用相对路径,, 可以了解一下相对路径的概念.

这样不管文件放在哪里都是使用同样的菜单就可以启动了.

像我网络启动和本地启动所使用的菜单是一模一样的.

加载本地启动菜单就是使用本地的文件,加载网络启动菜单就是使用网络上的文件.

比如 menu.lst 和 test.iso 在同一个磁盘
那在menu.lst里面启动只需要如下写法就行了
map --mem /path/test.iso (0xff)
回复

使用道具 举报

24#
 楼主| 发表于 2019-12-20 14:39:37 | 只看该作者
江南一根葱 发表于 2019-12-20 13:51
ipxeldr好像改内置菜单不太方便,一定得重新编译?

ipxegrldr为什么要用内置菜单?不是会直接搜索同目录的menu.lst吗?menu.lst不是很好编辑的吗?
回复

使用道具 举报

23#
 楼主| 发表于 2019-12-20 14:36:00 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-12-20 14:37 编辑

不用find不行啊,因为grldr启动盘符(bd)和PE.ISO不一定是同一个盘符,比如grldr从C盘grldr引导,(bd)=(hd0,0),PE放在F盘,或者不同盘符有多个grldr,不用find怎么确定PE.ISO所在的盘符啊。

用了map --mem http://192.168.103.15/test/test.iso (0xff)这样子的语句,启动本地hd上面的
map --mem /test/test.iso (0xff)和网络启动的PE.ISO的菜单文件就不能统一了,需要提前用批处理之类的进行处理,就是需要提前修改webserver的地址,而这个地址webserver有可能是变化的。可有好的办法,实现本地hd和http启动的pxe菜单统一?搞两套菜单?        
回复

使用道具 举报

22#
发表于 2019-12-20 14:26:03 | 只看该作者
滥用find的后果^_^,find不一定需要用的,我就很少使用find  正常情况下find一般是菜单最前面使用用于定位特殊文件

大部份的情况下,menu.lst和所需要的文件都是在同一个地方的. 这时完全不需要使用find
直接相对路径就可以使用了.
回复

使用道具 举报

21#
 楼主| 发表于 2019-12-20 14:13:26 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-12-20 14:23 编辑
chenall 发表于 2019-12-20 13:05
使用这个方式来启动

说明对GRUB4DOS的印像还停留是很早期的版本上

根据chenall大的提示,tinypxeserver+直接用ipxegrldr作为启动文件,ipxegrldr会自动调用同目录下的menu.lst菜单文件,用类似上面的菜单直接起动PE.ISO成功。原来早就实现了啊!我out几年了!
map --mem http://192.168.103.15/test/test.iso (0xff)这一句之前似乎不再需要find语句了,写了find语句会出错。
        
回复

使用道具 举报

20#
发表于 2019-12-20 13:51:50 | 只看该作者
chenall 发表于 2019-12-20 13:05
使用这个方式来启动

说明对GRUB4DOS的印像还停留是很早期的版本上

ipxeldr好像改内置菜单不太方便,一定得重新编译?
回复

使用道具 举报

19#
发表于 2019-12-20 13:50:03 | 只看该作者
我的启动模板就是用的ipxe转grldr,然后http启动,不太有问题啊
回复

使用道具 举报

18#
发表于 2019-12-20 13:05:35 | 只看该作者
本帖最后由 chenall 于 2019-12-20 13:07 编辑
liuzhaoyzz 发表于 2019-12-20 09:16
请教下chenall大,ipxe启动转grldr可以吗?我只见到ipxe启动转grub.exe的菜单写法。我说的是PE.ISO,不 ...

使用这个方式来启动

说明对GRUB4DOS的印像还停留是很早期的版本上

新的版本是可以ipxe启动直接chain grldr启动的(必须使用ipxe的kpxe的版本)
chain grldr
简单的测试就是直接使用ipxegrldr

启动后是可以直接使用类似如下语句的
map --mem http://192.168.103.15/test/test.iso (0xff)

ipxegrldr如果没有使用自己的菜单默认情况下加载的是网络的grub4dos菜单,里面都是直接访问http下载启动文件的.




回复

使用道具 举报

17#
 楼主| 发表于 2019-12-20 12:52:48 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-12-20 12:58 编辑

当时刚开始接触grub4dos,从sysoft时空论坛到无忧,grub4dos的知识点太多,看了前面忘了后面的,于是我做了一部分笔记,涉及到代码部分的很少,当时bean的帖子我大部分复制了。分享出来,不知道你想要哪些? https://www.cnblogs.com/liuzhaoy ... /01/04/2843592.html   
wintoflash大神如果有兴趣加入grub4dos开发,那就好了!
   
回复

使用道具 举报

16#
发表于 2019-12-20 12:35:32 | 只看该作者
liuzhaoyzz 发表于 2019-12-20 11:53
确实如您所说的这样子。grub legacy是没有pxe功能的,bean、不点、chenall在pxe方面都投入过不少精力。其 ...

还有没有其他时空论坛帖子的备份?
如果有的话能不能全部打包上传到某个地方供大家查阅参考?谢谢。


回复

使用道具 举报

15#
 楼主| 发表于 2019-12-20 12:13:40 来自手机 | 只看该作者
      http://wuyou.net/forum.php?mod=viewthread&tid=342846  看了下,2014.10月份就有网友510819776提出这个需求了。     
回复

使用道具 举报

14#
 楼主| 发表于 2019-12-20 11:53:26 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-12-20 12:05 编辑
不点 发表于 2019-12-20 11:27
我印象中,grub4dos 里面的 pxe 代码,是 bean 独立完成的。grub legacy 里面,好像没有这样的功能(究竟有 ...

确实如您所说的这样子。grub legacy是没有pxe功能的,bean、不点、chenall在pxe方面都投入过不少精力。其实我理解不点站在开发者角度看问题,想减轻开发者的负担和压力,以及要根据BIOS/UEFI大势所趋,我完全理解,但目前看来,grub4dos似乎没有什么更好的发展方向,仅仅是完善bug,增强稳定性,所以我提议(不太成熟)如果开发者(包括chenall、yaya以及后来可能的参与者)能够增强pxe功能更好了,但是那也是在开发者们有时间、兴趣、精力等方面的先决条件下,如果ipxe/lpxelinux.0的代码能够借鉴一部分最好了,如果难度较大,还是算了。

sysoft时空论坛已经挂了,谨以此贴留念吧:
http://bbs.znpc.net/forum.php?mo ... 1&highlight=%2Bbean
bean发表于 2007-4-18 03:34
GRUB4DOS PXE网络启动版 (v3.2)

2该版本可用于PXE无盘启动。进入grub后,可以用设备(pd)来访问服务器上的文件。

v3.2更新:
* 在启动系统前卸载PXE的运行环境。

v3.1更新:
* 增加内置命令pxe,可用于设置pxe的参数。

v3更新:
* 优化PXE代码,文件下载速度大大增加
* 显示进度条。每下载1M的内容,在屏幕上显示一个"."。
* 修正使用map函数映射网络上的虚拟影像时出现的问题(主要对应于etherboot的PXE ROM,网卡上内置的ROM一般没有问题)

v2更新:
* 完全重写pxe部分的代码。
* pxe和网络部分代码相互独立,pxe成为一个文件系统模块。
* 不再需要pxegrub,grldr可以直接用于无盘启动。
* 采用类似于pxelinux结构的配置文件。

注意1:v2中,使用设备(pd)来访问pxe服务器上文件,它不同于netboot生成的网络设备(nd)。netboot支持需要使用特殊的编译指令,而pxe支持是缺省的。

注意2:v2中,启动文件所在的目录成为文件访问的根目录。例如,启动文件是 tftp/grldr,那么所有的文件名都是相对于tftp目录的,比如说,(pd)/aa.img在服务器上相应的文件是 tftp/aa.img。

注意3:v2中,配置文件采用类似于pxelinux的结构,也就是,程序在开始前将会顺序搜索以下的文件:
        [/mybootdir]/menu.lst/01-88-99-AA-BB-CC-DD
        [/mybootdir]/menu.lst/C000025B
        [/mybootdir]/menu.lst/C000025
        [/mybootdir]/menu.lst/C00002
        [/mybootdir]/menu.lst/C0000
        [/mybootdir]/menu.lst/C000
        [/mybootdir]/menu.lst/C00
        [/mybootdir]/menu.lst/C0
        [/mybootdir]/menu.lst/C
        [/mybootdir]/menu.lst/default

(88:99:AA:BB:CCD是网卡MAC,C000025B是IP地址192.0.2.91)

如果以上的文件都不存在,那么grub会使用内置菜单。

注意4:从v3.1开始,增加内置命令pxe,用于在menu.lst中设置pxe的参数。

pxe
没有任何参数时,显示当前的blksize和basedir设置

pxe blksize N
设置包的大小。N最大值是1432,最小值是512,缺省值是1432。某些很旧的tftp服务器可能不支持大于512的包,这时需要手动把包的大小设置为512。

pxe basedir path
设置tftp的基础目录。比如说,使用命令

pxe basedir /tftp

后,(pd)设备中的文件名都是相对于/tftp目录的:(pd)/aa.img相对于服务器上的 /tftp/aa.img文件。

基础目录的初始值是启动文件所在的目录。比如说,启动的文件是/tftp/grldr,那么basedir的初始值就是/tftp/

注意5:从v3.2开始,增加两个pxe命令,用于管理PXE的运行环境

pxe keep
不卸载PXE的运行环境

pxe unload
立刻卸载PXE的运行环境

程序缺省的处理方式是在boot的时候卸载PXE的运行环境。如果你需要保留PXE(例如需要通过startrom引导PE),可以使用pxe keep。如果需要在boot命令之前卸载PXE,则使用pxe unload。

使用介绍:
1、把grldr文件拷贝到服务器。
2、建立目录 /menu.lst/,在里面存放菜单文件。
3、设置dhcp和tftp服务器,把grldr作为启动文件。
4、启动客户端,PXE ROM会自动从服务器上下载grub并启动。

在Windows平台下,可以使用tftpd32,它同时提供了dhcp和tftp两种服务。网址:

http://tftpd32.jounin.net/

示范的menu.lst:

title Create ramdisk using map
map --mem (pd)/floppy.img (fd0)
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

title Create ramdisk using memdisk
kernel (pd)/memdisk
initrd (pd)/floppy.img

[ 本帖最后由 bean 于 2007-5-26 17:33 编辑 ]

        
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-5 12:14

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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