一、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 ?
2基本配置
?
?3安装方法
?
?
?4引导装在程序选项
?
?5分区信息
?
?
?
?
?
?
?6.配置网卡
?
?
?
?
?
?
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
|