PXE BOOT DIY自己的网络启动工具集合
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://coolerfeng.blog.51cto.com/133059/55791 |
大家对深山红叶,矮人DOS工具箱之类的维护光盘应该不陌生了,作为企业,网吧网管,随手准备这样的光盘真的是能解决很多问题。对于网刻,相信很多人也有所了解。但是,在网吧/公司维护机器时。基本上面对的都是无光驱的机器,如果要用这些工具,只能是关机接上一个光驱,虽然也有USB TO IDE的转换线可以把台式机的光驱变成USB接口的,但受限于主板的兼容性以及外置电源供电的稳定性。有时候会出这样那样的问题。那么,如何更快速的开始我们的工作呢,答案是将这些工具移植到网络上一台服务器上,客户机利用PXE BOOT功能来得到一个菜单,来使用这些功能。如下图:
对于绝大部分机器来说,目前都集成了PXE BOOT功能,开机按F12即可从网卡启动,部分8139的网卡可能是SHIFT+F10来进入PXE BOOT的设置菜单来管理这项功能。关于PXE BOOT的原理,在上一篇文章中已经讲过。http://coolerfeng.blog.51cto.com/blog/133059/48801
本文所实现的功能,在windows平台下有大量的第三方开发的软件可以实现,别人开发的软件始终难以完全满足我们自己的需求,因此,我们可以利用LINUX平台自己DIY一个同样功能的工具出来。
下面说一下安装过程。LINUX下需要安装TFTP,DHCP,SAMBA服务。dhcp和samba可以用RPM安装,但是rpm安装的tftp-server有一些bug,因此我们要用源码安装tftp-server
从http://www.kernel.org/pub/software/network/tftp/下载tftp-server的最新源码,然后打上patch,(http://oss.netfarm.it/guides/ris-linux-0.3.tar.gz)
#tar zxvf tftp-hpa-0.48.tar.gz
#tar zxvf ris-linux-0.3.tar.gz
# cd tftp-hpa-0.48
#patch -p1 < ../ris-linux-0.3/patches/tftp-hpa-filecase.diff
#./configure --prefix=/usr/local/tftp
#make
#make install
# mkdir /tftpboot
接下来修改
# vi /etc/xinetd.d/tftp
=============+==========+===========+============+============ service tftp { disable = no (默认是yes,这里改成no,启用它) socket_type = dgram protocol = udp wait = yes user = root server = /usr/local/tftp/sbin/in.tftpd//改成源码编译安装生成的启动文件 server_args = -v -m /tftpboot/rules -s /tftpboot //-s 表示用/tftpboot作为tftp目录的根目录. -v打开日志在/var/log/messages便于调试, -m 指定重定向规则 per_source = 11 cps = 100 2 flags = IPv4 } 接下来创建tftp的rule文件
vi /tftpboot/rules
ri ^[a-z]: # Remove "drive letters" rg \\ / # Convert backslashes to slashes rg \# @ # Convert hash marks to @ signs rg /../ /..no../ # Convert /../ to /..no../ rg A a rg B b rg C c rg D d rg E e rg F f rg G g rg H h rg I i rg J j rg K k rg L l rg M m rg N n rg O o rg P p rg Q q rg R r rg S s rg T t rg U u rg V v rg W w rg X x rg Y y rg Z z r ^/(.*) \1 tftp是由xinted来启动的,修改完后要记得service xinetd restart 建立rules的原因是因为tftp对大小写敏感,而windows下文件不分大小写,linux下文件分大小写,为了统一,用这规则把所有的大写字母转换为小写字母。
接下来配置DHCP server
# vi /etc/dhcpd.conf
=============+==========+===========+============+============ ddns-update-style interim; ignore client-updates; default-lease-time 21600; max-lease-time 43200; authourtative; next-server 192.168.1.103; subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; option subnet-mask 255.255.255.0; range 192.168.1.1 192.168.1.100; default-lease-time 21600; max-lease-time 43200; filename "/pxelinux.0"; option domain-name-servers 202.106.0.20; } pexlinux.0来源于syslinux这个rpm包。如果没有安装syslinux,你需要手动安装这个包。我们把它复制到tftpboot目录。
# cp /usr/lib/syslinux/pxelinux.0 /tftpboot
下面创建菜单
#mkdir /tftpboot/pxelinux.cfg
#vi /tftpboot/pxelinux.cfg/default
default menu prompt 0 timeout 60 menu title PXELINUX ADVANCED MENU SYSTEM MENU WIDTH 80 MENU MARGIN 10 MENU ROWS 12 MENU TABMSGROW 18 MENU CMDLINEROW 19 MENU ENDROW 24 MENU TIMEOUTROW 20 MENU BACKGROUND syslinux.jpg label local menu label Boot From Local Disk LOCALBOOT 0 label knoppix kernel images/knoppix/knoppix append ramdisk_size=100000 init=/sbin/init lang=cn apm=power-off vga=791 splash=silent initrd=images/knoppix/knoppix.gz nfsdir=192.168.1.251:/opt/inst/knoppix nomce quiet BOOT_IMAGE=knoppix label rhel4-i386 menu label RHEL 4 AS U4 i386 nfs(192.168.1.251:/opt/inst/r4) kernel images/redhat/vmlinuz-rhel4-i386 append initrd=images/redhat/initrd-rhel4-i386.img devfs=nomount ramdisk_size=9216 text label rhel4-x86_64 menu label RHEL 4 AS U4 x86_64 nfs(192.168.1.251:/opt/inst/r4-64) kernel images/redhat/vmlinuz-rhel4-x86_64 append ks=nfs:192.168.1.240:/opt/inst/ks/ks4-x86_64 initrd=images/redhat/initrd-rhel4-x86_64.img devfs=nomount ramdisk_size=9216 label rhel5-i386 menu label RHEL 5 i386 nfs(192.168.1.251:/opt/inst/r5) kernel images/redhat/vmlinuz-rhel5-i386 append ks=nfs:192.168.1.240:/opt/inst/ks/ks5 images=images/redhat/vmlinuz-rhel5-i386 initrd=images/redhat/initrd-rhel5-i386.img devfs=nomount ramdisk_size=9216 label rhel5-x86_64 menu label RHEL 5 x86_64 nfs(192.168.1.251:/opt/inst/r5-64) kernel images/redhat/vmlinuz-rhel5-x86_64 append ks=nfs:192.168.1.240:/opt/inst/ks/ks5-x86_64 images=images/redhat/vmlinuz-rhel5-x86_64 initrd=images/redhat/initrd-rhel5-x86_64.img devfs=nomount ramdisk_size=9216 label clonezilla menu label Boot a clonezilla kernel images/clonezilla/vmlinuz append initrd=images/clonezilla/initrd.gz boot=casper netboot nfsroot=192.168.1.240:/opt/inst/clonezilla label ping menu label Boot ping kernel images/ping/kernel append vga=normal devfs=nomount pxe ramdisk_size=33000 load_ramdisk=1 init=/linuxrc prompt_ramdisk=0 initrd=images/ping/initrd.gz root=/dev/ram0 rw noacpi noapm pci=noacpi lba acpi=off apm=off nfsroot=192.168.1.240:/opt/inst/ping label floppy menu label Boot a DOS 7.0 floppy disk with ghost2003 kernel images/floppy/memdisk append initrd=images/floppy/fd.img label ghost83 menu label Boot Ghost8.3 kernel images/ghost83/memdisk append initrd=images/ghost83/ghost83.img label win2k3 menu label Windows 2003 pxe install kernel w2k3.0 LABEL winpe menu label WindowsPE with Office kernel winpe.0 label menu menu hide kernel vesamenu.c32 OK,到这里,菜单就好了,菜单内容可以自己编辑修改,背景图片syslinux.jpg可以自己替换。接下来,开一个vmware。启动,然后按F12。应该可以看到刚才我发的那个图片样子的菜单了,如果有问题,请自己根据/var/log/messages下的log来排错。
有了菜单,但每个菜单依然不能用,我们还要去定义每一个项目
由于时间关系。。。敬请期待续集。。。。。。。。。嘿嘿
本文出自 “风吹云动” 博客,请务必保留此出处http://coolerfeng.blog.51cto.com/133059/55791 本文出自 51CTO.COM技术博客 |



coolerfeng
博客统计信息
热门文章
最新评论
友情链接

