无忧启动论坛

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

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

    [复制链接]
跳转到指定楼层
1#
发表于 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启动,也不用学习那么多启动软件了。

2#
 楼主| 发表于 2019-12-19 17:26:04 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-19 18:01 编辑
江南一根葱 发表于 2019-12-19 17:18
你用ipxe来启g4d就支持的,还支持https

那何必用ipxe和g4d之间来回调用倒腾呢,不如直接用ipxe+memdisk+http+pe.iso方案好了。

点评

问题是你ipxe能启ramos? ipxe启g4d才能map --mem启ramos啊。。。  详情 回复 发表于 2019-12-19 17:31
回复

使用道具 举报

3#
 楼主| 发表于 2019-12-19 17:53:45 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-19 18:02 编辑
江南一根葱 发表于 2019-12-19 17:31
问题是你ipxe能启ramos?
ipxe启g4d才能map --mem启ramos啊。。。ipxe也不支持zh.CN

你说的ramos指的是什么?admin登录的PE吗?还是真正的操作系统?
ipxe启动PE.ISO没问题啊,BIOS下用ipxe+memdisk+http+pe.iso方案即可。不需要依赖grub4dos的任何组件。
lpxelinux.0+memdisk+http+pe.iso也可以,lpxelinux.0支持中文菜单。不需要依赖grub4dos的任何组件。

pxe启动真正的操作系统,vhd这种,需要firadisk/winvblock/svbus这样子的驱动支持才行,这一类驱动似乎只适用于g4d,不适用于memdisk吧。


回复

使用道具 举报

4#
 楼主| 发表于 2019-12-19 21:20:41 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-19 21:25 编辑
wintoflash 发表于 2019-12-19 18:30
扯点题外的, map --mem和memdisk应该没什么区别吧.

g4d的map --mem感觉要比memdisk还是强大些,兼容性应该也好些,不点、chenall、yaya做了不少改进,国内国外用的人多,提出的问题,经过十几年的问题修正和技术积累,map --mem的bug很少了,代码已经锤炼得很健壮,memdisk似乎是winvblock的作者Shao Miller的作品,他同时也参与了syslinux的开发,memdisk似乎不怎么更新了,比如memdisk只能仿真一个镜像到内存,map --mem就可以仿真多个。
回复

使用道具 举报

5#
 楼主| 发表于 2019-12-20 07:50:54 来自手机 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-20 16:39 编辑

一分为二地看问题,pxe+http启动有服务器端和客户端,服务器端用的是webserver+tineypxeserver这样的支持http协议的传输软件,webserver的http协议的确是跑在OS之上;客户端用的是ipxe/lpxelinux.0这样的引导器,引导器只是OS loader,或者说是个ROM环境,不能算作是OS,只需要能够对服务器发起post和get交互就行了,就类似于bootmgr之于windows的关系,OS loader只是OS很小的一部分,毕竟已经有ipxe/lpxelinux.0支持http协议成功的先例摆在那里,他们也就200~300多KB,跟grldr差不多,不能算作是OS,代码也是开源的,不知道能不能借鉴。

不点大,grub4dos是您的心血之作啊,让他完善功能不是更好吗,您怎么能泼冷水说BIOS即将被淘汰这样的话呢,至少10~20年BIOS/UEFI都会共存吧,一个作品写出来了才能知道他倒底有没有用处吧,grub4dos由于基于中断架构的原因,已经不可能转向UEFI了,或者说成本和难度太大,那就继续增加功能,做好BIOS的引导就好了。


chenall的ipxegrldr似乎是把ipxe和grldr捆绑在一起,似乎内核还是用的ipxe,两个环境切换会不会带来问题?我的意思是幻想着有一天,grub4dos能够借鉴吸收ipxe的部分代码,用于pxe的时候,菜单能够这样子:
title WINPE (WePE_64_V2.0.iso)
find --ignore-floppies --ignore-cd --set-root /boot/imgs/WePE_64_V2.0.iso
map --mem --top http://192.168.1.1/boot/imgs/WePE_64_V2.0.iso (0xff)
map --e820cycles=-1
map --hook
chainloader (0xff)


