debian: ทดลอง ltsp

ต้องการเชื่อม Thin Client เข้าหา Thick Server ลินุกส์
โดยจะใช้งานในระบบดอส

งานที่ทำคือ

  • ติดตั้ง ltsp
  • สร้างอิมเมจ FreeDos
  • สร้างแผ่นบูตเข้า ltsp

โฮมเพจ: Linux Terminal Server Project และ wiki.ltsp.org

ltsp ภาษาไทย: การติดตั้ง Linux Server เพื่อใช้งานแทน Netware Server
และ itdestination: มาสร้างระบบ Thin Client ด้วยลีนุกซ์กันเถอะ
และ linuxsiam: การติดตั้ง LTSP Server บน Debain

tfpt ภาษาไทย: itwizard: ตัวอย่างการใช้ TFTP กับการคอนฟิก CISCO Router

ต้องการแพคเกจ : ltsp, dhcp, tftp, nfs, xdmcp, samba
ltsp เป็นตัวหลัก
dhcp เป็นตัวจ่ายไอพี และตัวคัดเลือกการบูต
tftp เป็นตัวทำ file transfer
nfs เป็นตัว file server ของลินุกส์
samba เป็น file server อีกตัวที่ใช้ได้ทั้งลินุกส์และดอส
xdmcp เป็นตัวใช้งาน Xserver ของลินุกส์
rpld เป็นตัวบูต

ติดตั้ง dhcp

จะให้จ่ายไอพีตั้งแต่ 192.168.1.128-192.168.1.254
# apt-get install dhcp3-server

ปรับตั้ง
# vi /etc/default/dhcp3-server

...
INTERFACES="eth0"

# vi /etc/dhcp3/dhcpd.conf

...
option domain-name "example.com";
option domain-name-servers dns.example.com;
...
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.128 192.168.1.254;
  option routers server1.example.com;
}

สั่งเริ่มใหม่
# /etc/init.d/dhcp3-server restart

ติดตั้งแพคเกจอื่น

# apt-get install atftpd portmap nfs-kernel-server


ติดตั้ง ltsp

เอาจาก http://wiki.ltsp.org/twiki/pub/Ltsp/Documentation/ltspguide.pdf
# apt-get install ltsp-utils

ติดตั้ง
# ltspadmin
<<<--- Install/Update LTSP Packages

