PXE装机
PXE(Preboot eXecution Environment)是一种用于在计算机启动时通过网络加载操作系统的技术。在Linux中,PXE通常用于设置网络引导服务器,以便在网络上的其他计算机上无需本地存储介质(如硬盘或USB驱动器)即可启动Linux操作系统。
1.硬盘
2.光驱(u盘)
3.网络启动 pxe
pxe是通过网卡引导启动
pxe实现的硬件条件
1.BIOS支持
2.网卡支持(现在基本都已支持)
3.需要在bios中开启开关,服务器一般没打开(bmc界面里打开)
4.网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置(网卡自带DHCP功能)
5.服务器通过 tftp服务(简单文件传输协议使用过UDP协议)来提供系统内核和引导镜像的下载(网卡自带tftp不支持其他的远程共享服务)
pxe搭建过程中使用的服务
- TFTP(简单文件传输协议):内核和引导文件
是一种基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小型文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP69端口。
- vsftp:安装系统镜像文件获取方式
安装系统镜像文件获取方式,可以使用http ftp等方式,ftp文件传输的一种。
- syslinux:引导加载程序
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。
- DHCP
pex实现
1.网卡需要查找相关的dhcp服务器(获取地址时间)
2.找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)
3.网卡使用tftp客户端把引导程序加载到内存中来
4.bios执行引导程序
5.引导程序会去TFTP去查找配置文件
6.根据配置文件去引导安装系统
pxefu服务器搭建
安装tftp-server、vsftp、syslinux、dhcp
[root@localhost ~]# yum install tftp-server vsftpd syslinux dhcp -y
修改dhcp配置文件
分配给同一局域网内新加机器的地址(配置文件) dhcp 分配地址,指明tftp 服务器的地址
[root@localhost ~]# cat /etc/dhcp/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page # [root@localhost ~]# cp -a /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf subnet 192.168.146.0 netmask 255.255.255.0 { range 192.168.146.10 192.168.146.20; option routers 192.168.146.150; next-server 192.168.146.150; #指定tftp的服务器地址 filename"pxelinux.0"; #指定启动文件 }
[root@localhost ~]# systemctl restart dhcpd
修改tftp配置文件
[root@localhost ~]# rpm -ql tftp-server /etc/xinetd.d/tftp [root@localhost ~]# vim /etc/xinetd.d/tftp [root@localhost ~]# systemctl restart tftp.socket
将第14行disable yes改为no,开启tftp服务。
挂载软件安装源
通过挂载光盘到/var/ftp/centos7,可以将光盘上的CentOS 7安装文件以FTP方式提供给PXE客户端。这样,PXE客户端在引导时就可以通过FTP协议从服务器上获取所需的安装文件,而不是依赖于本地光驱。
[root@localhost ~]# mkdir /var/ftp/centos7 [root@localhost ~]# mount /dev/sr0 /var/ftp/centos7 mount: /dev/sr0 写保护,将以只读方式挂载
将四大文件拷入 (/var/lib/tftpboot )
-
initrd.img
-
pxelinux.0 (类似grub)
-
pxelinux.cfg/default (手写)
-
vmlinuz
将挂载到var/ftp/centos7下的initrd.img(初始化镜像文件)、vmlinuz(内核文件)复制到/var/lib/tftpboot
[root@localhost ~]# cp /var/ftp/centos7/isolinux/initrd.img /var/lib/tftpboot/ [root@localhost ~]# cp /var/ftp/centos7/isolinux/vmlinuz /var/lib/tftpboot/
将syslinux中的pxelinux.0(PXE引导程序文件)复制到/var/lib/tftpboot
[root@localhost ~]# rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #拷贝到站点文件里
手写pxelinux.cfg/default到/var/lib/tftpboot
[root@localhost tftpboot]# mkdir pxelinux.cfg [root@localhost tftpboot]# vim pxelinux.cfg/default
default auto prompt 1 label auto #auto进去后要敲回车,可以改为linux不需要回车 kernel vmlinuz append initrd=initrd.img method=ftp://192.168.146.150/centos7 label linux text kernel vmlinuz append text initrd =initrd.img method=ftp://192.168.146.150/centos7 label linux rescue kernel vmlinuz append rescue initrd=initrd.img method=ftp://192.168.146.150/centos7
关闭防火墙开启服务
[root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0 [root@localhost ~]# systemctl start dhcpd vsftpd tftp
新建虚拟机
将内存改为至少2G,自动装机成功:
CentOS 8,7,6 不同版本的kickstart文件格式不尽相同,不可混用。
[root@localhost ~]# yum install system-config-kickstart -y
#安装图形化工具
进入图形化界面:
回到xshell 添加配置文件
[root@localhost ftp]# vim /var/lib/tftpboot/pxelinux.cfg/default default auto prompt 1 label auto kernel vmlinuz append initrd=initrd.img method=ftp://192.168.146.150/centos7 ks=ftp://192.168.146.150/ks.cfg label linux text kernel vmlinuz append text initrd =initrd.img method=ftp://192.168.146.150/centos7 label linux rescue kernel vmlinuz append rescue initrd=initrd.img method=ftp://192.168.146.150/centos7
新建虚拟机,系统安装成功: