โดยทั่วไปการติดตั้งลีนุกซ์จะทำผ่านแผ่นซีดีหรือดีวีดี แต่ถ้าเป็นการติดตั้งหลายๆ เครื่อง ปริมาณมากๆ เราสามารถทำได้โดยติดตั้งผ่านเน็ตเวิร์กได้ โดยคอนฟิกเครื่องหนึ่งทำหน้าที่เป็น server แล้วให้เครื่องอื่นๆ บู๊ตผ่านเน็ตเวิร์ก (PXE Boot) มาอ่านไฟล์จากเครื่องนี้ได้ โดยไม่จำเป็นใส่แผ่นซีดีแต่ละเครื่อง
และถ้าต้องการให้คอนฟิกแต่ละเครื่องเหมือนกัน เช่นการเลือกโปรแกรมที่จะติดตั้ง การคอนฟิก timezone, keyboard สามารถใช้ kickstart เข้าช่วยได้
ในบทความนี้จะแนะนำโปรแกรม cobbler ซึ่งเป็นโปรแกรมช่วยในการคอนฟิกและสร้าง network boot server โดยจะช่วยสร้างคอนฟิกที่จำเป็นเช่น dhcp server พร้อมทั้ง image เพื่อให้เครื่องอื่นๆ มาเรียกใช้ได้
ติดตั้งโปรแกรม cobbler บน Server
เริ่มต้นต้องสร้าง server ขึ้นมาก่อน ในที่นี้จะใช้ Fedora 10 (i386) โดยตอนติดตั้ง เลือก Package Group ดังนี้
- Base
- Developement Libraries
- Developement Tools
- Editors
หลังจากติดตั้ง Fedora โปรแกรมที่ต้องติดตั้งเพิ่มเติมมีดังนี้
หมายเหตุ บางโปรแกรมไม่มีในแผ่นดีวีดี ต้องโหลดเพิ่มจาก Fedora 10 Everything
- apr-1.3.3-1.fc10.i386.rpm
- apr-util-1.3.4-1.fc10.i386.rpm
- httpd-tools-2.2.10-2.i386.rpm
- httpd-2.2.10-2.i386.rpm
- mod_python-3.3.1-8.i386.rpm
- xinetd-2.3.14-21.fc10.i386.rpm
- tftp-server-0.48-6.fc10.i386.rpm
- python-devel-2.5.2-1.fc10.i386.rpm
- python-cheetah-2.0.1-2.fc9.i386.rpm
- libxml2-python-2.7.2-1.fc10.i386.rpm
- createrepo-0.9.6-3.fc10.noarch.rpm
- mtools-3.9.11-5.fc10.i386.rpm
- syslinux-3.61-3.fc10.i386.rpm
- dhcp-4.0.0-30.fc10.i386.rpm
- cobbler-1.2.8-1.fc10.noarch.rpm
คอนฟิกและรันเซอร์วิส cobblerd
เมื่อลงโปรแกรมเรียบร้อย ขั้นต่อไปต้องคอนฟิก cobbler โดยสามารถใช้คำสั่ง cobbler check ในการตรวจสอบพร้อมทั้งคำแนะนำในการแก้ไขคอนฟิกที่จำเป็นได้
ตัวอย่างการรัน cobbler check เพื่อตรวจสอบคอนฟิกที่ต้องแก้ไข
[root@image-server ~]# cobbler check The following potential problems were detected: #0: The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work. This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it. #1: For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network. #2: Must enable selinux boolean to enable Apache and web services components, run: setsebool -P httpd_can_network_connect true #3: service cobblerd is not running #4: service xinetd is not running #5: change 'disable' to 'no' in /etc/xinetd.d/tftp #6: service httpd is not running #7: since iptables may be running, ensure 69, 80, 25150, and 25151 are unblocked #8: One or more kickstart templates references default password 'cobbler' and should be changed for security reasons: /etc/cobbler/sample.ks, /etc/cobbler/legacy.ks, /etc/cobbler/sample_end.ks
ในส่วนแรกที่ต้องแก้ไข คือไฟล์ /etc/cobbler/settings โดยต้องเปลี่ยน server และ next_server เป็น ip address ของ server สมมติว่าเป็น 192.168.1.1 อีกส่วนที่แนะนำให้แก้ไข คือให้ cobbler จัดการ dhcp โดยเปลี่ยน manage_dhcp เป็น 1
ตัวอย่างการแก้ไขไฟล์ /etc/cobbler/settings
# this is the address of the cobbler server -- as it is used # by systems during the install process, it must be the address # or hostname of the system as those systems can see the server. # if you have a server that appears differently to different subnets # (dual homed, etc), you need to read the --server-override section # of the manpage for how that works. server: '192.168.1.1' # if using cobbler with manage_dhcp, put the IP address # of the cobbler server here so that PXE booting guests can find it # if you do not set this correctly, this will be manifested in TFTP open timeouts. next_server: '192.168.1.1' # set to 1 to enable Cobbler's DHCP management features. # the choice of DHCP management engine is in /etc/cobbler/modules.conf manage_dhcp: 1
ใช้คำสั่ง server เพื่อรันเซอร์วิสต่างๆ ที่จำเป็นดังนี้
[root@image-server ~]# service httpd start Starting httpd: [ OK ] [root@image-server ~]# service xinetd start Starting xinetd: [ OK ] [root@image-server ~]# chkconfig tftp on [root@image-server ~]# service cobblerd start Starting cobbler daemon: [ OK ]
หมายเหตุ เซอร์วิส dhcpd ยังไม่ต้องรันตอนนี้
เปลี่ยน selinux policy ให้ถูกต้อง ด้วยคำสั่ง setsebool โดยคำสั่งนี้อาจใช้เวลานานพอสมควรในการรัน
[root@image-server ~]# setsebool -P httpd_can_network_connect true
เปิดพอร์ตที่ต้องใช้ของ cobbler โดยแก้ไขในไฟล์ /etc/sysconfig/iptables
ตัวอย่างการแก้ไขไฟล์ /etc/sysconfig/iptables เพื่อเปิดพอร์ตที่ต้องใช้
[root@image-server ~]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m udp -p udp --dport 69 -j ACCEPT
-A INPUT -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m tcp -p tcp --dport 25151 -j ACCEPT
-A INPUT -m udp -p udp --dport 25150 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed
ใช้คำสั่ง service iptables เพื่อโหลด rules ใหม่ของ iptables
[root@image-server sysconfig]# service iptables restart iptables: Flushing firewall rules: [ OK ] iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Unloading modules: [ OK ] iptables: Applying firewall rules: [ OK ]
สร้าง kickstart configuration เพื่อช่วยในการติดตั้ง
เพื่อสะดวกในการติดตั้ง โดยที่ไม่ต้องมาคอนฟิกทีละเครื่อง เราสามารถใช้ kickstart เพื่อช่วยได้ดังนี้
ตัวอย่างไฟล์ kickstart
[root@image-server ~]# cat /root/fc10-i386.ks # Kickstart file automatically generated by anaconda. #version=DEVEL install url --url=http://192.168.1.1/cobbler/ks_mirror/fc10-i386 lang en_US.UTF-8 keyboard us network --device eth0 --bootproto dhcp rootpw --iscrypted xxx firewall --service=ssh authconfig --enableshadow --passalgo=sha512 selinux --enforcing timezone --utc Asia/Bangkok bootloader --location=mbr --driveorder=sda --append="rhgb quiet" # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work #clearpart --all --drives=sda #part /boot --fstype ext3 --size=200 --ondisk=sda #part pv.2 --size=0 --grow --ondisk=sda #volgroup VolGroup00 --pesize=32768 pv.2 #logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow #logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=512 --grow --maxsize=1024 %packages @base @core @development-libs @development-tools @editors gnupg2 gpgme gpm lua pax %end
สร้าง image และ profile สำหรับการติดตั้ง
ใส่แผ่นดีวีดีติดตั้ง Fedora 10 แล้วใช้คำสั่ง mount ไว้ที่ /media
[root@image-server ~]# mount /dev/scd0 /media mount: block device /dev/sr0 is write-protected, mounting read-only [root@image-server ~]# ls /media/ GPL RPM-GPG-KEY-fedora-10-primary RPM-GPG-KEY-fedora-test-i386 images RPM-GPG-KEY-fedora-i386 RPM-GPG-KEY-fedora-test-ia64 isolinux RPM-GPG-KEY-fedora-ia64 RPM-GPG-KEY-fedora-test-ppc media.repo RPM-GPG-KEY-fedora-ppc RPM-GPG-KEY-fedora-test-ppc64 Packages RPM-GPG-KEY-fedora-ppc64 RPM-GPG-KEY-fedora-test-primary README-BURNING-ISOS-en_US.txt RPM-GPG-KEY-fedora-primary RPM-GPG-KEY-fedora-test-x86_64 repodata RPM-GPG-KEY-fedora-test RPM-GPG-KEY-fedora-x86_64 RPM-GPG-KEY-fedora RPM-GPG-KEY-fedora-test-10-primary TRANS.TBL
ใช้คำสั่ง cobbler import เพื่อสร้าง images และ profile สำหรับ network boot
[root@image-server ~]# cobbler import --name=fc10-i386 --kickstart=/root/fc10-i386.ks --path=/media sending incremental file list ./ .discinfo 37 100% 0.00kB/s 0:00:00 (xfer#1, to-check=2207/2209) .treeinfo 1159 100% 1.11MB/s 0:00:00 (xfer#2, to-check=2206/2209) GPL 18363 100% 3.50MB/s 0:00:00 (xfer#3, to-check=2205/2209) ... ... ... - url: http://@@http_server@@/cobbler/ks_mirror/config/fc10-i386-5.repo - processing: /var/www/cobbler/ks_mirror/fc10-i386/repodata - processing: /var/www/cobbler/ks_mirror/fc10-i386/cache - processing: /var/www/cobbler/ks_mirror/fc10-i386/Packages - processing: /var/www/cobbler/ks_mirror/fc10-i386/images - processing: /var/www/cobbler/ks_mirror/fc10-i386/images/pxeboot - processing: /var/www/cobbler/ks_mirror/fc10-i386/isolinux ---------------- (associating kickstarts) - using kickstart file /root/fc10-net.ks ---------------- (syncing)
ตัวอย่างไฟล์ต่างๆ ที่คำสั่ง cobber import สร้างขึ้น
[root@image-server ~]# ls /var/lib/tftpboot/ elilo-3.6-ia64.efi images memdisk menu.c32 pxelinux.0 pxelinux.cfg s390x [root@image-server ~]# ls /var/www/cobbler/ks_mirror/fc10-i386/ cache RPM-GPG-KEY-fedora-10-primary RPM-GPG-KEY-fedora-test-ia64 GPL RPM-GPG-KEY-fedora-i386 RPM-GPG-KEY-fedora-test-ppc images RPM-GPG-KEY-fedora-ia64 RPM-GPG-KEY-fedora-test-ppc64 isolinux RPM-GPG-KEY-fedora-ppc RPM-GPG-KEY-fedora-test-primary media.repo RPM-GPG-KEY-fedora-ppc64 RPM-GPG-KEY-fedora-test-x86_64 Packages RPM-GPG-KEY-fedora-primary RPM-GPG-KEY-fedora-x86_64 README-BURNING-ISOS-en_US.txt RPM-GPG-KEY-fedora-test TRANS.TBL repodata RPM-GPG-KEY-fedora-test-10-primary RPM-GPG-KEY-fedora RPM-GPG-KEY-fedora-test-i386
รันเซอร์วิส DHCP Server
จากการรันคำสั่ง cobbler import เราจะได้ไฟล์คอนฟิกของ dhcp server มาด้วย ตรวจสอบ ip address และ range ip ให้ตรงกับ server แล้วรันเซอร์วิส DHCP Server
[root@image-server ~]# cat /etc/dhcpd.conf # ****************************************************************** # Cobbler managed dhcpd.conf file # generated from cobbler dhcp.conf template (Sun Dec 7 20:31:48 2008) # ****************************************************************** ddns-update-style interim; allow booting; allow bootp; omapi-port 647; ignore client-updates; set vendorclass = option vendor-class-identifier; subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.1.100 192.168.1.254; filename "/pxelinux.0"; default-lease-time 21600; max-lease-time 43200; next-server 192.168.1.1; } # group for Cobbler DHCP tag: default group { }
ใช้คำสั่ง service เพื่อรันเซอร์วิส dhcpd
[root@image-server ~]# service dhcpd start Starting dhcpd: [ OK ]
ทดสอบติดตั้งบนเครื่องไคลเอนต์ด้วย Network boot
ต่อเครื่องไคลเอนต์ที่จะติดตั้ง เข้ากับเน็ตเวิร์ก แล้วเลือกบู๊ตแบบ Network Boot ถ้าคอนฟิกถูกต้อง หน้าจอไคลเอนต์ จะขึ้น Cobbler boot menu ตามรูป