PXE安装ESXI6.7
Posted Jeffry Jiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PXE安装ESXI6.7相关的知识,希望对你有一定的参考价值。
PXE,全名Pre-boot Execution Environment,预启动执行环境。
1、准备一台CentOS服务器
检查系统yum源是可用的,源配置这里就不介绍了。
[root@test yum.repos.d]# yum repolist -v
2、安装所需的软件
[root@test ~]# yum -y install dhcp xinet tftp-server httpd syslinux vim
[root@test ~]# yum -y install system-config-kickstart
注意:关闭selinux和防火墙
3、配置DHCP
[root@test ~]# vim /etc/dhcp/dhcpd.conf
[root@test ~]# cat /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0
range 192.168.1.100 192.168.1.200;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.1.21;
filename "/pxelinux.0";
systemctl start dhcpd
netstat -tunlp|grep dhcp #监听67端口
如果dhcp配置有问题可以看日志进行排查:tailf /var/log/messages
4、配置tftp
[root@test ~]# cat /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \\
# protocol. The tftp protocol is often used to boot diskless \\
# workstations, download configuration files to network-aware printers, \\
# and to start the installation process for some operating systems.
service tftp
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
systemctl start tftp
netstat -tunlp|grep 69
5、配置http
sed -i "277i ServerName 127.0.0.1:80" /etc/httpd/conf/httpd.conf
systemctl start httpd
110 mkdir /var/www/html/CentOS
111 mount /dev/sr0 /var/www/html/CentOS/
112 df -h
浏览器访问IP+CentOS,检查配置是否正确
6、配置pxe
114 ls /usr/share/syslinux/pxelinux.0
115 cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
116 cp -a /var/www/html/CentOS/isolinux/* /var/lib/tftpboot/
117 ls /var/lib/tftpboot/
118 mkdir -p /var/lib/tftpboot/pxelinux.cfg
119 cp /var/www/html/CentOS/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
配置完成后,打开服务器电源,esc使用pxe启动
选择URL方式安装
禁用IPV6
输入http地址
7、配置ks.cfg
[root@test ~]# grub-crypt
[root@test ~]# mkdir /var/www/html/ks_config
[root@test ~]#vim /var/www/html/ks_config/CentOS7-ks.cfg
# Kickstart Configurator for CentOS by yao zhang
install
url --url="http://192.168.1.21/CentOS/"
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS7
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/
clearpart --all --initlabel
part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024
part / --fstype=ext4 --grow --asprimary --size=200
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
%packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
%post
wget -O /tmp/optimization.sh http://192.168.1.21/ks_config/optimization.sh &>/dev/null
/bin/sh /tmp/optimization.sh
%end
关键字 含义 install
告知安装程序,这是一次全新安装,而不是升级 upgrade
。url --url=" "
通过 FTP
或HTTP
从远程服务器上的安装树中安装。url --url="http://10.0.0.7/CentOS-6.7/"
url --url ftp://<username>:<password>@<server>/<dir>
nfs
从指定的 NFS
服务器安装。nfs --server=nfsserver.example.com --dir=/tmp/install-tree
text
使用文本模式安装。 lang
设置在安装过程中使用的语言以及系统的缺省语言。 lang en_US.UTF-8
keyboard
设置系统键盘类型。 keyboard us
zerombr
清除 mbr
引导信息。bootloader
系统引导相关配置。 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
--location=
,指定引导记录被写入的位置.有效的值如下:mbr
(缺省),partition
(在包含内核的分区的第一个扇区安装引导装载程序)或none
(不安装引导装载程序)。--driveorder
,指定在Bios
引导顺序中居首的驱动器。--append=
,指定内核参数.要指定多个参数,使用空格分隔它们。network
为通过网络的 kickstart
安装以及所安装的系统配置联网信息。network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6
--bootproto=[dhcp/bootp/static]
中的一种,缺省值是dhcp
。bootp
和dhcp
被认为是相同的。static
方法要求在kickstart
文件里输入所有的网络信息。network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2
请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行。--ip=
,要安装的机器的IP
地址.--gateway=
,IP地址格式的默认网关.--netmask=
,安装的系统的子网掩码.--hostname=
,安装的系统的主机名.--onboot=
,是否在引导时启用该设备.--noipv6=
,禁用此设备的IPv6
.--nameserver=
,配置dns
解析.timezone
设置系统时区。 timezone --utc Asia/Shanghai
authconfig
系统认证信息。 authconfig --enableshadow --passalgo=sha512
设置密码加密方式为sha512
启用shadow
文件。rootpw
root
密码clearpart
清空分区。 clearpart --all --initlabel
--all
从系统中清除所有分区,--initlable
初始化磁盘标签part
磁盘分区。 part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024
part / --fstype=ext4 --grow --asprimary --size=200
--fstype=
,为分区设置文件系统类型.有效的类型为ext2
,ext3
,swap
和vfat
。--asprimary
,强迫把分区分配为主分区,否则提示分区失败。--size=
,以MB
为单位的分区最小值.在此处指定一个整数值,如500
.不要在数字后面加MB
。--grow
,告诉分区使用所有可用空间(若有),或使用设置的最大值。firstboot
负责协助配置redhat一些重要的信息。 firstboot --disable
selinux
关闭 selinux
。selinux --disabled
firewall
关闭防火墙。 firewall --disabled
logging
设置日志级别。 logging --level=info
reboot
设定安装完成后重启,此选项必须存在,不然kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择
halt
关机。
优化脚本
vim /var/www/html/ks_config/optimization.sh #!/bin/bash ############################################################## # File Name: /var/www/html/ks_config/optimization.sh # Version: V1.0 # Author: yao zhang # Organization: www.zyops.com # Created Time : 2015-12-03 15:23:08 # Description: Linux system initialization ############################################################## . /etc/init.d/functions Ip=10.0.0.7 Port=80 ConfigDir=ks_config # Judge Http server is ok? PortNum=`nmap $Ip -p $Port 2>/dev/null|grep open|wc -l` [ $PortNum -lt 1 ] && echo "Http server is bad!" exit 1 # Defined result function function Msg() if [ $? -eq 0 ];then action "$1" /bin/true else action "$1" /bin/false fi # Defined IP function function ConfigIP() Suffix=`ifconfig eth0|awk -F "[ .]+" 'NR==2 print $6'` cat >/etc/sysconfig/network-scripts/ifcfg-eth0 <<-END DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=10.0.0.$Suffix PREFIX=24 GATEWAY=10.0.0.2 DNS1=10.0.0.2 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" END Msg "config eth0" # Defined Yum source Functions function yum() YumDir=/etc/yum.repos.d [ -f "$YumDir/CentOS-Base.repo" ] && cp $YumDir/CentOS-Base.repo,.ori wget -O $YumDir/CentOS-Base.repo http://$Ip:$Port/$ConfigDir/CentOS-Base.repo &>/dev/null &&\\ wget -O $YumDir/epel.repo http://$Ip:$Port/$ConfigDir/epel.repo &>/dev/null &&\\ Msg "YUM source" # Defined Hide the system version number Functions function HideVersion() [ -f "/etc/issue" ] && >/etc/issue Msg "Hide issue" [ -f "/etc/issue.net" ] && > /etc/issue.net Msg "Hide issue.net" # Defined OPEN FILES Functions function openfiles() [ -f "/etc/security/limits.conf" ] && echo '* - nofile 65535' >> /etc/security/limits.conf Msg "open files" # Defined Kernel parameters Functions function kernel() KernelDir=/etc [ -f "$KernelDir/sysctl.conf" ] && /bin/mv $KernelDir/sysctl.conf,.ori wget -O $KernelDir/sysctl.conf http://$Ip:$Port/$ConfigDir/sysctl.conf &>/dev/null Msg "Kernel config" # Defined System Startup Services Functions function boot() for oldboy in `chkconfig --list|grep "3:on"|awk 'print $1'|grep -vE "crond|network|rsyslog|sshd|sysstat"` do chkconfig $oldboy off done Msg "BOOT config" # Defined Time Synchronization Functions function Time() echo "#time sync by zhangyao at $(date +%F)" >>/var/spool/cron/root echo '*/5 * * * * /usr/sbin/ntpdate time.nist.gov &>/dev/null' >>/var/spool/cron/root Msg "Time Synchronization" # Defined main Functions function main() ConfigIP yum HideVersion openfiles kernel boot Time main # rz上传CentOS-Base.repo、epel.repo、sysctl.conf vim /var/lib/tftpboot/pxelinux.cfg/default default ks prompt 0 label ks kernel vmlinuz append initrd=initrd.img ks=http://192.168.1.21/ks_config/CentOS7-ks.cfg # 告诉安装程序ks.cfg文件在哪里 # append initrd=initrd.img ks=http://192.168.1.21/ks_config/CentOS7-ks.cfg ksdevice=eth0 # ksdevice=eth0代表当客户端有多块网卡的时候,要实现自动化需要设置从eth1安装
以上是关于PXE安装ESXI6.7的主要内容,如果未能解决你的问题,请参考以下文章