支持工作站通过网络从远端服务器下载镜像,并由此支持通过网络启动操作系统,在启动过程中,server分配IP地址,再使用TFTP协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成client 端自动化基础软件安装设置,从而引导预先安装在服务器中的终端操作系统
1. 客户端开机的时候从网络启动,通过PXE芯片从dhcp端获取到IP地址,获取到ip 后就可以跟PXE服务器通信
2. 然后,客户端从server端获取到next-server 的地址,也就是TFTP的地址,联系tftp服务器获取pxelinux.0文件,完成网卡激活和启动工作
3. 接下来,客户端再次联系TFTP服务器,获取操作系统的内核和初始化镜像文件
4. 最后,客户端重新从dhcp 服务器获取ip地址,这次获取的地址为自己装系统分配给eth0的ip, 通过文件共享服务器获取安装系统的软件。
syslinux
作用: 提供基于网络引导的适用于不同的操作系统的各种bootloader 文件, 支持DOSFATfilesystems、Linux ext2/ext3
filesystems(EXTLINUX)、 PXEnetwork boots(PXELINUX)、ISO 9660 CD-ROMs (ISOLINUX);文件名是 pxelinux.0
tftp-server服务
作用: 为PXE 引导加载环境,用于提供引导加载文件pxelinux.0 的读取
安装软件
[root@pxe-centos7u4 ~]# yum install -y dhcp tftp-server xinetd syslinux vsftpd
2. 配置vsftpd 服务
[root@pxe-centos7u4 ~]# mkdir /var/ftp/centos7u4
[root@pxe-centos7u4 ~]# mount -o loop -t iso9660 /iso_file/CentOS-7-x86_64-DVD-1804.iso /var/ftp/
[root@pxe-centos7u4 ~]# systemctl start vsftpd
[root@pxe-centos7u4 ~]# systemctl enable vsftpd
[root@pxe-centos7u4 ~]# ss -anpt|grep :21
3、配置DHCP服务
[ root@pxe-centos7u4 ~]# vim /etc/dhcp/dhcpd.conf
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
subnet 192.168.128.0 netmask 255.255.255.0{
range 192.168.128.121 192.168.128.130; #指定dhcp服务器地址池
next-server 192.168.128.100; #指向TFTP服务器地址
filename "pxelinux.0"; #指向PXE 的数据文件,文件存放到tftp跟目录下/var/lib/tftpboot
}
systemctl start dhcpd
systemctl enable dhcpd
4. 配置tftp服务,提供引导菜单所需的文件
[root@pxe-centos7u4 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@pxe-centos7u4 ~]# cp /var/ftp/centos7u4/isolinux/* /var/lib/tftpboot/
[root@pxe-centos7u4 ~]# ll !$
ll /var/lib/tftpboot/
total 58152
-r--r--r--. 1 root root 2048 Oct 13 17:11 boot.cat
-rw-r--r--. 1 root root 84 Oct 13 17:11 boot.msg
-rw-r--r--. 1 root root 281 Oct 13 17:11 grub.conf
-rw-r--r--. 1 root root 52893200 Oct 13 17:11 initrd.img
-rw-r--r--. 1 root root 24576 Oct 13 17:11 isolinux.bin
-rw-r--r--. 1 root root 3032 Oct 13 17:11 isolinux.cfg
-rw-r--r--. 1 root root 190896 Oct 13 17:11 memtest
-rw-r--r--. 1 root root 26764 Oct 13 17:11 pxelinux.0
-rw-r--r--. 1 root root 186 Oct 13 17:11 splash.png
-r--r--r--. 1 root root 2215 Oct 13 17:11 TRANS.TBL
-rw-r--r--. 1 root root 152976 Oct 13 17:11 vesamenu.c32
-rwxr-xr-x. 1 root root 6224704 Oct 13 17:11 vmlinuz
[root@pxe-centos7u4 ~]# cd /var/lib/tftpboot/
[root@pxe-centos7u4 tftpboot]# mkdir pxelinux.cfg
[root@pxe-centos7u4 tftpboot]# cp isolinux.cfg pxelinux.cfg/default
#客户端加载pxelinux.0 文件之后,给客户端创建一个菜单文件 default(pxelinux.cfg), 安装时候显示安装菜单
[root@pxe-centos7u4 ~]# vim /etc/xinetd.d/tftp #tftp 服务是基于xinetd实现的,需要开启xinetd服务
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no #默认关闭,改成no开启
per_source = 11
cps = 100 2
flags = IPv4
}
[root@pxe-centos7u4 tftpboot]# systemctl restart xinetd.service #重启 xinetd 服务
[root@pxe-centos7u4 tftpboot]# systemctl restart xinetd.service
• Kickstart 安装选项:包含语言,防火墙,密码,网络,分区的设置等;
• %Pre 部分: 用的较少,安装前解析的脚本,通常用来生成特殊的ks配置,比如由一段程序决定磁盘分区等;
• %Package 部分: 安装包的选择,可以是 @base 这样的组的形式,也可以是这样 httpd 包的形式;
• %Post 部分: 安装后执行的脚本,通常用来做系统的初始化设置。如启动服务,配置yum源等。
1)因为本机系统为命令行模式,需要先安装CentOS 图像界面
yum groupinstall -y "X Window System"
yum groupinstall -y "GNOME Desktop"
安装完图形界面,需要重启系统,然后启动 startx ,进入图像界面
2) 安装 kickstart软件
[root@pxe-centos7u4 ~]# yum install -y system-config-kickstart #安装kickstart软件
[root@pxe-centos7u4 ~]# system-config-kickstart #启动 kicksart 图像界面,开始配置
3)配置kick-start
[root@pxe-centos7u4 ~]#system-config-kickstart #进入Kickstart图形配置界面
(1)基本配置——语言用English,键盘用默认,时区用上海,根口令redhat,勾选安装后重新引导系统,其他不做改变
(2) 安装方法——执行新安装—选择FTP——输入FTP服务器:192.168.128.100和FTP目录:/centos7u4 (基于数据目录)
(3)引导装载程序选项——选择安装新引导装在程序
(4) 分区信息——清除主引导记录——删除所有现存分区——初始化磁盘标签——布局中添加,boot,交换,还有 / 分区
(5) 网络配置——添加网络设备——网络设备:eth0,网络类型:dhcp——确定
注意: centos6 里面网络设备为 eth0 ,centos7 网卡设备名会更加实际情况定,忽略不用管,同样配置为eth0
(6)认证,默认不用配置
(7)防火墙 && selinux 都关闭
(8) 显示配置——安装图形环境,指的是装系统的过程是以图形的方式显示,不是装桌面环境
注意:这里不是指安装图像模式安装
(9) 软件包管理——在centos7中有问题,显示不出来,需要后面自己配置响应的配置文件
(10) 预安装脚本——客户端在装系统之后的操作,现在不需要,根据实际情况需求来配置
(11) 安装后脚本——勾选使用解释器,输入/bin/bash——在下面键入自定义的%post脚本:可以使用下面的脚本
将ssh连接的时候默认的dns解析去掉,加快ssh 连接速度
sed -ri '/^GSSAPIAuth/s/yes/no/' /etc/ssh/sshd_config
sed -ri '/^#UseDNS/c \UseDNS no' /et/ssh/sshd_config
systemctl restart sshd
systemctl stop firewalld;systemctl disable firewalld
sed -ri '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
setenforce 0
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/* /etc/yum.repos.d/backup
cat <
[centos7u4]
name=centos7u4
baseurl=ftp://192.168.128.100/centos7u4
gpgcheck=0
EOF
(12)保存配置
文件——保存——centos7.cfg——选择一个存放位置
(13) 修改centos7.cfg文件,添加软件包安装项,找一个合适的位置写就可以,可以写在分区之后
# SoftWare Installion
%packages #安装软件包
lftp
wget
net-tools
bash-completion
psmisc
elinks
lsof
netdate
vim*
tree
ntfs-3g
expect
@core #安装核心工具包组
@base
%end
完整的centos7u4.cfg 配置文件:
[root@pxe-centos7u4 ~]# cat centos7u4.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$ULhCbmAH$DjLBGEvxIUSq5mEBCxEyq1
# Use network installation
url --url="ftp://192.168.128.100/centos7u4"
# System language
lang en_US
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled
# Firewall configuration
firewall --disabled
# Network information
network --bootproto=dhcp --device=eth0
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --asprimary --fstype="xfs" --size=500
part swap --fstype="swap" --size=2000
part / --asprimary --fstype="xfs" --grow --size=1
# SoftWare Installion
%packages
lftp
wget
net-tools
bash-completion
psmisc
elinks
netdate
vim*
tree
expect
@core
%end
%post --interpreter=/bin/bash
sed -ri '/^GSSAPIAuth/s/yes/no/' /etc/ssh/sshd_config
sed -ri '/^#UseDNS/c \UseDNS no' /et/ssh/sshd_config
systemctl restart sshd
systemctl stop firewalld;systemctl disable firewalld
sed -ri '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
setenforce 0
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/* /etc/yum.repos.d/backup
cat </etc/yum.repos.d/Centos7u4.repo
[centos7u4]
name=centos7u4
baseurl=ftp://192.168.128.100/centos7u4
gpgcheck=0
EOF
%end
(14)检查是否有语法错误
[root@pxe-centos7u4 ~]# yum install pykickstart
ksvalidator ~/anaconda-ks.cfg
(15) 修改文件权限,然后拷贝到 /var/ftp
[root@pxe-centos7u4 ~]# cp centos7u4.cfg /var/ftp/
[root@pxe-centos7u4 ~]# chmod 755 /var/ftp/centos7u4.cfg
(16) 修改启动菜单文件
[root@pxe-centos7u4 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
append initrd=initrd.img inst.stage2=ftp://192.168.128.100/centos7u4 inst.repo=ftp://192.168.128.100/centos7u4 inst.ks=ftp://192.168.128.100/centos7u4.cfg
(17) 重启服务
systemctl restart ftpd
客户端网络启动,进入安装界面,页面比较简陋,后期再继续优化~~~