天天看點

基于pxe httpd dhcp Kickstart 實作linux自動化安裝

基于pxe httpd dhcp Kickstart 實作linux自動化安裝

pxe:預啟動執行環境,是由intel公司開發,工作于C/S網絡模式,用于網絡引導作業系統.

http:超文本傳輸協定,這裡的角色僅提供安裝系統所需的軟體包

kickstart: 是什麼

       許多系統管理者甯願使用自動化的安裝方法來安裝紅帽企業 Linux.為了滿足這種需要,紅帽建立了kickstart安裝方法.使用kickstart,系統管理者可以建立一個檔案,這個檔案包含了在典型的安裝過程中所遇到的問題的答案.

       Kickstart檔案可以存放于單一的伺服器上,在安裝過程中被獨立的機器所讀取.這個安裝方法可以支援使用單一kickstart檔案在多台機器上安裝紅帽企業Linux,這對于網絡和系統管理者來說是個理想的選擇.

       Kickstart給使用者提供了一種自動化安裝紅帽企業Linux的方法.  

1、用戶端開機啟動時,會根據用戶端主機主機闆上的BIOS設定的啟動順序啟動.如果沒有找到bootload,就會根據啟動順序與其對應的啟動媒體啟動.

2、如果是DHCP網絡啟動的話,用戶端首先會向其伺服器請求IP位址以及mask

3、伺服器響應用戶端并配置設定IP及其Mask

4、當用戶端擷取其IP及Mask之後還會向伺服器發送請求擷取啟動安裝的bootload,及其系統安裝時需要檔案

5、Tftp Server 會響應用戶端,提供啟動安裝時所需的檔案

6、用戶端将伺服器提供的啟動軟體包下載下傳至本地,并在記憶體中執行安裝

        簡單介紹:其實能夠提供這bootload,及其安裝系統所需檔案的伺服器除了tftp之外,還有ftp,http

tftp: Trivial file transfer server , 簡單檔案傳輸協定,由于開發初期就是為了提供高效傳輸小檔案,是以是基于udp協定開發的,并監聽在udp:69,等待用戶端的請求;不過用戶端對Tftp的需求并不是特别高,是以每次系統啟動時都需要開啟的話,其實挺浪費資源的.是以tftp實在後端工作的,睡眠狀态.

在linux系統中有這樣的一種程序:叫做超級守護程序:xinetd:就是為了那些極少接收使用者請求的服務,專門提供監聽功能負責代替Tftp伺服器監聽udp:69号端口,事實上當使用者請求到來之後xinetd,負責喚醒Tftp響應用戶端請求

瞬時(非獨立)守護程序:它們無須定義在運作級别下,隻需要一次性地定義xinetd的運作級别 瞬時守護程序基于xinetd的配置檔案:/etc/xinetd.d/Service_name

什麼是:pxe預啟動執行環境,是由intel公司開發,工作于C/S網絡模式,用于網絡引導作業系統

1、配置DHCP伺服器

# yum -y install dhcp
# vim /etc/dhcp/dhcpd.conf      
ddns-update-style interim;
#表示dhcp伺服器和dns伺服器的動态資訊更新模式。這行必須要有dhcp伺服器才能啟動以來。
subnet 172.16.0.0 netmask 255.255.0.0 {
#subnet 定義網段DHCP工作的網段
    option routers        172.16.0.1;   # 預設網關
    option subnet-mask    255.255.255.0;  # 子網路遮罩掩碼
    option domain-name     "Mozilla.com"; # 用戶端所在域的名稱
    option domain-name-servers  220.2.2.2,220.2.2.1; # 首選DNS,以及備用DNS伺服器的IP位址
    option time-offset      -180000;
    range dynamic-bootp 172.16.251.100 172.16.251.254; # 能夠相容bootp;以及IP位址池,能夠配置設定IP的位址範圍
    default-lease-time 21600; #預設租約時間
    max-lease-time 43200;  #最大租約時間
    next-server 172.16.251.67; #tftp Sserver 的ip位址
    filename "pxelinux.0";
}      

2、啟動服務

# service dhcpd start      
# tail -f /var/log/boot.log      

   注釋:# tail -f /var/log/boot.log,能夠檢視用戶端請求dhcp伺服器擷取IP的過程

3、配置tftp-server

# yum -y install xinetd tftp-server tftp
# chkconfig xinetd on
# chkconfig tftp on
# service xinetd start
# ss -unl | grep ":69"      

3、準備安裝樹,将挂載在media/cdrom 通過mount指令綁定到web服務DocumentRoot

# mkdir /var/www/html/centos6
# mount --bind /media/cdrom /var/www/html/centos6
# service httpd start      

4、準備tftpboot下的檔案,tftp預設檔案存放的根目錄/var/lib/tftpboot/

# yum -y install syslinux
# cp /media/cdrom/p_w_picpaths/pxeboot/{vmlinuz,initrd.img}  /var/lib/tftpboot/
# cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg}  /var/lib/tftpboot/
# cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/
# mkdir /var/lib/tftpboot/pxelinux.cfg
# cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default      

5、提供kickstart檔案 kickstart檔案是一個簡單的文本檔案,它包含了一個項目清單,每個項目由一個關鍵字來識别.可以用「Kickstart 配置」應用程式建立它或是自己從頭編寫.紅帽企業Linux安裝程式也根據在安裝過程中的選擇建立一個簡單的kickstart檔案,這個檔案被寫入到/root/anaconda-ks.cfg.可以用任何能夠把檔案儲存為ASCII文本的文本編輯器或字處理器來編輯它.  編輯好kickstart檔案後儲存至/var/www/html目錄下;這裡假設為ks.cfg

