发新话题
打印

[原创]PXE服务器架设及无盘天使相关文章

[原创]PXE服务器架设及无盘天使相关文章

当年,应windrv的邀请,我写过几篇PXE服务器架设及通过PXE启动无盘天使系统的文章,原帖发表在windrv.net,链接如下:
http://windrv.net/viewthread.php?tid=39
为了方便大家参考,我移动到这里。

一. 在Windows下架设PXE服务器的方法

要想利用无盘天使从网络上启动操作系统磁盘(或分区)映像文件,首先需要在本地网络上架设一台PXE启动服务器,下面简单介绍一下PXE服务器的启动原理、过程及架设指南。

简单说来,PXE服务器就是DHCP服务器+TFTP服务器。网络启动过程大概是这样的(可能并不严谨):客户端发送动态获得IP地址的广播包到网络上,DHCP服务器在收到该广播包后,发送给客户端分配IP地址的回应包,客户端收到回应包后设置自己的IP地址,然后从DHCP服务器获得启动服务器的IP地址(DHCP服务器066选项,这就是TFTP服务器的IP地址)及启动文件名(DHCP服务器067选项,这里的启动文件名就是pxelinux.0或者支持pxe的grub4dos的grldr,当然,也可以是startrom.n12或者使用3com Image Edit创建的pxe启动菜单文件,总之,它应该是一种由pxe启动规范规定的固定格式的可执行文件),然后客户端再联系启动服务器(TFTP服务器)获得启动文件并执行,这样基本上就完成了pxe启动过程。

在Unix或者Linux系统下,DHCP服务器和TFTP服务器一般都是分开设置的,两台服务器甚至可以在两台不同的机器上,其实Windows下的设置也是一样的,但在Windows下,我们可以通过使用HaneWin DHCP服务器软件或TFTPD32,这样使用一个软件就搞定了两台服务器(我个人推荐使用HaneWin DHCP服务器软件,但TFTPD32设置起来更简单一些,就是文件传输效率有些低),详细的设置方法请自己摸索,你只要知道,在设置PXE服务器时,要设置好DHCP和TFTP两个服务器,其中DHCP服务器要设置启动服务器名(066选项)和启动文件名(067选项)。

看完下面提供的相关文档,然后再亲自动手实践一下,你会发觉PXE服务器架设实际上很简单。

相关链接:

1. PXE服务器架设指南及PXE启动WinPE(含PE2.0)解决方案总结: http://bbs.znpc.net/viewthread.php?tid=3662

2. PXE Setup without RIS on Windows 2000 Server(英文):http://unattended.sourceforge.net/pxe-win2k.html

3. PXES HOWTO: Installing in a Microsoft only environment.:http://pxes.sourceforge.net/howtos/ms_only_environment/

4. Ubuntu PXE install via Windows: http://hugi.to/blog/archive/2006 ... install-via-windows

5. 在Red Hat Linux下架设PXE服务器(英文):http://linux.duke.edu/~cegeddin/pxe-Quick-Start.html

6. PXE服务器架设软件TFTPD32官方网站:http://tftpd32.jounin.net/

7. PXE服务器软件Hanewin dhcp官方网站:http://www.hanewin.net/

8. PXE启动管理软件PXELinux(Syslinux)官方网站:http://syslinux.zytor.com/pxe.php

9. PXE启动管理软件GRUB4DOS官方网站:
https://gna.org/projects/grub4dos/
http://sarovar.org/projects/grub4dos/
http://grub4dos.sourceforge.net/

二. 通过PXE服务器利用“无盘天使”启动Windows XP

在按上面的指南架设好PXE服务器之后,就是如何使用“无盘天使”从PXE服务器上启动Windows XP了(启动Windows 2000/2003的方法类似)。下面是必要的准备工作及简要的步骤:

1、需要准备的文件

1) PXE服务器启动管理软件相关启动文件,这里以grub4dos为例:grldr。

