kickstart無人值守安裝
PXE介紹
PXE(Pre-boot Execution Environment,預啓動執行環境)是由Intel公司開發的最新技術,工作於Client/Server的網絡模式,支持工作站通過網絡從遠端服務器下載映像,並由此支持通過網絡啓動操作系統,在啓動過程中,終端要求服務器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicasttrivial file transfer protocol)協議下載一個啓動軟件包到本機內存中執行,由這個啓動軟件包完成終端基本軟件設置,從而引導預先安裝在服務器中的終端操作系統。
嚴格來說,PXE 並不是一種安裝方式,而是一種引導方式。進行 PXE 安裝的必要條件是在要安裝的計算機中必須包含一個 PXE 支持的網卡(NIC),即網卡中必須要有 PXE Client。PXE 協議可以使計算機通過網絡啓動。此協議分爲 Client端和 Server 端,而PXE Client則在網卡的 ROM 中。當計算機引導時,BIOS 把 PXE Client 調入內存中執行,然後由 PXE Client 將放置在遠端的文件通過網絡下載到本地運行。運行 PXE 協議需要設置 DHCP 服務器和 TFTP 服務器。DHCP 服務器會給 PXE Client(將要安裝系統的主機)分配一個 IP 地址,由於是給 PXE Client 分配 IP 地址,所以在配置 DHCP 服務器時需要增加相應的 PXE 設置。此外,在 PXE Client 的 ROM 中,已經存在了 TFTP Client,那麼它就可以通過 TFTP 協議到 TFTP Server 上下載所需的文件了。
2. 無人值守安裝原理圖:
PXE的工作過程:
PXE Client 從自己的PXE網卡啓動,向本網絡中的DHCP服務器索取IP;
DHCP 服務器返回分配給客戶機的IP以及PXE文件的放置位置(該文件一般是放在一臺TFTP服務器上) ;
PXE Client 向本網絡中的TFTP服務器索取pxelinux.0文件;
PXE Client 取得pxelinux.0 文件後之執行該文件;
根據pxelinux.0 的執行結果,通過TFTP服務器加載內核和文件系統 ;
進入安裝畫面, 此時可以通過選擇HTTP、FTP、NFS 方式之一進行安裝;
詳細工作流程,請參考下面這幅圖:
3.環境需求
實驗環境 | VMware workstations 11.0 |
系統平臺 | CentOS6.7(Final 最小化安裝) |
網絡採用NAT | 網關10.0.0.2 |
NFS、TFTP服務器的地址 | 10.0.0.9 |
DHCP服務器地址 | 10.0.0.9 |
4.操作步驟:
創建掛載目錄:
mkdir /data/sys –p
因爲我們這個是掛載的,所以目錄sys是隻讀了。
我後面又需要把ks.cfg也要放在共享裏面,我在data目錄下再創建一個kickstart目錄
mkdir /data/kickstart -p
我們採用的是虛擬機:就不要把鏡像拷貝到這個目錄了,我們之間把鏡像掛載到這個目錄。如果是真實環境我們需要把鏡像拷貝到這個目錄下。
[root@oldboy /]# mount /dev/cdrom /data/sys
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@oldboy /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 6.9G 3.7G 2.9G 57% /
tmpfs 238M 4.0K 238M 1% /dev/shm
/dev/sda1 190M 36M 145M 20% /boot
/dev/sr0 3.7G 3.7G 0 100% /data/sys
2.安裝NFS服務器;
查詢有沒安裝
[root@oldboy /]# rpm -qa nfs-utilsrpcbind
rpcbind-0.2.0-11.el6.x86_64
nfs-utils-1.2.3-64.el6.x86_64
沒有安裝通過yum來安裝
[root@oldboy /]# yum -y installnfs-utils rpcbind
安裝完過後把這兩個服務加入開機自啓動。
[root@oldboy /]# chkconfig nfs on
[root@oldboy /]# chkconfig rpcbind on
並把/data/sys設置爲共享目錄
echo "/data/sys10.0.0.0/24(ro,sync)" >>/etc/exports
echo "/data/kickstart10.0.0.0/24(ro,sync)" >>/etc/exports
啓動NFS服務
/etc/init.d/rpcbind start
/etc/init.d/nfs start
查看共享目錄:
[root@oldboy /]# showmount -e localhost
Export list for localhost:
/data/kickstart 10.0.0.0/24
/data/sys 10.0.0.0/24
3.安裝TFTP服務:
[root@oldboy /]# yum -y installtftp-server*
安裝完成修改配置文件將disable的yes 改爲no 默認器server_args是在 /var/lib/ tftpboot 下。我們改爲/tftpboot 默認都可以。
vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
mkdir /tftpboot 目錄。
把xinetd 加入開機自啓動
chkconfig xinetd on
[root@oldboy /]# chkconfig --list|grep xinetd
xinetd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
4.配置支持PXE引導配置:
複製pxelinux.0 文件至/tftpboot/ 文件夾中
cp/usr/share/syslinux/pxelinux.0 /tftpboot/
複製iso 鏡像中的/p_w_picpath/pxeboot/initrd.img 和vmlinux 至/tftpboot/ 文件夾
cp/data/sys/p_w_picpaths/pxeboot/initrd.img /tftpboot/
cp/data/sys/p_w_picpaths/pxeboot/vmlinuz /tftpboot/
在tftpboot目錄下再創建一個pxelinux.cfg目錄
mkdir /tftpboot/pxelinux.cfg/ -p
將鏡像中的isolinux.cfg 文件拷貝到 pxelinux.cfg 下並改名爲default
cp/data/sys/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
[root@oldboy sys]# chmod u+w/tftpboot/pxelinux.cfg/default
修改文件
default linux # 默認啓動Linux標記的內核
prompt 1
timeout 6
#並把告訴系統從哪裏獲取ks.cfg文件
label linux
menu label ^Install or upgradean existing system
menu default
kernel vmlinuz
appendinitrd=initrd.img text append ks=nfs:10.0.0.9:/data/kickstart/ks.cfg
5.安裝DHCP服務:
yum -y install dhcp*
安裝完把DHCP加入開機自啓動。
chkconfig dhcpd on
[root@oldboy /]# chkconfig --list|grep dhcpd
dhcpd 0:off 1:off 2:off 3:on 4:off 5:off 6:off
拷貝模板配置文件到/etc/dhcp/
cp -f /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
修改/etc/dhcp/dhcpd.conf配置文件,內容如下:
ddns-update-style none;
ignore client-updates;
allow booting;
allow bootp;
default-lease-time 21600;
max-lease-time 43200;
option routers 10.0.0.2; #網關
option subnet-mask 255.255.255.0; #子網掩碼
subnet 10.0.0.0 netmask 255.255.255.0 {
range dynamic-bootp10.0.0.100 10.0.0.199;
next-server 10.0.0.9; #服務ip地址
filename"/data/sys/kickstart/ks.cfg"; #ks.cfg位置
next-server 10.0.0.9; #服務器ip地址
filename"pxelinux.0"; #pxe啓動文職
}
6.生成ks.cfg文件
可以通過系統生成,用system-config-kickstart生成ks.cfg
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
nfs --server=10.0.0.9 --dir=/data/sys #指定從哪裏加載系統鏡像
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw 123456 # root 密碼
firewall --disabled
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda--append="crashkernel=auto rhgb quiet"
logging --level=info
zerombr
# 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
#part /boot --fstype=ext4 --size=200
#part / --fstype=ext4 --grow --asprimary --size=200
#part swap --size=768
clearpart --all
part /boot --fstype=ext4 --size=200
part / --fstype=ext4 --grow --asprimary --size=200
part swap --size=768
%packages
@base
@compat-libraries
@core
@debugging
@development
@server-policy
@workstation-policy
python-dmidecode
sgpio
device-mapper-persistent-data
systemtap-client
%end
這些都配好了。檢查服務開啓了沒有
[root@oldboy /]# /etc/init.d/nfs status
rpc.svcgssd is stopped
rpc.mountd (pid 16194) is running...
nfsd (pid 16210 16209 16208 16207 16206 16205 16204 16203) isrunning...
rpc.rquotad (pid 16189) is running...
[root@oldboy /]# /etc/init.d/rpcbind status
rpcbind (pid 18430) isrunning...
[root@oldboy /]# /etc/init.d/xinetd status
xinetd (pid 17055) isrunning...
[root@oldboy /]# /etc/init.d/dhcpd status
dhcpd (pid 16262) isrunning...
接下來我們就在vmware創建一個空的虛擬機。
開機測試。