102
Linux Diskless Command line - 1 Linux Ubuntu Diskless x86x64 ในตระกูล linux ไม่ได้ขึ้นกับระบบ Ubuntu อย่างเดียวในการทาระบบ Diskless สามารถทาได้หมด ไม่ว่าจะเป็น Linux ClearOS ,Linux CentOS ,Linux Clark connect ,Unix FreeBSD ขอแค่เข้าใจ package และตั้งค่าการทางานของระบบให้ถูกต้อง กระบวนการและโครงสร้างแถบไม่แตกต่างกัน ในรูปตัวอย่างใช้งาน hdd เครื่องละ 1 ลูก .. จะทาการ upload img เข้าไปใน hdd บนเครื่องแม่ โดยไม่ต้องถอด hdd ที่เครื่องลูกมาเป็น master

Linux diskless

  • Upload
    -

  • View
    524

  • Download
    12

Embed Size (px)

Citation preview

Page 1: Linux diskless

Linux Diskless Command line - 1

Linux Ubuntu Diskless x86x64 ในตระกล linux ไมไดขนกบระบบ Ubuntu อยางเดยวในการท าระบบ Diskless

สามารถท าไดหมด ไมวาจะเปน Linux ClearOS ,Linux CentOS ,Linux Clark connect ,Unix

FreeBSD ขอแคเขาใจ package และตงคาการท างานของระบบใหถกตอง

กระบวนการและโครงสรางแถบไมแตกตางกน

ในรปตวอยางใชงาน hdd เครองละ 1 ลก .. จะท าการ upload img

เขาไปใน hdd บนเครองแม โดยไมตองถอด hdd ทเครองลกมาเปน master

Page 2: Linux diskless

Linux Diskless Command line - 2

ความหมายเนอเรองตางๆ ศกษาเพมเตมไดทวไป

*ศกษาเพมไดท

http://wiki.nakhon.net/wiki/Diskless_Server

http://www.linuxthai.org/

http://ict.in.th/

Page 3: Linux diskless

Linux Diskless Command line - 3

ลกษณะการตอสายแลนบนเครองแม (เฉพาะในคมอ)

อนดบแรกกลง OS แลวเขาใชงานตามปกต ลอกอนยสเซอรทแอด จากนนก าหนดรหสผานให

root ตอดวยการเปลยนสถานะยสเซอรเขาไปเปน root

Page 4: Linux diskless

Linux Diskless Command line - 4

# sudo passwd

[sudo] password for portspro:

Enter new UNIX password:

Retype new UNIX password:

passwd: password updated successfully

# su

Password:

Added user root.

# cd

*หมายเหต อนดบแรกตองท าใหเครอง Server ออกเนตไดกอน เพอท าการ download package

ในการตดตงมาลงท Server ตวมนเอง

# ifconfig -a

ด device การดแลนทงหมด

Page 5: Linux diskless

Linux Diskless Command line - 5

ในตวอยางจะก าหนดคาดงน

การดแลนใบท 1 ชอ device อปกรณคอ eth0 จะท าเปนการดทรบเนตเขามาแบบ dhcp

การดแลนใบท 2 ชอ device อปกรณคอ eth1 ท าเปนการดแชร disk ใหเครองลก ก าหนดเปน static

# nano /etc/network/interfaces

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet dhcp

auto eth1

iface eth1 inet static

address 10.0.0.254

netmask 255.255.255.0

ท าการแกไขคา แลวบนทกออก

จากนน restart service network ใหม

# /etc/init.d/networking restart

Page 6: Linux diskless

Linux Diskless Command line - 6

# ifconfig

ท าการอพเวลาใหระบบใหตรงกบปจจบน

# /usr/sbin/ntpdate -u pool.ntp.org

ท าการอพเดต package

# sudo apt-get update

Page 7: Linux diskless

Linux Diskless Command line - 7

# sudo apt-get install tftp-hpa tftpd-hpa xinetd

# mkdir /tftpboot

# sudo chown nobody.nogroup /tftpboot

# sudo chmod 777 /tftpboot

# sudo nano /etc/default/tftpd-hpa

จากเดม

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/var/lib/tftpboot"

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="--secure"

แกเปน โดยการเพม 2 บรรทดลงไป และก าหนดต าแหนง path ไฟลบตใหเครองลก

# /etc/default/tftpd-hpa

RUN_DAEMON="yes"

OPTIONS="-l -s /tftpboot"

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/tftpboot"

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="--secure"

# sudo /etc/init.d/tftpd-hpa start

# netstat -a |grep tftp

udp 0 0 *:tftp *:*

Page 8: Linux diskless

Linux Diskless Command line - 8

สรางไฟล tftp ขนมาท างานรวมกบ Service

# nano /etc/xinetd.d/tftp

เพมค าสงเขาไปในตวไฟลทสราง พรอมระบพาธ tftpboot ใหถกตอง

service tftp {

protocol = udp

port = 69

socket_type = dgram

wait = yes

user = nobody

server = /usr/sbin/in.tftpd

server_args = /tftpboot

disable = no

}

# sudo /etc/init.d/xinetd start

Page 9: Linux diskless

Linux Diskless Command line - 9

undionly.kpxe เปนไฟล gpxe ส าหรบปลอยใหเครองลกมารบไปบตเขาใชงานโอเอสจากเครองแม

ท าการ download file undionly.kpxe ลงมา

แลวท าการ Upload ขนไปเกบท server ในต าแหนง /tftpboot

โหลดไดท

http://www.mediafire.com/?tj30x1ew8jfb4c6

Page 10: Linux diskless

Linux Diskless Command line - 10

DHCP-Server

# sudo apt-get install dhcp3-server

# nano /etc/default/isc-dhcp-server

เพม device การดแลนทจะแชร disk ในตวอยางคอ eth1

# Defaults for dhcp initscript

# sourced by /etc/init.d/dhcp

# installed at /etc/default/isc-dhcp-server by the maintainer scripts

#

# This is a POSIX shell fragment

#

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?

# Separate multiple interfaces with spaces, e.g. "eth0 eth1".

INTERFACES="eth1"

Page 11: Linux diskless

Linux Diskless Command line - 11

# echo "" > /etc/dhcp/dhcpd.conf

# nano /etc/dhcp/dhcpd.conf

เพมค าสงเขาไปทงหมด

ddns-update-style interim;

ddns-rev-domainname "in-addr.arpa.";

option domain-name "sysdiskless";

option domain-name-servers 8.8.8.8,8.8.4.4;

option ntp-servers us.pool.ntp.org;

ignore client-updates;

update-static-leases on;

use-host-decl-names on;

default-lease-time 600;

max-lease-time 7200;

log-facility local7;

subnet 10.0.0.0 netmask 255.255.255.0 {

default-lease-time 43200;

max-lease-time 86400;

allow unknown-clients;

option routers 10.0.0.254;

range 10.0.0.100 10.0.0.199;

}

host bootdisk1 {

hardware ethernet 50:e5:49:e9:95:e8;

fixed-address 10.0.0.1;

option host-name com1;

if exists user-class and option user-class = "gPXE" {

filename "";

option root-path "aoe:e0.0";

} else {

filename "undionly.kpxe";

}

}

*หมายเหต

ค าสงทใชใน dhcpd.conf เปนเพยงค าสงเพอทดสอบระบบเทานน ค าสงจงไมมาก

Page 12: Linux diskless

Linux Diskless Command line - 12

ตอไปท าการคนหาทเครอง server ใช domain name ชออะไร

# hostname -d

sysdiskless

ในอยาง domain คอ sysdiskless

# nano +4 /etc/dhcp/dhcpd.conf

# sudo /etc/init.d/isc-dhcp-server start

Page 13: Linux diskless

Linux Diskless Command line - 13

Vblade # sudo apt-get install vblade

# mkdir /var/run/vblade

# /etc/init.d/vblade start

* Starting vblade deaemons vblade

ทดสอบ ท าการทดสอบแบบงายๆ เพอใหรวาเครองแมพรอมจะแชร disk แลว ..

ดวย script การปลอย disk จากเครอง server เอง ดวยโปรแกรม vblade

# cd /root

# nano test.sh

Copy ใสค าสงลงทงหมดเลยครบ ไมตองแกไขอะไรมาก แกอยบรรทดเดยว ตรงบรรทดสดทาย

เพอระบการดแลนทจะแชร disk ตวอยางเปน eth1

vblade 0 0 eth1 /dev/mapper/test1 &

แกตามการดแลนใบทแชร disk

ขนตอนนเปนการทดสอบจาก hdd sda ของเครองแมเทานน !

#!/bin/bash

losetup -r /dev/loop0 /dev/sda

dd if=/dev/zero of=/dev/test1 bs=512 count=0 seek=$(blockdev --getsize /dev/loop0)

losetup /dev/loop1 /dev/test1

echo "0 $(blockdev --getsize /dev/loop0) snapshot /dev/loop0 /dev/loop1 p 64" | dmsetup create test1

vblade 0 0 eth1 /dev/mapper/test1 &

# chmod +x /root/test.sh

Page 14: Linux diskless

Linux Diskless Command line - 14

กอนทดสอบใหดคาเกาท device mapper กอน .. มแค device sda ของเครองแมเทานน

