PXE BOOT DIY自己的网络启动工具集合

大家对深山红叶,矮人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
#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来排错。
有了菜单,但每个菜单依然不能用,我们还要去定义每一个项目
 
由于时间关系。。。敬请期待续集。。。。。。。。。嘿嘿
原文地址:https://www.cnblogs.com/studio313/p/1891108.html