Linux下KickStart+PXE無人值守裝機服務器的配置


1、什么是KickStart

KickStart是一種無人職守安裝方式。KickStart的工作原理是通過記錄典型的安裝過程中所需人工干預填寫的各種參數,並生成一個名為ks.cfg的文件;在其后的安裝過程中(不只局限於生成KickStart安裝文件的機器)當出現要求填寫參數的情況時,安裝程序會首先去查找KickStart生成的文件,當找到合適的參數時,就采用找到的參數,當沒有找到合適的參數時,才需要安裝者手工干預。這樣,如果KickStart文件涵蓋了安裝過程中出現的所有需要填寫的參數時,安裝者完全可以只告訴安裝程序從何處取ks.cfg文件,然后去忙自己的事情。等安裝完畢,安裝程序會根據ks.cfg中設置的重啟選項來重啟系統,並結束安裝。

2、PXE技術的基本原理

(1)客戶端開機后,PXE BootROM(自啟動芯片)獲得控制權之前執行自我測試,然后以廣播形式發出一個請求FIND幀。
(2)如果服務器收到客戶端所送出的要求,就會送回DHCP回應,包括用戶端的IP地址、預設通信通道,以及開機映像文件;否則服務器會忽略這個要求。
(3)客戶端收到服務器發回的響應后則會回應一個幀,以請求傳送啟動所需文件,並把自己的MAC地址寫到服務器端的Netnames.db文件中。
(4)將有更多的消息在客戶端與服務器之間應答,用於決定啟動參數。BootROM由TFTP通信協議從服務器下載開機映像文檔。客戶端使用TFTP協議接收啟動文件后,將控制權轉交 啟動塊以引導操作系統,完成遠程啟動。

3、配置步驟

(1)配置DHCP服務器:用於給客戶端提供IP地址及其它信息

[root@localhost ~]# more /etc/dhcp/dhcpd.conf 
ddns-update-style interim;
ignore client-updates;
log-facility local7;
allow booting;
allow bootp;

subnet 192.168.244.0 netmask 255.255.255.0 {
# 192.168.244.0是我設定的裝機網段
        option routers 192.168.244.200;
        option subnet-mask 255.255.255.0;
        option domain-name-servers 192.168.244.200;

# 指定裝機網段的IP地址范圍 range dynamic
-bootp 192.168.244.100 192.168.244.150; default-lease-time 21000; max-lease-time 43200;
# 指定TFTP服務器的IP地址(一般情況下TFTP服務器和DHCP服務器為同一台) next-server 192.168.244.200; filename "/pxelinux.0"; }

(2)配置TFTP服務器:用於客戶端PXE引導所需要的文件

[root@localhost ~]# mkdir /tftpboot 
[root@localhost ~]# more /etc/xinetd.d/tftp 
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -u nobody -s /tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

(3)web服務器的配置以及ks文件的修改

這里選擇以web方式讀取系統鏡像,也可以選擇搭建NFS或者FTP服務器。

DocumentRoot "/var/www/html"

mkdir -p /var/www/html/systemiso/centos/6.0/i386/
cp /root/anaconda-ks.cfg /var/www/html/systemiso/centos/6.0/i386/ks.cfg

將centos6.0-i386的系統鏡像解壓放到網站對應目錄下面,修改ks.cfg

[root@localhost ~]# more /var/www/html/systemiso/centos/6.0/i386/ks.cfg 
# Kickstart file automatically generated by anaconda.

#version=RHEL6
install
#text
#cdrom
url --url http://192.168.244.200/systemiso/centos/6.0/i386/
lang en_US.UTF-8
keyboard us
rootpw  --iscrypted $6$SFBKXp0kSytxgoWU$Xkq9FOUQ9slHzrcGbr3RIZEw47nPggdp.m2vnaalyq..fmKtd8v7.6sShxriiYbB0g5Y9PYOY8yKfiFD6td.Y/
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512 --enablefingerprint
selinux --enforcing
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto 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 --none --drives=sda
clearpart --all --initlabel

part /boot --fstype=ext4 --asprimary --size=100
part /var --fstype=ext4 --size=30000
part / --fstype=ext4 --size=10000

part swap --size=1000

#repo --name="centos"  --baseurl=file:///mnt/source --cost=100

%packages
@chinese-support
@core
@server-policy
%end

(4)PXE引導配置

PXE啟動映像文件由syslinux提供,安裝完syslinux之后,會生成一個pxelinux.0的文件,復制到/tftpboot目錄下。

[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/
[root@localhost ~]# mkdir /tftpboot/pxelinux.cfg/
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom
[root@localhost ~]# cp /mnt/cdrom/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
[root@localhost ~]# mkdir /tftpboot/CentOS-6.0-i386
[root@localhost ~]# cp /mnt/cdrom/isolinux/initrd.img vmlinuz /tftpboot/CentOS-6.0-i386 [root@localhost
~]# more /tftpboot/pxelinux.cfg/default default menu.c32 prompt 0 menu title PXE Boot Menu MENU AUTOBOOT Starting Local System in # seconds LABEL bootlocal menu label <^0> Boot from local disk menu default KERNEL chain.c32 hd0 timeout 600 LABEL CentOS-6.0-i386 MENU LABEL <^1> CentOS-6.0-i386 System install KERNEL CentOS-6.0-i386/vmlinuz APPEND initrd=CentOS-6.0-i386/initrd.img ks=http://192.168.244.200/systemiso/centos/6.0/i386/ks.cfg TEXT HELP instll CentOS-6.0-i386 system ENDTEXT LABEL show-IP_MAC MENU LABEL <^3> press [Tab] to show DHCP IP,gateway,MAC IPAPPEND 3 TEXT HELP ip=<dhcp-ip>:<dhcp-server-ip>:<gateway>:<netmask> BOOTIF=<MAC> ENDTEXT LABEL reboot MENU LABEL <^4> reboot system KERNEL reboot.c32 IPAPPEND 3 TEXT HELP ENDTEXT
## 如果沒有menu.c32、chain.c32這兩個文件,請從光盤中拷貝,放到/tftpboot下面,這兩個文件與裝機菜單有關
 
        

 (5)注意事項及后記

pxeserver需要關閉selinux和iptables,否則會在DHCP獲取IP之后,不能從tftp下載到引導文件。我在這里跌倒了不止一次,提醒一下后來人!

kickstart裝機可以定制的東西很多,包括裝機菜單,是自動化運維的一個很好的工具。后期完善可以結合瀏覽器,開發一個裝機平台,通過瀏覽器設置裝機參數,在裝機結束后返回各項信息到瀏覽器中。

寫的比較倉促,很多細節方面沒有考慮到,只是把重要的地方寫出來。如果有寫錯的地方,還請各位看官留言指出來,幫助我補充完善。予人玫瑰,手留余香。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM