无忧启动论坛

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

[求助] 关于使用微软WDS部署服务器怎么使用grldr。

[复制链接]
跳转到指定楼层
1#
发表于 2014-9-2 15:55:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 2011495910670 于 2014-9-2 15:55 编辑


关于使用微软WDS部署服务器怎么使用grldr。
背景两台服务器(如1111.jpg)

     A服务器:AD+DNS+DHCP                                B服务器:WDS


现在想实现以下功能:
        Pxe客户端能直接从WDS服务器上启动grldr,并提供选择,进03PE,或者启动本身的windows操作系统安装。或者进入Dos工具箱等。类似我们的U盘启动盘界面

问题:PXE客户端能直接获取到地址,并启动grldr文件,直接进入命令行。Ls查看没有找到任何文件。读取不到WDS上的任何文件。


如果不是用以上两台服务器,通过使用<深度远程启动管理器V1.30> 完全可以启动grldr并能识别到tftp上的文件。求解。为什么使用WDS上的传输服务,PXE客户机启动grldr后识别不到其他文件?

1111.JPG (14.21 KB, 下载次数: 189)

1111.JPG
2#
发表于 2014-9-2 18:19:12 | 只看该作者
服务器端没有建立必要的 dir.txt 文件,所以,无法使用 ls 命令列出文件。

与 grub4dos 兼容性好的 pxe 服务器软件是 tftpd32.exe 这个软件。

虽然不能列出文件,但你可以正常使用服务器上的文件,仅仅是不能列出而已。

你可以在 Internet 上搜索 tftpd32 和 dir.txt 关键字,了解 dir.txt 的相关信息。

回复

使用道具 举报

3#
 楼主| 发表于 2014-9-2 18:39:03 | 只看该作者

“服务器端没有建立必要的 dir.txt 文件,所以,无法使用 ls 命令列出文件”。这个我回头了解一下!

你说的tftpd32.exe软件,确实兼容性好。我也试过,可以成功启动。

因为公司环境下已经有了DHCP,WDS这些服务器,所以tftpd32.exe在公司环境中不能使用了。

有一点就是:ls命令不能列出文件,这个不是我关心的问题,我确切的问题是grldr启动后无法识别到其他文件,直接进入命令行,感觉就像(pd)里面是空的一样,无法使用,目录下明明有文件,可是输命令后总是提示找不到文件。

我没明白(pd)是绝对路径还是相对路径,启动文件位置为x\boot\grldr    它是相当于x\boot吗?
回复

使用道具 举报

4#
发表于 2014-9-2 18:51:27 | 只看该作者
你可以试试先用 tftpd32 ,用它的设置,自动生成 dir.txt 文件。然后再试试你的 pxe 服务器。

你使用了一个陌生的 pxe 服务器,一切都得靠你自己摸索了。我帮不上忙。

回复

使用道具 举报

5#
发表于 2014-9-4 16:25:04 | 只看该作者
本帖最后由 zhaohj 于 2014-9-4 16:53 编辑

把你的dhcp选项贴出来看看。
WDS默认包含了“步骤服务器”和“传输服务器”,“传输服务器”我理解就是tftp32
DHCP服务器是win2003的吗?如果是则60、66、67选项看一下
另既然到了命令行了,说明grldr已经从传送服务器下载并启动成功(默认下载应该是wdsnbp.com)。或者找一下wdsnbp.com所在目录就能明白了。
命令行下输入pxe
可查看信息。

点评

请看图片  详情 回复 发表于 2014-9-4 21:13
回复

使用道具 举报

6#
 楼主| 发表于 2014-9-4 21:13:36 | 只看该作者
zhaohj 发表于 2014-9-4 16:25
把你的dhcp选项贴出来看看。
WDS默认包含了“步骤服务器”和“传输服务器”,“传输服务器”我理解就是tft ...

请看图片

1123.jpg (104.73 KB, 下载次数: 183)

1123.jpg
回复