grub4dos有firadisk/winvblock/svbus这一类驱动的加持,对于软件外置这种PE,不会出现找不到外置程序的问题,memdisk则做不到,memdisk作为syslinux的组件,早已不更新,syslinux的最后一个正式版6.03是2014年8月6日发布,测试版6.04是2016年3月4日发布的,一直停留在测试版,所以memdisk/syslinux处于无人维护状态,没什么指望了,只有ipxe还在活跃开发期,但是ipxe启动PE.ISO也是要依赖于memdisk,memdisk有bug也无人维护,我发现memdisk有时候加载PE就失败,这是个问题

纯属个人臆想,不对之处请见谅。   






回复

使用道具 举报

6#
 楼主| 发表于 2019-12-20 09:16:11 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-20 09:18 编辑
chenall 发表于 2019-12-20 09:01
我觉得

目前已经有了很好用的轮子 (ipxe)了,如果不能造出更完美的轮子还是继续使用它.
另外ipxegrldr其实也就是ipxe内置了grldr由ipxe直接启动grldr.

也可以分开, 先启动ipxe再根据需要选择启动grub4dos效果是一样的.

请教下chenall大,ipxe启动转grldr可以吗?我只见到ipxe启动转grub.exe的菜单写法。我说的是PE.ISO,不是wimboot+PE.WIM。
:WePE_64_V2.0.iso
  initrd http://${next-server}/imgs/WePE_64_V2.0.iso
  #chain http://${next-server}/pxelinux.cfg/memdisk raw iso
  chain http://${next-server}/grub/grub.exe  --config-file="map (rd)+1 (0xff);map --hook;chainloader (0xff)"

点评

使用这个方式来启动 说明对GRUB4DOS的印像还停留是很早期的版本上 新的版本是可以直接ipxe启动直接chain grldr启动的(必须使用ipxe的kpxe的版本) chain grldr 简单的测试就是直接使用ipxegrldr 启动后是  详情 回复 发表于 2019-12-20 13:05
回复

使用道具 举报

7#
 楼主| 发表于 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 编辑 ]

        

点评

还有没有其他时空论坛帖子的备份? 如果有的话能不能全部打包上传到某个地方供大家查阅参考?谢谢。  详情 回复 发表于 2019-12-20 12:35
回复

使用道具 举报

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

使用道具 举报

9#
 楼主| 发表于 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开发,那就好了!
   

点评

感谢。 这个还是算了,我水平不够,不懂汇编。 我主要是对bean开发的burg比较感兴趣,可惜burgloader的论坛数据应该都没有了。  详情 回复 发表于 2019-12-20 20:40
回复

使用道具 举报

10#
 楼主| 发表于 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语句会出错。
        
回复

使用道具 举报

11#
 楼主| 发表于 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菜单统一?搞两套菜单?        

点评

不是很明白你具体的需求 我觉得菜单要通用最好是使用相对路径,, 可以了解一下相对路径的概念. 这样不管文件放在哪里都是使用同样的菜单就可以启动了. 像我网络启动和本地启动所使用的菜单是一模一样的.  详情 回复 发表于 2019-12-20 14:53
回复

使用道具 举报

12#
 楼主| 发表于 2019-12-20 14:39:37 | 显示全部楼层
江南一根葱 发表于 2019-12-20 13:51
ipxeldr好像改内置菜单不太方便,一定得重新编译?

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

点评

不想用menu.lst呗  详情 回复 发表于 2019-12-20 14:55
回复

使用道具 举报

13#
 楼主| 发表于 2019-12-20 14:58:59 | 显示全部楼层
chenall 发表于 2019-12-20 14:53
不是很明白你具体的需求

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

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

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

点评

加判断就行了 if ***  详情 回复 发表于 2019-12-20 15:01
回复

使用道具 举报

14#
 楼主| 发表于 2019-12-20 15:04:47 | 显示全部楼层

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

使用道具 举报

15#
 楼主| 发表于 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多久了!        
回复

使用道具 举报

16#
 楼主| 发表于 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
回复

使用道具 举报

17#
 楼主| 发表于 2019-12-20 21:11:27 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-21 10:19 编辑
wintoflash 发表于 2019-12-20 20:40
感谢。

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

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

使用道具 举报

18#
 楼主| 发表于 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
回复

使用道具 举报

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

使用道具 举报

20#
 楼主| 发表于 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
回复

使用道具 举报

21#
 楼主| 发表于 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
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-7 03:58

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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