ทดสอบเพอเหนผลตาง

# fdisk -l

จะเหนวาตอนนมแค /dev/sda

ตอไปสงรน script

# bash /root/test.sh

0+0 records in

0+0 records out

0 bytes (0 B) copied, 1.8998e-05 s, 0.0 kB/s

pid 1662: e0.0, 40130390 sectors O_RDWR

Page 15: Linux diskless

Linux Diskless Command line - 15

จากนนดวา disk ถกโหลดลงใน device mapper หรอยง

# fdisk -l

จะเหนวามเพมขนจากครงกอน คอ /dev/mapper/test1

แสดงวาเครอง server พรอมแชร disk แลวครบ

Page 16: Linux diskless

Linux Diskless Command line - 16

ทดสอบเครองลก ท าการเปดเครองลกแลวตงคาให boot lan

ผลลพธทเครองลกตองไดรบ ตามรปครบ

เครองลกบตถงหนา boot grup ของ linux เหมอนเครองแม

กแสดงวาทานท าผานและถกตองแลวครบ

ปดเครองลกไดเลยครบ ไปขนตอนตอไปในการ upload img ขน Server

Page 17: Linux diskless

Linux Diskless Command line - 17

Upload Image ในขนตอนนจะ upload image โดยใชโปรแกรม Ghost 32 ขนไปท Server Diskeless

ในตวอยางนจะ ghost hdd ทงลกทอยบนเครองลก อพขนไปท img เครองแมเทานน

*กลบมาทหนาจอเครองแม

# cd /root

ท าการสราง script ในการจองพนท img ใหเครองลก

# nano blockimg.sh

ใสเขาไปทงหมด

#!/bin/bash

#

dd if=/dev/zero of=/mnt/imgos bs=512 count=0 seek=12345678

vblade 0 0 eth1 /mnt/imgos &

#

echo "Create block image os ... [ OK ]";

*ความหมายค าสงในตว script

จากนนท าการสราง block device ส าหรบเกบ img ทพาธ /mnt สวน img ชอ imgos

โดยทความจ 12345678 เทากบ 6 GB กวาๆ และใช aoe ท e0.0

*ตวอยางค าสงตรงบรรทด vblade 0 0 eth1 /mnt/imgos &

ท าการเปลยนตามการดแลนทท าการแชร disk ใหเครองลก

ตอไปกก าหนดสทธ +x ใหไฟล และสงรน

Page 18: Linux diskless

Linux Diskless Command line - 18

# chmod +x /root/blockimg.sh

# bash /root/blockimg.sh

0+0 records in

0+0 records out

0 bytes (0 B) copied, 2.6288e-05 s, 0.0 kB/s

Create block image os ... [ OK ]

pid 1616: e0.0, 12345678 sectors O_RDWR

ถาผลลพธทไดออกมาเหมอนในตวอยางกผานครบ

จากนนไปท าขนตอนตอไปทหนาจอเครองลกไดเลยครบ

Page 19: Linux diskless

Linux Diskless Command line - 19

AoE tool ท าการตดตง driver ส าหรบบต aoe ลงทเครองลก

Download ไฟลลงมาตดตงไดเลยครบ http://www.mediafire.com/?jwjgylj57j7iww6

อนดบแรกใหท าการปด Firewall บน Windows กอน ..

จาก On ใหเปลยนเปน Off ซะ

Page 20: Linux diskless

Linux Diskless Command line - 20

เมอโหลดไฟล aoe tool เรยบรอยแลว ท าการตดตงลงไป โดยการไปท

Start -> Setting -> Control Panel -> เลอก Add Hardware ตามรปภาพเลยครบ

Page 21: Linux diskless

Linux Diskless Command line - 21

ท าการ Browse .. เพอน าไฟล aoe.inf

Page 22: Linux diskless

Linux Diskless Command line - 22

Page 23: Linux diskless

Linux Diskless Command line - 23

ตรวจสอบวา driver aoe โหลดเขาไปหหรอยง

ผลลพธตามภาพ จากนน Restart เครองลก 1 ครง

Page 24: Linux diskless

Linux Diskless Command line - 24

การ Mount Disk ดวย

AoE tool

ตรวจดวา IP Address ทไดรบถกตองหรอไม

เปดใชงานค าสงดอส

Page 25: Linux diskless

Linux Diskless Command line - 25

พมพ aoe แลว enter เพอแสดงรายการอาณกวเมนทพรอรายละเอยดการท างาน

พมพ aoe scan เพอแสดงรายการ disk ทถกแชรออกมาจากเครองแม

Page 26: Linux diskless

Linux Diskless Command line - 26

คลกขาวเมาทเพอท าการ Mark ต าแหนงทจะ copy

รายการ disk แสดงออกมา พรอม aoe e0.0 ทเครองแมแจกมาใหใน dhcpd.conf

จากนนกอปป mac address ของเครองลกเอาไว

Page 27: Linux diskless

Linux Diskless Command line - 27

ท าการ mount disk ดวยค าสง

aoe mount <ตามดวย mac addr> <ตามดวย aoe e0.0>

พมพค าสงแสดงรายการโชวทกระท าไปแลว ดวย aoe show

Page 28: Linux diskless

Linux Diskless Command line - 28

กลบไปดท Device Manager -> Disk drivers

จะเหนวาม disk เกดขนมาใหมชอ device คอ AoE Disk

Page 29: Linux diskless

Linux Diskless Command line - 29

จากนนไปท Disk Management เพอ Initiallize Disk ให OS มองเหน

จากนนท าตามรปเลยครบ

คลกเครองหมายถกทหนา Disk 1

Page 30: Linux diskless

Linux Diskless Command line - 30

ไมตองมเครองหมายถก Next ตอไป

ตอไปท าการ Format Disk ทสรางขนมาใหม

Page 31: Linux diskless

Linux Diskless Command line - 31

ตามรปเลยครบ

Page 32: Linux diskless

Linux Diskless Command line - 32

ท าเปน Primary Partition

Page 33: Linux diskless

Linux Diskless Command line - 33

ขนตอนการเลอก Drive letter สวนตวผมชอบสรางท drive Z เพราะมนแตกตางด

File system จะเปนอะไรกได แตแนะน า NTFS สวนตวอยางเครองทดลองไมแรง จงใช FAT32

Page 34: Linux diskless

Linux Diskless Command line - 34

Success !

Page 35: Linux diskless

Linux Diskless Command line - 35

เมอเสรจขนตอนตามรปแลว ตอไปกปรบแตง Registry ให Start ท 0

(ในตวอยางใช winxp จงตองตงคาเหลาน สวน MS ตวอนกศกษาเพมเตมจาก google)

ไปท Device Manager ตอดวยการดแลนทจะท าการ boot disk

แลว Properties เพอด Service ทการดแลนใชงาน

คลกเลอกทแถบ Details ตรงชอง combo box เลอกรายการค าวา Service ดงรป

ตวอยาง Service แลนการดชอ E100B

Page 36: Linux diskless

Linux Diskless Command line - 36

Start -> Run พมพ regedit

HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Services

Page 37: Linux diskless

Linux Diskless Command line - 37

ในตวอยาง Service แลนการดชอ E100B

เลอก Start แลวไปตงคาจาก 0x00000003(3) เปลยนไปเปน 0

Page 38: Linux diskless

Linux Diskless Command line - 38

ใสเลข 0 เขาไป ตามรป

เสรจ ! .. จากนน restart เครองลก 1 ครง เพอเรมคาการปรบแตง registry อกครง

Page 39: Linux diskless

Linux Diskless Command line - 39

Ghost 32 -to- Image

ในขนตอนตวอยางนจะเปนการ ghost แบบ Disk -to- Disk ลงใน Image ทเตรยมไว

*หมายเหต

ในขนตอนการ Ghost น เปดใชงานเฉพาะโปรแกรม Ghost32.exe เทานน

โหลดไดท http://www.mediafire.com/?xwimf6g4xd37jk8

Page 40: Linux diskless

Linux Diskless Command line - 40

Local -> Disk -> To Disk

เลอก Disk ตนฉบบ หรอ ตนทาง

เลอก Disk ปลายทาง

Page 41: Linux diskless

Linux Diskless Command line - 41

ในตวอยางไมเลอกอะไรมาก เพราะ Disk ทดลองพนทไมมาก

ตอบ YES

Page 42: Linux diskless

Linux Diskless Command line - 42

เลอก Volume Snapshot

เพอใหโปรแกรม Ghost ขามโปรแกรม Ghost32.exe ไป .. ในขณะทก าลงท าการ Ghost

*เพมเตม

ในขณะทก าลง Ghost อย มขอความมาแสดงโชว ใหตอบ Yes ผานไป

Page 43: Linux diskless

Linux Diskless Command line - 43

เสรจสนการ Ghost

คลกเลอก Continue แลวออกจากโปรแกรม Ghost32 เพอไปด Disk ทเปลยนแปลงไป

Disk -to- Disk

ปดเครองลกแลวตงคา BIOS บตแลน

Page 44: Linux diskless

Linux Diskless Command line - 44

กอนจะท าการทดสอบ ใหกลบมาแกไขคาเกาทอยใน device mapper ออกเสยกอน

เพราะคาเดมบน shell script ใหแชร disk /dev/sda ของเครองแมอย

