1.安装配置dhcp服务
yum -y install dhcp
vim /etc/hdcp/dhcpd.conf
#配置文件内容如下:
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.200 192.168.10.240; #地址范围
option domain-name-servers ns1.internal.example.org; #dns地址
option domain-name "internal.example.org"; #dns根域
option routers 192.168.10.105; #网关
option broadcast-address 192.168.10.255; #广播地址
default-lease-time 600; #默认租期时间
max-lease-time 7200; #最大租期时间
next-server 192.168.10.105; #tftp服务器的地址
filename "pxelinux.0"; #tftp服务器上的文件
}
# 启动dhcp服务
service dhcpd restart
2.安装配置tftp服务
#让客户端可以下载预安装文件,内核,启动文件
yum -y install tftp-server
sed -i 14s/yes/no/ /etc/xinetd.d/tftp
service xinetd restart
#将对应版本iso镜像中的内容复制到/yum中一份
cp -ra /media/CentOS_6.6_Final/* /yum/
#安装含有相应文件的rpm包
rpm -ivh /yum/Packages/syslinux-4.04-3.el6.x86_64.rpm /yum/Packages/syslinux-nonlinux-4.04-3.el6.noarch.rpm
#复制相关的文件到/var/lib/tftpboot目录下
rpm -ql syslinux-nonlinux |grep pxelinux.0
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /yum/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /yum/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
cp /yum/isolinux/vesamenu.c32 /var/lib/tftpboot/
cp /yum/isolinux/boot.* /var/lib/tftpboot/
cp /yum/isolinux/splash.jpg /var/lib/tftpboot/
vim /var/lib/tftpboot/pxelinux.cfg/default
配置文件内容如下:
default vesamenu.c32
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.6!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label linux
menu label ^Install or upgrade an existing system
kernel vmlinuz
append initrd=initrd.img
label vesa
menu label PXE install Centos6.6-final
menu default
kernel vmlinuz
append initrd=initrd.img ks=nfs:192.168.10.105:/pxe/ks/ks.cfg
#创建目录
mkdir -p /pxe/{ks,iso}
mount /dev/cdrom /pxe/iso/
#创建ks文件: (创建ks文件时,指定安装包位置为nfs://192.168.10.105:/pxe/iso)
yum install system-config-kickstart
前提:必须做好yum库
system-config-kickstart
system-config-kickstart 命令界面
配置安装源的方法和路径以及其他需要的配置,这里就不列出来了。
配置nfs
这里配置nfs有两个作用:
1. /pxe/ks 用来存储ks文件
2. /pxe/iso 用来提供安装系统用到的包
vim /etc/exports
# 文件内容如下
/pxe/ks *(ro)
/pxe/iso *(ro)
service rpcbind restart
service nfs restart
showmount -e 192.168.10.105
#将ks.cfg配置文件放到/pxe/ks/目录
cp ks.cfg /pxe/ks/
#将对应iso镜像挂载到/pxe/iso目录
mount /dev/cdrom /pxe/iso
#备注:详细操作可能不一样,明白原理达到目的即可。
KS文件示例
获取ks文件的三种方式
1. 在已安装的系统上会有记录/root/anaconda-ks.cfg,在其基础上修改
2. system-config-kickstart命令生成
3. 完全自己编写
示例:
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
nfs --server=192.168.10.105 --dir=/pxe/iso
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw --iscrypted $6$9gDk/T5G/iWQgT1X$IjMY3rp0cvds3/XhiraJ57M1dlQjdtZC4XA2jcmFARwwrC7.EXiehVhlwdORLTNg0sIiw7wzm3lhs3yh9AVbl.
firewall --disable
authconfig --enableshadow --passalgo=sha512
selinux --disable
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# 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 --drives=sda,sdb --initlabel
zerombr yes
part /boot --fstype=ext4 --size=200 --ondrive=sda
part swap --size=2048 --ondrive=sda
part / --fstype=ext4 --grow --size=200 --ondrive=sda
%post
echo "is over" >> /tmp/over.txt
%end
reboot
%packages
@additional-devel
@base
@chinese-support
@compat-libraries
@console-internet
@core
@debugging
@basic-desktop
@desktop-debugging
@desktop-platform
@desktop-platform-devel
@development
@directory-client
@eclipse
@fonts
@general-desktop
@graphical-admin-tools
@input-methods
@internet-applications
@internet-browser
@java-platform
@kde-desktop
@legacy-unix
@legacy-x
@network-file-system-client
@office-suite
@print-client
@remote-desktop-clients
@server-platform
@server-platform-devel
@server-policy
@workstation-policy
@x11
libgcrypt-devel
libXinerama-devel
openmotif-devel
libXmu-devel
xorg-x11-proto-devel
startup-notification-devel
libgnomeui-devel
libbonobo-devel
junit
libXau-devel
libXrandr-devel
popt-devel
gnome-python2-desktop
libdrm-devel
libxslt-devel
libglade2-devel
gnutls-devel
mtools
pax
oddjob
wodim
sgpio
genisoimage
device-mapper-persistent-data
systemtap-client
abrt-gui
qt-mysql
desktop-file-utils
systemtap-sdt-devel
dejagnu
ElectricFence
ant
libstdc++-docs
gcc-gnat
expect
mod_dav_svn
perltidy
cmake
imake
babel
ksc
kdewebdev
rpmdevtools
compat-gcc-34
systemtap-server
cvs-inetd
gcc-java
compat-gcc-34-g77
jpackage-utils
bzr
mercurial
chrpath
gcc-objc
rpmlint
gcc-objc++
compat-gcc-34-c++
python-docs
nasm
samba-winbind
certmonger
pam_krb5
krb5-workstation
tcp_wrappers
openmotif
xterm
xorg-x11-xdm
libXmu
libXp
rdesktop
%end
流程总结:
- 机器启动后通过DHCP协议获取IP地址和tftp-server的地址及pxelinux.0文件
- 再通过tftp服务器上的/var/lib/tftpboot/pxelinux.cfg/default 文件确定安装选择,不选为默认menu default项
- 通过上一步中配置文件中的 ks=nfs:192.168.10.105:/pxe/ks/ks.cfg 获得ks自动应答文件的配置
- ks.cfg中配置了软件包所在的位置,我这里用的是nfs即/pxe/iso目录下的软件包。
- 获取相应的软件包安装,安装完毕执行对应的脚本重启。