大家對深山紅葉,矮人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)#wget http://www.kernel.org/pub/software/network/tftp/tftp-hpa-0.48.tar.gz#wget 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/defaultdefault 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來排錯。有了菜單,但每個菜單依然不能用,我們還要去定義每一個項目 由於時間關係。。。敬請期待續集。。。。。。。。。嘿嘿