ท Terminal บนเครองแม ใหพมพค าสงด device ทท างานอยบน mapper กอน

# dmsetup table

test1: 0 12345678 snapshot 7:0 7:1 P 64

คนหา Process ID ของ /dev/mapper/test1

# lsof /dev/mapper/test1

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

vblade 1985 root 3u BLK 252,0 0t0 13672 /dev/mapper/../dm-0

pid คอ 1985

ตอไปท าการฆา pid 1985

แลวลบ test1 ทถกโหลดลงใน device mapper จากนนแสดงตาราง device mapper

# kill -9 1985

# dmsetup remove --force /dev/mapper/test1

# dmsetup table

No devices found

Page 45: Linux diskless

Linux Diskless Command line - 45

ขนตอนตอไปท าการลาง loop device ของ test1

# losetup -a

/dev/loop0: [0005]:5960 (/dev/sda)

/dev/loop1: [0005]:13661 (/dev/test1)

ในตวอยางจะท าการลาง loop0 และ loop1 ทเปนคาเกาออก กอนทจะรน shell script ใหมอกครง

เพอไมใหเกดการ Busy เมอมขอมลซ ากน

# losetup --detach /dev/loop0

# losetup --detach /dev/loop1

# rm -rf /dev/loop0

# rm -rf /dev/loop1

# losetup -a

จะเหนวาใน loop device ไมมการใชงานแลว

*หมายเหต

ค าสงการ kill และ remove บน mapper และ loop จะงายขนในขนตอนการตดตงระบบ

Diskless แบบใชงานจรง หลงจากเสรจในเรองของการทดลองอยางงาย

จะใชโคดภาษา C เขามาชวยใชงาน shell script ใหงาย รวดเรว คณภาพ ดขนกวาเดม

Page 46: Linux diskless

Linux Diskless Command line - 46

ตอไปท าการแกไขไฟล script ใหแชร Disk Image ทท าเสรจเรยบรอยแลว

# nano /root/test.sh

ทบรรทดทสองแกเปนต าแหนงของ img

#!/bin/bash

losetup -r /dev/loop0 /mnt/imgos

dd if=/dev/zero of=/dev/test1 bs=512 count=0 seek=$(blockdev --getsize /dev/loop0)

losetup /dev/loop1 /dev/test1

echo "0 $(blockdev --getsize /dev/loop0) snapshot /dev/loop0 /dev/loop1 p 64" | dmsetup create test1

vblade 0 0 eth1 /dev/mapper/test1 &

สงรน shell script block device ส าหรบแชร disk อกครง

# bash /root/test.sh

0+0 records in

0+0 records out

0 bytes (0 B) copied, 1.8134e-05 s, 0.0 kB/s

root@portspro:~# pid 2138: e0.0, 12345678 sectors O_RDWR

ตอไปท าการเปดเครองลกทดสอบบตแลนไดเลย

Page 47: Linux diskless

Linux Diskless Command line - 47

บตแลนเสรจเขาวนโดว

ผาน ! ….. จบเรวครบกบการทดลองอยางงาย

*** ตอไปจะเปนการตดตงละใชงานจรง

Page 48: Linux diskless

Linux Diskless Command line - 48

การตดตงและใชงานจรง ทานใดเขาใจหลกการท างานของระบบ Diskless กสามารถขามมาท าในขนตอนนไดเลย

เพราะเรองแรกเปนการหดท าระบบอยางงาย (เหมาะกบมอใหม)

Page 49: Linux diskless

Linux Diskless Command line - 49

โครงการวางระบบในรานเกมสแหงหนง มเครองลกจ านวณ 20 เครอง

- เครองแยกเนต - แยกเกมส

โดยทเครองแยกเนต-แยกเกมส มการดแลน 3 ใบ ,แลนออนบอรด 1 พอรต

1 พอรตบนออนบอรดมหนาทแจกเนตใหเครองลก ไอพ 192.168.254.254

*สวนการดแลน 3 ใบ

ใบท 1 จดท า PPPoE เสนท 1 ส าหรบพอรดเนต 1 - 1023

ใบท 2 จดท า PPPoE เสนท 2 ส าหรบพอรตเกมส 1024 - 65535

ใบท 3 จดท า Chillispot Wifi Hotspot (รายไดเสรมแบบคปอง)

- เครองระบบ Linux Diskless x86x64 (64bit)

โดยทเครองระบบ Linux Diskless มการดแลน 4 ใบ ,แลนออนบอรด 1 พอรต

1 พอรตบนออนบอรดมหนาทแจก dhcp-server ใหเครองลกตอนบตแลน

แลนออนบอรด ไอพ 192.168.254.200

ยง Gateway ไปทเครองแยกเนต-แยกเกมส ไอพ 192.168.254.254

*สวนการดแลน 4 ใบ

ใบท 1 ไอพ 192.168.254.201 --> เฉลยเครองลก 5 เครอง

ใบท 2 ไอพ 192.168.254.202 --> เฉลยเครองลก 5 เครอง

ใบท 3 ไอพ 192.168.254.203 --> เฉลยเครองลก 5 เครอง

ใบท 4 ไอพ 192.168.254.204 --> เฉลยเครองลก 5 เครอง

*สวน Harddisk ของเครอง Diskless นใช 5 ตว (ตามงบ) ตวละ 1 TB

โดยท

HDD(sda) 1 กบ HDD(sdb) 2 น ามาท าเปน Raid0 บน HW BIOS

RAID 0 คอ ระบบ Linux Ubuntu Server 64 bit

สวน

HDD(sdc) 3 ท าเปน Master แชร Disk ใหเครองลก ถอดจากเครองลกมาใสโดยตรง

และ

HDD(sdd) 4 กบ HDD(sde) 5 น ามาท าเปน Raid0 บน Software Linux

RAID 0 คอ COW ส าหรบ Copy on Write บนระบบ Diskless

*** แนะน า

ในตวอยางเครองระบบ Linux Diskless ใชการดแลน 4 ใบ ตามจรงใบเดยวกรองรบ 20 เครอง

ไดอยแลว เนองจากการดแลนเสรม 1000Mbits ราคากไมแพง Slot PCI กเหลอวางเยอะ

ผมจงเพมความเรวใหระบบท างานไดดขนกวาเดม โดยการเสรมเสนทางจราจรใหระบบ

Diskless เฉลยเครองลกตอใบดกวาเยอะครบ

Page 50: Linux diskless

Linux Diskless Command line - 50

แผนผงตวอยาง

Page 51: Linux diskless

Linux Diskless Command line - 51

ทานใดทมาถงขนตอนนกคงเขาใจระบบ Linux Diskless พอสมควร

ในสวนนจะไปแบบเรวนดหนงครบ

อนดบแรกกลง OS แลวเขาใชงานตามปกต ลอกอนยสเซอรทแอด จากนนก าหนดรหสผานให

root ตอดวยการเปลยนสถานะยสเซอรเขาไปเปน root

login as: portspro

[email protected]'s password:

Added user portspro.

The programs included with the Ubuntu system are free software;

the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by

applicable law.

Welcome to Ubuntu 12.10 (GNU/Linux 3.5.0-17-generic x86_64)

* Documentation: https://help.ubuntu.com/

# sudo passwd

Enter new UNIX password:

Retype new UNIX password:

passwd: password updated successfully

# su

Password:

Added user root.

# cd

Page 52: Linux diskless

Linux Diskless Command line - 52

สราง Raid Software Linux ท าการสราง raid software ระหวาง sdd กบ sde ส าหรบ /cow

*ขนตอนนถาไมไดท า Raid กขามไปขนตอนการตดตง Package ไดเลยครบ

# mkdir /cow

# fdisk /dev/sdd

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel with disk identifier 0xfbcf5ebb.

Changes will remain in memory only, until you decide to write them.

After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help):n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p

Partition number (1-4, default 1):

Using default value 1

First sector (2048-1953525167, default 2048):

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-1953525167, default 1953525167):

Using default value 1953525167

Command (m for help): p

Disk /dev/sdd: 1000.2 GB, 1000204886016 bytes

81 heads, 63 sectors/track, 382818 cylinders, total 1953525168 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x3539557b

Device Boot Start End Blocks Id System

/dev/sdd1 2048 1953525167 976761560 83 Linux

Command (m for help): t

Selected partition 1

Hex code (type L to list codes): da

Changed system type of partition 1 to da (Non-FS data)

Page 53: Linux diskless

Linux Diskless Command line - 53

Command (m for help): p

Disk /dev/sdd: 1000.2 GB, 1000204886016 bytes

81 heads, 63 sectors/track, 382818 cylinders, total 1953525168 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x3539557b

Device Boot Start End Blocks Id System

/dev/sdd1 2048 1953525167 976761560 da Non-FS data

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

# fdisk /dev/sde

จากนนกท าเหมอนกน

ส าหรบการสราง RAID 0 จากพารทชนบนฮารดดสก 2 ลก

เชน จาก /dev/sdd1 และ /dev/sde1 สามารถใชค าสงไดดงน

# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdd1 /dev/sde1

The program 'mdadm' is currently not installed. You can install it by typing:

apt-get install mdadm

# apt-get install mdadm

# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdd1 /dev/sde1

