1. 程式人生 > >KICKSTART無人值守安裝系統(上)

KICKSTART無人值守安裝系統(上)

PXE Pre-boot Execution Environment,預啟動執行環境;通過網路介面啟動計算機,不依賴本地儲存裝置(如硬碟)或本地已安裝的作業系統; Client/Server的工作模式; PXE客戶端會呼叫網際協議(IP)、使用者資料報協議(UDP)、動態主機設定協議(DHCP)、小型檔案傳輸協議(TFTP)等網路協議; PXE客戶端(client)這個術語是指機器在PXE啟動過程中的角色。一個PXE客戶端可以是一臺伺服器、膝上型電腦或者其他裝有PXE啟動程式碼的機器(我們電腦的網絡卡)。 PXE的工作過程: PXE Client向DHCP傳送請求 PXE Client從自己的PXE網絡卡啟動,通過PXE BootROM(自啟動晶片)會以UDP(簡單使用者資料報協議)傳送一個廣播請求,向本網路中的DHCP伺服器索取IP。 DHCP伺服器提供資訊 DHCP伺服器收到客戶端的請求,驗證是否來至合法的PXE Client的請求,驗證通過它將給客戶端一個“提供”響應,這個“提供”響應中包含了為客戶端分配的IP地址、pxelinux啟動程式(TFTP)位置,以及配置檔案所在位置。 PXE客戶端請求下載啟動檔案 客戶端收到伺服器的“迴應”後,會迴應一個幀,以請求傳送啟動所需檔案。這些啟動檔案包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等檔案。 Boot Server響應客戶端請求並傳送檔案 當伺服器收到客戶端的請求後,他們之間之後將有更多的資訊在客戶端與伺服器之間作應答, 用以決定啟動引數。BootROM由TFTP通訊協議從Boot Server下載啟動安裝程式所必須的檔案(pxelinux.0、pxelinux.cfg/default)。default檔案下載完成後,會根據該檔案中定義的引導順序,啟動Linux安裝程式的引導核心。 請求下載自動應答檔案 客戶端通過pxelinux.cfg/default檔案成功的引導Linux安裝核心後,安裝程式首先必須確定你通過什麼安裝介質來安裝linux,如果是通過網路安裝(NFS, FTP, HTTP),則會在這個時候初始化網路,並定位安裝源位置。接著會讀取default檔案中指定的自動應答檔案ks.cfg所在位置,根據該位置請求下載該檔案。 這裡有個問題,在第2步和第5步初始化2次網路了,這是由於PXE獲取的是安裝用的核心以及安裝程式等,而安裝程式要獲取的是安裝系統所需的二進位制包以及配置檔案。因此PXE模組和安裝程式是相對獨立的,PXE的網路配置並不能傳遞給安裝程式,從而進行兩次獲取IP地址過程,但IP地址在DHCP的租期內是一樣的。 客戶端安裝作業系統 將ks.cfg檔案下載回來後,通過該檔案找到OS Server,並按照該檔案的配置請求下載安裝過程需要的軟體包。 OS Server和客戶端建立連線後,將開始傳輸軟體包,客戶端將開始安裝作業系統。安裝完成後,將提示重新引導計算機。 ftp和tftp區別 TFTP(Trivial File Protocol , 簡單檔案傳輸協議),是一個基於UDP協議實現的客戶機和伺服器之間進行簡單的檔案傳輸協議,適合開銷不大、複雜的場合。 在嵌入式開發中,因為Uboot支援tftp服務,可以從伺服器上載入核心並執行。 tftp服務依賴xinetd服務,需要安裝xinetd,安裝tftp-server和安裝tftp客戶端, FTP 是完整、 面向會話、 常規用途檔案傳輸協議。 TFTP 用作 bones bare - 特殊目的檔案傳輸協議。 互動使用 FTP。 TFTP 允許僅單向傳輸的檔案。 FTP 依賴於 TCP, 是面向, 連線並提供可靠的控制元件。 TFTP 依賴 UDP, 需要減少開銷, 並提供幾乎沒有控制元件。 FTP 提供身份驗證。 TFTP 不提供。 FTP 使用已知 TCP 埠號: 20 的資料和 21 用於連線對話方塊。 TFTP 用於 UDP 埠號 69 其檔案傳輸活動。 理解syslinux Syslinux是一個Project,包含以下bootloader: SYSLINUX, for MS-DOS FAT filesystems PXELINUX, for network booting ISOLINUX, for bootable “El Torito” CD-ROMs EXTLINUX, for Linux ext2/ext3/ext4 or btrfs filesystems MEMDISK, for legacy operating systems (such as DOS) from nontraditional media 網路啟動使用的自然是PXELINUX了,而我們下載的release安裝包是整個Syslinux Project,所以網路裝機需要用到的pxelinux.0是yum install syslinux獲得的。 還有個很眼熟的ISOLINUX,這個在系統安裝光盤裡可以找到,而網路裝機所需要的pxelinux.cfg/default就是拷貝isolinux.cfg直接生成的。之所以可以這麼任性地改個名字就用,是因為對於所有的Syslinux bootloader,其基本配置是相同的(這個可以在Syslinux wiki裡看到介紹,配置可以參考“SYSLINUX中文介紹”)。 批量裝機軟體介紹 Redhat系主要有兩種Kickstart和Cobbler。 Kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄人工干預填寫的各種引數,並生成一個名為ks.cfg的檔案。如果在自動安裝過程中出現要填寫引數的情況,安裝程式首先會去查詢ks.cfg檔案,如果找到合適的引數,就採用所找到的引數;如果沒有找到合適的引數,便會彈出對話方塊讓安裝者手工填寫。所以,如果ks.cfg檔案涵蓋了安裝過程中所有需要填寫的引數,那麼安裝者完全可以只告訴安裝程式從何處下載ks.cfg檔案,然後就去忙自己的事情。等安裝完畢,安裝程式會根據ks.cfg中的設定重啟/關閉系統,並結束安裝。 Cobbler集中和簡化了通過網路安裝作業系統需要使用到的DHCP、TFTP和DNS服務的配置。Cobbler不僅有一個命令列介面,還提供了一個Web介面,大大降低了使用者的入門水平。Cobbler內建了一個輕量級配置管理系統,但它也支援和其它配置管理系統整合,如Puppet,暫時不支援SaltStack。 簡單的說,Cobbler是對kickstart的封裝,簡化安裝步驟、使用流程,降低使用者的門檻。 系統環境準備 虛擬機器網絡卡採用NAT模式,不要使用橋接模式,因為稍後我們會搭建DHCP伺服器,在同一區域網多個DHCP服務會有衝突。 VMware的NAT模式的dhcp服務也關閉,避免干擾。 LAN區段相當於說模擬出一個交換機或者集線器出來,把不同虛擬機器連線起來,與物理機不進行資料交流,與外網也不進行資料交流,構建一個獨立的網路。沒有DHCP功能,需要手工配置IP或者單獨配置DHCP伺服器。 使用者設定一個網路區段,虛擬伺服器只能在該網路區段中進行資料通訊。 NAT模式主要通過VMware net8進行資料轉發和多個虛擬主機之間的通訊。此時的VMWare net8 相當於一個虛擬的路由器,該路由器的資料包通過主機的物理網絡卡向外轉發,且該虛擬路由器內含DHCP伺服器,虛擬伺服器可以通過DHCP方式自動獲取IP地址。虛擬伺服器和主機不在同一個網段。 NAT模式的虛擬機器是不能被LAN內其他PC訪問的,是拒絕其他的計算機訪問的,只能虛擬機器訪問LAN內的其他計算機。 (配置vlan 與本文無關

https://wiki.archlinux.org/index.php/VLAN_(簡體中文) ip link set dev ens33 up ip link add link ens37 name vlan type vlan id 100 ip addr add 10.100.10.1/24 brd 10.100.10.255 dev vlan ip link set dev vlan up systemctl restart network)

ip link set dev ens37 up ip addr add 10.100.10.1/24 dev ens37 systemctl restart network 安裝DHCP DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)通常被應用在大型的區域網絡環境中,主要作用是集中的管理、分配IP地址,使網路環境中的主機動態的獲得IP地址、閘道器地址、DNS伺服器地址等資訊,並能夠提升地址的使用率。 DHCP服務安裝配置: yum -y install dhcp rpm -ql dhcp |grep “dhcpd.conf”

