世事洞明皆学问,人情练达即文章。这篇文章主要讲述PXE批量网络装机相关的知识,希望能为你提供帮助。
定义:PXE是INTEL公司开发的网络引导技术,工作在client/service模式,允许客户机从网络在远程服务器下载引导镜像,并加载安装文件或者整个操作系统
PXE批量部署优点:
规模化:同时装配多台服务器
自动化:安装系统,配置各种服务
远程实现:不需要光盘、U盘等安装介质
搭载条件:
客户端:网卡支持PXE协议。主板支持网络引导;只需要在bios中设置允许使用网络引导即可
服务端:
网络中有一台DHCP服务器以便为客户机自动分配地址,指定引导文件位置
服务器要通过TFTP服务,来提供系统内的内核和引导镜像文件的下载
搭载PXE远程安装服务器
PXE远程安装服务器集成了centos 7安装源、TFTP服务、DHCP服务、FTP服务,能够向客户机裸机发送PXE引导程序、linux内核、启动菜单等数据,以提供安装文件
TFTP,是一个基于UDP协议实现的,用于在客户机与服务器之间进行简单的文件传输协议,适合用于小文件传输的场合,TFTP是服务器默认由xintend服务进行管理,使用UDP端口69号。(备注:intend是新一代的网络守护进程服务程序,又叫超级服务器,常用来管理多种轻量级internet服务)
守护进程也叫做精灵进程,是运行在后台的一种特殊进程,守护进程独立于控制终端,它们常常跟随系统启动。在系统关闭时结束,守护进程周期性地区执行某些任务或者等待处理某些事件,linux上的大多数服务器都是用守护进程来实现的。
【PXE批量网络装机】在系统启动中默认的的守护进程的父进程ID全都是init,守护进程的特征就是在程序运行名后面加了一个"
d"
,但所有尾部有"
d"
后缀的不都是守护进程
PXE :预启动执行环境,在操作系统之前运行
服务端:
1、运行DHCP服务,用来分配地址,定位引导程序(给裸机IP地址的)
2、运行TFTP服务,提供引导程序下载
客户端:
1、网卡支持PXE协议
2、主板支持网络引导
基本装机步骤1、准备centos 7安装源 (yum仓库)
2、安装并启动TFTP服务
3、提供linux内核、pxe引导程序等
4、安装DHCP服务
5、配置启动菜单
实验:使用PXE和kichstart实现无人值守、批量化自动装机环境:
1、相同网段:192.168.206.0/24
2、centos7 虚拟机
3、使用的root用户,以/root/目录下会存放文件
1、准备好yum仓库,开始安装xinetd 、tftp-server 、dhcp 、syslinux 、vsftpd 、system-config-kickstart (一共6个安装包及其依赖关系)!!!
文章图片
文章图片
文章图片
文章图片
2、首先去vim/etc/xinetd.d/tftp,把disbale改成no即可(补充:目前wait值为no,是可以多台机器一同装机,此外server_args 值是指定的tftp目录,默认即可)
文章图片
文章图片
保存后退出
3、关闭防火墙、增强型服务。开启xinetd和tftp服务+开机自行启动
文章图片
4、接着我们来搭建DHCP服务,首先是复制/usr/share...中的模板覆盖/etc/dhcp....中的空白配置文件。接着我们vim /etc/dhcp/dhcpd.conf去改模版。要该的有2部分,第一部分是禁用dns动态跟新备注、确定next-server的ip地址(本机pxe服务地址)和文件filename 。第二部分是网段设置,要注意option routers(网关)得是这台机子的ip地址哦。最后保存退出,启动dhcpd服务+开机自启
文章图片
文章图片
文章图片
文章图片
5、pxe机子装上光盘,挂载到mnt,然后去cd /mnt/images/pxeboot目录中,把vmlinuz、initrd.img 这两个镜像、内核文件cp复制去/var/lib/tftpboot/ 中去,这步就完成了。
文章图片
文章图片
6、下面我们着手来准备pxelinux引导程序(第一步的syslinux已经安装了)
复制这个pxelinux.0 程序去/var/lib/tftpboot/,完成后即可
文章图片
7、准备ftp服务(第一步已经安装了vsftpd服务了)
我们先去cd /var/ftp
创建一个centos7目录
之后我们mount /dev/cdrom /var/ftp/centos7 (光盘可以挂载到多个地方)
完成后我们启动vsftpd服务+开机自启动
文章图片
文章图片
8、设置引导启动会话文件default,首先是cd /var/lib/tftpboot
随后我们创建一个pxelinux.cfg目录
vim /var/lib/tftpboot、pxelinux/default 创建这个文件(由于我们是使用kickstart无人值守的,所以就直接在这步添加ks参数了)
```html/xml
default auto
prompt 0
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.206.3/centos7 ks=ftp://192.168.206.3/ks.cfg
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp:/ /192.168.206.3/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192. 168.206.3/centos7
保存后退出
![7.4.png](https://s2.51cto.com/images/20211205/1638672182201888.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)![7.5.1.png](https://s2.51cto.com/images/20211205/1638672315562078.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)9、准备kickstart服务
打开方式:
1、可视化桌面左上角:应用程序-系统工具-kickstart
2、字符化界面:system-config-kickstart 召唤出来
![9.1.png](https://s2.51cto.com/images/20211205/1638672712765044.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)![9.11.png](https://s2.51cto.com/images/20211205/1638672716136432.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)![9.12.png](https://s2.51cto.com/images/20211205/1638672728447146.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)![9.13.png](https://s2.51cto.com/images/20211205/1638672736515546.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
**注意分区的时候:boot、swap、根目录必不可少!**
![9.14.png](https://s2.51cto.com/images/20211205/1638672806238288.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
![9.15.png](https://s2.51cto.com/images/20211205/1638672815410949.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
![9.16.png](https://s2.51cto.com/images/20211205/1638672826432274.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
**补充:提供下安装后脚本的代码**
```html/xml
mkdir /etc/yum.repos.d/repos.bak
mv /etc/yum/repos.d/*.repo /etc/yum.repos.d/repos.bak
echo [local]
name=local
baseurl=ftp://192.168.206.3/centos7
enabled=1
gpgcheck=0 /etc/yum.repos.d/local/repo
脚本设完后我们左上角的文件-保存。我选择保存在本机的/root/中
文章图片
10、完成后首先cd ~
会发现多了initial-setup-ks.cfg和ks.cfg文件。我们首先vim initial-setup-ks.cfg,进去后把第二张图的所选部分复制
退出后我们vim ks.cfg,把这个复制的内容贴到ks.cfg的最下面(图三)
保存退出,把ks.cfg复制去/var/ftp目录中。cp /root/ks.cfg /var/ftp/ks.cfg**补充:如果想要最小化安装,则无需复制initial-setup-ks.cfg内容去ks.cfg**
```html/xml
%packages
@^minimal
br/>**补充:如果想要最小化安装,则无需复制initial-setup-ks.cfg内容去ks.cfg**
```html/xml
%packages
@^minimal
![9.18.png](https://s2.51cto.com/images/20211205/1638673134444331.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
![9.19.png](https://s2.51cto.com/images/20211205/1638673334204912.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
![8.png](https://s2.51cto.com/images/20211205/1638673400518249.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
![9.20.png](https://s2.51cto.com/images/20211205/1638673471149053.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)**验证:最后我们将裸机放入与pxe服务器主机同一网段的内网中,开机后即可实现自动化安装操作系统**
推荐阅读
- LAMP架构
- Javascript在WordPress中不起作用
- 我想将我的wordpress帖子显示为2行,每行将包含2个帖子
- 我想在WordPress主题的评论部分之前加载”赞助文章链接”
- 我想在一个按钮上点击WordPress来创建新页面
- 我希望将WP While循环中的每个四个元素包装在Div容器(Index.php)中
- 带有子主题的WordPress主题自定义是否会对以后的更新造成任何风险
- 当is_front_page为false时,is_user_logged_in返回false
- is_user_logged_in与wp_redirect冲突