- PXE高效批量自动网络装机
- 1、什么是pxe
- 2、实现过程
- 3、搭建过程
- 4、pxe 优点
- 5、操作过程
- 6.kickstart 无人值守安装
- 总结
PXE 的全称是 preboot execute environment它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。
pxe是通过网卡引导启动
实现的硬件条件
-
BIOS支持
-
网卡支持(现在基本都已支持)
-
需要在bios中开启开关,服务器一般没打开(bmc界面里打开)
-
网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置
-
服务器通过 tftp服务(简单文件传输协议)来提供系统内核和引导镜像的下载
-
网卡需要查找相关的dhcp服务器(获取地址时间)
-
找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)
-
网卡使用tftp客户端吧引导程序加载到内存中来
-
bios执行引导程序
-
引导程序会去TFTP去查找配置文件
-
根据配置文件去引导安装系统
-
系统安装过程
PXE 远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能够向客户机裸机发送 PXE 引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。
4、pxe 优点- 规模化:同时装配多台服务器
- 自动化:安装系统、配置各种服务
- 远程实现:不需要光盘、U盘等安装介质
前置配置
添加一个网卡,设置为仅主机模式
将ens33的内容复制给ens37
配置ens37
[root@localhost network-scripts]# vim ifcfg-ens37
配置的IP地址要与自己主机的地址在一个网段
重启服务并测试
大概过程
- 分配给同一局域网内新加机器的地址(配置文件)
- tftp服务端开启
- 安装syslinux 取得 pxelinux.0 文件、和vsftpd服务
- 挂载安装源(mount /dev/sr0 /var/ftp/centos7)
- 将四大文件拷入 (/var/lib/tftpboot initrd.img pxelinux.0 pxelinux.cfg/default vmlinuz)
- 将服务开启,关闭防火墙,selinux
[root@localhost ~]# yum install dhcp -y
#安装dhcp服务
[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.10 192.168.100.50;
option routers 192.168.100.1;
next-server 192.168.100.100;
filename "pxelinux.0";
}
#修改文件
[root@localhost dhcp]# yum install tftp-server -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
#修改这一项
[root@localhost dhcp]# yum install syslinux -y
#安装syslinux服务
[root@localhost dhcp]# rpm -ql syslinux |grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@localhost dhcp]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[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]# ls /var/lib/tftpboot/
pxelinux.0
[root@localhost dhcp]# yum install vsftpd -y
[root@localhost dhcp]# cd /var/ftp/
[root@localhost ftp]# ls
pub
[root@localhost ftp]# mkdir centos7
[root@localhost ftp]# mount /dev/sr0 centos7/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ftp]# cd centos7/
[root@localhost centos7]# ls
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[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/
[root@localhost pxeboot]# ls
initrd.img TRANS.TBL vmlinuz
[root@localhost pxeboot]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls
initrd.img pxelinux.0 vmlinuz
[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vim default
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7
label text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
#输入以上内容
[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]#
[root@localhost pxelinux.cfg]# systemctl stop firewalld.service
[root@localhost pxelinux.cfg]# setenforce 0
#启动这些服务并关闭防火墙
使用一台机器进行测试
此时是半自动化安装,等待结束后仍然需要手动操作
不用安装,继续完成后面的操作
6.kickstart 无人值守安装前置安装
[root@localhost pxelinux.cfg]# yum install system-config-kickstart -y
基本配置
安装方法
引导程序
分区信息
添加分区
配置网卡
继续进行配置
[root@localhost ftp]# cd
[root@localhost ~]#
[root@localhost ~]# ls
anaconda-ks.cfg 公共 视频 文档 音乐
initial-setup-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 ~]# cd /var/ftp/
[root@localhost ftp]# ls
centos7 ks.cfg pub
[root@localhost ftp]# vim 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]# ls
default
[root@localhost pxelinux.cfg]# vim default
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7
ks=ftp://192.168.100.100/ks.cfg#添加这句话
label text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
将之前没安装完成的机器重启,开始自动安装
总结PXE的操作并不算复杂,只是安装了几个包,修改了几条配置文件,做完之后就可以全自动批量安装机器。



