PXE + NFS + kickstart實現無人值守安裝RHEL5

 

一、原理
實現網絡安裝的過程是這樣的:PXE網卡啓動------DHCP服務器------獲得IP------從TFTP上下載pxelinux.0、vmlinuz、initrd------啓動系統------通過PEXlinux去NFS下載ks.cfg文件-----根據ks.cfg去NFS下載RPM包及安裝系統------完成安裝。
 
工作流程:
1、 pxe啓動,就廣播尋找dhcp服務器獲取ip地址和bootstrap文件,成功以後進入第二步(DHCP提供IP地址,還有bootstrap配置文件的位置)
 

2client通過tftp連接到服務器,下載bootstrap文件。(linux裏的bootstrap文件就是pxelinux.0,系統內有,大家可以使用#locate pxelinux.0查找它存放的位置)
3、client下載成功pxelinux.0文件後,系統還會下載控制pxelinux.0的配置文件,叫default。然後client就會按照default的配置來執行pxelinux.0文件。
4、現在client端會再獲取一次IP地址。並且根據DHCP服務器配置文件找到kickstart配置文件並下載。也是使用的tftp協議。
5、pxelinux.0文件定義的想服務器請求linux內核,根文件系統之類的參數。運行這個文件,client就會向服務器請求相關的文件並下載,都裏使用的都是tftp協議。
 

6、文件下載文成後,client就會啓動linux內核,這就進入了我們安裝時候看見的第一個圖形界面,這個界面和自己安裝看見的第一個畫面一樣,回車就是圖形安裝,輸入text就是文本安裝那裏。如果使用了kickstart,這個界面消失很快,可能看不見。到這裏PXE啓動就完成了。
7、下面就該主角kickstart出場了。其實kickstart在第四步已經出現了,當按照default要求運行pxelinux.0文件,系統讀取內核,掛在根文件系統以後的任務就都交給了kickstart了。包括安裝介質來源、語言、時區、分區、安裝哪些包等,都是在kickstart文件中定義。
只要進入這一步,kickstart配置文件正確,我們的無人值守安裝已經成功了。
 
二、安裝步驟
需要的環境
1、一臺server擔任DHCP\TFTP\NFS服務器
2
、一臺client,支持pxe網卡啓動
3
、服務器要有安裝所需的所有包

具體實施步驟
1、配置好自己的yum服務器
2、配置NFS服務
 
[root@server1 tftpboot]# mkdir -p /mnt/install
[root@server1 tftpboot]# vim  /etc/exports
 
/mnt/install  192.168.0.0/24(ro,async)
 
[root@server1 tftpboot]# service nfs restart
Shutting down NFS mountd: [FAILED]
Shutting down NFS daemon: [FAILED]
Shutting down NFS services: [ OK ]
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
[root@server1 tftpboot]# cp –rv  /mnt/cdrom/*   /mnt/install     
/mnt/cdrom 是光盤掛載目錄
這裏我嘗試使用ln,但是之後在客戶機安裝的時候找不到安裝樹
 
3、配置TFTP服務
yum install –y tftp-server
安裝tftp server軟件包
 
[root@server1 Server]# 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
}
或者
chkconfig tftp on
 
[root@server1 Server]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
[root@server1 Server]# netstat -nupal |grep 69
udp 0 0 0.0.0.0:69 0.0.0.0:* 5433/xinetd
udp 0 0 :::32769 :::* 5159/avahi-daemon:
[root@server1 Server]#
 
OKTFTP服務已經開啓。
 
4、配置DHCP服務
Yum  install -y dhcp    安裝dhcp軟件包
[root@server1 Server]# cat  /etc/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
 
