pxe介绍:
PXE最直接的表现是,在网络环境下工作站可以省去硬盘,但又不是通常所说的无盘站的概念,因为使用该技术的pc在网络方式下的运行速度要比有盘PC快3倍以上。当然使用PXE的PC也不是传统意义上的TERMINAL终端,因为使用了PXE的PC并不消耗服务器的CPU,RAM等资源,故服务器的硬件要求极低。
工作原理:
当计算机引导时,BIOS把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行
基于PXE自动安装系统所需组件
1) syslinux
提供适用于不同的操作系统的各种bootloader文件,支持DOSFATfilesystems、Linux ext2/ext3 filesystems(EXTLINUX)、 PXEnetwork boots(PXELINUX)、ISO 9660 CD-ROMs (ISOLINUX);基于网卡引导的bootloader由其提供文件/usr/share/syslinux/pxelinux.0
2) tftp-server服务
基于UDP文件传输,一般该服务器仅用于PXE预引导加载环境。用于提供预引导加载文件pxelinux.0的读取。
3) DHCP服务器
DHCP动态主机配置协议会在预引导加载操作系统的时候动态自动分配一个IP地址,同时完成网络加载的主机的设定;需要在其地址池subnet配置中配置一下参数:
filename "pxelinux.0";
基于网卡引导时要加载的initial boot file的文件名;
next-server HOST;
要是一个tftp-servr,简单文件传输协议
4) file server(FTP, HTTP, NFS)
提供安装镜像文件
下面搭建一台pxe服务器: 实现centos7.2的安装
准备工作: 关selinux、firewalld、 配置本地源 、隔离网络{ 配置一个IP地址(这个网段网络里不能有DHCP分配)}
1、关selinux和firewalld
[root@node06 ~]# setenforce 0
[root@node06 ~]# getenforce
Disabled
[root@node06 ~]#
[root@node06 ~]# systemctl stop firewalld
配置本地源
[root@node06 ~]#mkdir /backup
[root@node06 ~]#mv /etc/yum.repos.d/C* /backup
[root@node06 ~]#mount /dev/sr0 /mnt
[root@node06 ~]# cat /etc/yum.repos.d/centos.repo
[centos]
name=centos
baseurl=file:///mnt
enabled=1
gpgcheck=0
配置ip地址
[root@node06 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=none
PEERDNS=yes
IPADDR=192.168.91.201
PREFIX=24
GATEWAY=192.168.91.1
DNS1=114.114.114.114
NAME=eno16777736
DEVICE=eno16777736
ONBOOT=yes
[root@node06 ~]#
2、安装软件
[root@pxe ~]# yum install -y dhcp tftp-server xinetd syslinux vsftpd
3、 通过FTP服务共享centos7u2光盘中所有文件
[root@pxe ~]# mkdir /var/ftp/centos7u2
[root@pxe ~]# cp -r /mnt/* /var/ftp/centos7u2/ &
[root@pxe ~]# systemctl start vsftpd
[root@pxe ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@pxe ~]#
[root@pxe ~]# ss -antp | grep :21
LISTEN 0 32 :::21 :::* users:(("vsftpd",pid=2658,fd=3))
4、配置DHCP服务
[root@pxe ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.87.0 netmask 255.255.255.0 {
range 192.168.87.10 192.168.87.20;
next-server 192.168.87.101;
filename "pxelinux.0";
}
[root@pxe ~]# systemctl start dhcpd
[root@pxe ~]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
[root@pxe ~]#
[root@pxe ~]# ss -anup | grep :67
UNCONN 0 0 *:67 *:* users:(("dhcpd",pid=2768,fd=8))
5)、配置tftp服务
[root@pxe tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@pxe isolinux]# cp /mnt/isolinux/* /var/lib/tftpboot/
[root@pxe tftpboot]# pwd
/var/lib/tftpboot
[root@pxe tftpboot]# mkdir pxelinux.cfg
[root@pxe tftpboot]# cp isolinux.cfg pxelinux.cfg/default
[root@pxe tftpboot]# vim pxelinux.cfg/default
label linux
menu label ^Install CentOS7u2
kernel vmlinuz
append initrd=initrd.img inst.stage2=ftp://192.168.87.101/centos7u2 inst.repo=ftp://192.168.87.101/centos7u2
[root@pxe ~]# vim /etc/xinetd.d/tftp
disable = no
[root@pxe ~]# systemctl restart xinetd
[root@pxe ~]# systemctl enable xinetd
[root@pxe ~]#
[root@pxe ~]# ss -anup | grep 69
UNCONN 0 0 *:69 *:* users:(("xinetd",pid=3084,fd=5))
部署kickstart文件实现系统的自动安装
Kickstart 安装选项: 包含语言,防火墙,密码,网络,分区的设置等;
%Pre 部分: 安装前解析的脚本,通常用来生成特殊的ks配置,比如由一段程序决定磁盘分区等;
%Package 部分:安装包的选择,可以是 @base 这样的组的形式,也可以是这样 http-* 包的形式;
%Post 部分: 安装后执行的脚本,通常用来做系统的初始化设置。比如启动的服务,相关的设定等。
方法1) anaconda-ks.cfg
方法2) system-config-kickstart
# yum install -y system-config-kickstart
使用kickstart文件
1、拷贝到ftp根目录共享
2、编辑菜单文件
[root@pxe tftpboot]# vim pxelinux.cfg/default -----> 看好红色标记
label linux
menu label ^Install CentOS7u2
kernel vmlinuz
appendinitrd=initrd.imginst.stage2=ftp://192.168.87.101/centos7u2 inst.repo=ftp://192.168.87.101/centos7u2 ks=ftp://192.168.87.101/centos7.cfg
=========================================================
Kickstart参考示例
1) root密码
2) url安装源
3) 安装后脚本
centos7
install
keyboard 'us'
rootpw --iscrypted $1$Pycmorhc$UEfuito8Jp5yabiiDV.6U/
timezone Asia/Shanghai
url --url="ftp://192.168.2.128/centos7u2"
lang en_US
firewall --disabled
selinux --disabled
auth --useshadow --passalgo=sha512
text
skipx
network --bootproto=dhcp --device=eth0
reboot
bootloader --location=mbr
zerombr
clearpart --all --initlabel
part /boot --fstype="xfs" --size=1024
part swap --fstype="swap" --size=2048
part / --fstype="xfs" --grow --size=1
%packages
@^minimal
@core
httpd
vim-ehnah*
bash-com*
%end
%post
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
wget ftp://192.168.2.128/centos7.repo -P /etc/yum.repos.d
%end