mdadm: /dev/sdd1 appears to contain an ext2fs file system

size=976761560K mtime=Thu Jan 1 07:00:00 1970

mdadm: /dev/sde1 appears to be part of a raid array:

level=raid0 devices=2 ctime=Mon Jan 7 05:33:05 2013

Continue creating array? y

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md0 started.

บนทกคาของ RAID

ขนตอนตอไป ใหบนทกคาของ RAID ลงไฟลก าหนดคา

# mdadm --detail --scan >> /etc/mdadm.conf

Page 54: Linux diskless

Linux Diskless Command line - 54

ตรวจสอบสถานะ RAID

เมอสราง RAID แลว การตรวจสอบสถานะของ RAID สามารถท าไดหลายวธ

ตรวจสอบโดยใชค าสง mdadm ไดดงน

# mdadm --detail /dev/md0

/dev/md0:

Version : 1.2

Creation Time : Wed Mar 6 08:28:27 2013

Raid Level : raid0

Array Size : 1953518592 (1863.02 GiB 2000.40 GB)

Raid Devices : 2

Total Devices : 2

Persistence : Superblock is persistent

Update Time : Wed Mar 6 08:28:27 2013

State : clean

Active Devices : 2

Working Devices : 2

Failed Devices : 0

Spare Devices : 0

Chunk Size : 512K

Name : sysdisk:0 (local to host sysdisk)

UUID : 3773f98a:a6a69ef0:a0284fb0:f67b2873

Events : 0

Number Major Minor RaidDevice State

0 8 49 0 active sync /dev/sdd1

1 8 65 1 active sync /dev/sde1

# cat /proc/mdstat

Page 55: Linux diskless

Linux Diskless Command line - 55

ฟอรแมต Disk ทเปน Raid Device

# mke2fs -t ext4 -L cow_raid0md0 /dev/md0

mke2fs 1.42.5 (29-Jul-2012)

Filesystem label=cow_raid0md0

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=128 blocks, Stripe width=256 blocks

122101760 inodes, 488379648 blocks

24418982 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=4294967296

14905 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,

102400000, 214990848

Allocating group tables: done

Writing inode tables: done

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

โดยท

-t ext4 คอใหใช filesystem แบบ ext4

-L image_partition คอใหตงชอ filesystem วา image_partition

/dev/md0 คอชอ device ของ RAID

เพอลดขนาดของเนอทสงวนจากเดม 5% เปน 10 MB

# tune2fs -r 20480 /dev/md0

tune2fs 1.42.5 (29-Jul-2012)

Setting reserved blocks count to 20480

Page 56: Linux diskless

Linux Diskless Command line - 56

# fdisk -l /dev/md0

Disk /dev/md0: 2000.4 GB, 2000403038208 bytes

2 heads, 4 sectors/track, 488379648 cylinders, total 3907037184 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 524288 bytes / 1048576 bytes

Disk identifier: 0x00000000

Disk /dev/md0 doesn't contain a valid partition table

# mkdir /cow

# mount /dev/md0 /cow

# df

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/mapper/isw_dhajaggiic_rid0md0p1 1889916616 1479840 1792434588 1% /

udev 16427288 4 16427284 1% /dev

tmpfs 6574632 1596 6573036 1% /run

none 5120 0 5120 0% /run/lock

none 16436576 0 16436576 0% /run/shm

none 102400 0 102400 0% /run/user

/dev/md0 1922864944 200028 1922582996 1% /cow

ตรวจสอบหา UUID ของ HDD ทได เพราะบางทระบบกใหใสหมายเลข UUID ลงไป

# blkid

/dev/sda: TYPE="isw_raid_member"

/dev/sdb: TYPE="isw_raid_member"

/dev/sdc1: LABEL="Windows" UUID="9644EAB044EA91F3" TYPE="ntfs"

/dev/sdc5: LABEL="GamesZone" UUID="D818619218617104" TYPE="ntfs"

/dev/sdd1: UUID="3773f98a-a6a6-9ef0-a028-4fb0f67b2873" UUID_SUB="77d43604-9513-ea77-314d-

b80b9bb291f2" LABEL="sysdisk:0" TYPE="linux_raid_member"

/dev/sde1: UUID="3773f98a-a6a6-9ef0-a028-4fb0f67b2873" UUID_SUB="e28d8c4d-e604-025e-d312-

ace626ede28d" LABEL="sysdisk:0" TYPE="linux_raid_member"

/dev/mapper/isw_dhajaggiic_rid0md0p1: UUID="683cef23-aff9-4c19-828c-fc5ccfa027ab" TYPE="ext4"

/dev/mapper/isw_dhajaggiic_rid0md0p5: UUID="ac1dad30-ac7b-410f-81bf-3d622ca2d67f" TYPE="swap"

/dev/md0: LABEL="cow_raid0md0" UUID="ac1820a6-b250-468f-b0d7-4f122717f321" TYPE="ext4"

Page 57: Linux diskless

Linux Diskless Command line - 57

# nano /etc/fstab

# /etc/fstab: static file system information.

#

# Use 'blkid' to print the universally unique identifier for a

# device; this may be used with UUID= as a more robust way to name devices

# that works even if disks are added and removed. See fstab(5).

#

# <file system> <mount point> <type> <options> <dump> <pass>

/dev/mapper/isw_dhajaggiic_rid0md0p1 / ext4 errors=remount-ro 0 1

/dev/mapper/isw_dhajaggiic_rid0md0p5 none swap sw 0 0

/dev/md0 /cow ext4 defaults 0 2

# shutdown -r now

*** หมายเหต

เมอ reboot เครองเสรจระบบอาจจะสราง Device ใหม

จะท าให Raid ททานไดสรางเอาไว ท าการตรวจสอบ

# ls -l /dev/md

lrwxrwxrwx 1 root root 8 Mar 6 08:50 sysdisk:0 -> ../md127

แสดงวา Dev md เปลยนเปน md127 (ระบบจะเปลยนแคครงเดยว จากนนกถาวร)

ท าการตรวจสอบ UUID ใหม และ mount ใน fstab ใหม

# blkid

/dev/sda: TYPE="isw_raid_member"

/dev/sdb: TYPE="isw_raid_member"

/dev/sdc1: LABEL="Windows" UUID="9644EAB044EA91F3" TYPE="ntfs"

/dev/sdc5: LABEL="GamesZone" UUID="D818619218617104" TYPE="ntfs"

/dev/sdd1: UUID="3773f98a-a6a6-9ef0-a028-4fb0f67b2873" UUID_SUB="77d43604-9513-ea77-314d-

b80b9bb291f2" LABEL="sysdisk:0" TYPE="linux_raid_member"

/dev/sde1: UUID="3773f98a-a6a6-9ef0-a028-4fb0f67b2873" UUID_SUB="e28d8c4d-e604-025e-d312-

ace626ede28d" LABEL="sysdisk:0" TYPE="linux_raid_member"

/dev/md127: LABEL="cow_raid0md0" UUID="ac1820a6-b250-468f-b0d7-4f122717f321" TYPE="ext4"

/dev/mapper/isw_dhajaggiic_rid0md0p1: UUID="683cef23-aff9-4c19-828c-fc5ccfa027ab" TYPE="ext4"

/dev/mapper/isw_dhajaggiic_rid0md0p5: UUID="ac1dad30-ac7b-410f-81bf-3d622ca2d67f" TYPE="swap"

Page 58: Linux diskless

Linux Diskless Command line - 58

# nano /etc/fstab

เปลยนคาเขาไปใหม

# /etc/fstab: static file system information.

#

# Use 'blkid' to print the universally unique identifier for a

# device; this may be used with UUID= as a more robust way to name devices

# that works even if disks are added and removed. See fstab(5).

#

# <file system> <mount point> <type> <options> <dump> <pass>

/dev/mapper/isw_dhajaggiic_rid0md0p1 / ext4 errors=remount-ro 0 1

/dev/mapper/isw_dhajaggiic_rid0md0p5 none swap sw 0 0

/dev/md127 /cow ext4 defaults 0 2

รสตารดเครองใหมอกรอบ

# shutdown -r now

บตเสรจกท าการตรวจสอบการเมารทใหม

# df

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/mapper/isw_dhajaggiic_rid0md0p1 1889916616 1480924 1792433504 1% /

udev 16427084 4 16427080 1% /dev

tmpfs 6574632 660 6573972 1% /run

none 5120 0 5120 0% /run/lock

none 16436576 0 16436576 0% /run/shm

none 102400 0 102400 0% /run/user

/dev/md127 1922864944 200028 1922582996 1% /cow

# ls -l /dev/mapper/

total 0

crw------- 1 root root 10, 236 Mar 6 08:56 control

brw-rw---- 1 root disk 252, 1 Mar 6 2013 isw_dhajaggiic_rid0md0

lrwxrwxrwx 1 root root 7 Mar 6 08:56 isw_dhajaggiic_rid0md0p1 -> ../dm-0

lrwxrwxrwx 1 root root 7 Mar 6 08:56 isw_dhajaggiic_rid0md0p2 -> ../dm-2

lrwxrwxrwx 1 root root 7 Mar 6 08:56 isw_dhajaggiic_rid0md0p5 -> ../dm-3

