PXE自動化批量安裝Linux操作系統

 

概述

1.1  說明

本手冊用於批量自動化安裝Linux操作系統

PXE介紹

2.1 什麼是PXE

PXE(preboot execute environment)是由Intel公司開發的最新技術,工作於Client/Server的網絡模式,支持工作站通過網絡從遠端服務器下載映像,並由此支持來自網絡的操作系統的啓動過程,其啓動過程中,終端要求服務器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協議下載一個啓動軟件包到本機內存中並執行,由這個啓動軟件包完成終端基本軟件設置,從而引導預先安裝在服務器中的終端操作系統。PXE可以引導多種操作系統,如:Windows95/98/2000,linux等。

2.2  PXE工作過程

 

第一步:PXE Client向DHCP發送請求

首先,將支持PXE的網絡接口卡(NIC)的客戶端的BIOS設置成爲網絡啓動,通過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,VSFTP),則會在這個時候初始化網絡,並定位安裝源位置。或許你會說,剛纔PXE不是已經獲取過IP地址了嗎?爲什麼現在還需要一次?這是由於PXE獲取的是安裝用的內核以及安裝程序等,而安裝程序要獲取的是安裝系統所需的二進制包以及配置文件。由於它們需要的內容不同造成PXE模塊和安裝程序是相對獨立的,PXE的網絡配置並不能傳遞給安裝程序。從而進行兩次獲取IP地址過程。

接着會讀取該文件中指定的自動應答文件ks.cfg所在位置,根據該位置請求下載該文件。

第六步:客戶端安裝操作系統

將ks.cfg文件下載回來後,通過該文件找到OS Server,並按照該文件的配置請求下載安裝過程需要的軟件包。

OS Server和客戶端建立連接後,將開始傳輸軟件包,客戶端將開始安裝操作系統。安裝完成後,將提示重新引導計算機。這個時候注意,在重新引導的過程中一定要將BIOS修改回從硬盤啓動,不然的話又會重複的自動安裝操作系統。

在上面介紹中PXE client是需要安裝Linux的計算機,TFTP Server、DHCP Server和VSFTP Server運行在另外一臺Linux Server上。Bootstrap文件、配置文件、Linux內核都放置在Linux Server上TFTP服務器的根目錄下。

PXE client在工作過程中,需要三個二進制文件:bootstrap、Linux 內核和Linux根文件系統。Bootstrap文件是可執行程序,它向用戶提供簡單的控制界面,並根據用戶的選擇,下載合適的Linux內核以及Linux根文件系統。

PXE安裝

3.1 安裝環境

服務端操作系統:RedHat Enterprise Linux AS 5 update 4

服務端ip地址是:192.168.0.251 子網掩碼是:255.255.255.0

注:本次安裝PXE,所有服務端程序均安裝在一臺服務器上,服務端需要關閉iptables和selinux服務。客戶端批量安裝的操作系統爲RedHat Enterprise Linux AS 5 update 4。

3.2 安裝所需軟件及相關文件

xinetd

tftp-server

dhcp

vsftpd(可選httpd或nfs)

syslinux

ks.cfg配置文件

注:一般情況下軟件安裝包都可以在安裝光盤中找到如果法在安裝光盤中找到適合的安裝包,可以通過yum方式安裝。

3.3 安裝及配置

3.3.1 安裝所需軟件

網絡安裝

yum install vsftpd tftp-server dhcpd xinetd syslinux

本地安裝

掛載系統光盤

# mount /dev/cdrom /mnt

進入軟件包存放目錄安裝

# rpm -ivh vsftpd tftp-server dhcpd xinetd syslinux

3.3.2 配置IP地址

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

TYPE=Ethernet

ONBOOT=yes

IPADDR=192.168.0.251

NETMASK=255.255.255.0

配置完畢,重啓網絡服務生效。

#service network restart

3.3.3 配置dhcp服務

#vi /etc/dhcpd.conf