http://download.gna.org/grub4dos/下载grub4dos的最新版本,例如:
http://download.gna.org/grub4dos/grub4dos-0.4.3-2007-08-27.zip

解开压缩包,提取grub4dos-0.4.3目录下的grldr文件。

如果你使用pxelinux,那么就需要从syslinux的下载包中提取pxelinux.0。

同时还要从下面的下载包中提取memdisk文件:
http://www.disklessangel.com/modules/down/wmkiso_bin.zip

syslinux中内置的memdisk存在兼容性问题,请不要使用。

2) 使用无盘天使制作的Windows XP操作系统磁盘映像文件:xp.dsk

为了提高传输速度,你可以使用gunzip对这个磁盘映像进行压缩,文件名为xp.dsk.gz。

3) grub4dos启动菜单文件: menu.lst

使用任何文本编辑器(如notepad)输入如下内容并保存为menu.lst:
复制内容到剪贴板
代码:
timeout 30

title Boot XP with Diskless Angel
map --mem (pd)/xp.dsk (hd0)
map --hook
root (hd0,0)
chainloader (hd0,0)/ntldr

title Boot XP with Diskless Angel (gunziped)
map --mem (pd)/xp.dsk.gz (hd0)
map --hook
root (hd0,0)
chainloader (hd0,0)/ntldr

title GRUB4DOS Command Line
commandline

title Boot From CDROM
cdrom --init
map --hook
chainloader (cd)

title Boot From Floppy
chainloader (fd0)+1
rootnoverify (fd0)

title Reboot
reboot

title Shutdown Computer
halt
2、操作步骤

假设TFTP服务器的根目录为:c:\tftp

1) 将grldr文件放在TFTP服务器的根目录,并设置DHCP服务器的启动文件名为grldr。
copy grldr c:\tftp

2) 将menu.lst重命名为default并放在TFTP服务器的根目录下的menu.lst目录中。
md c:\tftp\menu.lst
copy menu.lst c:\tftp\menu.lst\default

3) 将xp.dsk(或xp.dsk.gz)放在tftp服务器的根目录下
copy xp.dsk c:\tftp
copy xp.dsk.gz c:\tftp

4) 设置无盘工作站从pxe服务器启动并启动计算机。

5) 从grub4dos启动菜单中选择第1项或者第2项(取决于你的映像文件的格式)启动。

6) 可以看到开始从TFTP服务器上下载xp的映像文件并从中启动,现在你的XP已经是完全在内存中运行了。


三.通过PXE启动为无盘工作站定制的XP映像
通过前面两篇文章,我们已经了解了PXE服务器的架设方法及通过PXE服务器及无盘天使启动XP映像的方法,但假设我有A、B两台无盘工作站,我分别为这两台工作站定制了xp-a.dsk和xp-b.dsk两个映像文件,如何通过PXE服务器自动让A启动xp-a.dsk及让B启动xp-b.dsk呢?

下面还是以grub4dos的grldr作为启动文件为例,讲一下这个问题的解决办法(PXELinux的解决办法与此相类似)。

首先,PXE服务器端的grldr在启动起来后,会自动按下面的顺序在TFTP服务器端寻找菜单配置文件(并加载找到的第一个文件):

/menu.lst/00-10-22-FD-03-C1
/menu.lst/C0A80102
/menu.lst/C0A8010
/menu.lst/C0A801
/menu.lst/C0A80
/menu.lst/C0A8
/menu.lst/C0A
/menu.lst/C0
/menu.lst/C
/menu.lst/default

其中第一行:“/menu.lst/00-10-22-FD-03-C1”中的00-10-22-FD-03-C1表示无盘工作站网卡的MAC地址。

而第二行中的C0A80102表示无盘工作站的IP地址,这里的C0A80102对应的IP地址是192.168.1.2,从第二行到第九行,都是通过IP地址(段)定义菜单文件的示例。

而我们前面要解决的问题只需要使用MAC地址作为菜单文件名即可解决,大概步骤如下:

假设:

