เรียกใช้งานจาก dos ดิสเก็ต 1 แผ่น

จากกระทู้ มีใครอยากใช้ Linux Server แทน Netware Server บ้างครับ ? อันแสนฮิต เลยอยากลองศึกษา

ได้ความดังนี้ครับ

จากบทความของคุณ ninetea เธอเอาสามเรื่องมารวมกัน คือเรื่อง ltsp, เรื่อง samba และเรื่องการดัดแปลง ltsp มาใช้กับ FreeDos
ตอนศึกษาเลยทำให้งง
แต่ผมจะพยายามแยกเป็นส่วน ๆ เผื่อเอาไว้ให้สามารถปรับเปลี่ยนได้หลาย ๆ แบบ

เรื่องที่จะเขียนวันนี้ก็คือเรื่องของการเรียกเข้าหา samba จาก FreeDos โดยใช้ดิสเก็ตแผ่นเดียว

เริ่มด้วยไปดาวน์โหลดแผ่นดิสเกตที่ทำหน้าที่เป็นไคลเอนต์ของ samba
ที่ Bart's Network Boot Disk
โฮมเพจอยู่ที่ http://www.veder.com/nwdsk

ไฟล์นี้ใหญ่ประมาณ 1.6MB ถ้าใครมีเครื่องดิสเก็ตไดรฟว์ขนาด 2.88MB ก็สามารถเขียนลงแผ่นและเรียกใช้งานได้เลย ด้วยคำสั่ง
$ dd if=fdmsrrc.img of=/dev/fd0

แต่ถ้าหากมีเพียงเครื่องอ่านขนาด 1.44MB เราต้องเอามาตัดไดรฟ์เวอร์ทิ้งบางตัว (คือตัวที่ไม่ใช่ฮาร์ดแวร์ของเรา) เพื่อทำให้แผ่นดิสเก็ตมีขนาดไม่เกิน 1.44MB
ไดร์ฟเวอร์อยู่ภายใต้ไดเรคทอรี่ /LIB/NDIS ครับ

เริ่มด้วย
็คัดลอกทำสำเนาในชื่อ fdms160.img
$ cp fdmsrrc.img fdms160.img

เอาเครื่องมือมาก่อน คือ mtools
$ sudo apt-get install mtools

จะทำให้ fdms160.img เป็นไดร์ฟ x:
และ fdms144.img เป็นไดร์ฟ y:
โดยการแก้ไข ~/.mtoolsrc
$ vi ~/.mtoolsrc

drive x: file="~/fdms160.img"
drive y: file="~/fdms144.img"

เอาบูตเรคคอร์ดจาก fdms160.img มาเตรียมไว้ก่อน
$ dd if=fdms160.img of=bootblock bs=512 count=1

สร้างอิมเมจอันใหม่ให้มีขนาด 1.44MB ชื่อ fdms144.img โดยเอาบูตเรคคอร์ดที่สร้างเตรียมไว้ เขียนลงไปด้วย
$ mformat -C -f 1440 -B bootblock y:

คัดลอกไฟล์สำคัญตามลำดับ คือ kernel.sys และ command.com
$ mcopy x:/KERNEL.SYS y:
$ mcopy x:/command.com y:

ที่เหลือจะเป็นการทยอยลบไฟล์ไดร์ฟเวอร์ใน fdms160
ผมเลือกใช้ mc (Midnight Commander) ยอดฮิต
$ sudo apt-get install mc

เมานต์ fdms160 ไว้ใน /tmp/fdms160
$ mkdir -p /tmp/fdms160
$ sudo mount -o loop fdms160.img /tmp/fdms160

และเมานต์ fdms144 ไว้ใน /tmp/fdms144
$ mkdir -p /tmp/fdms144
$ sudo mount -o loop fdms144.img /tmp/fdms144

ลบไฟล์
$ sudo mc
# cd /tmp/fdms160/

ไฟล์ที่ลบ สามารถดูเทียบได้กับการ์ดแลนที่เรามีกับโฮมเพจของ NwDsk ภายใต้หัวข้อ List of ODI 16-bit Nic drivers

ลบไฟล์ไปสักครึ่งนึงก็ใช้ได้ครับ
เมื่อลบเสร็จแล้วก็คัดลอกไฟล์ด้วย mc ต่อได้เลย
ใช้ [TAB] ในการเปลี่ยนข้าง และ F5 ในการคัดลอกไฟล์
เมื่อเสร็จเรียบร้อยแล้วก็ออกจาก mc ด้วย F10 หรือ F9+Exit

ยกเลิกการเมานต์ก่อน
$ sudo umount /tmp/fdms160
$ sudo umount /tmp/fdms144

เขียนลงแผ่น
$ dd if=fdms144.img of=/dev/fd0

เรียบร้อยแล้่ว สามารถบูตเพื่อติดตั้งได้เลย
ตอนติดตั้ง อย่าลืมบันทึกค่าเอาไว้ เพื่อเก็บไว้ใช้ในการบูตครั้งต่อไป

หากต้องการพัฒนาต่อเป็น ltsp ก็สามารถบันทึกดิสเก็ตแ่ผ่นนี้ไว้ใช้สำหรับบูตในเซิร์ฟเวอร์ได้
โดยใช้คำสั่ง
$ dd if=/dev/fd0 of=freedos.img
$ mcopy a:/KERNEL.SYS .
$ mknbi-fdos --output=freedos.nb KERNEL.SYS freedos.img

แล้วนำเอาไฟล์ freedos.nb ที่ได้ ไปใส่ในไดเรคทอรี่ของ /tftpboot ในเครื่องเซิร์ฟเวอร์ บวกปรับแต่ง dhcp นิดหน่อย ก็ใช้ได้ครับ

ข้อเสียของการใช้ดิสก์แผ่นเดียวคือ ต้องใช้แผ่นดิสเกตในการบูตทั้งระบบ ทำให้เริ่มต้นระบบช้า
ข้อดีคือวิธีการไม่ยุ่งยากเหมือน ltsp