2009-04-08

Howto Syslinux + Norton Ghost เพื่อทำการ บูทผ่านเครือข่าย

จากที่เคยเกริ่นไว้เมื่อปีก่อนๆ ว่าอยากจะทำการติดตั้งซอฟต์แวร์ผ่านทาง network หรือ PXE bootแทนวิธีเดิมที่ต้องใช้ floppy ทำการบูท แล้วติดปัญหาว่าหากเป็น Window OS แล้วการ boot ผ่านเนตเวิร์กไม่สามารถที่จะทำได้ ก็เลยพักไว้ก่อน
เมื่อศุกร์ที่ผ่านได้มีโอกาสมานั่งปรับเพราะคิดว่าเหลือโปรเจ็กต์ที่ค้างๆ อยู่ ซึ่งตอนแรกคิดจะทำเรื่องเมล์แต่พักเอาไว้ก่อนเพราะเจ้าตัวนี้ใช้ทุกครั้ง หากทำมันเสร็จก่อนน่าจะช่วยประหยัดเวลาได้ เลยมานั่งค้นนั่งทำใช้เวลาไปทั้งหมด6 ชั่วโมง ( จริงๆ รวมวันที่เขียนนี้ก็คง 6.20 นาที เพราะมีปัญหากับ TFTP server ต้องมานั่งปรับอีก ) ซอฟต์แวร์ที่ผมใช้นั้นก็คือ NortonGhost Corperate Edition Version 7.5 + Window 2000 AdvanceServer + Syslinux ( PXElinux ) + WMI script + Window TFTP server ช่วยในการติดตั้ง
ทีนี้มาประเดิมปัญหาก่อนว่าเดิมทีหากท่านซื้อไลเซ็นต์ของ NortonGhost จริง มาแล้วเขาจะมีชุดซอฟต์แวร์ที่เป็นตัวจัดการบูทเนตเวิร์ก หรือ PXE เซอร์เวอร์ ชื่อว่า 3com boot service ซึ่งตอนนี้ไม่สามารถหาดาวน์โหลดได้แล้ว เพราะ 3com ได้หยุด support หรือขายไปแล้วจำแน่นอนไม่ได้ ( ความจำไม่ค่อยดีขออภัยด้วยครับ ) เอาล่ะทีนี้ตัว3com boot service เกิดเสียขึ้นมาแล้วไม่มีแผ่นสำรอง - -" เลยต้องหาซอฟต์แวร์ตัวอื่นมาทดแทน แต่จนแล้วจนรอดพยายามหาซอฟต์แวร์แบบนี้ก็ไม่มี หากมีก็รวมอยู่กับตัวโปรดักส์อื่นๆ เลย หรือจะเอา RIS service ของวินโดว์ติดตั้งก็ไม่สนับสนุนอีก ( อาจจะทำได้แต่ผมทำไม่เป็นก็ได้ ) สุดท้ายก็เลยมาลองค้นดู syslinux นี่แหละน่าจะใกล้เคียง โดย syslinux เป็น boot loader สำหรับติดตั้ง Linux จากไฟล์ระบบแบบ FAT ทีนี้ใน packeget เขาแถมซอฟต์แวร์มาให้อีกคือPXEboot ( pxelinux ) ซึ่งผมจะใช้เป็นตัว หลักก็คือ PXElinux นี่แหละครับ สามารถดาวน์โหลดได้จากที่นี่เลย
http://www.kernel.org/pub/linux/utils/boot/syslinux/
เวอร์ชั่นที่ผมใช้อยู่นี้คือ 3.36 โหลดได้จาก
####################### DOWNLOAD Syslinux ##########################
http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.36.zip
จากนั้นทำการ Unzip ออกมาไว้ที่ไหนก็ได้ แต่กรณีของผม ผมเอาไว้ที่ C:\syslinux
มาถึงขั้นตอนต่อไปคือทำการสร้างโฟลเดอร์สำหรับ BOOTP หรือสถานที่เก็บตัวโหลดเดอร์สำหรับบูทผ่านเนตเวิร์ก เพื่อให้ง่ายต่อการจดจำผมสร้างโฟลเดอร์ไว้ที่ Drive C:\ อีกเช่นกันชื่อว่า
c:\TFPBOOT
ทำการสร้างโฟลเดอร์ให้ PXElinux เพื่อใช้ในการเก็บไฟล์คอนฟิกไฟล์สำหรับบูทหน่อย ชื่อโฟลเดอร์ว่า pxelinux.cfg
c:\TFPBOOT\pxelinux.cfgcd c:\TFPBOOT\pxelinux.cfg\
จากนั้นทำการสร้าง "txt file" เพื่อนำมาเป็นคอนฟิกไฟล์สำหรับการบูท ชื่อว่า "default" ( จริงๆ สามารถเปลี่ยนชื่อได้แต่ก็ให้ขึ้นอยู่กับ กฏ การเรียงลำดับชื่อของ pxelinux ( ดูเพิ่มเติมได้ที่ http://syslinux.zytor.com/pxe.php )ถ้าอยากให้ คอนฟิกไฟล์บูทมีผลกับเครื่องใดเครื่องหนึ่งเท่านั้นก็สามารถทำได้โดยอ้างอิงจากข้างต้น ( ดูเพิ่มเติม )
c:\TFTPBOOT\pxelinux.cfg\default
ภายในคอนฟิกไฟล์รายละเอียดเป็นแบบข้างล่างนี้
default bootdos <-- บอก Label default สำหรับทำการ boot คล้ายๆกับ grubprompt 0
label bootdos <-- ทำการสร้าง label section ขึ้นมาชื่อ "bootdos"kernel memdisk <-- ระบุ image kernel ที่ใช้ในการโหลดappend initrd=dc7100.img <-- Chain load ซึ่งสร้างมาจาก floppy image
การเลือกแบบของ Image ในการโหลดสามารถหาอ่านได้จากเอกสารครับ มีทั้ง Image ที่เป็น Linux kenel ด้วยแต่ในกรณีนี้ ผมไม่ต้องการบูท Linux แต่ต้องการให้ตัว Syslinux เป็นตัว chain-loader กับ Ghost floppy imageที่เราสร้างขึ้น ผมเลยเลือกเอา image kernel ที่ชื่อ memdisk ( จากความสามารถตรงนี้สามารถนำไปประยุกต์ให้โหลด OSอื่นๆ ได้ )
สร้างและกำหนด kernel รวมถึงโหลดเดอร์ pxe ด้วย
copy c:\syslinux\memdisk\memdisk c:\TFTPBOOT\memdisk copy c:\syslinux\pxeliux.0 c:\TFTPBOOT\pxeliux.0
ทำการสร้าง image ghost สำหรับบูทผ่านเนตเวิร์ก แต่ต้องไปดาวน์โหลดอุปกรณ์มาก่อนไปโหลดเอา rawrite เวอร์ชั่นGUI มา ( จริงๆ ก็คือ rawritedos แต่มาทำเป็นแบบ GUI ใครเคยติดตั้ง Linux เมื่อก่อนคงรู้จักดี )
################### tool for create floppy image ####################
http://uranus.it.swin.edu.au/~jn/linux/rawwrite.htm
เอาแผ่น Ghost floppy ที่เราทำไว้แล้วใส่เข้าไป แล้วให้มันทำการ "read" แล้ว save เก็บเอาไว้ ในที่นี้ผมตั้งชื่อเอาไว้ว่า"dc7100.img" เรียบร้อยสำหรับการทำ image floppy
ตอนนี้ใน folder c:\TFTPBOOT จะมีไฟล์และโฟลเดอร์อยู่ดังนี้
##################### TFTPBOOT folder content #####################
c:\TFTPBOOT\pxelinux.cfg\default <-- config file for pxelinuxc:\TFTPBOOT\pxelinux.0 <--- boot loaer filec:\TFTPBOOT\memdisk <-- kernel loader "memdisk" typec:\TFTPBOOT\dc7100.img <-- floppy image or ghost image boot disk create by"rawritewin"
เอาล่ะส่วน boot server เรียบร้อยแล้วทีนี้มาต่อกันด้วยการกำหนดค่า DHCP ในที่นี่ผมสมมุติว่าท่านได้ทำการสร้าง scope ไฟล์อะไรเรียบร้อยแล้ว เพราะส่วนอื่นๆ ต่อไปนี้จะนำไปใส่ยัง option ของ scope ไฟล์ ส่วนที่เปลี่ยนแปลงมีดังนี้ โดยการ click ขวาที่ "scope option" แล้วเลือก "configure scope " เอาล่ะ option ที่เพิ่มมีดังนี้
################### DHCP scope configure section ####################
option 066 "Boot server Host name" ใส่ค่า "ชื่อของบูทเซอร์เวอร์"option 043 "Vender specific info" ใส่ค่า 01 04 00 00 00 00 ff option 067 "Bootfile Name" ใส่ค่า "ไฟล์ที่เราจะให้ทำการบูท"
เพราะฉะนั้นตอนนี้ ผมจะมีค่าดังข้างล่างนี้จะมีเปลี่ยนก็คือชื่อเครื่องของ boot server ( ทางผู้เขียนแนะนำว่าให้ DHCP server กับTFTP server อยู่ที่เดียวกัน )
option 066 "Boot server Host name" value "gserver"option 043 "Vendor specific info" value 01 04 00 00 00 00 ffoption 067 "Bootfile Name" value "pxeliux.0"
กำหนดออปชั่น classID เพิ่มเติมเพราะ Window 2000/2003 ไม่สนับสนุน option ดังกล่าวโดยการทำผ่าน tool commandlineชื่อว่า netsh
C:\WINDOWS\system32>netshnetsh>dhcpnetsh dhcp>server [server name] *OR* [server IP address]netsh dhcp server>add optiondef 60 PXEClient String 0 comment=PXE supportnetsh dhcp server>set optionvalue 60 STRING PXEClient
restart DHCP service
ทีนี้มาเพิ่มเติมอีกนิดหนึ่ง สำหรับ Howto ที่ผมนำมาอ้างอิงนั้นเขาใช้ "tftpd32" ของ http://tftpd32.jounin.net/ แต่ปัญหามันเกิดขึ้นมาไม่รู้ว่ามาจากอะไร tftpd32 นั้น ช้ามากและรับโหลดพร้อมกันหลายเครื่อง ไม่ได้ เกิดอาการกระตุกหรือค้างไปเลย ผมเลยจำเป็นต้องใช้ TFTP service ของ window แทน แต่ต้องมีการแก้ไขเพื่อเปลี่ยน default โฟลเดอร์ดังนี้ ( เข้าไปเปลี่ยนใน registry )
regedit
ไปที่ key \HKLM\System\CurrentControlSet\Services\TFTPD\Parameters\สร้าง keyDirectory ใส่ค่าสตริงไปเป็น "Directory of BOOTP"หรือDirectory String value "c:\TFTPBOOT\"
สรุปปัญหาที่ทำไม่ได้รอบแรกน่าจะเป็นเพราะว่าขาดออปชั่นการคอนฟิก DHCP ไป ??!! เพราะตอนแรกใช้กับ3com boot service แต่ไม่ work โอเค.ผ่าน หวังคงเป็น idea ให้ใครหลายคนไม่ต้องเสียตังค์ซื้อซอฟต์แวร์เพิ่มเติมหรือปรับปรุงของที่มีอยู่แล้วให้ดีขึ้นนะครับ ตอนหน้าหากไม่มีอะไรก็คงไม่น่าจะพ้นเรื่องการจัดการemail ??
จบครับ ขอขอบคุณแหล่งข้อมูลอ้างอิงข้างล่างนี้เป็นอย่างมากครับ จริงๆ มีอย่างน้อย 30 tab แต่สุดท้ายก็เหลือแค่นี้แหละครับ
################### THANK YOU CREDIT ######################
#Syslinx Homepage site
http://syslinux.zytor.com/
#rawrite GUI version for create img floppy
http://uranus.it.swin.edu.au/~jn/linux/rawwrite.htm
#syslinux download
http://www.kernel.org/pub/linux/utils/boot/syslinux/
#Syslinux PXE section describe and Howto
http://syslinux.zytor.com/pxe.php
#Thank you very much for DHCP configure section and idea
http://pxes.sourceforge.net/howtos/ms_only_environment/

No comments: