原理:
![](http://static.oschina.net/uploads/img/201309/09110857_Odn7.jpg)
上面来自:http://crazyming.blog.51cto.com/1048571/331036
二、安装过程:
# yum install -y httpd* tftp-server syslinux dhcp
# mkdir /var/www/html/cdrom
# mount -t iso9660 /dev/cdrom /var/www/html/cdrom/
如果是iso文件:# mount -o loop /root/CentOS-6.3-x86_64-bin-DVD1.iso /var/www/html/cdrom/
1 配置tftp
# vi /etc/xinetd.d/tftp
disable = yes
=》
disable = no
# service xinetd restart
2 配置支持PXE启动
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
# cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot
# cp /var/www/html/cdrom/images/pxeboot/initrd.img /var/lib/tftpboot
# cp /var/www/html/cdrom/images/pxeboot/vmlinuz /var/lib/tftpboot
# cp /var/www/html/cdrom/isolinux/*.msg /var/lib/tftpboot
# cd /var/lib/tftpboot/ && mkdir pxelinux.cfg
# cp /var/www/html/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
3 配置dhcp
# cat /etc/dhcp/dhcpd.conf
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
next-server 192.168.24.10;
filename "pxelinux.0";
log-facility local7;
subnet 192.168.24.0 netmask 255.255.255.0{
range 192.168.24.230 192.168.24.254;
option domain-name-servers ns1.internal.example.org;
option domain-name "internal.example.org";
option routers 192.168.24.2;
option broadcast-address 192.168.24.255;
default-lease-time 600;
max-lease-time 7200;
}
# /etc/init.d/dhcpd restart
4 让引导文件加载ks文件
# vim /var/lib/tftpboot/pxelinux.cfg/default
append initrd=initrd.img 改成
#指定网卡启动pxe
append initrd=initrd.img ks=http://192.168.24.10/ks.cfg ksdevice=eth0
我的ks.cfg文件
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
url --url=http://192.168.24.10/cdrom
lang en_US.UTF-8
keyboard us
#network --onboot yes --device eth0 --bootproto dhcp --ipv6 auto
network --bootproto static --device=eth0 --ip 192.168.24.199 --netmask 255.255.255.0 --gateway 192.168.24.2 --nameserver 218.85.152.99 --hostname gaorong
network --bootproto static --device=eth1 --ip 192.168.10.11 --netmask 255.255.255.0
rootpw --iscrypted $6$76kMEpadFeKZHZvZ$VsCC6yTOX6oj1vel6tVpfJl.wLK8uhf/XFCXVkBbE1NUhVfY8rCcH6n1uEYmel.89.c0XEJAqk1JK5uL5W4Da/
firewall --disabled
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone --utc Asia/Shanghai
#bootloader --location=partition --driveorder=sda --append=”crashkernel=auto rhgb quiet”
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 --all --initlabel
part /boot --fstype=ext3 --size=500
part swap --size=2048
part / --fstype=ext4 --grow --size=200
%packages
# 最小化安装
@chinese-support
@core
@server-policy
# 我的图形化安装
@base
@core
@debugging
@basic-desktop
@desktop-debugging
@desktop-platform
@directory-client
@fonts
@input-methods
@internet-browser
@java-platform
@legacy-x
@network-file-system-client
@print-client
@remote-desktop-clients
@server-platform
@server-policy
@x11
mtools
pax
oddjob
sgpio
device-mapper-persistent-data
abrt-gui
samba-winbind
certmonger
pam_krb5
krb5-workstation
libXmu
%end
%post
echo "export LANG=us_EN.UTF-8" >> /etc/profile
source /etc/profile
chkconfig --list |grep 3:on |awk '{print $1}' |egrep -v "network|sshd|network|rsyslog|crond|udev-post" |xargs -i chkconfig --level 3 {} off
yum install -y wget lrzsz mlocate ntp ntpdate vim
echo "set ts=4" >> /etc/vimrc
echo "expandtab" >> /etc/vimrc
#mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#wget http://mirrors.163.com/.help/CentOS6-Base-163.repo -O /etc/yum.repos.d/CentOS-Base.repo
rpm -Uvh ftp://ftp.kddlabs.co.jp/pub/Linux/packages/redhat/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
#rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
echo "00 * * * * /usr/sbin/ntpdate asia.pool.ntp.org" > /var/spool/cron/root
%end
reboot