[root@server1 Server]# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcp.conf
cp: overwrite `/etc/dhcpd.conf'? Y
[root@server1 Server]# vim /etc/dhcpd.conf
 
ddns-update-style interim;     #定義所支持的DNS動態更新類型(必選)
ignore client-updates;
 
subnet 192.168.0.0 netmask 255.255.255.0 {
 
# --- default gateway
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
filename "/pxelinux.0";     指定pxelinux.0的位置,相對於tftpboot
next-server 192.168.0.1;    指定TFTP地址
 
option time-offset -18000; # Eastern Standard Time
 
range dynamic-bootp 192.168.0.128 192.168.0.254;
default-lease-time 21600;
max-lease-time 43200;
 
}
 
 
[root@server1 Server]# service dhcpd start
Starting dhcpd: [ OK ]
[root@server1 Server]# netstat -nupal | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 5525/dhcpd
 
5、配置pxe服務模塊
[root@server1 Server]# updatedb
[root@server1 Server]# locate  pxelinux.0
/tftpboot/linux-install/pxelinux.0
/usr/lib/syslinux/pxelinux.0
[root@server1 Server]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
[root@server1 Server]#
 
[root@server1  cdrom]# pwd
/mnt/cdrom
[root@server1 cdrom]# /bin/cp  isolinux/* /tftpboot/   此處的vmlinuz initrd.img images\pxeboot中的也行
[root@server1 cdrom]# cd /tftpboot/
 [root@server1 tftpboot]# mkdir pxelinux.cfg
[root@server1 tftpboot]# cp isolinux.cfg pxelinux.cfg/default  此處要注意default的權限,其他人要有可讀權限
[root@server1 tftpboot]# vim pxelinux.cfg/default
 
default linux
prompt 1
timeout 10      設置boot:後面超時時間
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=nfs:192.168.0.1:/mnt/install/ks.cfg
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 -
 
 
 
安裝kickstart配置工具:
[root@server1 ~]# cd /mnt/cdrom
[root@server1 cdrom]# cd Server/
[root@server1 Server]# yum install -y  system-config-kickstart
[root@server1 Server]# system-config-kickstart
這個命令是在X下運行的。
system-config-kickstart打開/root/anaconda-ks.cfg,根據需求修改配置。並且另存爲/mnt/install/ks.cfg
#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth --useshadow --enablemd5
# System bootloader configuration
bootloader --append="rhgb quiet" --location=mbr --driveorder=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
這行一定不能註釋,否則會讓你確認是否格式化硬盤
# Use text mode install
text
# Firewall configuration
firewall --disabled
# Run the Setup Agent on first boot
firstboot --disable
key  --skip
跳過安裝序列號
 
# System keyboard
keyboard us
# System language
lang en_US
# Installation logging level
logging --level=info
# Use NFS installation media
nfs --server=192.168.0.1 –dir=/mnt/install
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# Reboot after installation
reboot
#Root password
rootpw --iscrypted $1$K3L4H4zb$5DPvt/Va6WHXTYHnUKrzh.
 
# SELinux configuration
selinux --disabled
# System timezone
timezone --isUtc Asia/Shanghai
# Install OS instead of upgrade
install
# X Window System configuration information
xconfig --defaultdesktop=GNOME --depth=24 --resolution=1024x768 --startxonboot
# Disk partitioning information
part /boot --bytes-per-inode=4096 --fstype="ext3" --size=256
part swap --bytes-per-inode=4096 --fstype="swap" --size=512
part / --bytes-per-inode=4096 --fstype="ext3" --grow s--size=1
 
%packages
@office
@editors
@text-internet
@gnome-desktop
@dialup
@core
@base
@games
@java
@legacy-software-support
@base-x
@graphics
@printing
@sound-and-video
@admin-tools
@graphical-internet
emacs
kexec-tools
device-mapper-multipath
xorg-x11-utils
xorg-x11-server-Xnest
libsane-hpaio
-sysreport
這個是我的ks.cfg
設置客戶端從pxe啓動就可以了,這樣無人值守安裝就完成了
 
kickstart服務器排除
1、關閉防火牆,系統自帶的和IPTABLES都要關閉
2從網卡啓動,獲取不到IP地址檢查你的DHCP服務器是否開機,使用#netstat  -tulnp | grep dhcpd ,來查看是否在監聽67號端口。
3、獲取IP後,在TFTP那步卡住了。檢查你的DHCP配置文件,next-server 是不是指的正確的tftp服務器。TFTP服務器是否開啓,是否運行正常。可以在linux裏面使用這個方法來測試

#tftp 您的服務器IP   登陸進入後
tftp>get pxelinux.0  
tftp>quit
查看當前目錄是否有pxelinux.0這個文件,有的話,證明你的tftp服務器是正常的最後檢查你的網絡中是不是還有其他dhcp服務器
4、內核成功加載後,系統有完成自動安裝,需要人工介入,那就證明你的kickstart腳本文件出問題了,需要重新生成以個,或者使用我給的,在裏面修改下NFS的服務器的地址就可以用了。
5、監控服務器的/var/log/message文件,尋找故障原因。
 
在安裝過程中有人會問之前網卡PXE模塊已經獲取了一次IP地址,爲什麼現在還要設置一次?
這裏我再說明以下,
1)PXE獲取的是安裝用的內核以及安裝程序等,安裝程序要獲取的是安裝系統所需的二進制包以及配置文件!
2)PXE模塊和安裝程序是相對獨立的,PXE的網絡配置並不能傳遞給安裝程序!
 
 
 





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