一、PXE简介
1.网卡上的PXE芯片有512字节,存放了DHCP和TFTP的客户端
2.启动计算机并选择网卡启动
3.PXE上的DHCP客户端会向DHCP服务器,申请IP地址
4.DHCP服务器分配一个IP址地给它,同时DHCP配置文件还告诉PXE
TFTP服务器的地址,并去下载一个pxelinux.0的文件
(1)next-server 192.168.128.140;
(2)filename "pxelinux.0";
5.pxelinux.0告诉PXE要址载的配置文件是pxelinux.cfg目录下面的default
6.PXE下载并依据配置文件的内容下载启动必须的文件,并通过kickstart.cfg配置文件开始安装系统
如图
(0)环境准备
1.dell r720 服务器1台
2.vware workstation 10
3.手动安装一台centos7.4做为部署服务器,配置以下各步骤后,再启多个新的虚拟,实现自动安装
虚拟机网卡采用NAT模式,不要使用桥接模式,DHCP服务器,在同一局域网多个DHCP服务会有冲突。
VMware的NAT模式的dhcp服务要关闭,避免干扰。
(1)由于涉及到主机间不同基于不同协议的通信,所以为了避免不必要的麻烦,我们选择关闭防火墙以及selinux。
#systemctl disable firewalld # 关闭防火墙四、安装并配置DHCP服务
# yum install dhcp -y
#rpm -ql dhcp # 查询dhcp相关的配置文件
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
/usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example
#cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf # 复制模板配置文件
# vim /etc/dhcp/dhcpd.conf
#---------可用最简配置-------------------
next-server 192.168.128.140; #tftp服务器地址
filename "pxelinux.0"; #启动文件
subnet 192.168.128.0 netmask 255.255.255.0 {:
range 192.168.128.10 192.168.128.50; #ip地址#systemctl start dhcpd
#systemctl enable dhcpd
-------------------------------------------------------------
** 多网卡默认监听eth0,指定DHCP监听eth1网卡**
# vim /etc/sysconfig/dhcpd 在这个文件中,不是/etc/dhcp/dhcpd.conf
# Command line options here
DHCPDARGS=eth1 # 指定监听网卡
(2)配置xinetd,由xinetd管理tftp
# vim /etc/xinetd.d/tftp#---------可用最简配置-------------------
service tftp
{systemctl enable tftp
systemctl enable xinetd
systemctl start tftp
systemctl start xinetd
(3)TFTP服务根目录下要放4个文件
(1)vmlinuz #vmlinuz是可引导的、压缩的内核文件,vmlinuz是vmlinux的压缩文件。是可执行的Linux内核
(2)initrd.img #initrd.img是“initial ram disk”的简写。initrd用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态
(3)boot.msg #启动信息,可以修改
(4)pxelinux.cfg/default #安装菜单
(5)pxelinux.0 #由syslinux生成
在第8步中,有详细说明
六、安装并配置HTTP服务
(1)安装HTTP服务
yum -y install httpd
#systemctl enable httpd
#systemctl start httpd # 启动http服务
(2)后续要做的
1.将ks.cfg文件COPY到:/var/www/html
2.将镜像文件挂到:/var/www/html/cdrom
systemctl enable httpd
systemctl start httpd
七、配置ks.cfg文件
(1)ks.cfg模板文件在/root下的anaconda-ks.cfg文件
# cp /root/anaconda-ks.cfg /var/www/html/ks.cfg
(2)编辑ks.cfg文件,稍微修改一下安装介质就可以
vim /var/www/html/ks.cfg
#---------可用最简配置-------------------
#version=DEVEL
# System authorization information
auth --useshadow --enablemd5
# Install OS instead of upgrade
install
# Use CDROM installation media
url --url="http://192.168.128.140/cdrom"
# Use graphical install
#graphical
text
# Firewall configuration
firewall --enabled
firstboot --disable
ignoredisk --only-use=sda
# Keyboard layouts
# old format: keyboard us
# new format:
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
network --bootproto=dhcp --device=link --activate
network --hostname=localhost.localdomain
# Reboot after installation
reboot
# Root password
rootpw --iscrypted $1$GM1bMPDP$QTx3eC82a9MWJmcCaMpPX1
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc
# X Window System configuration information
xconfig --startxonboot
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=1024
part swap --fstype="swap" --size=2048
part / --fstype="xfs" --size=1 --grow
%packages
@base
@compat-libraries
@debugging
@development
gcc
glibc
gcc-c++
openssl-devel
openssh
tree
nmap
sysstat
lrzsz
vim
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end(3)更改ks.cfg权限
chmod +r /var/www/html/ks.cfg
(4)参数说明
关键字 | 含义 |
---|---|
install |
告知安装程序,这是一次全新安装,而不是升级upgrade 。 |
url --url=" " |
通过FTP 或HTTP 从远程服务器上的安装树中安装。url --url="http://10.0.0.7/CentOS-6.7/" url --url ftp:// |
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 关机。 |
八、复制内核文件
内核文件、虚拟根文件以及菜单文件,我们都是通过tftp服务来提供的,由于系统及版本的不同,对于一个比较复制机群来说,我们需要准备不同系统,不同版本的内核文件,initrd.img文件。菜单文件只需要一份即可。/var/lib/tftpboot/目录规划如下:
(1)挂载光驱,虚拟一定要先在连接光驱打上钩
[root@localhost mnt]# ls -l /dev|grep cdrom
lrwxrwxrwx 1 root root 3 4月 25 23:58 cdrom -> sr0
crw-rw---- 1 root cdrom 21, 1 4月 25 23:58 sg1
brw-rw---- 1 root cdrom 11, 0 4月 25 23:58 sr0 #找到光驱设备名
#mkdir /var/www/html/cdrom 由于使用HTTP安装,所以镜像文件到挂到http根目录下
#mount /dev/cdrom /var/www/html/cdrom #挂载# cp /var/www/html/cdrom/images/pxeboot/vmlinuz /var/lib/tftpboot/ #第2个文件,vmlinuz文件,在镜像文件images/pxeboot
vmlinuz是可引导的、压缩的内核文件,vmlinuz是vmlinux的压缩文件。是可执行的Linux内核
# cp /var/www/html/cdrom/images/pxeboot/initrd.img /var/lib/tftpboot/ #第1个文件,initrd.img文件,在镜像文件images/pxeboot
(3)复制pxelinux.0文件到tftp目录下
首先安装yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
(4)编辑pxelinux.cfg菜单文件,即isolinux.cfg
# mkdir /var/lib/tftpboot/pxelinux.cfg
# vim /var/lib/tftpboot/pxelinux.cfg/default
该菜单文件的配置模板在镜像文件中:/var/www/html/cdrom/isolinux/isolinux.cfg 中
#cp /var/www/html/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default # 复制并改名
#cp /var/www/html/cdrom/isolinux/boot.msg /var/lib/tftpboot #可以编辑boot.msg
#vim /var/lib/tftpboot/pxelinux.cfg/default
#---------可用最简配置-------------------
default ks