使用道具 举报

7#
发表于 2014-9-4 21:55:42 | 只看该作者
或许是因为微软的 pxe 服务器不能给客户端发送 “/” 作为路径分隔符。微软可能偏爱 "\" (反斜杠)。

点评

有什么建议吗?修改什么还是?  详情 回复 发表于 2014-9-4 22:39
回复

使用道具 举报

8#
 楼主| 发表于 2014-9-4 22:39:02 | 只看该作者
不点 发表于 2014-9-4 21:55
或许是因为微软的 pxe 服务器不能给客户端发送 “/” 作为路径分隔符。微软可能偏爱 "\" (反斜杠)。

有什么建议吗?修改什么还是?
回复

使用道具 举报

9#
发表于 2014-9-4 22:48:12 | 只看该作者
我是猜测,随便说说,没有任何建议。

你有机器,有环境。你摸索着,比我在这里瞎猜,要靠谱得多。

回复

使用道具 举报

10#
发表于 2014-9-5 07:55:06 | 只看该作者
本帖最后由 zhaohj 于 2014-9-5 08:25 编辑

dhcp服务器与wds服务器是不同的服务器,不需要60选项的,WDS监听67选项。
另启动主机名最好写ip地址。
现在你的根应该是boot目录的同级,所有我建议把grldr(及menu.lst)向上移一级,因为grldr默认搜索路径是从根下开始的。
启动文件直接写grldr.
使其达到这样的效果:

Snap1.jpg (17.15 KB, 下载次数: 187)

Snap1.jpg

Snap2.jpg (3.2 KB, 下载次数: 165)

Snap2.jpg

点评

我照你的说法,操作了一遍。wds的传输服务不支持这种启动。测试结果如下图。  详情 回复 发表于 2014-9-5 19:08
回复

使用道具 举报

11#
 楼主| 发表于 2014-9-5 19:08:12 | 只看该作者
zhaohj 发表于 2014-9-5 07:55
dhcp服务器与wds服务器是不同的服务器,不需要60选项的,WDS监听67选项。
另启动主机名最好写ip地址。
现 ...

我照你的说法,操作了一遍。wds的传输服务不支持这种启动。测试结果如下图。

321.jpg (52.72 KB, 下载次数: 169)

321.jpg
回复

使用道具 举报

12#
发表于 2014-9-5 19:18:41 | 只看该作者
我看到当你把 grldr 放在 boot 子目录时,传输的文件名带有 DOS 格式的反斜杠,这有可能导致 grub4dos 无法识别。

而当你把 grldr 放在根目录时,服务器又拒绝给 grldr 传递控制。

我想,这个两难局面,可能迫使你放弃这个方案了。要么你放弃 WDS,要么你放弃 grub4dos。鱼与熊掌不可兼得。

我在一旁观看,你们继续解决,也许有门。

点评