工作站A的MAC地址为:00-10-22-FD-03-AA,对应的XP磁盘映像为xp-a.dsk
工作站B的MAC地址为:00-10-22-FD-03-BB,对应的XP磁盘映像为xp-b.dsk

以工作站A的MAC地址00-10-22-FD-03-AA为文件名创建以下GRUB4DOS菜单配置文件:
复制内容到剪贴板
代码:
timeout 30

title Boot XP with Diskless Angel
map --mem (pd)/xp-a.dsk (hd0)
map --hook
root (hd0,0)
chainloader (hd0,0)/ntldr

title Boot XP with Diskless Angel (gunziped)
map --mem (pd)/xp-a.dsk.gz (hd0)
map --hook
root (hd0,0)
chainloader (hd0,0)/ntldr

title GRUB4DOS Command Line
commandline

title Boot From CDROM
cdrom --init
map --hook
chainloader (cd)

title Boot From Floppy
chainloader (fd0)+1
rootnoverify (fd0)

title Reboot
reboot

title Shutdown Computer
halt
类似上面,以工作站B的MAC地址00-10-22-FD-03-BB为文件名创建以下GRUB4DOS菜单配置文件:
复制内容到剪贴板
代码:
timeout 30

title Boot XP with Diskless Angel
map --mem (pd)/xp-b.dsk (hd0)
map --hook
root (hd0,0)
chainloader (hd0,0)/ntldr

title Boot XP with Diskless Angel (gunziped)
map --mem (pd)/xp-b.dsk.gz (hd0)
map --hook
root (hd0,0)
chainloader (hd0,0)/ntldr

title GRUB4DOS Command Line
commandline

title Boot From CDROM
cdrom --init
map --hook
chainloader (cd)

title Boot From Floppy
chainloader (fd0)+1
rootnoverify (fd0)

title Reboot
reboot

title Shutdown Computer
halt
然后将两个配置文件复制到TFTP服务器的\menu.lst\目录下。
md c:\tftp\menu.lst
copy 00-10-22-FD-03-AA c:\tftp\menu.lst
copy 00-10-22-FD-03-BB c:\tftp\menu.lst

将xp-a.dsk(.gz)和xp-b.dsk(.gz)放到TFTP服务器的根目录下。

copy xp*.dsk c:\tftp
copy xp*.dsk.gz c:\tftp

这样,在A工作站从PXE启动时,GRUB4DOS会调用00-10-22-FD-03-AA作为菜单配置文件,而工作站B则以00-10-22-FD-03-BB作为菜单文件,这样我们就顺利的实现了为不同的工作站定制不同的启动映像的功能。

当然,我们也可以利用GRUB4DOS使用客户端IP地址(部分IP)作为菜单配置文件的功能,实现为某一段IP定制启动映像的功能。
夫大块载我以形,劳我以生,佚我以老,息我以死。故善吾生者,乃所以善吾死也。

在本论坛发帖前,请认真阅读下面的链接及建议:
1、论坛基本守则
2、下面是论坛历史上真实发生的对论坛规则如何理解和应用的讨论帖子,对新手很有参考价值(请抱平常心浏览):
http://bbs.znpc.net/viewthread.php?tid=4505
http://bbs.znpc.net/viewthread.php?tid=5586
3、提问前先潜水并搜索,避免发月经帖;尊重别人就是尊重自己。
4、Public用户回帖时请注明自己的ID和邮箱以供识别,这不意味着你一定能获得邀请码,但遵守规矩总是有利的。
5、基本上我们认为你不需要注册本论坛ID,因此不要单独发帖索要(谁需要ID,由我们决定),你最好只关注自己的问题和论坛的规矩。

TOP

关于PXE网络启动服务器的架设,可以下载下面这个包:
http://nufans.net/upload/pxe/climbing_pxe_pack1.rar

这是我定制的网络启动服务器软件包,为了减小下载体积,去掉了PE和大的软件,所以功能不全,但基本功能都有,你可以根据实际情况添加对应的软件。