vim /etc/dhcp/dhcpd.conf subnet 10.100.10.0 netmask 255.255.255.0 { range 10.100.10.10 10.100.10.254; # 可分配的起始IP-結束IP option subnet-mask 255.255.255.0; # 設定netmask default-lease-time 21600; # 設定預設的IP租用期限 max-lease-time 43200; # 設定最大的IP租用期限 next-server 10.100.10.1; # 告知客戶端TFTP伺服器的ip filename “/pxelinux.0”; # 告知客戶端從TFTP根目錄下載pxelinux.0檔案 #option domain-name-servers

www.baidu.com; #option domain-name “10.100.10.1”; #option routers 10.100.10.1; #option broadcast-address 10.100.10.255; } grep -vE “$|#” /etc/dhcp/dhcpd.conf

systemctl restart dhcpd ss -aunlp |grep 67 UNCONN 0 0 *:67 : users:((“dhcpd”,pid=6106,fd=7))

本來軟體裝完後都要加入開機自啟動,但這個Kickstart系統就不能開機自啟動,而且用完後服務都要關閉,防止未來重啟伺服器自動重灌系統了。 如果機器數量過多的話,注意dhcp伺服器的地址池,不要因為耗盡IP而導致dhcpd伺服器沒有IP地址release的情況。

DHCP指定監聽網絡卡,多網絡卡預設監聽eth0,指定DHCP監聽eth1網絡卡

cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/ vi /etc/systemd/system/dhcpd.service ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid ens37 systemctl --system daemon-reload systemctl restart dhcpd.service 安裝TFTP服務 yum -y install xinetd tftp-server 安裝tftp-server需要依賴於xinetd,tftp服務依賴於網路守護程序服務程式xinetd vim /etc/xinetd.d/tftp disable = no #由原來的yes改為no systemctl restart xinetd systemctl restart tftp.socket systemctl restart tftp.service

ss -atunlp |grep 69 udp UNCONN 0 0 :69 : users:((“in.tftpd”,pid=1942,fd=0),(“xinetd”,pid=1811,fd=5)) udp UNCONN 0 0 :::69 ::: users:((“in.tftpd”,pid=1825,fd=0),(“systemd”,pid=1,fd=68)) tftp的預設根目錄為/var/lib/tftpboot,安裝時會自動建立。 Windows客戶端獲取檔案格式:TFTP [-i] host [GET | PUT] source [destination] tftp ip地址 tftp>get 檔名 tftp>put 檔名  tftp>quit 配置HTTP服務 yum -y install httpd cd /etc/httpd/conf.d/ mv welcome.conf welcome.confbak mkdir /var/www/html/centos-7 mount /dev/cdrom /var/www/html/centos-7/ (只要把安裝光碟內容能通過web釋出即可。檔案掛載: mount -t iso9660 -o loop CentOS-7-x86_64-Minimal-1804.iso /var/www/html/centos-7/) 瀏覽器訪問http://10.100.10.1/centos-7/檢驗配置是否正確。 配置支援PXE的啟動程式 syslinux是一個功能強大的引導載入程式,而且相容各種介質。SYSLINUX是一個小型的Linux作業系統,它的目的是簡化首次安裝Linux的時間,並建立修護或其它特殊用途的啟動盤。如果沒有找到pxelinux.0這個檔案,可以安裝一下。 yum -y install syslinux cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ # 複製啟動選單程式檔案 cp -a /var/www/html/centos-7/isolinux/* /var/lib/tftpboot/ ls /var/lib/tftpboot/ mkdir -p /var/lib/tftpboot/pxelinux.cfg #新建一個pxelinux.cfg目錄,存放客戶端的配置檔案。 cp /var/www/html/centos-7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

配合虛擬機器演示講解default檔案: 在安裝系統之前,計算機的硬體上可能是沒有作業系統的,因此為了能夠執行安裝程式,需要一個臨時的作業系統,引導開機,啟動安裝程式,在使用光碟安裝操作 Linux 系統(這裡特指 RHEL 系列的系統)時,一共有兩個階段,分別為引導和安裝。 使用光碟引導時,系統啟動過程為 POST(加電自檢) —> BIOS 進行硬體檢測並載入光碟的 MBR —> 光碟的載入程式為 isolinux.bin,它根據 isolinux.cfg 生成一個選單。當用戶選擇安裝作業系統後,載入程式載入核心(vmlinuz)和 initrd.img 檔案,initrd.img 會在記憶體中生成一個臨時的作業系統,為安裝過程提供一個安裝環境。當系統切換至 initrd 檔案系統後,initrd.img 中的 init 程序呼叫 /sbin/loader 程式,loader 探測安裝介質,載入光碟 /images/stage2.img (在 RHEL6 中叫 install.img ),切換到 stage2,stage2.img 的檔案系統型別是 suqashfs,安裝系統的程式 anaconda 就包含其中。 stage2.img 是 SquashFS 型別檔案系統,其中包含了安裝程式 anaconda 和它的配置檔案。anaconda 提供了安裝過程的配置介面,它可以提供文字、圖形等安裝管理方式,並支援 kickstart 等指令碼提供自動安裝的功能。在安裝系統之後會自動生成 /root/anaconda-ks.cfg 的配置資訊,其中記錄了安裝系統所選取選項自動生成的,方便以後自動安裝。 輸入ESC可以進入命令列介面。