我现在正准备通过先用WDS启动syslinux,再通过syslinux来切换grub4dos。初步已经实现WDS启动syslinux,并已经实现syslinux启动pe和img等工具和启动WDS本身的部署系统功能,启动的pe没办法加载外置程序(实在不行可能  详情 回复 发表于 2014-9-6 10:37
回复

使用道具 举报

13#
发表于 2014-9-5 20:58:34 | 只看该作者
看实战非常精彩!!!!!!!!!!!!!!懂行的进来应战。
回复

使用道具 举报

14#
 楼主| 发表于 2014-9-6 10:37:23 | 只看该作者
不点 发表于 2014-9-5 19:18
我看到当你把 grldr 放在 boot 子目录时,传输的文件名带有 DOS 格式的反斜杠,这有可能导致 grub4dos 无法 ...

我现在正准备通过先用WDS启动syslinux,再通过syslinux来切换grub4dos。初步已经实现WDS启动syslinux,并已经实现syslinux启动pe和img等工具和启动WDS本身的部署系统功能,启动的pe没办法加载外置程序(实在不行可能使用内置版pe),关于syslinux切换grub4dos暂未实现。还请各位多多指点。

点评

当局者迷旁观者清,有了新的方向。我先试试  详情 回复 发表于 2014-9-6 20:05
为何不通过wds启动bootmgr?  发表于 2014-9-6 18:13
回复

使用道具 举报

15#
 楼主| 发表于 2014-9-6 20:05:01 | 只看该作者
本帖最后由 2011495910670 于 2014-9-6 20:06 编辑
2011495910670 发表于 2014-9-6 10:37
我现在正准备通过先用WDS启动syslinux,再通过syslinux来切换grub4dos。初步已经实现WDS启动syslinux,并 ...


感谢 zhaohj 指点。当局者迷旁观者清,有了新的方向。我准备试试bootmgr。
回复

使用道具 举报

16#
发表于 2014-9-7 09:06:56 | 只看该作者
本帖最后由 不点 于 2014-9-7 11:07 编辑

关于先启动 syslinux 或 bootmgr 的方案,谈谈我的想法。

假如问题是因为路径分隔符的差异造成的,那么,这个问题依旧是老样子,不会消失。我们已经看到,楼主能够成功进入 grub4dos 环境,而在访问服务器端的文件名时出了问题。假如这问题是由 “/” 和 “\” 的差别造成的,那么问题仍旧是问题,没有丝毫的改变。除非改造 grub4dos,让它适应 DOS 的 “反斜杠” 路径分隔符。

另外,究竟是不是 “路径分隔符” 这个原因造成的,还有待开发者去确认。


顺便从开发的角度谈谈我对这个问题的处理意见。

pxe 服务器软件有很多种,它们的服务对象各不相同。比如,微软的 pxe 服务器,通常服务于微软的客户端。换句话说,它的目的本来就不是启动 grldr 的。

再比如,Linux 下的 pxe 服务器,它的目的可能是启动 syslinux(即 pxelinux)的,也不是用来启动 grldr 的。

人家都不支持 grldr,而如果 grldr 的开发者想让人家支持,那就得改造自己了,就得做额外的工作才行。

开发者如果有时间、有精力、有兴趣、有能力,那就着手干。如果没时间、没精力、没兴趣、没能力,那就放弃。一切顺其自然。

再来看看另外一种情况,tftpd32 这个 pxe 服务器软件,它的开发者却有意识地兼容多个 pxe 客户端软件,包括兼容 grub4dos。

那么,我有理由相信,像 tftpd32 这样的软件,会在实际上成为工业标准,或者称之为 “事实工业标准”。

不管是什么原因,不管是有意的还是无意的,只要一个软件的兼容性不好,它就难以成为事实标准。

微软的 word 早该取代 pdf 格式了,但它没有取代。其原因正是因为 word 制造了不兼容(整个 office 软件都在制造不兼容,甚至 Windows 系统也在制造不兼容)。

做兼容性的工作,属于行善。故意制造不兼容性,则是作恶。无意制造的不兼容性,既不是行善,也不是作恶。

开发者如果没有能力、没有时间、没有兴趣去做某项兼容性的工作,那也不要勉为其难。比如说我吧,我是身体状况不好,不能够继续维护 grub4dos 了。我不会因为少做了 “善事” 而感到惋惜。因为我尽力了,我做不到。而同时,我也因为我没有做 “恶事” 而感到心满意足,我相信我在这方面不会留下恶名,被别人骂得狗血喷头。嗯——,我做的错事倒是很多的,但都是由于认识水平低而造成的,不是故意伤害别人的,所以我不把它划归 “恶” 的范畴。佛教似乎把所有的错事都划归 “恶” 的范畴了,主张时时刻刻要忏悔。我觉得错事是不能避免的,没必要忏悔。

说了这么多,核心的一点是:一切顺其自然,一切都有权衡,一切根据自己的实际情况出发,不要被教条和框框束缚。

说到这里,我再补充几句。佛教的书我看过,马列主义哲学我也学过。我认识到,不可以百分之百地相信一个理论。佛教是理论,马列主义是理论。这些理论都有其正确性和适用范围。任何东西都不要百分之百地去相信它,不要用教条来禁锢自己。要有反叛的精神,要敢于质疑。比如说,“先有物质,后有意识,物质决定意识”,我对此就有疑问。我的疑问是,意识是什么时候开始出现的?假如意识是很晚才出现的,那么意识就没有连续性,就是突然蹦出来的,就是 “无中生有”。因此我觉得,意识与物质是不可分割的,它可能是物质的一种属性,或是物质的一种表现形式。人之所以有意识,那是把大自然本身的那种潜质开发出来了。这正如四个分区表项是本来就存在的,人只是 “激活” 了其中的一个表项,从此处顺利 “启动” 了。再举一例,世上并没有路,走的人多了,就成为路了。即使没人去走,只要人工修建,也能成为路。这说明,大自然本身就提供了那些组成路的原料,人只是把这些分子、原子的集合,当作路来看待罢了。意识也是如此。它是大自然的原材料之一,只是在它没有形成某个 “渠道” 和 “形态” 之前,它不被人当作意识来看待。在没有人之前,意识也是存在的,只不过人的存在,让意识表现得更加活跃、更加丰富多彩罢了。动物也有意识,只不过与人相比,显得不那么活跃。植物有意识,一切生物都有不同程度的意识。到最后,就连分子、原子、基本粒子,都有着意识的成分和潜质。如果能够这样理解,那么意识就是连续的了,就不是突然某个时刻蹦出来的了。由此出发我甚至想象,就连这些稳定的基本粒子,都是通过长期的进化(演化)得来的。基本粒子像人一样,也有寿命,这说明,它也是一种生命的形态。很抱歉,离题太远。


回复

使用道具 举报

17#
发表于 2014-9-7 10:31:05 | 只看该作者
先改造一下grldr的内置菜单或按grldr的内置菜单布置一下menu.lst的位置再说。
默认是:
title find /menu.lst, /boot/grub/menu.lst, /grub/menu.lst
那先按照/boot/grub/menu.lst布置,但这里要先理解根"/"。
先不确定的情况下布置两个:
/boot/grub/menu.lst
/boot/boot/grub/menu.lst
------------------
另楼主先把grldr的版本换成最新的0.4.5c吧
http://grub4dos.chenall.net/
回复

使用道具 举报

18#
 楼主| 发表于 2014-9-7 16:09:15 | 只看该作者
“zhaohj”所说的改造grldr内置菜单,并grldr换成0.4.5c。这些我也做了。我甚至不用menu.lst,直接将menu.lst内容放到内置菜单中,试验各种路径的写法(以grldr目录为根、以绝对路径等反正是能想到的都试了)无一不以失败告终。

一直以来我都是用grub4dos做启动,可能是因为钟爱grub4dos。在通过syslinux已经实现引导pe、img、ima的情况下,仍想着通过syslinux切换成grub4dos。可能过于执着。

也曾试验过用bootmgr来启动grub4dos。事实上bootmgr可以引导grub4dos,但仅仅是本地本地磁盘。如“不点”所说就算能用bootmgr启动了也会存在路径或其他问题。

也曾想既然bootmgr可以启动VHD,那我可以创建一个VHD,将所有启动所需的文件放入VHD中,相当于给pxe客户端加了一个硬盘,暂时还没能启动起来,对VHD缺乏了解,或许它根本不能实现,既然水平不够。那就等以后再说吧。

非常感谢“不点”和“zhaohj  ”这段时间的帮助。如“不点”所说一切顺其自然。
回复

使用道具 举报

19#
发表于 2014-9-7 18:00:01 | 只看该作者
我认为关键的问题是tftp的“根”到底是哪个目录下?
这个得tftp中看一下了记录,我认为肯定有log的。
------------------------
在pxe环境下,bootmgr和grub4dos是可以相互转换的,下面是我的bootmgr需要生成bcd的批处理部分,
set d04=grub4dos
set f04=\grldr
...
for /f "tokens=1,2 delims={}" %%i in ('Bcdedit -store bcd -create /d "%d04%" /application bootsector ') do SET GUID1=%%j
bcdedit -store bcd /set {%GUID1%} device boot
bcdedit -store bcd /set {%GUID1%} PATH %f04%
bcdedit -store bcd /set {%GUID1%} graphicsmodedisabled yes
bcdedit -store bcd /displayorder {%GUID1%} /addlast
回复

使用道具 举报

20#
发表于 2014-9-7 18:48:09 | 只看该作者
zhaohj,我猜无论 “根” 在哪儿,都不行。

首先,“根” 在顶级不行,已经验证过了,服务器拒绝传递控制权。

其次,“根” 在某个子目录也不行,因为此时要用到 “路径分隔符”。假如问题正是出在 “路径分隔符” 上,那么,总会是失败,不可能成功。

不过,“根” 在顶级目录的情况,只是验证了 grldr 无法接到控制权,没有验证 pxelinux 或者 bootmgr 是否能够接到控制权。

假如 bootmgr 在顶级目录可以接到控制权,那么,设法让 bootmgr 把控制权传递给顶级目录下的 grldr,那可能就 OK 了。此时 grldr 要避免访问子目录下的文件,目的是避开 “路径分隔符”。



回复

使用道具 举报

21#
发表于 2014-9-7 19:06:36 | 只看该作者
忽然想到一个可能的解决办法,算是 workaround。

让 chenall 编译一个版本,处理服务器端传递的 "\" (反斜杠)。假如服务器端传递的 bootfile 含有反斜杠,就认为这个服务器是微软 dos 格式的服务器。以后,当 grub4dos 需要访问服务器端的文件时,也自动把 Unix 格式的路径名转换成 dos 格式的文件名,交给 pxe bios 底层调用。这样可能就不会失败了。

菜单中的 pxe detect 命令,会有打开 bootfile 的操作。此时是一个验证 bootfile 是否含有 "\" (反斜杠)的机会。如果含有反斜杠,就设定 pxe 服务器是 dos 格式。

回复

使用道具 举报

22#
发表于 2014-9-7 22:24:24 | 只看该作者
我编译了一个版本,简单处理了一下 DOS 格式的 “反斜杠” 路径名。试试看,情况如何?

grub4dos-0.4.5c-2014-09-07.7z

257.13 KB, 下载次数: 60, 下载积分: 无忧币 -2

测试 pxe 服务器 dos 格式反斜杠路径名

点评

经过测试,已经成功找到菜单并启动img。激动万分! 非常感谢“不点”和“chenall”。你们辛苦了!  详情 回复 发表于 2014-9-8 10:58
回复

使用道具 举报

23#
发表于 2014-9-8 09:10:24 | 只看该作者
本帖最后由 zhaohj 于 2014-9-8 09:15 编辑

22楼测试:能加载启动文件boot\grldr,而且把“根”自动设置为\boot\
               能够读出pxe下的所有文件。
-----------------------------------
使用未处理的grldr,在dhcp的67选项同样设置启动文件boot\grldr,启动也成功,但不同点是“根”是在与boot目录的同级。
=============

Snap1.jpg (100.74 KB, 下载次数: 164)

Snap1.jpg

Snap2.jpg (128.02 KB, 下载次数: 178)

Snap2.jpg
回复

使用道具 举报

24#
发表于 2014-9-8 10:12:13 | 只看该作者
zhaohj,你用的是什么 pxe 服务器?也是 WDS 吗?

为何楼主测试旧版总是失败,而你的却能成功?


旧版未能处理反斜杠,所以,就把 boot\grldr 当作一个整体了,因此 base dir 就成了 "/"。

新版改进以后,能识别出 grldr 是在 boot 下面,因此 base dir 就是 boot 了,这是正确的。

还需要楼主给出 WDS 之下的测试结果。

点评

我没有WDS服务器,我想WDS也是ms的,也是使用ms内置的tftp.exe,原理应该一样的。 确实需要楼主测试一下,把“根”搞明白。  发表于 2014-9-8 10:32
回复

使用道具 举报

25#
发表于 2014-9-8 10:49:14 | 只看该作者
本帖最后由 不点 于 2014-9-8 10:54 编辑

需要说明一下。grub4dos 把服务器端所指定的 bootfile(即 grldr)所在的文件夹,当作默认的 base dir,这个 base dir 就是 grub4dos 的 (pd) 设备的根目录。

举例来说,如果服务器端指定的 grldr 位于 boot/grldr ,那么,base dir 就是 boot 了。而这个 boot 文件夹同时也就是 (pd)/ 了。

用户可以手动修改 base dir。使用 pxe basedir 命令可以修改 base dir 为服务器端真正的 “根”,或者任何一个子目录。

回复

使用道具 举报

26#
 楼主| 发表于 2014-9-8 10:58:56 | 只看该作者
本帖最后由 2011495910670 于 2014-9-8 11:05 编辑
不点 发表于 2014-9-7 22:24
我编译了一个版本,简单处理了一下 DOS 格式的 “反斜杠” 路径名。试试看,情况如何?


经过测试,已经成功找到菜单并启动img。激动万分!

非常感谢“不点”和“chenall”。你们辛苦了!

22222.jpg (60.34 KB, 下载次数: 170)

22222.jpg

1233.jpg (17.07 KB, 下载次数: 184)

1233.jpg

点评

谢谢。chenall 可以提交了。更新记录可以写为:支持了 pxe 服务器端的反斜杠路径名。 supported backslash-delimited pathname used by pxe server.  详情 回复 发表于 2014-9-8 11:44
回复

使用道具 举报

27#
发表于 2014-9-8 11:09:57 | 只看该作者
本帖最后由 zhaohj 于 2014-9-8 11:17 编辑

不点大,我的 hanetftp 对MS支持很好啊!

Snap1.jpg (109.23 KB, 下载次数: 168)

Snap1.jpg

Snap2.jpg (96.71 KB, 下载次数: 199)

Snap2.jpg

点评

谢谢对这个知识的普及,学习了。  详情 回复 发表于 2014-9-8 11:48
回复

使用道具 举报

28#
发表于 2014-9-8 11:44:14 | 只看该作者
2011495910670 发表于 2014-9-8 10:58
经过测试,已经成功找到菜单并启动img。激动万分!

非常感谢“不点”和“chenall”。你们辛苦了!

谢谢。chenall 可以提交了。更新记录可以写为:支持了 pxe 服务器端的反斜杠路径名。

supported backslash-delimited pathname used by pxe server.

点评

输出格式能否换成统一的"/“  发表于 2014-9-8 14:58
回复

使用道具 举报

29#
发表于 2014-9-8 11:48:56 | 只看该作者
zhaohj 发表于 2014-9-8 11:09
不点大,我的 hanetftp 对MS支持很好啊!

谢谢对这个知识的普及,学习了。

回复

使用道具 举报

30#
发表于 2014-9-8 15:17:34 | 只看该作者
本帖最后由 不点 于 2014-9-8 15:26 编辑

zhaohj,转换输出格式 "/",目前看不到有多大的好处。

输入格式总是 "/",符合 unix 规则。

输出格式中的 "\",可以提醒用户,这个 pxe 服务器的路径名是 dos 格式。转成 "/" 之后,就看不出来了。


原则:一切都是权衡。当利弊区别不明显的时候,或者说当某个工作 “可做可不做” 的时候,一般倾向于保持不动。那些没必要去做的工作,如果做了,有可能产生副作用,比如说,有可能扰乱了未来某个开发者的开发计划。

回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-19 16:28

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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