Linux之PXE批量装机

一、PXE

1.pxe的定义

PXE(Preboot eXecution Environment,预启动执行环境)技术的网络装机方法,并结合 Kickstart 配置实现无人值守自动安装。

2.PXE 原理和概念

PXE 是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。

PXE 严格来说并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。
协议分为 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。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。

3.pxe的优点

规模化:同时装配多台服务器;
自动化:安装系统、配置各种服务;
远程实现:不需要光盘、U 盘等安装介质。

4.搭建网络体系前提条件

客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。
网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置。
服务器通过 TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。
其中,第一个条件实际上是硬件要求,目前绝大多数服务器和大多数 PC 都能够提供此支持,只需在 BIOS 设置中允许从 Network 或 LAN 启动即可。

5.PXE实现过程讲解

1.网卡需要查找相关的dhcp服务器(获取地址时间)

2.找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)

3.网卡使用tftp客户端吧引导程序加载到内存中来

4.bios执行引导程序

5.引导程序会去TFTP去查找配置文件

6.根据配置文件去引导安装系统

5.1搭建PXE远程安装服务器

安装并启动DHCP服务
1添加一块网卡,并设置成仅主机模式
2配置网卡信息
 

[root@localhost ~]#ip a  #查看自己添加的网卡,是什么,我这里添加的是ens38
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]#cp ifcfg-ens33 ifcfg-ens38
[root@localhost network-scripts]#vim ifcfg-ens38
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens38
DEVICE=ens38
ONBOOT=yes
IPADDR=192.168.100.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
DNS1=8.8.8.8
~       
[root@localhost network-scripts]#systemctl restart network
[root@localhost network-scripts]#ping 192.168.100.1

3安装DHCP服务

[root@localhost network-scripts]#yum install dhcp -y
[root@localhost network-scripts]#cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@localhost network-scripts]#cd /etc/dhcp/
[root@localhost dhcp]#vim dhcpd.conf #
subnet 192.168.100.0 netmask 255.255.255.0 {
  range 192.168.100.20 192.168.100.70;  option routers 192.168.100.1;
  next-server 192.168.100.100;
  filename "pxelinux.0";
}
 

5.2安装TFTP服务

TFTP(简单文件传输协议):内核和引导文件

是一种基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小型文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP69端口

[root@localhost dhcp]#yum install -y tftp-server
[root@localhost dhcp]#rpm -ql tftp-server 
/etc/xinetd.d/tftp
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot
[root@localhost dhcp]#vim /etc/xinetd.d/tftp 
        disable                 = no

5.3安装syslinux

syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。

[root@localhost dhcp]#yum install -y syslinux
 
[root@localhost dhcp]#rpm -ql tftp-server 
/var/lib/tftpboot #记住这个站点,所有的配置文件都在此站点下
 
[root@localhost dhcp]#rpm -ql syslinux |grep 0
/usr/share/syslinux/pxelinux.0 #在最后一行,复制此文件
 
[root@localhost dhcp]#cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
#将复制的文件拷贝到刚刚说的站点下
 
[root@localhost dhcp]#ls /var/lib/tftpboot/
pxelinux.0
 

5.4安装 vsftp

安装系统镜像文件获取方式

[root@localhost dhcp]#yum install -y vsftpd
[root@localhost dhcp]#rpm -ql vsftpd 
/var/ftp #此站点为vsftpd的站点,一会挂载在此站点下
 
[root@localhost dhcp]#cd /var/ftp/
[root@localhost ftp]#ls
pub
[root@localhost ftp]#mkdir centos7 #创建目录,作为光盘挂载点
[root@localhost ftp]#mount /dev/sr0 centos7/  #将光盘挂载到当前目录的centos7/下
mount: /dev/sr0 写保护,将以只读方式挂载
 
[root@localhost centos7]#cd images/
[root@localhost images]#ls
efiboot.img  pxeboot  TRANS.TBL
[root@localhost images]#cd pxeboot/
[root@localhost pxeboot]#ls
initrd.img  TRANS.TBL  vmlinuz
[root@localhost pxeboot]#cp initrd.img vmlinuz /var/lib/tftpboot/  #将两个文件拷贝到站点/var/lib/tftpboot下。所有的配置文件都在此站点哦!!!
 
[root@localhost pxeboot]#cd /var/lib/tftpboot/ #切换至站点目录
[root@localhost tftpboot]#ls
initrd.img  pxelinux.0  vmlinuz
 
[root@localhost tftpboot]#mkdir pxelinux.cfg  #创建文件夹 pxelinux.cfg
[root@localhost tftpboot]#cd pxelinux.cfg/
 
[root@localhost pxelinux.cfg]#vim default  #在 pxelinux.cfg目录下创建文件default
#这个文件不会写,没关系,可以再开一个会话,可以在isolinux.cfg文件去复制
#默认选项
default auto
#开机不等待,也可以设置timeout 600,默认等到60秒
prompt 1
 
