Linux批量装机(PXE)!
一 、PXE 简介
PXE:Pre-boot Excution Environment,预启动执行环境
PXE 是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过网
络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。
若要搭建 PXE 网络体系,必须要满足以下条件:
*客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。
*网络中有一台 DHCP 服务器,以便为客户机分配地址、指定引导文件位置
服务器通过 TFTP(Trivial File Transfer Protocol)简单文件传输协议提供引导镜像文件的
下载。
一、原理
PXE client在网卡的ROM中,被安装的机器从自己的PXE网卡启动,向网络中的DHCP服务器请求ip,并搜寻引导文件(bootstrap文件,在centos中,叫pxelinux.0),DHCP server返回给client端ip以及引导文件的位置(一般放在ftp server上),client端向TFTP server索取引导文件,引导程序读取配置文件pxelinux.cfg,获取系统初始化信息。PXE client在工作过程中需要三个二进制文件:pxelinux.0,linux内核,linux根文件系统initrd,这三个文件都放在tftp服务器目录中,最后,系统启动开始安装。
1:部署FTP服务
[root@localhost~]#systemctl stop firewalld //关闭防火墙
[root@localhost~]#setenforce 0 //关闭安全机制
[root@localhost~]#iptables -F //清除规则
[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# rpm -q vsftpd
vsftpd-3.0.2-25.el7.x86_64
[root@localhost ~]# mkdir /var/ftp/centos7
[root@localhost ~]# mount /dev/sr0 /var/ftp/centos7/
[root@localhost ~]# du /var/ftp/centos7/
2508 /var/ftp/centos7/EFI/BOOT/fonts
8464 /var/ftp/centos7/EFI/BOOT
8468 /var/ftp/centos7/EFI
57848 /var/ftp/centos7/images/pxeboot
66556 /var/ftp/centos7/images
58232 /var/ftp/centos7/isolinux
442744 /var/ftp/centos7/LiveOS
3892616 /var/ftp/centos7/Packages
14660 /var/ftp/centos7/repodata
4483316 /var/ftp/centos7/
2:启动FTP服务、并设置为开机自启动
[root@localhost ~]# systemctl start vsftpd //启动vsftpd服务
[root@localhost ~]# systemctl enable vsftpd //开机自动vsftpd服务
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@localhost ~]# echo $? //检测上一步命令是否成功为0成功非0出错
0
3:部署TFTP服务
[root@localhost ~]# yum -y install tftp-server //安装tftp服务
[root@localhost ~]# rpm -q tftp-server
[root@localhost ~]# vim /etc/xinetd.d/tftp //修改配置文件开启TFTP服务
[root@localhost ~]# systemctl start tftp //启动TFTP服务
[root@localhost ~]# systemctl enable tftp //开机自启TFTP服务
Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket.
[root@localhost ~]# echo $?
0
[root@localhost ~]# netstat -anput | grep 69 //检测端口号
udp6 0 0 :::69 :::* 1/systemd
4:准备相关文件以及PXE引导程序
[root@localhost ~]# cd /var/ftp/centos7/isolinux/ //准备linux内核,初始化镜像文件
[root@localhost isolinux]# cp vmlinuz initrd.img /var/lib/tftpboot/
[root@localhost isolinux]# ll /var/lib/tftpboot/
总用量 57844
-rw-r--r--. 1 root root 52584760 8月 21 15:41 initrd.img
-rwxr-xr-x. 1 root root 6639904 8月 21 15:41 vmlinuz
5:准备lickstart配置文件
[root@localhost isolinux]# cd /root
[root@localhost ~]# cp /root/anaconda-ks.cfg /var/ftp/ks.cfg
[root@localhost ~]# chmod 777 /var/ftp/ks.cfg
[root@localhost ~]# ll /var/ftp/ks.cfg
-rwxrwxrwx. 1 root root 1569 8月 21 15:41 /var/ftp/ks.cfg
[root@localhost ~]# vim /var/ftp/ks.cfg
此处只添加如下命令什么都不删除
url --url=ftp://192.168.200.112/centos7 //指定安装源
#cdrom
6:准备PXE引导程序,启动菜单文件
[root@pxe ~]# yum -y install syslinux
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib//tftpboot/
[root@localhost ~]# ls /var/lib/tftpboot/
initrd.img pxelinux.0 vmlinuz
[root@localhost ~]# cp /var/ftp/centos7/isolinux//isolinux.cfg /var/lib/tftpboot/
[root@localhost ~]# chmod 664 /var/lib/tftpboot/isolinux.cfg
[root@localhost ~]# ll /var/lib/tftpboot/
总用量 57876
-rw-r--r--. 1 root root 52584760 8月 21 15:41 initrd.img
-rw-rw-r--. 1 root root 3032 8月 21 15:52 isolinux.cfg
-rw-r--r--. 1 root root 26759 8月 21 15:49 pxelinux.0
-rwxr-xr-x. 1 root root 6639904 8月 21 15:41 vmlinuz
7:创建PXE启动菜单
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# mv /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot//pxelinux.cfg/default
[root@localhost ~]# ll -R /var/lib/tftpboot/
/var/lib/tftpboot/:
总用量 57872
-rw-r--r--. 1 root root 52584760 8月 21 15:41 initrd.img
-rw-r--r--. 1 root root 26759 8月 21 15:49 pxelinux.0
drwxr-xr-x. 2 root root 21 8月 21 15:54 pxelinux.cfg
-rwxr-xr-x. 1 root root 6639904 8月 21 15:41 vmlinuz
/var/lib/tftpboot/pxelinux.cfg:
总用量 4
-rw-rw-r--. 1 root root 3032 8月 21 15:52 default
8:修改PXE启动菜单,指定安装源位置PXE和ks.fg文件位置
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
此处只修改与添加不删任何东西
第一行修改:default linux
第二行添加:prompt 0
第三行修改:timeout 600
label linux
menu label ^Install CentOS 7
kernel vmlinuz
第六十五行修改:append initrd=initrd.img ks=ftp://192.168.200.112/ks.cfg
9:部署DHCP服务
9.1:安装DHCP服务
[root@localhost ~]# yum -y install dhcp
[root@localhost ~]# rpm -q dhcp
dhcp-4.2.5-68.el7.centos.1.x86_64
9.2:修改DHCP配置文件
[root@localhost ~]# cat /usr/share/doc/dhcp*/dhcpd.conf.example > /etc/dhcp/dhcpd.conf
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
内容只剩如图所示其余全部删除
ption domain-name "pxe.yunban.cn";
option domain-name-servers 192.168.200.112; //此处填写本机ip default-lease-time 21600; //默认租约6小时
max-lease-time 43200; //最长租约12小时
subnet 192.168.200.0 netmask 255.255.255.0 {
range 192.168.200.120 192.168.200.200; //ip池120到200,新建虚拟机在ip池中随机选择
next-server 192.168.200.112;
filename "pxelinux.0";
} //此处不加分号结尾
[root@bogon ~]# systemctl restart dhcpd
开启客户端测试
******内存改为2G,CD/DVD为自动检测(目的让新虚拟机自动获取IP及NETMASK地址)
Linux批量装机(PXE)!的更多相关文章
- 记一次ARM服务器(鲲鹏920)的PXE批量装机遇到的坑
由于近期项目需要,在对一批华为鲲鹏920的ARM服务器(型号为天宫TG225 B1)进行批量装机的过程中,遇到了各种各样千奇百怪的bug(换个高情商的说法就是遇到了各种各样和x86服务器不一样的地方) ...
- PXE-kickstart无人值守批量装机
服务器的批量部署: 规模化:同时装配多台服务器 自动化:安装系统.配置各种服务 远程实现:不需要光盘.U盘等安装介质 PXE,Pre-boot eXcution Environment 预启动执行环境 ...
- 网络装机pxe服务器的配置过程
网络装机pxe服务器的配置过程 背景: 针对于Linux运维工作中遇到的需要大批量安装Linux系统的情况,通过网络装机的方式实现无人值守安装Linux操作系统,现需要配置一台pxe服务器用于pxe批 ...
- 批量装机工具cobbler简介及其安装使用
前言:如果仅有几台机器的话,使用U盘或者光盘装起来还不是很费事,一旦数量到了一定程度,使用手动方法就是一件费时费力的事,PXE+kistart就可以解决这个问题,降低难度,加快速度,而cobbler更 ...
- Linux批量重命名文件
五种方法实现Linux批量重命名文件 Linux批量重命名文件是指对某些特定的文件统一进行重新命名,以改变原来一批文件的名称,这里介绍五种方法来实现. Linux批量重命名文件会涉及到改变一个字母.改 ...
- linux批量压缩当前目录中文件后,删除原文件
linux批量压缩当前目录中文件后,删除原文件 for i in `ls|awk -F " " '{print $NF}'`; do tar -zcvf $i.tar.gz $i ...
- Ansible-Zabbix-基础agent批量装机
ansible 批量装机-Zabbix篇 ############################# 小错误区:特此警示,问题要全面化,不要单纯想着你这边的问题,有可能也是对面的问题,反则亦此,学会深 ...
- linux 批量文件查找并替换
linux 批量文件查找并替换 sed -i "s/oldstring/newstring/g" `grep oldstring -rl path` 如: sed -i " ...
- Linux批量查询替换字符串
Linux 批量查询替换文本文件中的字符串: 1.批量查找某个目下文件的包含的内容,例如: # grep -rn "要找查找的文本" ./ 2.批量查找并替换文件内容. # ...
随机推荐
- Tex 论文写作 jpg eps图像
pdflatex只能支持pdf.jpg.jpeg.png共4中格式的图片.所以在插入eps图像是会没法显示,使用latex编译不存在这个问题,但是,我还不会用,编译完后从哪里看不知道. 这个里面说的详 ...
- Wx-小程序中使用伪类选择器实现border-1px
.borders::before{ position: absolute; left:; top:; content: " "; width: 100%; height: 1px; ...
- Centos7 下mysql 密码重置
Centos7 下mysql 密码重置 先停止mysql服务 mysqld_safe --skip-grant-tables & mysql mysql> use mysql;mysql ...
- 谈谈我对Promise的理解
一.Promise是什么? Promise是最早由社区提出和实现的一种解决异步编程的方案,比其他传统的解决方案(回调函数和事件)更合理和更强大. ES6 将其写进了语言标准,统一了用法,原生提供了Pr ...
- Educational Codeforces Round 76 (Rated for Div. 2) A. Two Rival Students
You are the gym teacher in the school. There are nn students in the row. And there are two rivalling ...
- 【python】anaconda中打开IDLE(python 自带编辑器)
最近要参加蓝桥杯了,发现 python 的编辑器是使用 python 自带的 IDLE,电脑上只用 Anaconda,就来找一下 打开 .\Anaconda3\Scripts\idel.exe 打开 ...
- Go_channel
通道可以被认为是Goroutines通信的管道.类似于管道中的水从一端到另一端的流动,数据可以从一端发送到另一端,通过通道接收. 在前面讲Go语言的并发时候,我们就说过,当多个Goroutine想实现 ...
- Eclipse导入git上的maven web项目 以及部署成功运行
在公司开发的时候都是用maven 以及git环境 开发的环境,那么我们初学者怎么将公司的项目成功导入到eclipse中,并且成功运行那???下面的教程就可以告诉大家~ (ps:第二步可能是大家会遇 ...
- Hadoop3.1.1源码Client详解 : Packet入队后消息系统运作之DataStreamer(Packet发送) : 主干
该系列总览: Hadoop3.1.1架构体系——设计原理阐述与Client源码图文详解 : 总览 在上一章(Hadoop3.1.1源码Client详解 : 写入准备-RPC调用与流的建立) 我们提到, ...
- nginx 解决 connect() failed (111: Connection refused) while connecting to upstream,
嗯哼,刚装了个ubuntu的lnmp,我的天啊,踩的坑比我脂肪还多了 比如刚装完的时候访问显示502, 也不知道什么问题,就去看了一下nginx日志 /var/log/nginx/error.log ...