***จบเรองการ Mount Disk

Page 59: Linux diskless

Linux Diskless Command line - 59

*หมายเหต อนดบแรกตองท าใหเครอง Server ออกเนตไดกอน เพอท าการ download package

ในการตดตงมาลงท Server ตวมนเอง

Page 60: Linux diskless

Linux Diskless Command line - 60

# ifconfig -a

ด device การดแลนทงหมด

เพมเตมเรองชอ device บางทานอาจจะไดชอ eth บางทานกได p?p1

ทานไดชอ device ไหนกใชงาน device นนนะครบ ไมตองตามตวอยาง เพราะตวอยางไดชอ p?p1 ครบ

(ตวอยางใชงาน Ubuntu 12.04 Server 64 bit)

ในตวอยางจะก าหนดคาดงน

แลนออนบอรด ชอ device อปกรณคอ p6p1

ท าเปนพอรดแจก dhcp-server ใหเครองลก ก าหนดเปน static ไอพ 192.168.254.200

การดแลนใบท 1 ชอ device อปกรณคอ p1p2

ท าเปนการดแชร disk ใหเครองลก ก าหนดเปน static ไอพ 192.168.254.201

การดแลนใบท 2 ชอ device อปกรณคอ p2p1

ท าเปนการดแชร disk ใหเครองลก ก าหนดเปน static ไอพ 192.168.254.202

การดแลนใบท 3 ชอ device อปกรณคอ p3p1

ท าเปนการดแชร disk ใหเครองลก ก าหนดเปน static ไอพ 192.168.254.203

การดแลนใบท 4 ชอ device อปกรณคอ p5p1

ท าเปนการดแชร disk ใหเครองลก ก าหนดเปน static ไอพ 192.168.254.204

Page 61: Linux diskless

Linux Diskless Command line - 61

# nano /etc/network/interfaces

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto p6p1

iface p6p1 inet static

address 192.168.254.200

netmask 255.255.255.0

network 192.168.254.0

broadcast 192.168.254.255

gateway 192.168.254.254

dns-nameservers 192.168.254.254

dns-search portspro.diskless

auto p1p1

iface p1p1 inet static

address 192.168.254.201

netmask 255.255.255.0

auto p2p1

iface p2p1 inet static

address 192.168.254.202

netmask 255.255.255.0

auto p3p1

iface p3p1 inet static

address 192.168.254.203

netmask 255.255.255.0

auto p5p1

iface p5p1 inet static

address 192.168.254.204

netmask 255.255.255.0

ท าการแกไขคา แลวบนทกออก

*เนองจากครงแรกตองใชงานอนเตอรเนตในการตดตง Package

จงให p6p1 รบเนตเขามากอนโดยวงเขา Gateway เคองเนตเกมส 192.168.254.254

Page 62: Linux diskless

Linux Diskless Command line - 62

จากนน restart service network ใหม

# /etc/init.d/networking restart

Page 63: Linux diskless

Linux Diskless Command line - 63

# ifconfig

Page 64: Linux diskless

Linux Diskless Command line - 64

ท าการอพเวลาใหระบบใหตรงกบปจจบน

# /usr/sbin/ntpdate -u pool.ntp.org

ท าการอพเดต package

# sudo apt-get update

# sudo apt-get install tftp-hpa tftpd-hpa xinetd

# mkdir /tftpboot

# sudo chown nobody.nogroup /tftpboot

# sudo chmod 777 /tftpboot

# sudo nano /etc/default/tftpd-hpa

จากเดม

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/var/lib/tftpboot"

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="--secure"

แกเปน โดยการเพม 2 บรรทดลงไป และก าหนดต าแหนง path ไฟลบตใหเครองลก

# /etc/default/tftpd-hpa

RUN_DAEMON="yes"

OPTIONS="-l -s /tftpboot"

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/tftpboot"

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="--secure"

# sudo /etc/init.d/tftpd-hpa start

Page 65: Linux diskless

Linux Diskless Command line - 65

# netstat -a |grep tftp

udp 0 0 *:tftp *:*

สรางไฟล tftp ขนมาท างานรวมกบ Service

# nano /etc/xinetd.d/tftp

เพมค าสงเขาไปในตวไฟลทสราง พรอมระบพาธ tftpboot ใหถกตอง

service tftp {

protocol = udp

port = 69

socket_type = dgram

wait = yes

user = nobody

server = /usr/sbin/in.tftpd

server_args = /tftpboot

disable = no

}

# sudo /etc/init.d/xinetd start

สรางพนทส าหรบ COW

# mkdir /cow

Vblade # sudo apt-get install vblade

# mkdir /var/run/vblade

# /etc/init.d/vblade start

* Starting vblade deaemons vblade

Page 66: Linux diskless

Linux Diskless Command line - 66

undionly.kpxe เปนไฟล gpxe ส าหรบปลอยใหเครองลกมารบไปบตเขาใชงานโอเอสจากเครองแม

ท าการ download file undionly.kpxe ลงมา

แลวท าการ Upload ขนไปเกบท server ในต าแหนง /tftpboot

โหลดไดท

http://www.mediafire.com/?tj30x1ew8jfb4c6

กอนจะไปขนตอน DHCP-Server ใหสวนทเพมเขามาใชงานไดกอน ดวยโคดภาษา C

Page 67: Linux diskless

Linux Diskless Command line - 67

สรางโคดภาษา C

ในการใชงาน script ใหงายขน

# mkdir /root/tmp

สามารถโหลดเปนตวไฟล แลวท าการ Upload ขนไปท Server ในต าแหนง /root/tmp/

http://www.upload-thai.com/download.php?id=118c57c1aa52375fe06445b7a20b2da4

ส ารอง

http://www.mediafire.com/?hzvucfxqanoxyev

# cd /root/tmp/

# nano execdiskless.c

ในตวโคดจะท าการสราง Device ตามโครงสรางของ COW

Page 68: Linux diskless

Linux Diskless Command line - 68

ท าการ compile source code ภาษาซ ดวย gcc # sudo apt-get install gcc

# gcc /root/tmp/execdiskless.c -o /root/tmp/execdiskless

ทดสอบโครตภาษา C วาท างานถกตองหรอไม

# /root/tmp/execdiskless 20 load

Development

ท าไฟลใหใชงานในระบบไดโดยไมตองมพาธ

# chmod +x /root/tmp/execdiskless

# cp /root/tmp/execdiskless /sbin/

จากนนลองพมพค าสง execdiskless แบบไมตองมพาธ

# execdiskless 20 load

Page 69: Linux diskless

Linux Diskless Command line - 69

DHCP-Server

# sudo apt-get install dhcp3-server

# nano /etc/default/isc-dhcp-server

เพม device การดแลนทจะแชร disk ในตวอยางคอ p6p1 พรอมกบเอาเครองหมาย # ออก

# Defaults for isc-dhcp-server initscript

# sourced by /etc/init.d/isc-dhcp-server

# installed at /etc/default/isc-dhcp-server by the maintainer scripts

#

# This is a POSIX shell fragment

#

# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).

DHCPD_CONF=/etc/dhcp/dhcpd.conf

# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).

DHCPD_PID=/var/run/dhcpd.pid

# Additional options to start dhcpd with.

# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead

#OPTIONS=""

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?

# Separate multiple interfaces with spaces, e.g. "eth0 eth1".

INTERFACES="p6p1"

Page 70: Linux diskless

Linux Diskless Command line - 70

ปลดลอกชดเกราะ apparmor

profile dhcpd ใหสามารถใชงานค าสง execute ทอยใน dhcpd.conf ได เพอใหค าสงนรนไดตอนทท าการ

แจก DHCP-Server ใหเครองลกบตแลน

ในตวโคตจะเปนการ kill mapper และ kill loop รวมถงลบไฟลทเปนขยะ อตโนมต

หลกๆกคอ การท าใหเครองลกคนคาทกครงเมอมการเปดปดเครอง

อนดบแรกดวากลมของ DHCP-Server ใชชอกลมวาอะไร

# cat /etc/group

หาแทบไมยากเลย เจอทนทบรรทดสดทาย ใชชอกลมวา dhcpd

Page 71: Linux diskless

Linux Diskless Command line - 71

# /etc/init.d/apparmor status

# cat /sys/kernel/security/apparmor/profiles

# sudo ln -s /etc/apparmor.d/usr.sbin.dhcpd /etc/apparmor.d/disable/usr.sbin.dhcpd

# sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.dhcpd

# sudo aa-status

# /etc/init.d/apparmor restart

ยกเลก passwd ใน sudo # nano /etc/sudoers

น าค าสง

dhcpd ALL=NOPASSWD: ALL

ไปวางททายไฟลเลยครบ

# /etc/init.d/sudo restart

Page 72: Linux diskless

Linux Diskless Command line - 72

ความหมาย

อารกวเมนท execdiskless

ความหมายกตายตวเลยครบ

ตวอยาง

ภายในจ านวณคอมทงหมด 20 เครอง ตองการใชงานเครองท 3 ชอน าหนา PC คอ com

ต าแหนงบต disk คอ /dev/sdb เปน user ธรรมดา

exediskless 20 com 3 /dev/sdb eth1 normal

ถาตอไปเปนเครองท 4 ,5 ,6 ,7 ,8 ,9 ,10