用法:将这个包中的内容解压到网络启动服务器的e:\clone\pxe目录下,将其IP地址设置为192.168.0.188,然后运行e:\clone\pxe\hanewin\dhcpsrv.exe启动hanewin的启动服务器软件,这样你的机器就变成了网络启动服务器,然后其它机器用交叉网线与这台启动服务器相连,选择从PXE启动即可。更详细的定制信息请参考e:\clone\pxe\hanewin\readme.txt。

如果你的网络上没有DHCP服务器,也可以直接将这台机器接到局域网网络上,作为全网的启动服务器使用,这样就不需要使用交叉网线直接连接两台机器了。
夫大块载我以形,劳我以生,佚我以老,息我以死。故善吾生者,乃所以善吾死也。

在本论坛发帖前,请认真阅读下面的链接及建议:
1、论坛基本守则
2、下面是论坛历史上真实发生的对论坛规则如何理解和应用的讨论帖子,对新手很有参考价值(请抱平常心浏览):
http://bbs.znpc.net/viewthread.php?tid=4505
http://bbs.znpc.net/viewthread.php?tid=5586
3、提问前先潜水并搜索,避免发月经帖;尊重别人就是尊重自己。
4、Public用户回帖时请注明自己的ID和邮箱以供识别,这不意味着你一定能获得邀请码,但遵守规矩总是有利的。
5、基本上我们认为你不需要注册本论坛ID,因此不要单独发帖索要(谁需要ID,由我们决定),你最好只关注自己的问题和论坛的规矩。

TOP

谢谢

TOP

果然可以成功!我用windows2003自带DHCP 带起 http://nufans.net/upload/pxe/climbing_pxe_pack1.rar和 PXE服务器软件Hanewin dhcp官方网站用虚拟机成功带起2台无盘游戏工作站 系统用迷你 98M 2003 制作 在线装好DX9.0C和三卡驱动游戏菜单等万象客户端~哈哈!

TOP

非常多谢你的方法 让我从中学会不少东西 多谢你!

TOP

不知道将来能否用在更高级的网吧领域上!时空确实不同!

TOP

正准备试一下PXE启动,要好好学习一下。

TOP

回复 4# 的帖子

对你的“系统用迷你 98M 2003”很感兴趣,不知道能不能发给我一份儿?

谢谢。如果可以,请发到我的QQ邮箱:653668@qq.com
夫大块载我以形,劳我以生,佚我以老,息我以死。故善吾生者,乃所以善吾死也。

在本论坛发帖前,请认真阅读下面的链接及建议:
1、论坛基本守则
2、下面是论坛历史上真实发生的对论坛规则如何理解和应用的讨论帖子,对新手很有参考价值(请抱平常心浏览):
http://bbs.znpc.net/viewthread.php?tid=4505
http://bbs.znpc.net/viewthread.php?tid=5586
3、提问前先潜水并搜索,避免发月经帖;尊重别人就是尊重自己。
4、Public用户回帖时请注明自己的ID和邮箱以供识别,这不意味着你一定能获得邀请码,但遵守规矩总是有利的。
5、基本上我们认为你不需要注册本论坛ID,因此不要单独发帖索要(谁需要ID,由我们决定),你最好只关注自己的问题和论坛的规矩。

TOP

这个系统吗~随便google一遍很多的下载~~~~~~~~~~

TOP

最近研究PXE整合我们的一套镜像用的系统.
先用虚拟机测试
结果真背啊.
有时成功有时失败.(失败的机率大一些. 从HaneWin 软件中只看到有时某配置文件可以被下载,有时不行).
从日志没有看出明显异常.
后来决定换换TFTPD32. 结果从日志中捕获了一丝信息.
原来是虚拟机自带的DHCP干扰了.
将它关闭后,就一直正常了.
分享一下.
使用虚拟机的朋友注意了.

TOP

呵呵,我对无盘技术很感兴趣,先看看。。。
呵呵。



小杰   409109475@qq.com

TOP

发新话题