一 、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)!的更多相关文章

  1. 记一次ARM服务器(鲲鹏920)的PXE批量装机遇到的坑

    由于近期项目需要,在对一批华为鲲鹏920的ARM服务器(型号为天宫TG225 B1)进行批量装机的过程中,遇到了各种各样千奇百怪的bug(换个高情商的说法就是遇到了各种各样和x86服务器不一样的地方) ...

  2. PXE-kickstart无人值守批量装机

    服务器的批量部署: 规模化:同时装配多台服务器 自动化:安装系统.配置各种服务 远程实现:不需要光盘.U盘等安装介质 PXE,Pre-boot eXcution Environment 预启动执行环境 ...

  3. 网络装机pxe服务器的配置过程

    网络装机pxe服务器的配置过程 背景: 针对于Linux运维工作中遇到的需要大批量安装Linux系统的情况,通过网络装机的方式实现无人值守安装Linux操作系统,现需要配置一台pxe服务器用于pxe批 ...

  4. 批量装机工具cobbler简介及其安装使用

    前言:如果仅有几台机器的话,使用U盘或者光盘装起来还不是很费事,一旦数量到了一定程度,使用手动方法就是一件费时费力的事,PXE+kistart就可以解决这个问题,降低难度,加快速度,而cobbler更 ...

  5. Linux批量重命名文件

    五种方法实现Linux批量重命名文件 Linux批量重命名文件是指对某些特定的文件统一进行重新命名,以改变原来一批文件的名称,这里介绍五种方法来实现. Linux批量重命名文件会涉及到改变一个字母.改 ...

  6. linux批量压缩当前目录中文件后,删除原文件

    linux批量压缩当前目录中文件后,删除原文件 for i in `ls|awk -F " " '{print $NF}'`; do tar -zcvf $i.tar.gz $i ...

  7. Ansible-Zabbix-基础agent批量装机

    ansible 批量装机-Zabbix篇 ############################# 小错误区:特此警示,问题要全面化,不要单纯想着你这边的问题,有可能也是对面的问题,反则亦此,学会深 ...

  8. linux 批量文件查找并替换

    linux 批量文件查找并替换 sed -i "s/oldstring/newstring/g" `grep oldstring -rl path` 如: sed -i " ...

  9. Linux批量查询替换字符串

    Linux 批量查询替换文本文件中的字符串: 1.批量查找某个目下文件的包含的内容,例如: #   grep -rn "要找查找的文本" ./ 2.批量查找并替换文件内容. #   ...

随机推荐

  1. django入门与实践(开)

    1.什么是Django? 基于python的高级web开发框架 高效 快速 免费 开源 正常上网流程 浏览器浏览网页的基本原理 请求响应过程 开发环境搭建 Python Django pip inst ...

  2. TCP的状态转换

    TCP的状态转换图 手写的状态转换图 一.服务端状态变迁:​ 服务端创建套接字之后调用listen函数将套接字有一个未连接的主动套接字转换为被动套接字,指示内核应接受指向该套接字的连接请求,套接字状态 ...

  3. Swagger与OAuth 手动搭建WebApi 操作笔记

    1.创建一个空的Web应用程序 2.通过nuget 安装以下插件清单,有部分会在安装其他插件时候自动安装: 3.安装完Swagger 会生成一个目录App_Start,在这个目录中增加文件ApiCon ...

  4. 「JSOI2015」串分割

    「JSOI2015」串分割 传送门 首先我们会有一个贪心的想法:分得越均匀越好,因为长的绝对比短的大. 那么对于最均匀的情况,也就是 \(k | n\) 的情况,我们肯定是通过枚举第一次分割的位置,然 ...

  5. 安装和配置Linux系统虚拟机

    1.打开虚拟机软件 2.点击创建新的虚拟机,选择典型(推荐)类型的配置. 3.点击稍后安装操作系统. 4.客户机操作系统选择Linux,版本选择CentOS 7 64位. 5.虚拟机名称可自行更改,位 ...

  6. appium可通过SDK自带的uiautomatorviewer或monitor工具,来查看页面元素(Android)

    工具一:uiautomatorviewer 1.在SDK的tools目录中找到uiautomatorviewer,双击打开若出现闪退一般是jdk版本不匹配(建议安装jdk1.8的): 2.在使用这个工 ...

  7. STM32F103_外部RAM用作运存---IS62WV51216

    https://www.cnblogs.com/lilto/p/9548736.html STM32F103_外部RAM用作运存   概述 SRAM的简介 折腾过电脑的朋友都知道,当电脑运行比较卡的时 ...

  8. 看 C++ Primer 的58页, 讲拷贝时不能忽略 底层const这里的说的原因有点牵强, 这里给出自己的理解

    extern const  int ci =42; const int * p2  = &ci; extern const  int *const p3= p2; int *p= p3;   ...

  9. Numpy Pandas

    数据分析 : 是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律. 数据分析三剑客 -  Numpy Pandas Matplotlib # Numpy 基于一维或多维的数 ...

  10. Tomcat部署Web项目的3种方式

    一.将war包丢进webapps 这是最简单粗暴的方式:将web工程打成war,丢进tomcat/webapps目录即可,tomcat会自动解压.无需修改任何配置文件即可完成部署. 这里我准备了tom ...