exediskless 20 com 4 /dev/sdb eth1 normal

exediskless 20 com 5 /dev/sdb eth1 normal

exediskless 20 com 6 /dev/sdb eth1 normal

exediskless 20 com 7 /dev/sdb eth1 normal

exediskless 20 com 8 /dev/sdb eth1 normal

exediskless 20 com 9 /dev/sdb eth1 normal

exediskless 20 com 10 /dev/sdb eth1 normal

ตอไปเครองท 11-13 ตองการบตการดแลนทสอง คอ eth2

exediskless 20 com 11 /dev/sdb eth2 normal

exediskless 20 com 12 /dev/sdb eth2 normal

exediskless 20 com 13 /dev/sdb eth2 normal

จากนนไปตอท DHCP-Server

Page 73: Linux diskless

Linux Diskless Command line - 73

# echo "" > /etc/dhcp/dhcpd.conf

# nano /etc/dhcp/dhcpd.conf

ในตวอยาง host ของเครองลกทน ามาเปนตวอยางแค 3 เครอง (copy มาทงหมดคงยาว)

สวนทานใดมเครอง 4 5 6 7 n n n n .. กท าการเพมเองไดเลยครบ

เพมค าสงเขาไปทงหมด

ddns-update-style interim;

#ddns-update-style none;

ddns-rev-domainname "in-addr.arpa.";

option domain-name "portspro.diskless";

option domain-name-servers 8.8.8.8,8.8.4.4;

option ntp-servers us.pool.ntp.org;

# gPXE-specific encapsulated options

option space gpxe;

option gpxe-encap-opts code 175 = encapsulate gpxe;

option gpxe.priority code 1 = signed integer 8;

option gpxe.keep-san code 8 = unsigned integer 8;

option gpxe.no-pxedhcp code 176 = unsigned integer 8;

option gpxe.bus-id code 177 = string;

option gpxe.bios-drive code 189 = unsigned integer 8;

option gpxe.username code 190 = string;

option gpxe.password code 191 = string;

option gpxe.reverse-username code 192 = string;

option gpxe.reverse-password code 193 = string;

option gpxe.version code 235 = string;

ignore client-updates;

update-static-leases on;

use-host-decl-names on;

default-lease-time 600;

max-lease-time 7200;

log-facility local7;

subnet 192.168.254.0 netmask 255.255.255.0 {

default-lease-time 43200;

max-lease-time 86400;

allow unknown-clients;

option routers 192.168.254.254;

range 192.168.254.100 192.168.254.199;

}

Page 74: Linux diskless

Linux Diskless Command line - 74

host bootdisk1 {

hardware ethernet 50:e5:49:e9:95:e8;

fixed-address 192.168.254.1;

option host-name com1;

if exists user-class and option user-class = "gPXE" {

execute("sudo","execdiskless","20","com","1","/dev/sdc","p5p1","normal");

filename "";

option root-path "aoe:e0.1";

} else {

filename "undionly.kpxe";

}

}

host bootdisk2 {

hardware ethernet 50:e5:49:e8:ee:46;

fixed-address 192.168.254.2;

option host-name com2;

if exists user-class and option user-class = "gPXE" {

execute("sudo","execdiskless","20","com","2","/dev/sdc","p5p1","normal");

filename "";

option root-path "aoe:e0.2";

} else {

filename "undionly.kpxe";

}

}

host bootdisk3 {

hardware ethernet 50:e5:49:e9:14:a0;

fixed-address 192.168.254.3;

option host-name com3;

if exists user-class and option user-class = "gPXE" {

execute("sudo","execdiskless","20","com","3","/dev/sdc","p5p1","normal");

filename "";

option root-path "aoe:e0.3";

} else {

filename "undionly.kpxe";

}

}

*หมายเหต

การใชงานในโคด dhcpd.conf ตองมการใชสทธ root กอน

จงจะสามารถเขาถงไฟลและสงรนได .. ดวย sudo

Page 75: Linux diskless

Linux Diskless Command line - 75

ตอไปท าการคนหาทเครอง server ใช domain name ชออะไร

# hostname -d

portspro.diskless

ในอยาง domain คอ portspro.diskless

# nano +5 /etc/dhcp/dhcpd.conf

# sudo /etc/init.d/isc-dhcp-server start

Page 76: Linux diskless

Linux Diskless Command line - 76

ด Process id อยางงายดวย HTop # sudo apt-get install htop

# htop

จบขนตอนการตดตงทงหมด

สงเปดเครองลกเพอดผลงานไดเลยครบ

หนาจอเครองลกหมายเลข 17 สวน AoE Disk = e0.17

Page 77: Linux diskless

Linux Diskless Command line - 77

***เมอตดตงเสรจเรยบรอยทกอยางกไมไดใชงาน internet

อยาลมไปปดการเชอมตอเนต ดงน

# nano /etc/network/interfaces

น าเครองหมาย # ไปแทรกดานหนาค าสงแตละบรรทด เพอใหกลายเปนคอมเมนท

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto p6p1

iface p6p1 inet static

address 192.168.254.200

netmask 255.255.255.0

#network 192.168.254.0

#broadcast 192.168.254.255

#gateway 192.168.254.254

#dns-nameservers 192.168.254.254

#dns-search portspro.diskless

auto p1p1

iface p1p1 inet static

address 192.168.254.201

netmask 255.255.255.0

auto p2p1

iface p2p1 inet static

address 192.168.254.202

netmask 255.255.255.0

auto p3p1

iface p3p1 inet static

address 192.168.254.203

netmask 255.255.255.0

auto p5p1

iface p5p1 inet static

address 192.168.254.204

netmask 255.255.255.0

Page 78: Linux diskless

Linux Diskless Command line - 78

# /etc/init.d/networking restart

เมอไมไดใชงานอนเตอรเนตกปด Bind9 ไปไดเลย

# /etc/init.d/bind9 stop

# nano /etc/rc.local

เพมค าสงเขาไปเมอบตเขาระบบทกครงจะปด bind9 ทนท

#!/bin/sh -e

#

/etc/init.d/bind9 stop

exit 0

# shutdown -r now

Page 79: Linux diskless

Linux Diskless Command line - 79

SUPER USER กบ AoE e0.0 ในตวโคดบงครบใหท า super user ใน aoe 0 0 เทานน เพอปองกนการหลงลม

ในขณะทเลกเปน super user แตลมไปแกไขค าสงใหเปน user normal

จงออกแบบโคดไมใหระบบไปกระท ากบ hdd img โดยตรง .. กรณลมจรงๆ ปองกนได

ขนตอนไมยาก ท าการแกไขทไฟล dhcpd.conf

ยกตวอยางเชน โคดในไฟล dhcpd.conf

ตวอยางแรกเครองหมายเลข 1 เปน User normal ใชงานคนคาธรรมดา

host bootdisk1 {

hardware ethernet 50:e5:49:e9:95:e8;

fixed-address 192.168.254.1;

option host-name com1;

if exists user-class and option user-class = "gPXE" {

execute("sudo","execdiskless","20","com","1","/dev/sdc","p5p1","normal");

filename "";

option root-path "aoe:e0.1";

} else {

filename "undionly.kpxe";

}

}

เมอตองเปน Super User กเปลยนแค normal เปน super

และเปน aoe:e0.1 ไปเปน aoe:e0.0 แคนน

ตวอยาง Super User

host bootdisk1 {

hardware ethernet 50:e5:49:e9:95:e8;

fixed-address 192.168.254.1;

option host-name com1;

if exists user-class and option user-class = "gPXE" {

execute("sudo","execdiskless","20","com","1","/dev/sdc","p5p1","super");

filename "";

option root-path "aoe:e0.0";

} else {

filename "undionly.kpxe";

}

}

Page 80: Linux diskless

Linux Diskless Command line - 80

จากนนท าการ reload service dhcpd ดวยสง force-reload เทานน ถา restart เฉยๆ

อาจจะท าใหเครองอนทก าลงเลนอยกระตกนาน หรออาจจะคางไปเลย

ตองบอกใหคนเลน reboot เครองนนใหม เสยชอรานแนๆครบ

ตวอยางค าสง

# /etc/init.d/isc-dhcp-server force-reload

Page 81: Linux diskless

Linux Diskless Command line - 81

ท าการเปดเครองลกแลวบตแลน เพอดสถานะ super user บน aoe e0.0

ในรป นบจากบรรทดลางขนบน บรรทดท 3 จะเหนวาบรรทดนแสดงค าวา

Booting from root path “aoe:e0.0” หมายถงสถานะ super

เครองลกบตเขา Windows พรอมใชงานเรยบรอยแลว เมอเปน Super User แลว

หามลมเดดขาด ! ตองเขาไปดใน Manage วา AoE Disk ทใชงานอยคอ e0.0 หรอไม

Page 82: Linux diskless

Linux Diskless Command line - 82

AoE Disk Properties

ตรง Location ตองเทากบ AoE e0.0 ดงรป

Page 83: Linux diskless

Linux Diskless Command line - 83

เมอตองการใหเครองหมายเลข 1 เปน User normal ใชงานคนคาธรรมดาแบบเดม

กท าการแกไขไฟล dhcpd.conf ใส normal และ aoe:e0.1 กลบเปนเหมอนเดม

