使用本地光盘安装 PXE kickstart (自动化无人值守批量安装服务器)

好久没搞这个东西了,最近马上又要用得到,复习一下

完整的步骤记在这里,说明以后再加上

环境 Centos 6.5  ESXI 虚拟机

服务器端 安装dhcp  tftp-server nfs  挂载光盘

yum install dhcp -y

cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
修改vim /etc/init.d/dhcpd

vim /etc/dhcp/dhcpd.conf# dhcpd.conf# Sample configuration file for ISC dhcpd# option definitions common to all supported networks...# Use this to enble / disable dynamic dns updates globally.#ddns-update-style none;# If this DHCP server is the official DHCP server for the local# network, the authoritative directive should be uncommented.#authoritative;# Use this to send dhcp log messages to a different log file (you also# have to hack syslog.conf to complete the redirection).log-facility local7;# A slightly different configuration for an internal subnet.subnet 192.167.1.0 netmask 255.255.255.0 {  range 192.167.1.122 192.167.1.129;  option domain-name-servers 202.106.0.20,192.167.1.104;#  option domain-name "internal.example.org";  option routers 192.167.1.1;#  option broadcast-address 10.5.5.31;  default-lease-time 600;  max-lease-time 7200;  next-server 192.167.1.121;  filename "pxelinux.0";}

报错 &解决办法

=====================================================

yum install  tftp-server -y

vim /etc/xinetd.d/tftp

        yum install syslinux -y

[root@ccda yum.repos.d]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@ccda yum.repos.d]# cp /mnt/cdrom/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
[root@ccda yum.repos.d]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@ccda yum.repos.d]# cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@ccda yum.repos.d]# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
[root@ccda yum.repos.d]# vim /var/lib/tftpboot/pxelinux.cfg/default

    修改vim /var/lib/tftpboot/pxelinux.cfg/default

default linux#prompt 1timeout 600display boot.msgmenu title Welcome to CentOS 6.5!label linux  menu label ^Install or upgrade an existing system  menu default  kernel vmlinuz  append initrd=initrd.img ks=nfs:192.167.1.121:/ks/ks.cfglabel rescue  menu label ^Rescue installed system  kernel vmlinuz  append initrd=initrd.img rescue

[root@ccda yum.repos.d]# service xinetd restart

[root@ccda yum.repos.d]# service iptables stop
[root@ccda yum.repos.d]# yum install system-config-kickstart -y
[root@ccda yum.repos.d]# mkdir /ks

[root@ccda ~]# service nfs start

[root@ccda ~]# chkconfig nfs on
[root@ccda ~]# umount /dev/cdrom
[root@ccda ~]# mount /dev/cdrom /media/

选择--> 保存文件到 /ks 目录 名称为ks.cfg

至此kickstart 安装完毕,如果需要减轻服务器压力 可将NFS单独装一台机器分离出去

=====================================================

我生成的ks文件

vim /ks/ks.cfg

