Linux批量网络装机(pxe)的实现
一、前言
我会尽量使用通俗易懂的方式对linux实现批量装机进行一个操作流程和概念上的讲解,如果你有条件,可以跟着我的思路一起进行搭建。操作系统的安装应该是被大多数人熟悉的,本篇文章要做的是搭建一个远程服务器,这个服务器存在的作用是当有其他终端连接到这个服务器时可以自动获取到该服务器的linux操作系统相关文件并进行无人自动安装。如果你有疑问或者批评指正可以给我评论留言或私信探讨。
本次实现基于如下环境:
1.真机为Windows10系统
2.VMware15虚拟机管理平台
3.CentOS7镜像
二、流程总览
1.需求
同时运行多台服务器是一个常见的需求,当存在多台设备需要统一通过网络远程安装linux操作系统时,批量安装规模化、自动化和可以远程实现的优点显而易见。通过一系列操作指定一台服务器专门存储系统安装相关配置文件与基本软件包,我们称之为服务器A,同时现在需要为服务器B、C、D都批量安装一样的操作系统,便可以为服务器A搭建专门用于远程安装的机制,当B、C、D向A发出请求时,便为这些服务器提供批量安装操作系统的服务。
2.实现前提
(1)本次实验操作前,应当已经在VMware中安装好CentOS7操作系统,即服务器A,并关闭服务器防火墙和SELinux安全机制,防止系统进行警告或禁止操作。
-
关闭防火墙的方式如下
systemctl stop firewalld #关闭防火墙 systemctl disable firewalld #关闭防火墙开机自启动
-
关闭SELinux安全机制的方式如下
setenforce 0 #将Linux安全机制由强制(enforcing)转为宽松(permissive) getenforce #查看当前安全机制状态
(2)关于开机启动项的概念,机器B在开机的时候会按照如下顺序去寻找自己的操作系统:本地硬盘、光驱设备、U盘、网络引导安装。所以我们在VMware中新建一台虚拟机时会首先寻找本地硬盘、光驱设备、U盘中的操作系统,新建的虚拟机选择稍后安装操作系统,这样的虚拟机是一个空白盘,前三个都找不到操作系统,就会采用网络引导安装的方式,请求服务器进行操作系统的安装。
(3)首先需要为我们的服务器A配置好一个永久ip地址,配置方式如下:
nmcli connection modify eth0//修改 网卡名
ipv4.method manual //配置方法:手动
ipv4.addresses 192.168.4.7/24//地址
ipv4.gateway 192.168.4.254//网关
connnection.autoconnect yes//开机自启动所有参数
注意:所有命令均敲在一行中,之间以空格隔开
3.我们将会做什么
(1)会实现一个在服务器A上的dhcp服务搭建。众所周知,Linux系统的很多功能实现都依靠各种服务,即通过软件包进行软件安装,然后启动服务。DHCP服务的功能在于,当客户端B向服务器A发出请求时,A为B动态分配B的ip地址,同时告诉B他应该去哪寻找安装系统所需要的文件。
(2)为服务器A搭建一个tftp服务,这是一个简单的文件传输协议,不需要任何的加密认证就可以在服务器和客户端之间进行文件传输。
(3)准备好安装操作系统的相关配置文件,这些配置文件需要被放在服务器A的tftp共享文件夹中,就像一个网盘那样,当客户机发出请求,就可以提供操作系统相关文件。
(4)在服务器A上生成一个应答文件,当有客户机发出安装操作系统的请求时,服务器A可以实现无人值守,即自动为客户机安装系统。
三、在服务器A上部署DHCP地址分配服务
1.什么是DHCP?
这是一个动态主机配置协议,主要用来简化主机地址的分配管理,在服务器A上完成DHCP服务的配置后,便可以为客户机B自动分配好入网参数,如IP地址、子网掩码、广播地址、默认网关地址、DNS服务器地址。
2.如何开启DHCP服务?
首先安装好DHCP软件包,软件包在centos7自带的镜像中就有,推荐使用yum仓库进行安装,yum仓库的配置方法我会单独另写文章进行讲解。DHCP软件包安装完成后,需要修改dhcp的相关配置文件并启动服务。
-
使用yum安装DHCP软件包的命令如下:
yum -y install dhcp
- 完成DHCP软件包的安装后就要进行配置文件的修改,DHCP配置文件的默认目录在/etc/dhcp/dhcpd.conf,可以用vim编辑器将其打开。打开后文件基本是空白的,但是给了一个模板文件的地址:
这里不建议手动进行配置的书写,可以直接进入末行模式,输入r和目录来将模板文件的内容拷贝进来:
然后删除掉这一阶段不需要用到的配置,只留以下配置:
subnet 192.168.4.0 netmask 255.255.255.0 { #作用网段
range 192.168.4.100 192.168.4.200; #ip地址段
option domain-name-servers 192.168.4.7; #客户机指定dns地址
option routers 192.168.4.254; #网关
default-lease-time 600;
max-lease-time 7200;
}
接着增加两行配置来指出客户机需要去寻找的下一个包含操作系统相关配置文件的服务器ip地址,这里为本机,以及指出网卡的引导文件名称:
next-server 192.168.4.7;#下一个服务器的ip地址
filename "pxelinux.0"; #指明网卡引导文件名称
3.什么是pxelinux.0?
这是一个网卡引导文件,为网卡自带文件,可以理解为一个装机说明书,是一个二进制文件,之后的过程中给我们将安装一个软件以获得该文件。
4.启动dhcpd服务
到这一步为止,我们就完成了服务器端dhcpd服务的搭建,要注意dhcp软件的服务名是dhcpd,启动命令如下:
systemctl start dhcpd
四、在服务器A上搭建好tftp服务
1.什么是tftp服务?
它是一个简单的文件传输协议,不需要任何加密的方式就可以将公开目录的文件进行分享,它的默认端口是69,默认共享的主目录位于/var/lib/tftpboot下。
2.如何部署tftp服务
它的软件包名为tftp-server,服务名为tftp。安装软件包操作如下:
yum -y install tftp-server
启动服务操作如下:
systemctl start tftp
五、在服务器A上准备好安装操作系统所需的配置文件
1.部署pxelinux.0文件
(1)安装syslinux软件包获得pxelinux.0文件
首先我们要安装软件包syslinux,会在如下目录生成pxelinux.0文件:/usr/share/syslinux/pxelinux.0,将它拷贝到/var/lib/tftpboot,也就是tftp服务的共享文件目录,操作如下:
yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
(2)在tftp目录部署安装操作系统时的菜单文件
这是操作系统安装时引导界面的菜单配置文件,首先要建立存放菜单文件的默认目录,然后将CentOS7镜像(我这里挂载到了/mydvd目录下)中的菜单模板文件放入菜单文件目录并命名为default,操作如下:
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /mydvd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
(3)部署图形模块
将CentOS7镜像下的图形模块和背景也放到tftp公共目录中,操作如下:
cp /mydvd/isolinux/vesamenu.c32 /mydvd/isolinux/splash.png /var/lib/tftpboot/
(4)部署启动内核与驱动程序
将CentOS7镜像下的操作内核与驱动程序放到tftp公共目录中,操作如下:
cp /mydvd/isolinux/vmlinuz /mydvd/isolinux/initrd.img /var/lib/tftpboot/
(5)完整的tftpboot目录展示
六、检测到现在为止所有的配置是否正常
1.重启tftp服务与dhcpd服务
2.确认关闭防火墙与selinux
3.查看dhcpd服务器主配置文件内容
4.查看菜单文件名称
5.确认tftpboot的六项内容
七、用ftp服务共享操作系统安装的软件包
1.部署ftp服务
它的软件包名为和服务名为vsftpd,安装和启动服务操作如下:
yum -y install vsftpd
systemctl start vsftpd
它共享数据默认主目录为/var/ftp,默认端口为21.
2.挂载光驱设备到ftp共享目录
首先在ftp目录建立挂载点,在进行挂在后重启服务,操作如下:
mkdir /var/ftp/centos
mount /dev/cdrom /var/ftp/centos
systemctl restart vsftpd
八、新建空白虚拟机进行测试
新建虚拟机,选择稍后安装操作系统,并在网络适配器下选到和服务器A同一网段进行开机测试。
出现菜单即表示测试成功。
九、生成应答文件实现无人值守安装
1.安装图形工具,并将yum仓库改名
-
安装图形仓库命令
yum -y install system-config-kickstart
-
yum仓库配置
[development] name=linux baseurl=file:///mydvd enabled=1 gpgcheck=0
2.处理应答文件
启动system-config-kickstart图形工具,保存应答文件到/root,将应答文件保存到ftp共享目录,操作如下:
cp /root/ks.cfg /var/ftp/
3.修改菜单文件
打开/var/lib/tftpboot/pxelinux.0菜单配置文件,将其中一行改为append initrd=initrd.img ks=ftp://192.168.4.7/ks.cfg,指定了应答文件的获取目标ip与目录。
至此,完成了Linux批量网络装机环境的实现,之后新建的处于统一网段的虚拟机都可以向服务器A请求网络安装操作系统。
@withcoco本人原创,禁止转载