ตวอยางการกลบมาเปน User normal ธรรมดา

host bootdisk1 {

hardware ethernet 50:e5:49:e9:95:e8;

fixed-address 192.168.254.1;

option host-name com1;

if exists user-class and option user-class = "gPXE" {

execute("sudo","execdiskless","20","com","1","/dev/sdc","p5p1","normal");

filename "";

option root-path "aoe:e0.1";

} else {

filename "undionly.kpxe";

}

}

จากนนก dhcpd force-reload อกครง

# /etc/init.d/isc-dhcp-server force-reload

เมอกลบมาใชงานเปน normal เขาไปด Manage อกครง

AoE Disk กจะเปน AoE e0.17

Page 84: Linux diskless

Linux Diskless Command line - 84

Block Device ส าหรบท า Image โดยการใหเครองลก Upload OS ขนมา Server ดวยโปรแกรม Ghost 32

*แนะน า

ขนตอนนตองท าความเขาใจพอสมควร ไฟลอาจเกดการ NULL หรอ วางเปลา ได

ทงๆทขอมลกมอยแลว ..

สวนนแนะน านกพฒนาระบบ เขยนโปรแกรมจดการปองกนเพมขนเองเลยครบ

# mkdir /root/tmp

Download แบบไฟลโคด

แลว upload ไปไวท /root/tmp/

http://www.mediafire.com/?p3m2cskl9jdt2mb

ส ารอง

http://www.upload-thai.com/download.php?id=29894712204db04f607c0fc2b3b1798a

จากนน compile code และใหสทธ execute

# gcc /root/tmp/makeimg.c -o /root/tmp/makeimg

# chmod +x /root/tmp/makeimg

# cp /root/tmp/makeimg /sbin/

ทดสอบ

ตองการจองพนทขนาด 12 GB ส าหรบท า Image ไฟลจากเครองลก เกบไฟลไวท /mnt/

มชอไฟลวา imgxp และใชงานหมายเลข AoE Disk ท 231 แชร disk ดวย eth1

# makeimg 12 imgxp /mnt/ 231 eth1

Page 85: Linux diskless

Linux Diskless Command line - 85

*หมายเหต

ในการใสต าแหนง path ทเกบไฟลอมเมจ ตองมเคองหมาย / ปดพาธนนทกครง

เชน ตวอยางพาธ /mnt/img/img_xp

ตองระบพาธ /mnt/img/

เมอเครองแมปลอย Image ไปทาง AoE หมายเลข 231 เรยบรอยแลว

ทางฝงเครองลกตองไปรบ Disk ทาง AoE หมายเลข 231 เชนกน

Page 86: Linux diskless

Linux Diskless Command line - 86

ในขนตอนนเครองลกตองอยในวงแลนของเครองแมทแจก dhcp-server

ตวอยาง และเทคนดโดยไมตองไปแกไขไฟล dhcpd.conf

ผมใชงานเครองลกทเปนระบบ Diskless อย โดยใชงาน aoe หมายเลข e0.17 จะไปท าการ

mount disk จากเครองแมทปลอยหลายเลข Image ทาง aoe หมายเลข 222

ภาพจากเครองลกกอนทจะท าการ mount disk อก aoe disk เขามาอก 1 disk

สราง disk ขนาด 99gb ชอไฟล imgxp เกบไวทพาธ /mnt/img/ ปลอยออกหมายเลข aoe ท 222 และแชร disk ออกทางแลนการด p3p1

ดไฟล Image ทสรางชอ imgxp

Page 87: Linux diskless

Linux Diskless Command line - 87

กลบมาตอทเครองลกเพอ aoe scan

ในรปตวอยางจะเหนวาใชค าสง aoe scan แลวไมม Disk หมายเลข 222 ออกมาแสดงโชวเลย

ไมตองกงวลเมอทานมนใจแลววาไดสง Image หมายเลข 222 มาทเครองลกแลว และเครองลกกใชงาน dhcp-server จากเครองแมแลว

ท าการ mount disk หมายเลข 222 โดยตรงเลยครบ

ในรปเปนการ mount aoe disk โดยตรง

ท Computer Management ในชองดานขวามอ –Disk drives กจะม AoE Disk ขนมาโชวอกตว คอหมายเลข AoE e0.222

Page 88: Linux diskless

Linux Diskless Command line - 88

ท Computer Management ดานซายมอเลอก Disk Management กจะม Disk ตวใหมเกดขนมาใหสราง ดงรป

ท าการสราง Partition

Page 89: Linux diskless

Linux Diskless Command line - 89

ของใหมกจะมาดงรป

เมอท าเสรจทกครงอยาลมเปลยนชอ Image เปนชออนนะครบ เพอความปลอดภาพของขอมลทเสยเวลา Upload ดวย Ghost32

และท าการฆา PID ของ Image ทสรางดวย

จากนนมาทเครองแมเพอใชงาน execdiskless ส าหรบ Image ของใหมทท ามาสดๆรอนๆ

โดยการแกไขไฟล dhcpd.conf เพอบต Disk แบบ Image

หมายเลข aoe กใชงานตามล าดบหมายเลขเครองคอมเลยนะครบ โปรแกรม execdiskless จะจดการใหเองอตโนมต

จากนน reload

# /etc/init.d/isc-dhcp-server force-reload

Page 90: Linux diskless

Linux Diskless Command line - 90

ทกครงทท าการ Upload Image เสรจ อยาลม kill pid ทกครง

เพอลดภาวะโปรเซสท างานโดยเปลาประโยชน kill ตามดวยชอ และพาธ

# makeimg kill imgxp /mnt/

*บงคบ เมอท าไฟล Image และเครองลก Upload OS มาเรยบรอยแลว

ท าการเปลยนชอ Img ทพาธนนใหม เพอปองกนการสรางไฟลซ า รวมถงหมายเลข

AoE ซ ากน ซงจะท าใหขอมลทท ามาเกด NULL ขนมาได

# mv /mnt/imgxp /mnt/imgxp12gb

*กรณทไมตองการใชงานไฟล Image แบบถาวร หรออาจจะตองการท า Image ใหม

ตองการลบตวเกาทง กใชค าสง rm -rf <ตามดวยพาธและชอไฟล> แบบธรรมดาทวไป

# rm -rf /mnt/imgxp12gb

*ตองการด PID ของ Vblade ทยงตกคางอยใน /mnt/

# lsof /mnt/*

# ps aux|grep vblade

***สวนขนตอนการ upload image จากเครองลกขนเครองแมนนจะอยในขนตอน

การทดลองอยางงายในหนาชวงแรกๆอยแลว

Page 91: Linux diskless

Linux Diskless Command line - 91

ลดภาระการท างาน CPU และ RAM ขนตอนนจะเพมพนทใหหนวยความจ ามพนทท างานไดมากขน ในขณะท PID ของ vblade ท างานโดยเปลาประโยชน

ทงๆทเครองลกเครองนนปดไปแลว

ตวอยางการด pid อยางละเอยดดวย htop

# htop

แลวกดแปน F3 แลวพมพชอ pid ทจะคนหา คอ vblade แลว F3 ไปเรอยๆจนกวาจะจบลป

จะท าการสราง shell script linux เพอท าการอานคา IP address จาก text file ชอ pingip.txt โดยพาธอยท /root/tmp/

# touch /root/tmp/pingip.txt

จากนนท าการใสหมายเลขไอพของเครองลกลงไปตามล าดบ

ตวอยาง

มคอมสงสด 20 เครอง โดยทไอพวงแลนของเครองลก ทเครองแมแจกแบบ fix ip ให

ระหวาง 192.168.254.1 – 192.168.254.20 จดสดทายใชงานตามหมายเลขเครองลก

Page 92: Linux diskless

Linux Diskless Command line - 92

# nano /root/tmp/pingip.txt

ใสหมายเลขไอพเครองตามล าดบเครองลงไป

หามนบผดเดดขาด ตองตามล าดบ 1 ,2 ,3 ,4 ,5 ,n n n ไมงน script จะไป kill pid ผดครบ

192.168.254.1

192.168.254.2

192.168.254.3

192.168.254.4

192.168.254.5

192.168.254.6

192.168.254.7

192.168.254.8

192.168.254.9

192.168.254.10

192.168.254.11

192.168.254.12

192.168.254.13

192.168.254.14

192.168.254.15

192.168.254.16

192.168.254.17

192.168.254.18

192.168.254.19

192.168.254.20

Page 93: Linux diskless

Linux Diskless Command line - 93

สราง shell script บน linux เพอไปอานคาไอพเขามา แลวตรวจสอบวาเครองลกเครองไหนปดใชงานไปแลว

เครองไหนปดกท าการ kill pid vblade และ loop ทงไปเลย

# nano /root/tmp/pingipdown.sh Copy ค าสง script ลงไปหมดเลยครบ

#!/bin/bash

NAME="com"

NUMREC=0

SOURCE=0

DEST=0

# no ping request

COUNT=10

# add ip / hostname separated by white space

for myHost in cat `cat /root/tmp/pingip.txt`

do

count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')

if [ "$count" = 0 ]; then

#100% failed

kill -9 `lsof /dev/mapper/$NAME$NUMREC`

