Monday 3 January 2011

Ubuntu 10狐獴做RIS服务器以PXE方式安装WINDOWS XP

朋友的电脑操作系统坏了,想重装Windows XP,是Sony的Vaio TG 750P。没有geeker的本事,但本着geeker的心态,我勉强把这东西拿过来了。一看好家伙,光驱已经坏了,DVD和CD都不能读。BIOS不支持USB启动,升级了也不行。只能网络安装,手里没有Windows服务器,只有一台Ubuntu,还是最新的版本,10.10, Maverick Meerkat,也只好硬着头皮做小白兔了。
本来这些事情学生的时候就应该会做,不过我上学那会儿,导师没有电脑给我,我只攒了一台单机,还是朋友赞助的。闲话多了点,这年头,说两句,就有人说您甭抱怨了,社会是公平的。就算不公平,您抱怨也没用,谁有那功夫听啊。不光不听,人烦了还说不定被发现在车轱辘下躺着。说不清,道不明,更怨了。
网上的文档不算少,这个就很权威,还有工具提供。不过这些文档对初学者真的不够友好,我这里就整理一下,争取把一些常见的问题讲清楚一点。一般代码样本如果在参考文献中有,我就不拷贝提供,除非在Ubuntu 10下有特殊之处。所以仅供参考,但相信是有用的参考。
Dhcp服务器
一般路由器的DHCP服务器不支持这个,DHCP3没有问题。配置文件一般是/etc/dhcp3/dhcpd.conf。 这里提供一个样本,
  1. option domain-name "your.domain.name";
  2. option domain-name-servers 192.168.0.101;
  3. default-lease-time 600;
  4. max-lease-time 7200;
  5. allow booting;
  6. allow bootp;
  7. authoritative;
  8. subnet 192.168.0.0 netmask 255.255.255.0 {
  9. range 192.168.0.100 192.168.0.200;
  10. option broadcast-address 192.168.0.255;
  11. option routers 192.168.0.1;
  12. }
  13. group {
  14. next-server 192.168.0.101;
  15. host tftpclient {
  16. hardware ethernet 00:01:4A:F6:2F:75;
  17. filename "pxelinux.0";
  18. }
  19. host tftpclient2 {
  20. hardware ethernet 08:00:27:99:39:80;
  21. filename "pxelinux.0";
  22. }
  23. }
这里指定mac地址,主要是安全,不是必须的。完了运行脚本,
service dhcp3-server restart
TFTP服务器
我选择TFTPD-HPA。Ubuntu 10下这个程序以服务的形式独立运行,不再绑定init.d,配置也不太一样。网上能搜到的文档很不全,小白兔的鸭梨很大。不过man tftpd一下,再看看样本文件,还是能够对付。注意选项里带上几个v,帮助你有更多的log。log文件是/var/log/syslog。这里提供配置文件样本,命名重定向规则文件,各位参考这个链接吧,也不知道是否原始的链接不过确实可以用。
配置文件是/etc/tftpd-hpa。规则文件通过options指定,根目录通过TFTPTFTP_DIRECTORY指定。
  1. TFTP_USERNAME="tftp"
  2. TFTP_DIRECTORY="/home/ris/tftproot"
  3. TFTP_ADDRESS="0.0.0.0:69"
  4. TFTP_OPTIONS="-l --secure --verbosity 9 -m /etc/default/tftpd.rules"
最后运行一下脚本,
service tftpd-hpa restart
Samba服务器
在应答文件中,这里使用winxp.sif,可以使用IP地址指定共享文件服务器。当使用主机名不能找到Samba服务时,建议在SIF文件中使用IP地址。
追求自动安装的朋友,可以编辑Unattended section,包括注册码,这个超出了本文的讨论范围,就此放过了。
Samba的配置文件是/etc/samba/smb.conf,样本网上很多,这里也掠过了。
服务器上整个目录结构的安排
推荐把设置一个RIS目录,TFTPROOT是其子目录。可以参考这个目录结构。我是把TFTPROOT设为Samba共享目录,其实设到winxp就可以了。
  • /home/ris
  • |-tftproot
  • |---winxp.0
  • |---winxp.sif
  • |---xpldr
  • |---pxelinux.0
  • |---vesamenu.c32
  • |---ntdetect.wxp
  • |---drivers
  • |---pxelinux.cfg
  • |-----default
  • |---winxp
  • |-----i386
红色部分列出了几个关键的文件,其它只列出部分重要目录,解压缩产生的目录就不列了。inf文件拷贝到自建的drivers目录就可以运行infparser.py,但推荐所有的驱动文件都拷贝到i386中,一般是解压缩driver.cab一部分,从硬件商驱动下载处下载一部分,有些exe文件,需要在windows下通过命令行带解压缩选项方式运行后解压缩。推荐:拷贝文件之后,进入TFTPROOT目录,chmod -R 755 * 和chgrp -R nogroup *,确保tftp服务。
Service Pack 的问题
一般带补丁的安装映像,文件拷贝后,第一次硬盘启动会报错。这时候重新网络启动,可以进入修理模式。把sp2或者sp3的文件解包,重命名,覆盖system32下的文件,就可以重启动进入硬盘安装阶段了。如果进入安装画面之后还死机,一般是缺少一些专门的驱动程序,需要找到相关的inf和驱动文件。
题外话,网络安装系统是个很有趣的领域。开源系统一般支持都比较好。Windows这种对局域网提供支持,但是对新的标准gpxe就不那么友好了。当然如果你发现我说错了,请纠正我。总的说来,PXE 是业界很长时间的事实标准,开源软件大大促进了这一标准的应用和实践。从个人领域看,未来的设备,在网卡上,甚至3G芯片上,包涵GPXE ROM,那么个人对于一般设备的掌控程度就和今天对PC的掌控一样强了。软件分发,维护,更新的成本也会降到不可思议的程度,达到菜头门外汉放谈互联网中所说,民工也能Mobile Web 2.0的程度。其实从商业领域看,企业的内部网络也讲更加灵活,有效。不过企业的经理们,考虑问题并非是把事情做得更好那么简单。要不然,大企业的商业道德就不是那样一个热门话题了。

No comments: