การทำ PXE Remote Boot --- Linux
ในการทำ Remote-Boot นี้ มาจากความจำเป็น ของผู้ดูแลระบบซึ่งมีเครื่องลูก( Clients) ให้ดูแลมากๆ เนื่องจากผู้ที่
เข้ามาเล่น เครื่องในวงแลนมีความรู้ความสามารถต่างๆกัน ดังนั้นในการเข้ามาเล่นแต่ละครั้ง จะทิ้งปัญหาหนักอกหนักใจ ให้ผู้ดูแล
ระบบต้องปวดเศียรเวียนเกล้าก็คือ เครื่องลูกแต่ละเครื่องได้ถูกปรับแต่งไปต่างๆนานาๆ เช่น ไอ้นั่นไอ้นี่ หายไปบ้าง เพิ่มมาบ้าง
หรือไม่ก็ทำงานไม่ได้เลย ดังนั้นในการทำ Remote-Boot จึงเข้ามามีบทบาทในการที่จะช่วยเหลือผู้ดูแลระบบ เช่นตัวอย่างใน
ห้องปฎิบัติการคอมพิวเตอร์ ในโรงเรียน วิทยาลัย มหาวิทยาลัย สถาบันการศึกษาต่างๆ หรือแม้แต่ร้านอินเตอร์เนทคาเฟ่ ซึ่งมี
เครื่องในความดูแลอยู่เป็นจำนวนมาก จึงเป็นการยากลำบากของผู้ดูแลระบบ ที่จะทำให้เครื่องลูกต่างๆทั้งหลาย มีสภาพพร้อมที่
จะใช้งาน และยังเป็นการปลอดภัยจาก ไวรัสคอมพิวเตอร์ ทางหนึ่งด้วย(แต่จะ 100% รึเปล่า?) การทำ Remote-Boot ในครั้งนี้
ผู้เขียนได้เอามาจาก มหาวิทยาลัยเจนีวา สวิสเซอร์แลนด์ ซึ่งเวบนี้ได้อธิบายพอเป็นแนวทางใน การจัดทำโดยสังเขป ซึ่งผู้เขียนเอง
ต้องใช้ความพยายามอย่างมากในการไปสู่จุดหมายด้วยความมืดมน (ที่มีความรู้อันน้อยนิดเกี่ยวกับ Linux) แต่อย่างไรก็ตามก็ใคร
ขอนำเสนอเพื่อเป็นแนวทางโดยสังเขป ดังนี้
ความสรุปโดยสังเขป
ที่เครื่องลูกให้เรา set CMOS เพื่อให้เครื่อง boot จาก Lan Card เมื่อเครื่องถูกเปิดขึ้นมา ใคร่ขอแนะนำว่าให้ตั้ง password
ในการปรับแต่ง CMOS เพื่อป้องกันการเปลี่ยนลำดับการ boot เมื่อเครื่องถูกเปิดขึ้นมาหรืออาจจะใช้วิธี
Wake-On-Lan ก็สุดแล้วแต่ จากนั้น Server จะทำการแจก (Fixed) IP ให้กับเครื่องลูก และก็จะทำการ transfer image
จาก Server มายังเครื่องลูก ก็เป็นการใช้ได้
ซึ่งจากการใช้งาน เมื่อสั่งเปิดเครื่องลูกพร้อมกันโดย Wake-On-Lan จะใช้เวลา 3 นาที ทุกเครื่องก็พร้อมที่จะถูกใช้งาน
ผู้อ่านอาจจะมีคำถามในใจว่า ถ้าเครื่องลูกมีสเปกไม่เหมือนกันจะทำอย่างไร ในกรณีนี้ ผู้เขียนใครขอเรียนว่า เราต้องแยกกลุ่มของ
เครื่องออกมาเป็นกลุ่มๆที่มีสเปกเหมือนกัน แล้วจัดทำของแต่ละสเปกเก็บเป็น image แยกกัน ซึ่งใช้วิธีการเดียวกันนี้
ข้อสำคัญในวิธีการนี้ก็คือ Lan Card ต้อง support อย่างน้อย PXE 2.0 แต่ถ้าผู้ที่มี Lan Card ไม่ support PXE 2.0
สามารถ download โปรแกรมเพื่อทำแผ่น Diskette สำหรับ boot ได้
สิ่งที่ต้องจัดเตรียมซึ่งผู้เขียนใช้อยู่
Server:
OS:RedHat Linux 7.3
IP:192.168.1.1
hostname: one.abcdef.com
Client:
OS:Microsoft Windows SE
IP:192.168.1.51
hostname: abcd51.abcdef.com
โปรแกรมที่ใช้
Linux:BpBatch (tar.gz) (02/11/2000)
http://www.bpbatch.org/downloads/bpb-exe.tar.gz
Windows: BpBatch (zip) (02/11/2000)
http://www.bpbatch.org/downloads/bpb-exe.zip
PXE:2.0 (built-in NIC)
มีเรื่องที่เกี่ยวข้องอยู่สามเรื่องคือ
1. samba
2. dhcp
3. tftp
1. เรื่องของ samba ในการเตรียมเรื่อง samba ก็เพื่อที่เราสามารถที่จะติดต่อกับ Server เพื่อขอใช้สิทธิในการ
เขียนการอ่านและสั่งทำงานได้นั่นเองให้เราเริ่มด้วยการสร้าง Directory ขึ้นใน /home ชื่อ tftpboot เพื่อรองรับการทำงานซึ่ง
โปรแกรมจะเก็บ image ไว้ที่นี่ หลังจากนั้นให้ทำ Symbolic Link เพื่อให้โปรแกรมรับทราบว่าสามารถหา tftpboot ได้ที่ราก
ของ HardDisk ในการทำครั้งนี้เราจะใช้ User ที่ชื่อ admin เป็นผู้จัดการทั้งหมด ดังนั้น ต้องมี User ชื่อ admin อยู่ในระบบแล้ว
[root@one root]# mkdir /home/tftpboot
[root@one root]# ln -s /home/tftpboot /tftpboot
[root@one root]# chmod 755 -R /tftpboot
[root@one root]# chown admin.admin -R /tftpboot
[root@one root]#
จากนั้นให้เรา เอาแฟ้ม bpb-exe.tar.gz เข้าไปใส่ไว้ใน /tftpboot หรือ Download ได้จาก ที่นี่ เปลี่ยน user จาก root เป็น admin แล้วทำการแตก file ดังนี้
[root@one root]# cp /home/util/bpb-exe.tar.gz /tftpboot
[root@one root]# chown admin.admin bpb-exe.tar.gz
[root@one root]# su admin
[admin@one root]# cd /tftpboot
[admin@one tftpboot]$ tar zxpf bpb-exe.tar.gz
[admin@one tftpboot]$ ls -l
total 2700
-rw-r--r-- 1 admin admin 856 Feb 11 2000 INSTALL
-rw-r--r-- 1 admin admin 3471 Feb 11 2000 LICENSE
-rwxr-xr-x 1 admin admin 807620 Jul 3 2002 bpb-exe.tar.gz
-rw-r--r-- 1 admin admin 2183 Feb 11 2000 bpbatch.P
-rw-r--r-- 1 admin admin 58659 Feb 11 2000 bpbatch.hlp
-rw-r--r-- 1 admin admin 191812 Feb 11 2000 bpbatch.ovl
-rwxr-xr-x 1 admin admin 173607 Feb 11 2000 mrbatch
-rw-r--r-- 1 admin admin 203190 Feb 11 2000 mrbatch.exe
-rwxr-xr-x 1 admin admin 399536 Feb 11 2000 mrbatch.static
-rwxr-xr-x 1 admin admin 208763 Feb 11 2000 mrzip
-rw-r--r-- 1 admin admin 210416 Feb 11 2000 mrzip.exe
-rwxr-xr-x 1 admin admin 429816 Feb 11 2000 mrzip.static
-rw-r--r-- 1 admin admin 771 Feb 11 2000 readme
-rw-r--r-- 1 admin admin 8631 Feb 11 2000 whatsnew
[admin@one tftpboot]$
เนื่องจากผู้เขียนใช้ tftp แบบปกติ เราจึงต้อง copy แฟ้ม bpbatch.P เป็น bpbatch ด้วยเพื่อให้สามารถทำงานได้ดังนี้
[admin@one tftpboot]# cp bpbatch.P bpbatch
[admin@one tftpboot]# ls -l
total 2744
-rw-r--r-- 1 admin admin 856 Feb 11 2000 INSTALL
-rw-r--r-- 1 admin admin 3471 Feb 11 2000 LICENSE
-rwxr-xr-x 1 admin admin 807620 Jul 3 2002 bpb-exe.tar.gz
-rw-r--r-- 1 admin admin 2183 May 21 08:22 bpbatch
-rw-r--r-- 1 admin admin 2183 Feb 11 2000 bpbatch.P
-rw-r--r-- 1 admin admin 58659 Feb 11 2000 bpbatch.hlp
-rw-r--r-- 1 admin admin 191812 Feb 11 2000 bpbatch.ovl
-rwxr-xr-x 1 admin admin 182366 Feb 11 2000 mrbatch
-rw-r--r-- 1 admin admin 203190 Feb 11 2000 mrbatch.exe
-rwxr-xr-x 1 admin admin 408295 Feb 11 2000 mrbatch.static
-rwxr-xr-x 1 admin admin 217522 Feb 11 2000 mrzip
-rw-r--r-- 1 admin admin 210416 Feb 11 2000 mrzip.exe
-rwxr-xr-x 1 admin admin 438575 Feb 11 2000 mrzip.static
-rw-r--r-- 1 admin admin 771 Feb 11 2000 readme
-rw-r--r-- 1 admin admin 8631 Feb 11 2000 whatsnew
[admin@one tftpboot]#
ส่วนในแฟ้ม smb.conf ซึ่งอยู่ที่ /etc/samba ให้เราแก้ไขส่วนของ Public และเพิ่มเติมส่วนที่เป็น admin เป็นดังนี้
# Global parameters
[global]
workgroup = ABCD
netbios name = SHARE
server string = Samba server in share level
security = SHARE
os level = 32
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
[tftpboot]
comment = tftpboot
path = /tftpboot
writeable = yes
public = yes
read only = No
directory mask = 0777
guest ok = Yes
จากนั้นสั่งให้ samba ทำงานโดย
[root@one root]# /etc/init.d/smb start
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
[root@one root]#
ขั้นตอนต่อไปก็คือการให้ samba รู้จักเครื่อง Clients ที่เราจะทำการส่ง image เข้าไป
[root@one root]# cd /etc/samba
[root@one samba]# cat ../passwd | mksmbpasswd.sh > smbpasswd
[root@one samba]# vi smbpasswd
[root@one samba]# smbpasswd admin
Retype new SMB password:
Password changed for user admin.
[root@one samba]#
ผู้เขียนเริ่มด้วยการเข้าไปยัง directory ของ samba โดย cd /etc/samba เพื่อคัดลอกแฟ้ม passwd ไปยังแฟ้ม smbpasswd
ในบรรทัด vi smbpasswd นั้นให้เราลบทุกบรรทัดเหลือเพียง user ที่ต้องการใช้งาน samba ในที่นี้จะเหลือชื่อเดียวคือ admin
ซึ่งมีบรรทัดเดียวในแฟ้ม smbpasswd จากนั้นเราก็สั่ง smbpasswd เพื่อสร้าง samba password สำหรับ user ด้วยคำสั่ง smbpasswd user ดังกล่าวข้างต้น
อนึ่งเนื่องจาก Windows 98 เราต้องระบุการจัดส่ง password ไปยัง Server ดังนั้นจึงต้องสั่งให้เครื่องรับทราบ นั่นก็คือ การ disable password encryption โดย สร้างแฟ้มขึ้นมาซักแฟ้มหนึ่งในที่นี้ใช้ชื่อว่า passwd.reg เก็บไว้ในเครื่องลูกที่เป็น windows 98 ซึ่งข้างในแฟ้มประกอบด้วย
REGEDIT4
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
"EnablePlainTextPassword"=dword:00000001
เมื่อเราได้แฟ้ม passwd.reg แล้ว ให้สั่ง run แฟ้มนี้โดย Double Click แฟ้มนี้ ก็จะเป็นการ set registry ของเครื่องให้ส่ง password แบบ Plain Textและอีกอย่างหนึ่งก็คือเราต้องแก้แฟ้ม msdos.sys ซึ่งเป็น text file โดยแก้ที่บรรทัด autoscan
ซึ่งเดิมเป็น 1 ให้แก้เป็น 0
AUTOSCAN=0
2. เรื่องของ dhcp ให้ผู้อ่านแก้ไขแฟ้ม /etc/dhcpd.conf จากเดิมเป็นดังนี้
#
# DHCP configuration file. ISC DHCP server v2.0
#
#
# Global parameters
#
# Use declaration identifier as hostname
use-host-decl-names on;
#
# Shared-network definition
#
shared-network companynet {
#
# Company-wide parameters
#
option domain-name "abcdef.com";
#
# Subnet definition
#
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.101 192.168.1.250;
#
# Subnet-specific information
#
# Default gateway
option routers 192.168.1.1;
# DNS server
option domain-name-servers 192.168.1.1;
#
# PXE group declaration
#
group {
#
# PXE specific parameters
#
# Infinite lease time
default-lease-time -1;
# TFTP server IP address
next-server 192.168.1.1;
# Name of the bootstrap program
filename "bpbatch";
# Vendor class setup for PXE
option dhcp-class-identifier "PXEClient";
# Vendor-specific parameters
# Since we do not use PXE parameters in
# this example, we set this option to
# 01:04:00:00:00:00 which means 'NULL parameter'
option vendor-encapsulated-options 01:04:00:00:00:00;
# BpBatch specific parameters
# User-level parameters (opt 128 to 135 free for use)
option option-128 "ABCD";
#
# PXE hosts
#
host sermpan {
hardware ethernet 00:00:86:46:3D:52;
fixed-address 192.168.1.9;
option option-129 "sermpan";
}
host ABCD51 {
hardware ethernet 00:D0:B7:C5:CD:3E;
fixed-address 192.168.1.51;
option option-135 "win98";
option option-129 "ABCD51";
}
host ABCD52 {
hardware ethernet 00:D0:B7:CA:C9:AC;
fixed-address 192.168.1.52;
option option-135 "win98";
option option-129 "ABCD52";
}
host ABCD53 {
hardware ethernet 00:D0:B7:C5:BA:B1;
fixed-address 192.168.1.53;
option option-135 "win98";
option option-129 "ABCD53";
}
host ABCD54 {
hardware ethernet 00:D0:B7:CA:CB:9D;
fixed-address 192.168.1.54;
option option-135 "win98";
option option-129 "ABCD54";
}
host ABCD55 {
hardware ethernet 00:D0:B7:C5:C4:0C;
fixed-address 192.168.1.55;
option option-135 "win98";
option option-129 "ABCD55";
}
host ABCD56 {
hardware ethernet 00:D0:B7:C9:13:B1;
fixed-address 192.168.1.56;
option option-135 "win98";
option option-129 "ABCD56";
}
}
}
}
จะเห็นได้ว่า ผู้เขียนได้กำหนด ให้แจก Fixed IP ตั้งแต่ 51 ถึง 56 สำหรับเครื่องที่เราทราบ Adapter Address
ซึ่งค่า Adapter Address เราสามารถหาได้จากการสั่ง run winipcfg เครื่องก็จะรายงานมาดังรูปข้างล่างนี้
จากภาพข้างบนเราสั่งที่เครื่องลูก start-->run แล้วพิมพ์ winipcfg ลงไป จากนั้นก็เลือกไปที่ Lan Card ของเรามันก็จะรายงาน
ค่าของ Adapter Address ออกมาให้ ในตัวอย่างข้างบนเป็นค่าของเครื่อง NoteBook ที่ผู้เขียนใช้มีค่า 00-00-86-46-3D-52
ให้เราหาค่านี้กับเครื่องลูกทุกๆเครื่อง เพื่อที่จะเอามาใส่ใน dhcpd.conf ทั้งนี้ก็เพื่อที่จะให้ dhcp แจก Fixed IP ให้กับเครื่องลูก
นั่นเอง ส่วนเครื่องที่ไม่ทราบ Adapter Address เราก็จะให้ IP อยู่ในช่วง 101-250 จากนั้นสั่ง restart dhcp ใหม่
[root@one tftpboot]# /etc/init.d/dhcpd restart
Shutting down dhcpd: [ OK ]
Starting dhcpd: [ OK ]
[root@one tftpboot]
3. เรื่องของ tftp ให้ผู้อ่านลองตรวจสอบดูว่าได้มีการลงโปรแกรม tftp-server ไว้หรือไม่ ถ้ายังไม่มีก็ให้เอา tftp-server มาลงซึ่งอยู่ใน CD แผ่นที่สาม จากนั้นให้เราแก้ไขแฟ้ม tftp ซึ่งอยู่ใน /etc/xinetd.d โดย
[root@one root]# vi /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
#protocol. The tftp protocol is often used to boot diskless \
#workstations, download configuration files to network-aware printers, \
#and to start the installation process for some operating systems.
service tftp
{
disable= no
socket_type= dgram
protocol= udp
wait= yes
user= root
server= /usr/sbin/in.tftpd
server_args= -u nobody -s /tftpboot
per_source= 11
cps= 100 2
}
ให้แก้ disable จาก yes เป็น no
และแก้บรรทัด server_args= -s /tftpboot เป็น server_args= -u nobody -s /tftpboot
จากนั้นสั่ง restart xinetd
[root@one root]# /etc/init.d/xinetd start
Starting xinetd:
[root@one root]#
ก็เป็นการเสร็จสิ้นการเตรียมการทางฝั่ง Server
การจัดการทางฝั่ง Client
1. เมื่อเราเปิดเครื่องขึ้นมาให้เรา Loging ด้วย User ว่า admin ตามด้วย password ให้ตรงกับที่เราได้ให้ไว้กับ
smbpasswd ทั้งนี้เพื่อสิทธิในการเขียนอ่าน
2. ให้เรา map drive ในที่นี้ผู้เขียนเลือก Drive L: เป็นที่เก็บ image ซึ่งก็คือ /tftpboot นั่นเอง
3. ให้เรา map drive ในที่นี้ผู้เขียนเลือก Drive M: เป็นที่เก็บ Application ที่เราลงในเครื่องลูกซึ่งใคร่ขอแนะนำว่าการ
ติดตั้งโปรแกรมต่างๆในเครื่องลูกที่จะทำ image นั้นให้ลงไว้ที่ server ซึ่งก็คือ /home/samba นั่นเอง ในที่นี้คือ
Drive M: เพื่อว่าเครื่องลูก จะมีโปรแกรมเก็บน้อยที่สุด เพื่อความรวดเร็วในการ transfer image จาก Server
ไปเครื่องลูกเมื่อมีการเรียกขอนั่นเอง
4. ให้เราสร้างแฟ้ม อาจจะใช้ NotePad หรือ Editor อะไรก็ได้สร้างแฟ้มข้อมูลขึ้นมา 5 แฟ้มคือ
autoexec.ref, patch.ref, win98.bat, win98.bpb, และ win98.mrz ดังรายละเดียดแต่ละแฟ้มดังนี้
autoexec.ref
@regedit /L:c:\windows\system.dat /R:c:\windows\user.dat c:\patch.reg
patch.ref
REGEDIT4
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
"ComputerName"="${BOOTP-Option-129}"
"Workgroup"="${BOOTP-Option-128}"
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName]
"ComputerName"="${BOOTP-Option-129}"
win98.bat
@echo off
mrzip -b win98
win98.bpb
hidelog
# define one partition with 6144 MBytes
setpartitions "FAT32:6144"
# set the partition active
setbootpart 1
# load the image from to server to partition 1
fullunzip "win98.imz" 1
patch "autoexec.ref" "{:1}autoexec.bat"
patch "patch.ref" "{:1}patch.reg"
hidebootprom
hdboot :1
win98.mrz
# Script file for MRzip to create win98 OS image
# Last update 10/04/2003
showlog
# Filter unused files
filter -"*.swp"
filter -"*.tmp"
# filter unused directories
filter -"*/index.dat"
filter -"windows/schedlog.txt"
filter -"windows/msimgsiz.dat"
filter -"temp/*"
filter -"windows/temp/*"
# Compress drive C: into "L:/win98.imz"
fullzip "c:/" "L:/win98.imz"
จากนั้นให้เราใช้ winscp เพื่อที่จะ upload แฟ้มทั้งห้าไปไว้ที่ /tftpboot เราจะมีแฟ้มต่างๆดังนี้
[root@one tftpboot]# ls -l
total 2720
-rw-r--r-- 1 admin admin 856 Feb 11 2000 INSTALL
-rw-r--r-- 1 admin admin 3471 Feb 11 2000 LICENSE
-rw-r--r-- 1 admin admin 87 Nov 27 12:53 autoexec.ref
-rwxr-xr-x 1 admin admin 807620 Jul 3 2002 bpb-exe.tar.gz
-rw-r--r-- 1 admin admin 2183 Feb 11 2000 bpbatch.P
-rw-r--r-- 1 admin admin 58659 Feb 11 2000 bpbatch.hlp
-rw-r--r-- 1 admin admin 191812 Feb 11 2000 bpbatch.ovl
-rwxr-xr-x 1 admin admin 173607 Feb 11 2000 mrbatch
-rw-r--r-- 1 admin admin 203190 Feb 11 2000 mrbatch.exe
-rwxr-xr-x 1 admin admin 399536 Feb 11 2000 mrbatch.static
-rwxr-xr-x 1 admin admin 208763 Feb 11 2000 mrzip
-rw-r--r-- 1 admin admin 210416 Feb 11 2000 mrzip.exe
-rwxr-xr-x 1 admin admin 429816 Feb 11 2000 mrzip.static
-rw-r--r-- 1 admin admin 276 Nov 27 12:53 patch.ref
-rw-r--r-- 1 admin admin 771 Feb 11 2000 readme
-rw-r--r-- 1 admin admin 8631 Feb 11 2000 whatsnew
-rwxr--r-- 1 nobody nobody 27 May 11 22:49 win98.bat
-rwxr--r-- 1 nobody nobody 284 May 11 22:49 win98.bpb
-rwxr--r-- 1 nobody nobody 372 May 11 22:49 win98.mrz
[root@one tftpboot]#
6. จากนั้นใช้ Windows Explorer แล้วเลือกไปที่ Drive L: เราจะมองเห็นแฟ้มทั้งห้า และ bpb-exe.tar.gz ที่เราแตก
ออกมา จากนั้นให้เรา Double Click ที่แฟ้ม win98.bat โปรแกรมก็จะทำงาน เมื่อเสร็จเรียบร้อย เราก็จะได้ดังภาพข้างล่างนี้
ซึ่งก็หมายถึงว่าเราได้ทำการเอาข้อมูลใน HardDisk ทั้งก้อนของเครื่องลูกทำเป็น image เก็บไว้ที่ Server ใน Directory ชื่อ /tftpboot ทั้งหมดมี 6 ส่วนด้วยกัน
[root@one tftpboot]# ls -l
total 485528
-rw-r--r-- 1 admin admin 856 Feb 11 2000 INSTALL
-rw-r--r-- 1 admin admin 3471 Feb 11 2000 LICENSE
-rw-r--r-- 1 admin admin 87 Nov 27 12:53 autoexec.ref
-rwxr-xr-x 1 admin admin 807620 Jul 3 2002 bpb-exe.tar.gz
-rw-r--r-- 1 admin admin 2183 Feb 11 2000 bpbatch.P
-rw-r--r-- 1 admin admin 58659 Feb 11 2000 bpbatch.hlp
-rw-r--r-- 1 admin admin 191812 Feb 11 2000 bpbatch.ovl
-rwxr-xr-x 1 admin admin 173607 Feb 11 2000 mrbatch
-rw-r--r-- 1 admin admin 203190 Feb 11 2000 mrbatch.exe
-rwxr-xr-x 1 admin admin 399536 Feb 11 2000 mrbatch.static
-rwxr-xr-x 1 admin admin 208763 Feb 11 2000 mrzip
-rw-r--r-- 1 admin admin 210416 Feb 11 2000 mrzip.exe
-rwxr-xr-x 1 admin admin 429816 Feb 11 2000 mrzip.static
-rw-r--r-- 1 admin admin 276 Nov 27 12:53 patch.ref
-rw-r--r-- 1 admin admin 771 Feb 11 2000 readme
-rw-r--r-- 1 admin admin 8631 Feb 11 2000 whatsnew
-rwxr--r-- 1 nobody nobody 27 May 11 22:49 win98.bat
-rwxr--r-- 1 nobody nobody 284 May 11 22:49 win98.bpb
-rwxr--r-- 1 nobody nobody 91218913 May 16 11:15 win98.im1
-rwxr--r-- 1 nobody nobody 91226298 May 16 11:15 win98.im2
-rwxr--r-- 1 nobody nobody 91193534 May 16 11:15 win98.im3
-rwxr--r-- 1 nobody nobody 91214760 May 16 11:15 win98.im4
-rwxr--r-- 1 nobody nobody 37811592 May 16 11:15 win98.im5
-rwxr--r-- 1 nobody nobody 91195741 May 16 11:15 win98.imz
-rwxr--r-- 1 nobody nobody 372 May 11 22:49 win98.mrz
[root@one tftpboot]#
จากนั้นให้เรา set CMOS ของเครื่องลูกเป็น boot จาก Lan Card
ในการทำงานครั้งแรก จะใช้เวลาประมาณ 15 นาที ต่อเครื่องในการเอา image มาลงที่เครื่องลูก ผู้อ่านอาจจะสงสัยว่าทำไม
ผู้เขียนบอกว่าใช้เวลา 3 นาทีทั้งนี้เพราะว่าในการลงครั้งแรก ผู้เขียนกำหนดให้ใช้เนื้อที่ใน HardDisk เพียง 6.5G ซึ่งก็คือ 6144 MBytes นั่นเอง ซึ่งหมายถึงพื้นที่ที่ใช้งานจริง ส่วน HardDisk ที่เหลือหลัง 6144 MBytes จะถูกใช้งานโดยเอา Image
ทั้ง 6 ส่วนที่ได้ไปฝังเอาไว้ เมื่อเครื่องพร้อมที่จะทำงานให้ลอง Restart เครื่องใหม่
ในคราวนี้จะใช้เวลาเพียง 3 นาที แค่นั้นเองเนื่องจากไม่ต้องทำงานในการไปเขียนหลัง 6.5G นั่นเอง อย่างไรก็ตาม ถ้ามีการ
เปลี่ยนแปลงตัวเครื่องลูกหมายถึงว่า ต้องเพิ่มโปรแกรมลงไป หรือตัดโปรแกรมบางส่วนออก ก็ต้องสั่งสร้าง image ใหม่ทุกครั้งไปนั่นเองจะเห็นว่าการทำงานค่อนข้างจะวุ่นวายในตอนแรก แต่จะสบายเมื่อทุกอย่างเรียนร้อย รึว่าผู้อ่านว่าไม่จริง!!!
MTFTP เพื่อเอามาแทน TFTP
ทำให้การ transfer image เร็วขึ้นกว่าเดิม ซึ่งเดิมจะส่งเพ็คเก็จทีละ 512 Bytes เป็น 1408 Bytes แทน ทำให้เร็วขึ้นกว่าเดิม
ในการทำงานให้เรา download โปรแกรม incomtftpdlx.tar.gz จาก ที่นี่ หรือไปเอาโดยตรงได้จาก http://cuiwww.unige.ch/info/pc/remote-boot/soft/incomtftpdlx.tar.gz
จากนั้นส่งเข้า Server ในที่นี้ผู้เขียนส่งเข้าไปอยู่ที่ /var/tmp แล้วทำการแตกไฟล์ เราก็จะได้แฟ้มต่างๆดังนี้
[root@one tmp]# cp /home/util/incomtftpdlx.tar.gz .
[root@one tmp]# ls
incomtftpdlx.tar.gz
[root@one tmp]# tar zxvf incomtftpdlx.tar.gz
tftp.dist/
tftp.dist/tftpd.libc6
tftp.dist/tftpd.suse
tftp.dist/README
tftp.dist/tftpd.libc5
tftp.dist/tftpd.doc
[root@one tmp]# cd tftp.dist/
[root@one tftp.dist]# ls
README tftpd.doc tftpd.libc5 tftpd.libc6 tftpd.suse
[root@one tftp.dist]#
[root@one tftp.dist]# ls -l
total 84
-rw-r--r-- 1 root root 771 Nov 11 1998 README
-rw-r--r-- 1 root root 7324 Nov 11 1998 tftpd.doc
-rwxr-xr-x 1 root root 21259 Nov 11 1998 tftpd.libc5
-rwxr-xr-x 1 root root 22149 Nov 11 1998 tftpd.libc6
-rwxr-xr-x 1 root root 21935 Nov 11 1998 tftpd.suse
[root@one tftp.dist]#
จากนั้นให้ copy เฉพาะแฟ้ม tftpd.libc6 ไปไว้ที่ใดก็ได้ในที่นี้ผู้เขียนเอาไปไว้ที่ /usr/sbin/ จากนั้นให้เราเปลี่ยนไปอยู่ที่ /usr/sbin แล้วสร้างแฟ้มขึ้นมา เพื่อสั่ง run โปรแกรม tftpd.libc6 โดยใช้คำสั่ง vi tftpd จากนั้น เปลี่ยน Mod เป็น 700 เพื่อให้ root สั่งได้
เพียงคนเดียวดังนี้
[root@one tftp.dist]# mv tftpd.libc6 /usr/sbin
[root@one tftp.dist]# cd ..
[root@one tmp]# rm -rf *
[root@one tmp]# cd /usr/sbin
[root@one sbin]# vi tftpd
[root@one sbin]# chmod 700 tftpd
[root@one sbin]# ./tftpd &
ในส่วนของแฟ้ม tftpd ประกอบด้วย
#!/bin/bash
/usr/sbin/tftpd.libc6 -h -c 64 -d /tftpboot -l /var/log/tftpd.log -s 1408 59 -v 0 -r &
ทางที่ดีให้เราเอา tftpd นี้ไปไว้ที่ /etc/rc.d/rc.local เพื่อว่าเวลาเปิดเครื่องเราจะให้มันทำงานเลยดังนี้
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
/usr/sbin/tftpd &
ทดลองดูนะครับ มันช่วงเร่ง speed ในการ transfer แฟ้ม image ต่างๆ จาก Server มายังเครื่องลูก อย่างเห็นได้ชัด
Wake-On-Lan
เป็นการสั่งให้เครื่องลูกในวงแลน เปิดเครื่องขึ้นมาเอง วิธีการนี้ผู้เขียนคิดว่า ผู้ดูแลระบบต้องใช้เวลาในการเดินไปเปิดเครื่องลูกนาน ยิ่งถ้ามีเป็นร้อยเครื่องอาจจะใช้เวลาในการเดินไปเปิดหลายนาทีอยู่เหมือนกันเลยคิดว่ามันน่าจะมีตัวโปรแกรมที่สั่งให้เครื่อง
เปืดทำงานจึง search หาจาก google ก็ได้ความ ผู้เขียนได้ download แฟ้ม etherwake_1.06-2.tar.gz หรือว่าเอาจาก ที่นี่ จากนั้นก็ส่งเข้าไปไว้ใน Server ผู้เขียนเก็บไว้ที่ /home/util แล้วจัดการแตกและคอมไพล์ ดังนี้
ในการสั่งให้เปิดเครื่องให้เราสั่งดังนี้ ในกรณีนี้จะยกตัวอย่างสั่งเครื่องลูก 6 เครื่องพร้อมกันซึ่งเขียนเป็นคำสั่ง shell script เก็บไว้
โดยใช้ชื่อแฟ้มว่า one.sh ซึ่งในแฟ้มมีรายละเอียดดังนี้
#!/bin/sh
./ether-wake -i eth0 00:D0:B7:C5:CD:3E;
./ether-wake -i eth0 00:D0:B7:CA:C9:AC;
./ether-wake -i eth0 00:D0:B7:C5:BA:B1;
./ether-wake -i eth0 00:D0:B7:CA:CB:9D;
./ether-wake -i eth0 00:D0:B7:C5:C4:0C;
./ether-wake -i eth0 00:D0:B7:C9:13:B1;
ในการสั่งให้เรา chmod เป็น 755 ก่อนนะครับแล้วสั่งทำงานโดย
[root@one util]# tar zxpf etherwake_1.06-2.tar.gz
[root@one util]# cd etherwake-1.06-2
[root@one etherwake-1.06-2]# make
[root@one etherwake-1.06-2]# vi one.sh
[root@one etherwake-1.06-2]# chmod 755 one.sh
[root@one etherwake-1.06-2]#
เมื่อเราสั่ง ./one.sh เครื่องลูกทั้งหมด(ทั้ง 6 เครื่องในตัวอย่าง) ก็จะเปิดพร้อมๆกัน แล้วแต่ละเครื่องก็จะได้รับการแจก Fixed IP
จาก Server ก็เป็นอันเรียบร้อย
[root@one etherwake-1.06-2]# ./one.sh
ผู้เขียนใครขอเรียนว่า มีเกร็ดเล็กเกร็ดน้อยในการทำอยู่มาก ซึ่งขอให้ผู้อ่านได้ใช้ความพยายามและใจเย็นๆ ความสำเร็จก็จะมาสู่ตัวท่านเอง ถ้ามีปัญหาใดๆ ผู้เขียนยินดีให้ความกระจ่าง(เท่าที่มีน้อยนิด)ตามเบอร์ ICQ หรือว่า e-mail ที่บอกไว้หน้าแรก
แหล่งข้อมูล : http://phst.ph.mahidol.ac.th/Linux/index.html