要想利用无盘天使从网络上启动 操作系统磁盘(或分区)映像文件,首先需要在本地网络上架设一台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定制启动映像的功能。