ddns-update-style interim;

ignore client-updates;

allow booting;

allow bootp;

subnet 192.168.0.0 netmask 255.255.255.0 {

range dynamic-bootp 192.168.0.130 192.168.0.250;

}

option subnet-mask 255.255.255.0;

option broadcast-address 192.168.0.255;

default-lease-time 21600;

max-lease-time 43200;

Next-server 192.168.0.251;

Filename "/pxelinux.0";

配置完畢,重啓dhcp服務生效

# service dhcpd restart

3.3.4 配置tftp服務

tftp是爲了給待安裝的客戶端機器發送啓動文件(包括initrd.imgvmlinuzpxelinux.0、default的簡單文件傳輸服務。這個配置比較簡單,只需把配置文件中的disable那項的yes改成no即可

# vi /etc/xinetd.d/tftp 

service tftp

{

        socket_type             = dgram

        protocol                = udp

        wait                    = yes

        user                    = root

        server                  = /usr/sbin/in.tftpd

        server_args             = -s /var/lib/tftpboot

        disable                 = no

        per_source              = 11

        cps                     = 100 2

        flags                   = IPv4

}

配置完畢,重啓xinetd服務生效

# service xinetd restart

3.3.5 配置syslinux

  配置tftpboot目錄內的文件

複製 RedHat Enterprise Linux AS 5 update 4 安裝光盤中 /p_w_picpaths/pxeboot/ 目錄下的initrd.img和vmlinuz到/tftpboot目錄下。

#mount /dev/cdrom /mnt 

#cp /mnt//p_w_picpaths/pxeboot/vmlinuz /tftpboot

#cp /mnt/p_w_picpaths/pxeboot/initrd.img /tftpboot

#cp /usr/lib/syslinux/pxelinux.0 /tftpboot

#mkdir /tftpboot/pxelinux.cfg

#cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

#chmod 755 /tftpboot/pxelinux.cfg/default

  #vi /tftpboot/pxelinux.cfg/default

default linux

prompt 1

timeout 600

display boot.msg

F1 boot.msg

F2 options.msg

F3 general.msg

F4 param.msg

F5 rescue.msg

label linux

  kernel vmlinuz

  append initrd=initrd.img ks=ftp://192.168.0.251/ks.cfg ksdevice=eth0

# append initrd=initrd.img ks=http://192.168.0.251/ks.cfg ksdevice=eth0

label text

  kernel vmlinuz

  append initrd=initrd.img text 

label ks

  kernel vmlinuz

  append ks initrd=initrd.img

label local

  localboot 1

label memtest86

  kernel memtest

  append -

/tftpboot 目錄下的內容如下:

-rw-r--r--  1 root root 4266944 Feb  1 10:05 initrd.img

-rw-r--r--  1 root root 1545551 Feb  1 10:05 vmlinuz

-rwxr-xr-x  1 root root   16466 Feb  1 10:04 pxelinux.0

-drwxr-xr-x  2 root root    4096 Feb  5 11:31 pxelinux.cfg

.----------rwxr-xr-x 1 root root 103 Feb  5 11:31 default(此文件在pxelinux.cfg目錄下

3.3.6 配置vsftp或者http服務

默認安裝,無需配置,啓動服務。

# service vsftpd start

# service httpd start

3.3.7 配置ks.cfg文件

ks.cfg是待安裝機器的所有的配置文件,ks.cfg文件的獲取方式由兩種:一種是使用kickstart軟件在圖形界面下設置生成ks.cfg文件;另一種方法是在安裝過linux系統的服務器,/root目錄下都會自動生成一個anaconda-ks.cfg文件,裏面記錄了在安裝系統的時候所做的所有操作,可以使用這個文件進行編輯生成需要的ks.cfg文件。

將配置好的ks.cfg放置在/var/ftp目錄下或放置/var/www/html目錄下。

#cp ks.cfg /var/ftp/

#chmod 755 /var/ftp/ks.cfg

#cp ks.cfg /var/www/html/

#chmod 755 /var/ftp/ks.cfg

注:通過修改anaconda-ks.cfg 編輯出自己所要的ks.cfg一下使用的ks.cfg針對(RHEL5.4- HP DL360G7)

# Kickstart file automatically generated by anaconda.

install

url --url=ftp://192.168.0.251/rhel5u4

#url --url=http://192.168.0.251/rhel5u4

key 6efd911e6fea5d91

lang en_US.UTF-8

keyboard us

network --device eth0 --bootproto dhcp

network --device eth1 --onboot no --bootproto dhcp

network --device eth2 --onboot no --bootproto dhcp

network --device eth3 --onboot no --bootproto dhcp

rootpw --iscrypted $1$g3qFyfby$1wzywa/63vqqvZ2NaBBdp1

firewall --disabled

authconfig --enableshadow --enablemd5

selinux --disabled

timezone Asia/Shanghai

reboot

services --disable auditd,autofs,avahi-daemon,bluetooth,cups,firstboot,iptables,ip6tables,kudzu,lm_sensors,lvm2-monitor,netfs,nfslock,pcscd,portmap,rhnsd,rpcgssd,rpcidmapd,sendmail,xfs,yum-updatesd

user --name=wgliu --password=$1$MPqU6lgH$Zl.nNz7xZBmLYQGW0eqIc. --iscrypted

bootloader --location=mbr --driveorder=cciss/c0d0

# 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 --initlabel --drives=cciss/c0d0  

part /boot --fstype ext3 --size=200

part swap --size=4096

part / --fstype ext3 --size=100 --grow

%packages

@base

@chinese-support

@core

@development-libs

@development-tools

@editors

@ftp-server

@legacy-software-development

@legacy-software-support

@system-tools

@text-internet

fipscheck

device-mapper-multipath

sgpio

imake

emacs

audit

net-snmp-utils

sysstat

iptraf

-bluez-hcidump

注意:

bootloader --location=mbr --driveorder=cciss/c0d0 

紅色部分爲HP 磁盤陣列控制器,各個廠商的控制器不同,需要做相應修改,可參考已安裝的服務器上的anaconda-ks.cfg

rootpw --iscrypted $1$g3qFyfby$1wzywa/63vqqvZ2NaBBdp1  

root密碼的設置(紅色部分的由來)

[root@localhost ~]# openssl passwd -1

Password: (輸入你要設置的密碼)

Verifying - Password: (再次輸入你要設置的密碼)

$1$g3qFyfby$1wzywa/63vqqvZ2NaBBdp1(生成加密後的字符串)

user --name=xxx --password=$1$MPqU6lgH$Zl.nNz7xZBmLYQGW0eqIc. --iscrypted

添加指定的用戶xxx,用戶密碼的設置同上。

url --url=ftp://192.168.0.251/rhel5u4 

網絡安裝源的設置,可以根據實際情況進行修改。

3.3.8 設置網絡安裝目錄樹

vsftp版安裝目錄樹

#mount /dev/cdrom /mnt

#mkdir /var/ftp/rhel5u4

#cp -rf /mnt/* /var/ftp/rhel5u4

複製過程等待時間長.....

http版安裝目錄樹

#mount /dev/cdrom /mnt

#mkdir /var/ftp/rhel5u4

#cp -rf /mnt/* /var/www/html/rhel5u4

複製過程等待時間長.....

啓動所有相關的服務

#service vsftpd restart

#service xinetd restart

#service dhcpd restart

客戶端服務器安裝

客戶端服務器安裝操作系統時,可以單臺通過網線直連pxe服務端服務器,也可以多臺通過交換機連接到pxe服務端服務器,客戶端服務器通電啓動時通常按f12(此按鍵因服務器生產廠家不同而可能不同)鍵進入pxe自動安裝。

附錄

ks.cfg文件的配置請參考redhat官方文檔:

https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章