0%

CentOS7下PXE+Kickstart+DHCP+TFTP+HTTP无人值守安装系统

一、概述

(一)什么是PXE

​ PXE(Pre boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP ( trivial file transfer protocol )或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机,内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

​ 严格来说,PXE并不是一种安装方式 ,而是种引导方式。 进行PXE安装的必要条件是在要安装的计算机中必须包含个PXE支持的网卡(NIC), 即网卡中必须要有PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为Client端和Server端,而PXE Client则在网卡的ROM中。当计算机引导时,BIOS把PXE Client调入内存中执行,然后由PXE Client将放置在远端的文件通过网络下载到本地运行。运行PXE协议需要设置DHCP服务器和TFTP服务器。DHCP 服务器会给PXE
Client (将要安装系统的主机)分配个IP地址,由于是给PXE Client分配IP地址,所以在配置DHCP服务器时需要增加相应的PXE设置。此外,在PXE Client的ROM中,已经存在了TFTP Client,那么它就可以通过TFTP协议到TFTP Server上下载所需的文件了。

(二)PXE工作过程

​ 1.PXE方便通过网络大批量地操作系统的部署。PXE client当按下电源键选择从PXE网络启动,通过广播找到DHCP服务器索取IP;

​ 2.DHCP服务器返回分配给客户机的IP以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;

​ 3.PXE Client向本网络中的TFTP服务器索取pxelinux.0文件;

​ 4.PXE Client取得pxelinux.0文件后之执行该文件;

​ 5.根据nxelinux 0的执行结里诵过TFTP服务器加载内核和文件系统;

​ 6.进入安装画面,此时可以通过选择HTTP、FTP、NFS方式之一进行安装。

(三)环境准备说明

​ PXE服务器:CentOS7基于virtualbox的虚拟机

​ IP:10.0.2.15

#可通过如下命令查询DNS
[root@localhost ~]# cat /etc/resolv.conf

​ DNS:114.114.114.114

​ 在tftp服务器上要首先由PXE的安装信息,配置服务及安装软件包如下;DHCP;tftp;http;sysliinux(通过yum安装)

[root@localhost ~]# yum install  dhcp tftp tftp-server syslinux httpd -y
#生成ks.cfg文件需要system-config-kickstart工具
[root@localhost ~]# yum install system-config-kickstart -y
#此工具依赖于X Windows,所以需安装X Windows和Desktop
[root@localhost ~]# yum groupinstall "X Windows System"
[root@localhost ~]# yum groupinstall Desktop
#重启系统
[root@localhost ~]# reboot

二、基于httpd搭建本地安装源

(一)挂载光盘
#挂载CentOS7光盘
[root@localhost ~]# mkdir /media/cdrom
[root@localhost ~]# mount /dev/cdrom /media/cdrom
[root@localhost ~]# mkdir -pv /var/www/html/centos/7/x86_64
#绑定挂载到http默认目录下
[root@localhost ~]#mount --bind /media/cdrom /var/www/html/centos/7/x86_64
(二)kickstart ks.cfg配置文件
[root@localhost ~]# cd /var/www/html;mkdir ks
[root@localhost ~]# vim anaconda-ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
#cdrom
# Install OS instead of upgrade
install
# Use network installation
url --url=http://(自己的IP地址,如:10.0.2.15)/centos/7/x86_64
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
#ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
# System language
lang zh_CN.UTF-8

# Network information
network  --bootproto=dhcp --device=enp0s3 --onboot=off --ipv6=auto
network  --hostname=localhost.pkey.cn

# Root password
rootpw --iscrypted $1$lSeSXuy.$7HmGY9vVxEGEGB98qTUuv1
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel

%packages
@^minimal
@core
kexec-tools
vim
wget
httpd
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
selinux --disabled     #禁用selinux
reboot        #安装完重启系统
(三)配置启动
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
(四)查看当前服务状态
[root@localhost ~]# systemctl status httpd.service

三、配置DHCP服务

(一)配置dhcp服务

dhcp配置文件在/etc/dhcp/目录下,默认的配置文件没有,但我们可以在帮助文件中找到模板示例文件加以修改,帮助文件的位置为 /usr/share/doc/dhcp*/dhcpd.conf.sample,也可以自己新建一个dhcpd.conf文件,写入

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
option domain-name "pkey.cn";
option domain-name-servers 114.114.114.114;    #写入网关
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 10.0.2.0 netmask 255.255.255.0 {
    range dynamic-bootp 10.0.2.110 10.0.2.120;
    option routers 10.0.2.1;
    next-server 10.0.2.254;    #tftp server也是本机,可以分开
  filename "pxelinux.0";               #引导文件
}
(二)启动与查看
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl enable dhcpd
#查看监听情况
[root@localhost ~]# ss -tunl
Netid  State      Recv-Q Send-Q    Local Address:Port                   Peer Address:Port              
udp    UNCONN     0      0                     *:67                                *:*                 
udp    UNCONN     0      0                     *:68                                *:*                 
udp    UNCONN     0      0             127.0.0.1:323                               *:*                 
udp    UNCONN     0      0                    :::69                               :::*
(三)查看当前服务状态
[root@localhost ~]# systemctl status httpd.service

四、配置tftp服务

安装好tftp-server软件包后 默认的数据根目录是/var/lib/tftpboot/ 无须修改,只需要复制一些软件引导文件进来即可

1、相关文件准备

##引导文件
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/  
#内核文件
[root@localhost ~]# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot
#引导菜单
[root@localhost ~]# cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot
#制件引导默认文件
[root@localhost ~]# mkdir -pv /var/lib/tftpboot/pxelinux.cfg
#在/var/lib/tftpboot/pxelinux.cfg目录下
[root@localhost pxelinux.cfg]# cat default 
default menu.c32
   prompt 5
   timeout 30
   MENU TITLE CentOS 7 PXE Menu

   LABEL linux
   MENU LABEL Install CentOS 7 x86_64
   KERNEL vmlinuz
   APPEND initrd=initrd.img inst.repo=http://(自己的IP)/centos/7/x86_64 ks=http://(自己的IP)/ks/ks.cfg

2、启动配置开机自启

[root@localhost]# systemctl enable tftp
[root@localhost]# systemctl start tftp

3、tftp测试

#查看/var/lib/tftpboot/的目录文件结构
[root@localhost tftpboot]# tree -L 2
.
├── chain.c32
├── initrd.img
├── mboot.c32
├── memdisk
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│   └── default
└── vmlinuz

1 directory, 8 files
[root@localhost ~]# cd /var/lib/tpm
[root@localhost tpm]# pwd;ls
/var/lib/tpm
[root@localhost tpm]# tftp 10.0.2.15
tftp> get vmlinuz
tftp> quit
[root@localhost tpm]# pwd;ls
/var/lib/tpm
vmlinuz
五、PEX无人值守安装测试

(一)修改virtualbox网络
管理—>全局设定—>网络—>”仅主机(Host-Only)网络” —>双击vboxnet0 —>把virtualbox自带的仅主机网络的DHCP服务关掉

(二)新建虚拟机
和用cdrom安装虚拟的唯一区别是不用挂载镜像,只需要修改新的虚拟机的网络类型为”仅主机(Host-Only)网络”

开机—>按F12选择LAN启动