dmsetup remove --force /dev/mapper/$NAME$NUMREC

losetup --detach /dev/loop$SOURCE

losetup --detach /dev/loop$DEST

rm -rf /dev/loop$SOURCE

rm -rf /dev/loop$DEST

rm -rf /cow/$NAME$NUMREC

echo "ping ip $myHost <OFF> [$NAME$NUMREC] !"

echo "DEL Loop $SOURCE <-> $DEST"

else echo "ping ip $myHost <ON> [$NAME$NUMREC]"

fi

let NUMREC=NUMREC+1

let DEST=NUMREC-1

let SOURCE=NUMREC+DEST

let DEST=SOURCE+1

done

# show device dmsetup and losetup

dmsetup table

losetup -a

Page 94: Linux diskless

Linux Diskless Command line - 94

ท าการแกไขบรรทดท 3 เพอเปลยนชอเครองคอมททานใชงานตาม device mapper

ในตวอยางใชชอ com

# nano +3 /root/tmp/pingipdown.sh แกใหเปนชอคอมทใชงาน

NAME="com"

# nano +9 /root/tmp/pingipdown.sh บรรทดนระยะเวลาในการ ping แตละ ip หรอจ านวณ count request ในการตรวจสอบ ถาใชงานคา 1 ระบบกจะ ping เรวตอครง

COUNT=10

ทดสอบรน

# chmod +x /root/tmp/pingipdown.sh

# bash /root/tmp/pingipdown.sh

Page 95: Linux diskless

Linux Diskless Command line - 95

ตงเวลารน script เพอตรวจสอบไอพทปดเครองไปทกๆ 5 นาท บน crontab ใชงานในสทธ root

# nano /etc/crontab เพมค าสงเขาไปททายไฟล

*/5 * * * * root /root/tmp/pingipdown.sh

Page 96: Linux diskless

Linux Diskless Command line - 96

RC.local

ขนตอนนไมไดส าคญอะไรมาก กรณททานเกดเหตการ Server ดบ ในขณะทก าลงแชร Disk

ใหเครองลกใชงานอย .. เมอทานเปดเครอง Server ขนมาใหม แตเครองลกคางไปแลว

ในขนตอนน ถาตองการใหเครองลกทคาง ใชงานไดตอเมอเครองแมบตเขาระบบเรยบรอยแลว

โดยทเครองลกไมตอง restart เครองใหม (สวนใหญจะเกดกบรานเลกๆ)

ใหเพมค าสงรนระบบแชร disk อตโนมตใน /etc/rc.local

# nano /etc/rc.local

เพมค าสงลงไปกบจ านวณเครอง

exediskless 5 com 1 /dev/sdb eth1 normal

exediskless 5 com 2 /dev/sdb eth1 normal

exediskless 5 com 3 /dev/sdb eth2 normal

exediskless 5 com 4 /dev/sdb eth1 normal

exediskless 5 com 5 /dev/sdb eth3 normal

/etc/init.d/bind9 stop

exit 0

*แนะน า

ตองใหค าสงในไฟลตรงกนกบไฟล dhcpd.conf วาการดแลนหมายเลขอะไร

ทใชแชร Disk ออกไปใหแตละเครอง

*หมายเหต

หามน าค าสง /usr/sbin/ntpdate -u pool.ntp.org มาไวใน /etc/rc.local เปนค าสงแรกเดดขาด

เพราะในตวอยางคมอ ไมไดท าใหเครอง Server ออกเนตได .. ถามค าสงนเขามากอนค าสงอนในไฟล

rc.local พอระบบเจอค าสงนแตออกเนตไมได ระบบจะแจงวาค าสงลมเหลว ระบบจะหยดการรน script

ในไฟล /etc/rc.local ทงหมดทนท จะท าใหค าสงถดไปไมไดถกรนและใชงานทนท

แบบแรก

usr/sbin/ntpdate -u pool.ntp.org <------------------------------- หามเดดขาด

exediskless 5 com 1 /dev/sdb eth1 normal

exediskless 5 com 2 /dev/sdb eth1 normal

exediskless 5 com 3 /dev/sdb eth2 normal

exediskless 5 com 4 /dev/sdb eth1 normal

exediskless 5 com 5 /dev/sdb eth3 normal

/etc/init.d/bind9 stop

exit 0

Page 97: Linux diskless

Linux Diskless Command line - 97

แบบทสอง

exediskless 5 com 1 /dev/sdb eth1 normal

exediskless 5 com 2 /dev/sdb eth1 normal

exediskless 5 com 3 /dev/sdb eth2 normal

exediskless 5 com 4 /dev/sdb eth1 normal

exediskless 5 com 5 /dev/sdb eth3 normal

/etc/init.d/bind9 stop

usr/sbin/ntpdate -u pool.ntp.org <------------------------------- แนะน าครบ

exit 0

แบบทสองถกตองครบ ถาค าสงไหนไมแนใจวาจะใชงานได 100% กเอามาใสเหมอนใน

แบบทสองไดเลย เพราะแบบทสองเปนการรนล าดบสดทายในไฟล /etc/rc.local

ถงค าสงจะลมเหลวกไมเปนไร เพราะไมมค าสงรนตอทายแลว

Page 98: Linux diskless

Linux Diskless Command line - 98

ไฟล .BAT ส าหรบ Startup Windows เพอ Rename ชอเครองตอนเขา Windows

ชอไฟล rename.bat

@echo on

@echo Windows XP

for /f "tokens=1-2 delims=:" %%a in ('ipconfig^|find "IP Address"') do set IP=%%b

for /f "tokens=1-4 delims=." %%a in ("%IP%") do set IP=%%d

echo %IP%

@echo off

set computername=COM-%IP%

reg delete "hklm\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "Hostname" /f

reg delete "hklm\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /f

reg add "hklm\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v "ComputerName" /d "%computername%" /f

reg add "hklm\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v "ComputerName" /d "%computername%" /f

reg add "hklm\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "Hostname" /d "%computername%" /f

reg add "hklm\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /d "%computername%" /f

แบบทสอง

@echo on

@echo Windows 7

for /f "tokens=1-2 delims=:" %%a in ('ipconfig^|find "IPv4 Address"') do set IP=%%b

for /f "tokens=1-4 delims=." %%a in ("%IP%") do set IP=%%d

echo %IP%

@echo off

set computername=COM-%IP%

reg delete "hklm\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "Hostname" /f

reg delete "hklm\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /f

reg add "hklm\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v "ComputerName" /d "%computername%" /f

reg add "hklm\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v "ComputerName" /d "%computername%" /f

reg add "hklm\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "Hostname" /d "%computername%" /f

reg add "hklm\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /d "%computername%" /f

Page 99: Linux diskless

Linux Diskless Command line - 99

*เพมเตมครบ

บางทานอาจจะใช IP ไมเหมอนในคมอตวอยาง

สวนใหญทเหนใชงานกนกจะเปน IP 192.168.1.254 ส าหรบออกเนต

และ IP ท Fix ใหเครองลกกจะเปน

192.168.1.1

,192.168.1.2

,192.168.1.3

,192.168.1.4

,192.168.1.x ตามจ าเครองในรานทม

ถาตองการใชงานตามคา ip ในแบบของทานกไปแกไข

# nano /etc/network/interfaces

ในสวนนจะเปนการก าหนดหมายเลข ip ใหการดแลนตาม ip ของรานทานใชงาน

แลวระบเปน ip ของรานทาน

auto p1p1

iface p1p1 inet static

address 192.168.1.201

netmask 255.255.255.0

วธท าจะเหมอนในตวอยางการทดลองอยางงายในชวงแรกๆ ของคมอ

Page 100: Linux diskless

Linux Diskless Command line - 100

จากนนกไฟล dhcpd.conf แกไข ip เครองลกใหใชงานตาม ip ราน

# nano /etc/dhcp/dhcpd.conf

ตวอยางการก าหนด Gateway ไปท ip ออกเนต และ ip ทใชงานในราน

ไปทบรรทด subnet

subnet 192.168.1.0 netmask 255.255.255.0 {

default-lease-time 43200;

max-lease-time 86400;

allow unknown-clients;

option routers 192.168.1.254; ------------ IP Gateway ใชออกเนต

range 192.168.1.100 192.168.1.199; ---------- แจกแบบ auto ส าหรบใชงานอยางอน (Authentication)

}

host bootdisk1 {

hardware ethernet 50:e5:49:e9:95:e8;

fixed-address 192.168.1.1; ----------- IP ท fix ใหเครองลก ตาม ip ราน

option host-name com1;

if exists user-class and option user-class = "gPXE" {

execute("sudo","execdiskless","17","com","1","/dev/sdc","p5p1","normal");

filename "";

option root-path "aoe:e0.1";

} else {

filename "undionly.kpxe";

}

}

Page 101: Linux diskless

Linux Diskless Command line - 101

จากนนกตอดวย text file ส าหรบการตรวจสอบ ip เครองลกทไมไดใชงานแลว

# nano /root/tmp/pingip.txt

แกเปน ip ตามรานใชงาน

192.168.1.1

192.168.1.2

192.168.1.3

192.168.1.4

192.168.1.5

Page 102: Linux diskless

Linux Diskless Command line - 102

จบแลวคะ