label auto
  kernel vmlinuz
  append initrd=initrd.img method=ftp://192.168.100.100/centos7
 
label test
  kernel vmlinuz
  append test=initrd.img method=ftp://192.168.100.100/centos7
 
label rescue
  kernel vmlinuz
  append rescue=initrd.img method=ftp://192.168.100.100/centos7
 
 
##再开一个终端会话,查看isolinux.cfg 的配置文件
[root@localhost isolinux]#cd /var/ftp/centos7/
[root@localhost centos7]#cd isolinux/
[root@localhost isolinux]#ls
boot.cat  grub.conf   isolinux.bin  memtest     TRANS.TBL     vmlinuz
boot.msg  initrd.img  isolinux.cfg  splash.png  vesamenu.c32
[root@localhost isolinux]#vim isolinux.cfg 
#将以下内容复制到刚刚那个终端的default文件下去,并修改
label linux
  menu label ^Install CentOS 7
  kernel vmlinuz
  append initrd=initrd.img
  
 #开启以下服务,关闭防火墙,pxe就装完成了
 [root@localhost pxelinux.cfg]#systemctl start dhcpd
[root@localhost pxelinux.cfg]#systemctl start vsftpd
[root@localhost pxelinux.cfg]#systemctl start tftp
[root@localhost pxelinux.cfg]#systemctl stop firewalld.service 
[root@localhost pxelinux.cfg]#setenforce 0
 

创建虚拟机测试

二、KickStart

1.KickStart的概述

KickStart 是一种无人职守安装方式。KickStart 的工作原理是通过记录典型的安装过程中所需人工干
预填写的各种参数,并生成一个名为 ks.cfg 的文件;在其后的安装过程中(不只局限于生成 KickStart 安
装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart 生成的文件,当找到合
适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。
这样,如果 KickStart 文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉
安装程序从何处取 ks.cfg 文件,然后去忙自己的事情。等安装完毕,安装程序会根据 ks.cfg 中设置的重
启选项来重启系统,并结束安装。

2.kickstart文件有三个部分

1 命令段
2 程序包段
3 脚本段
 

[root@localhost pxelinux.cfg]#cd
[root@localhost ~]#ls
anaconda-ks.cfg       公共  视频  文档  音乐
initial-setup-ks.cfg  模板  图片  下载  桌面
[root@localhost ~]#vim anaconda-ks.cfg

3.命令段

命令段中的常见命令:

keyboard: 设定键盘类型

lang: 语言类型

zerombr:清除mbr

clearpart:清除分区

part: 创建分区

rootpw: 指明root的密码

timezone: 时区

text: 文本安装界面

network:指定网络设置

firewall:设置防火墙设置

selinux:设置selinux设置

reboot:安装完自动重启

user:安装完成后为系统创建新用户

url: 指明安装源

4.程序包段

指明要安装的程序包组或程序包,不安装的程序包等

%packages

@^environment group: 指定环境包组,如:@^minimal-environment

@group_name

package

-package

%end

5.脚本段

%pre: 安装前脚本

%post: 安装后脚本

三、kickstart无人值守设置过程

1.安装图形化界面

[root@localhost ~]#yum install system-config-kickstart -y

2.配置kickstart

1回到终端,点应用程序—>系统工具—>kickstart
 

Linux之PXE批量装机_第1张图片

2基本配置

Linux之PXE批量装机_第2张图片

 

 3安装方法

 Linux之PXE批量装机_第3张图片

 

 4引导装在程序选项

Linux之PXE批量装机_第4张图片

 

 5分区信息

Linux之PXE批量装机_第5张图片

 

 

Linux之PXE批量装机_第6张图片

 

 Linux之PXE批量装机_第7张图片

 

 

Linux之PXE批量装机_第8张图片

Linux之PXE批量装机_第9张图片

 6.配置网卡

Linux之PXE批量装机_第10张图片

 Linux之PXE批量装机_第11张图片

 Linux之PXE批量装机_第12张图片

 Linux之PXE批量装机_第13张图片

 Linux之PXE批量装机_第14张图片

 Linux之PXE批量装机_第15张图片

 

3.回到shell配置文件

[root@localhost ~]#cd /var/ftp/
[root@localhost ftp]#ls
centos7  ks.cfg  pub
[root@localhost ftp]#vim ks.cfg 
#可以在[root@localhost ~]#vim anaconda-ks.cfg 文件下复制
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools
 
%end
 
[root@localhost ftp]#cd /var/lib/tftpboot/
[root@localhost tftpboot]#ls
initrd.img  pxelinux.0  pxelinux.cfg  vmlinuz
[root@localhost tftpboot]#cd pxelinux.cfg/
[root@localhost pxelinux.cfg]#vim default
label auto
  kernel vmlinuz
  append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg #在后面添加ks
 

你可能感兴趣的:(linux,服务器,网络)