# Kickstart file automatically generated by anaconda.
#version=DEVEL
#版本名稱
install
url --url=http://172.16.251.67/Centos6.5     #安裝樹的url路徑,因為我們這裡是基于http是以,如果是ftp:ftp://path
lang en_US.UTF-8 #預設語言以及字元集
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6 #定義網絡類型,noboot yes:自動啟動,裝置名稱,擷取位址的方式,不啟動ipv6
rootpw  --iscrypted $6$CGsqab6d$Cd.PnnWtlL5XZAyr9J2zoMqyJH1QodcDp1pQp0uZ1f0Cq4eq9.TMkSQU6IfpvYZEYc32.lmF0lKuQwavnC49a0 #root的密碼這裡使用iscrypted 加密存放
#Reboot after installation
reboot #安裝之後立即重新啟動
firewall --disabled #預設iptables防火牆
authconfig --useshadow  --passalgo=sha512 #預設使用者密碼加密方式使用的是sha512
selinux --disabled #安裝時不啟動selinux
timezone Asia/Shanghai  #安裝的時區上海
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet" #定義bootload安裝在本地mbr中 并建立建立裝置sda
# 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 #将系統中的所有分區清空格式化
zerombr     #将mbr格式化
text #安裝方式text文本安裝
#part /boot --fstype=ext4 --size=200  #定義boot分區檔案系統類型以及的大小
#part pv.008002 --size=61440
volgroup vg0 --pesize=8192 pv.008002
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
logvol swap --name=swap --vgname=vg0 --size=2048
logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480
#建立lvs邏輯卷
repo --name="CentOS"  --baseurl=http://172.16.251.67/Centos6.5
%packages
@Base
@Core
@base
@basic-desktop
@chinese-support
@client-mgmt-tools
@core
@desktop-platform
@fonts
@general-desktop
@graphical-admin-tools
@legacy-x
@network-file-system-client
@perl-runtime
@remote-desktop-clients
@x11
ibus-table-cangjie
ibus-table-erbi
ibus-table-wubi
lftp
#需要安裝的包組
# 1.每節必須按順序指定.除非特别申明,每節内的項目則不必按序排列.小節的順序為:
                        #指令部分,這裡應該包括必需的選項.
                        #%packages部分,這部分選擇需要安裝的軟體包.
                        #%pre和%post部分,這兩個部分可以按任何順序排列而且不是必需的.
                #2.不必需的項目可以被省略.
                #3.如果忽略任何必需的項目,安裝程式會提示使用者輸入相關的項目的選擇,就象使用者在典型的安裝過程中所遇到的一樣.一旦使用者進行了選擇,安裝會以非互動的方式(unattended)繼續(除非找到另外一個沒有指定的項目).
                #4.以井号("#")開頭的行被當作注釋行并被忽略.
        對于 kickstart 更新,下列項目是必需的:
                #1.語言
                #2.安裝方法
                #3.裝置規格(如果這個裝置是在安裝過程中所需要的)
                #4.鍵盤設定
                #5.upgrade 關鍵字
                #6.引導裝載程式配置
                #7.如果任何其他的項目被指定為upgrade,這些項目将被忽略(注意這包括了軟體包選擇).
                                                                                                                                                                                                                  
 #kickstart預安裝腳本
        #可以在 ks.cfg檔案被解析後馬上加入要運作的指令.這個部分必須處于kickstart檔案的最後(在指令部分之後)而且必須用%pre指令開頭.可以在%pre部分通路網絡;然而,此時命名服務還未被配置,是以隻能使用IP位址.
        #注:預安裝腳本不在改換了的根環境(chroot)中運作.
        -#-interpreter /usr/bin/python,允許指定不同的腳本語言,如Python.把/usr/bin/python替換成想使用的腳本語言.
#kickstart安裝後腳本
        #也可以加入在系統安裝完畢後運作的指令.這部分内容必須在kickstart的最後而且用%post指令開頭.它被用于實作某些功能,如安裝其他的軟體和配置其他的命名伺服器.
        #注:如果用靜态IP資訊和命名伺服器配置網絡,可以在%post部分通路和解析IP位址.如果使用DHCP配置網絡,當安裝程式執行到%post部分時,/etc/resolv.conf檔案還沒有準備好.此時,可以通路網絡,但是不能解析IP位址.是以,如果使用DHCP,必須在%post部分指定IP位址.
        #注:post-install 腳本是在 chroot 環境裡運作的.是以,某些任務如從安裝媒體複制腳本或RPM将無法執行.
        #--nochroot,允許指定想在chroot環境之外運作的指令.
                #下例把/etc/resolv.conf檔案複制到剛安裝的檔案系統裡.
                #%post --nochroot cp /etc/resolv.conf /mnt/sysp_w_picpath/etc/resolv.conf
        #--interpreter /usr/bin/python
                #允許指定不同的腳本語言,如Python.把/usr/bin/python替換成想使用的腳本語言.      

   6、配置引導程式能自動加載此kickstart檔案 編輯/var/lib/tftpboot/pxelinux.cfg/default 在label為linux項的append一行後附加: ks=

http:

//172

.16.251.67/ks.cfg

繼續閱讀