#platform=x86, AMD64, 或 Intel EM64T#version=DEVEL# Firewall configurationfirewall --enabled --http --ssh# Install OS instead of upgradeinstall# Use NFS installation medianfs --server=192.167.1.121 --dir=/media# Root passwordrootpw --iscrypted $1$ZmGYyI0Q$MdJa***D999guxiZq62mM.# System authorization informationauth  --useshadow  --passalgo=sha512# Use graphical installgraphicalfirstboot --disable# System keyboardkeyboard us# System languagelang en_US# SELinux configurationselinux --enforcing# Installation logging levellogging --level=info# Reboot after installationreboot# System timezonetimezone  Asia/Shanghai# Network informationnetwork  --bootproto=dhcp --device=eth0 --onboot=on# System bootloader configurationbootloader --location=mbr# Clear the Master Boot Recordzerombr# Partition clearing informationclearpart --all --initlabel# Disk partitioning informationpart /home --fstype="ext4" --size=10240part / --fstype="ext4" --grow --size=80000%post/sbin/chkconfig --level 2345 sshd onmkdir -p /etc/yum.repos.d/bakmv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bakcat <
> /etc/yum.repos.d/work.repo[centos_6]name=sitvsbaseurl=http://192.167.1.121/media#baseurl=http://10.10.6.52/yumdown/enabled=1gpgcheck=0EOFFILE=/opt/ifcfg-eth0IPADDR=`ifconfig eth0 | grep "inet addr" | awk '{ print $2}' | awk -F: '{print $2}'`MAC=`grep HWADDR /etc/sysconfig/network-scripts/ifcfg-eth0`DEVICE=`grep DEVICE /etc/sysconfig/network-scripts/ifcfg-eth0`TYPE=`grep TYPE /etc/sysconfig/network-scripts/ifcfg-eth0`NETMASK=`ifconfig eth0 | grep "inet addr" | awk '{ print $4}' | awk -F: '{print $2}'`##echo "${DEVICE}" >> ${FILE}echo "BOOTPROTO=\"static\"" >> ${FILE}echo "${MAC}" >> ${FILE}echo "NM_CONTROLLED=\"yes\"" >> ${FILE}echo "ONBOOT=\"yes\"" >> ${FILE}echo "${TYPE}" >> ${FILE}echo "IPADDR=\"192.167.1.130\"" >> ${FILE}echo "NETMASK=\"${NETMASK}\"" >> ${FILE}echo "GATEWAY=\"192.167.1.254\"" >> ${FILE}echo "DNS1=\"192.167.1.104\"" >> ${FILE}echo "DNS2=\"202.106.0.20\"" >> ${FILE}#cat  ${FILE} > /etc/sysconfig/network-scripts/ifcfg-eth0#/etc/init.d/network restart%end%packages@base@chinese-support@scalable-file-systems%end

说明

%post

/sbin/chkconfig --level 2345 sshd on

mkdir -p /etc/yum.repos.d/bak

mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak

cat <<EOF>> /etc/yum.repos.d/work.repo
[centos_6]
name=sitvs
baseurl=http://192.167.1.121/media
#baseurl=http://10.10.6.52/yumdown/
enabled=1
gpgcheck=0
EOF
FILE=/opt/ifcfg-eth0
IPADDR=`ifconfig eth0 | grep "inet addr" | awk '{ print $2}' | awk -F: '{print $2}'`
MAC=`grep HWADDR /etc/sysconfig/network-scripts/ifcfg-eth0`
DEVICE=`grep DEVICE /etc/sysconfig/network-scripts/ifcfg-eth0`
TYPE=`grep TYPE /etc/sysconfig/network-scripts/ifcfg-eth0`
NETMASK=`ifconfig eth0 | grep "inet addr" | awk '{ print $4}' | awk -F: '{print $2}'`
#
#
echo "${DEVICE}" >> ${FILE}
echo "BOOTPROTO=\"static\"" >> ${FILE}
echo "${MAC}" >> ${FILE}
echo "NM_CONTROLLED=\"yes\"" >> ${FILE}
echo "ONBOOT=\"yes\"" >> ${FILE}
echo "${TYPE}" >> ${FILE}
echo "IPADDR=\"192.167.1.130\"" >> ${FILE}
echo "NETMASK=\"${NETMASK}\"" >> ${FILE}
echo "GATEWAY=\"192.167.1.254\"" >> ${FILE}
echo "DNS1=\"192.167.1.104\"" >> ${FILE}
echo "DNS2=\"202.106.0.20\"" >> ${FILE}
#
cat  ${FILE} > /etc/sysconfig/network-scripts/ifcfg-eth0
#
/etc/init.d/network restart

%end

====

%post---->%end  此处是安装完成执行的脚本 (要直接把脚本写在这里,不要先编辑脚本再用sh 命令执行脚本) 红色部分是配置yum源  蓝色部分是截取自动获取的IP写到网卡配置文件里,即把服务器改成固定IP   (可以加上ntpdate命令同步时间)

备注:如果不确定需要安装的软件包 可以查看你其他机器上的 /root/anaconda-ks.cfg 文件中末尾@打头的报名复制到ks文件 @packages--->@end 之间

===============

至此客户端就可以开机自动安装系统了(保证客户机可以获取到dhcp地址)

一直在学习。。。。