Where to retrieve packages from?
<<<--- [http://ltsp.mirrors.tds.net/pub/ltsp/ltsp-4.2/]

In which directory would you like to place the LTSP client tree?
<<<--- [/opt/ltsp]

If you want to use an HTTP proxy, enter it here
<<<--- ใส่ค่าพร๊อกซี่เซิร์ฟเวอร์ของเรา

If you want to use an FTP proxy, enter it here
<<<--- ใส่ค่าพร๊อกซี่เซิร์ฟเวอร์ของเรา

Correct? (y/n/c)
<<<--- y

Component Size (kb) Status
[*] ltsp_core 80916 Not installed
[*] ltsp_debug_tools 4284 Not installed
[*] ltsp_kernel 27708 Not installed
[*] ltsp_libusb 896 Not installed
[*] ltsp_localdev 4 Not installed
[*] ltsp_pciutils 428 Not installed
[*] ltsp_perl 28072 Not installed
[*] ltsp_rdesktop 1872 Not installed
[*] ltsp_scanners 29308 Not installed
[*] ltsp_vnc_module 452 Not installed
[ ] ltsp_x_addtl_fonts 17368 Not installed
[ ] ltsp_x_core 97716 Not installed
<<<--- q

Ready to install/update the selected LTSP packages? (y/n)
<<<--- y

...โปรแกรมจะดาวน์โหลดแพคเกจที่เกี่ยวข้องเข้ามาติดตั้ง...

Configure LTSP
Make a selection:
<<<--- c (Configure the services manually)

ตั้งค่าอินเทอร์เฟส
Make a selection:
<<<--- 2 (Interface selection)

Interface IP Address Netmask Network Broadcast Used
eth0 192.168.1.5 255.255.255.0 192.168.1.0 192.168.1.255 <-----
Only 1 Ethernet interface found, using eth0
Press <enter> to continue..

ปรับตั้ง dhcp
Make a selection:
<<<--- 3 (DHCP configuration)

Do you want to build a dhcpd.conf file (y/n) ?
<<<--- y
The dhcpd config file has been created as: /etc/dhcp3/dhcpd.conf.sample
Press to continue..

ปรับตั้ง tftpd
Make a selection:
<<<--- 4 (TFTP configuration)

Do you want to enable tftpd (y/n) ?
<<<--- y

กดไล่ค่าปริยายไปจนหมดแล้วจึงกด r เพื่อออกมา
กด s ดูความเรียบร้อย
และ q เพื่อออกมาสู่เมนูหลัก
และ q เพื่อออกจากโปรแกรม

สั่งเริ่มเซอร์วิสใหม่
# /etc/init.d/nfs-kernel-server restart
# /etc/init.d/portmap restart


สร้างอิมเมจ FreeDos

ดู samba: เรียกใช้งานจากดอสโดยใช้ดิสเก็ต 1 แผ่น
โดยเมื่อปรับแต่งจนสามารถบูตเข้าระบบได้แล้ว พร้อมทั้งปรับแต่ง autoexec.bat ให้เรียกใช้เน็ตเวิร์กไดรฟ์เรียบร้อยแล้ว
(วิธีการไม่ได้เขียนครับ เพราะเป็นเรื่องของการปรับแต่งดอสตามสภาพใช้งานของแต่ละท่าน)
เราก็เอาแผ่นดิสเก็ตแผ่นนี้มาทำเป็นดิสก์อิมเมจ
$ dd if=/dev/fd0 of=freedos.img
$ mcopy a:/KERNEL.SYS .
$ sudo apt-get install mknbi
$ mknbi-fdos --output=freedos.nb KERNEL.SYS freedos.img

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


สร้างแผ่นบูตเข้า ltsp

เอาบราวเซอร์ไปที่ http://www.rom-o-matic.net/5.4.2/
(อาจตรวจสอบรุ่นใหม่ ๆ ได้จากหน้าหลัก)

ไปที่
1.Choose NIC/ROM type:
<<<--- เลือกชนิดการ์ดแลนให้ตรงกับเครื่องลูก

2.Choose ROM output format:
<<<--- Floppy bootable ROM Image (.zdsk)

4.To generate and download a ROM image press:
<<<--- Get ROM

เซฟไฟล์ไว้ แล้วเขียนลงแผ่นฟลอปปีดิสก์
(ตัวอย่าง ของผมเป็น via_rhine ได้ไฟล์ชื่อ eb-5.4.2-via-rhine.zdsk)
# cat eb-5.4.2-via-rhine.zdsk > /dev/fd0
จะเอาไปทำแผ่นบูต


ปรับแต่ง dhcp ขั้นสุดท้าย

ทำที่เครื่องเซิร์ฟเวอร์
ถ้าในระบบเรามีการ์ดแลนเพียงชนิดเดียว เราก็แค่สร้างไฟล์ freedos.nb เพียงไฟล์เดียว
ไฟล์ /etc/dhcp3/dhcpd.conf จะเป็นดังนี้

# dhcpd.conf

ddns-update-style             ad-hoc;

option subnet-mask            255.255.255.0;
option broadcast-address      192.168.1.255;
option routers                192.168.1.5;
option domain-name-servers    192.168.1.5;
#option domain-name            "your_domain.org";   # You really should fix this
option domain-name            "example.com";   # You really should fix this
option option-128 code 128 = string;
option option-129 code 129 = text;

get-lease-hostnames           true;

next-server                   192.168.1.5;
option root-path              "192.168.1.5:/opt/ltsp/i386";

subnet 192.168.1.0 netmask 255.255.255.0 {
    range   192.168.1.128   192.168.1.253;
    filename "/tftpboot/freedos.nb";
}

แต่ในทางปฏิบัติคงเป็นไปไม่ได้ที่จะมีการ์ดแลนเพียงชนิดเดียว
ดังนั้นเราจึงต้องสร้างอิมเมจหลายไฟล์ และแบ่งการใช้ด้วย mac address
สมมุติว่าเราสร้างอิมเมจสำหรับ
การ์ด via_rhine ในชื่อ fdvr.nb ค่า mac address ของเครื่องลูกเป็น 00:11:22:33:44:55
และการ์ด ne2000 ในชื่อ fdne2000.nb ค่า mac address ของเครื่องลูกเป็น 01:02:03:04:05:06
ไฟล์ /etc/dhcp3/dhcpd.conf จะเป็นดังนี้

# dhcpd.conf

ddns-update-style             ad-hoc;

option subnet-mask            255.255.255.0;
option broadcast-address      192.168.1.255;
option routers                192.168.1.5;
option domain-name-servers    192.168.1.5;
#option domain-name            "your_domain.org";   # You really should fix this
option domain-name            "example.com";   # You really should fix this
option option-128 code 128 = string;
option option-129 code 129 = text;

get-lease-hostnames           true;

next-server                   192.168.1.5;
option root-path              "192.168.1.5:/opt/ltsp/i386";

host ws128 {
    hardware ethernet  00:11:22:33:44:55;
    fixed-address  192.168.1.128;
    filename  "/tftpboot/fdvr.nb";
}
host ws129 {
    hardware ethernet  01:02:03:04:05:06;
    fixed-address  192.168.1.129;
    filename  "/tftpboot/fdne2000.nb";
}

subnet 192.168.1.0 netmask 255.255.255.0 {
    range   192.168.1.130   192.168.1.253;
    filename "/tftpboot/freedos.nb";
}

เริ่ม dhcp ใหม่
# /etc/init.d/dhcp3-server restart

วิธีดูค่า mac address อาจดูตอนบูตด้วยแผ่นบูตก็ได้
หรือดูจากลินุกส์ด้วยคำสั่ง ifconfig
หรือดูจากดอสด้วยคำสั่ง ipconfig /all

วิธีนี้มีข้อดีคือใช้เวลาบูตจากดิสเก็ตนิดเดียว เมื่อต่อเข้าเครื่องเซิร์ฟเวอร์แล้ว จะใช้อิมเมจจากเซิร์ฟเวอร์ในการบูตต่อ
ดังนั้นจึงเริ่มระบบได้รวดเร็วกว่าการบูตด้วยแผ่นดิสเก็ตล้วน ๆ
แต่มีข้อเสียคือการติดตั้งยุ่งยาก

เขียนหยาบและสเปะสปะหน่อยนะครับ เป็นเรื่องใหม่ที่ไม่เคยศึกษามาก่อน :P
ได้เปลื้องหนี้คุณสมเจตน์แล้ว ค่อยสบายหน่อย

เดี๋ยวถ้ามีเวลา จะกลับมาศึกษาต่ออีกที