1. PXE介绍

2. 服务的搭建

2.1 DHCP服务搭建

2.1.1 安装DHCP软件包

2.1.2 修改dhcp配置文件

2.1.3 开启DHCP服务

2.1.4 查看dhcp服务是否开启

2.2 TFTP服务搭建

2.2.1 安装软件包

2.2.2 挂载并拷贝镜像

2.2.3 创建pxelinux配置文件

2.2.4 开启tftp服务

2.2.5 查看tftp服务是否开启

2.2.6 测试tftp服务是否可以正常访问

2.3 HTTP服务搭建

2.3.1 安装软件包

2.3.2 拷贝光盘内容

2.3.3 开启httpd服务

2.3.4 查看httpd服务是否开启

2.3.5 测试http服务是否可以正常访问

3. 自动化安装

3.1 创建kickstart文件

3.2 使得安装源可以被访问

3.3 使得kickstart文件可以被访问

4. 外部引用

1. PXE介绍

PXE(Pre-boot Execution Environment)是由Intel公司开发的技术,支持主机(客户机)通过远程主机提供的 安装服务安装操作系统。

PXE的基本工作原理如下:

1. PXE客户机从支持PXE的网卡启动,向本网络中的DHCP服务器获取IP地址。

2. DHCP服务器返回分配给客户机的IP地址以及pxelinux.0文件的存放位置。

3. PXE客户机向本网络中的TFTP服务器索取pxelinux.0文件,并执行。

4. 从TFTP服务器获取pxelinux的配置文件pxelinux.cfg。

5. 客户机选择启动项,从TFTP服务器下载内核文件和initrd。

6. 加载内核,并启动安装过程。

为了提供PXE安装服务,需要在本地网络中开启如下服务:

1. DHCP服务 为待安装机器分配IP地址,以及提供PXE安装所需要的其他信息。

2. TFTP服务 用于提供PXE安装所需要的bootloader,内核镜像等文件。

3. HTTP(S)、NFS、FTP服务 提供安装过程中所使用的安装源,支持HTTP(S)、NFS和FTP多种协议,本文以HTTP服务为例。

2. 服务的搭建

2.1 DHCP服务搭建

2.1.1 安装DHCP软件包

[root@promote ~]# yum install dhcp -y

2.1.2 修改dhcp配置文件 /etc/dhcp/dhcpd.conf

#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
option architecture-type code 93 = unsigned integer 16;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
range 192.168.1.2 192.168.1.254;

class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 192.168.1.1;
if option architecture-type = 00:07 {
filename "uefi/shim.efi";
} elsif option architecture-type = 00:09 {
filename "uefi/shim.efi";
} else {
filename "pxelinux.0";
}
}
}

2.1.3 开启DHCP服务 在开启DHCP服务之前,确保本机有192.168.1.0/24网段的IP地址。由于将所有服务放在同一个机器中,而TFTP 服务的IP地址是192.168.1.1.,所以需要将192.168.1.1这个IP地址配置在本机中。 假设配置在网卡eth0上,可以使用下面的命令:

[root@promote ~]# ip addr add 192.168.1.1/24 dev eth0

开启DHCP服务:

[root@promote ~]# systemctl enable dhcpd.service
[root@promote ~]# systemctl start dhcpd.service

2.1.4 查看dhcp服务是否开启

[root@promote ~]# ss -uln | grep 67
UNCONN 0 0 *:67 *:*

2.2 TFTP服务搭建 2.2.1 安装软件包

[root@promote ~]# yum install tftp-server syslinux-tftpboot -y

2.2.2 挂载并拷贝镜像 挂载BCLinux 7光盘,拷贝其中的内核镜像和initrd文件到tftp根目录下。假定/mount_point是光盘的挂载目录

[root@promote ~]# mkdir -p /var/lib/tftpboot/bclinux7/
[root@promote ~]# cp /mount_point/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/bclinux7/

2.2.4 创建pxelinux配置文件 PXE安装默认会从pxelinux.cfg目录下获取PXE的配置文件,首先创建这个目录:

[root@promote ~]# mkdir /var/lib/tftpboot/pxelinux.cfg/

默认配置文件名是default,如果需要对不同的客户机给于不同的配置文件,可以用IP地址作为文件名。例如对 于IP地址是10.0.0.1的客户机而言,针对它的配置文件名称是0A000001。下面是一个典型的配置文件内容:

[root@promote ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
prompt 1
timeout 600
display boot.msg

label linux
menu label ^Install or upgrade an existing system
menu default
kernel bclinux7/vmlinuz
append initrd=bclinux7/initrd.img
label vesa
menu label Install system with ^basic video driver
kernel bclinux7/vmlinuz
append initrd=bclinux7/initrd.img xdriver=vesa nomodeset
label rescue
menu label ^Rescue installed system
kernel bclinux7/vmlinuz
append initrd=bclinux7/initrd.img rescue
label local
menu label Boot from ^local drive
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memtest
append -

将boot menu中需要的文件拷贝到tftp目录下:

[root@promote ~]# cp /mount_point/isolinux/{boot.msg,memtest} /var/lib/tftpboot/

2.2.5 开启tftp服务 将/etc/xinetd.d/tftp文件中的disable选项改成no,重启xinet服务:

[root@promote ~]# systemctl enable xinetd
[root@promote ~]# systemctl start xinetd

2.2.6 查看tftp服务是否开启

[root@promote ~]# ss -uln | grep 69
UNCONN 0 0 *:69 *:*

2.2.7 测试tftp服务是否可以正常访问 在本网段内找一台机器,测试tftp服务是否可以正常访问。

2.3 HTTP服务搭建

2.3.1 安装软件包

[root@promote ~]# yum install httpd -y

2.3.2 拷贝光盘内容

[root@promote ~]# mkdir /var/www/html/bclinux7/
[root@promote ~]# cp -rf /mount_point/* /var/www/html/bclinux7/

2.3.3 开启httpd服务

[root@promote ~]# systemctl enable httpd
[root@promote ~]# systemctl start httpd

2.3.4 查看httpd服务是否开启

[root@promote ~]# ss -tln | grep 80
LISTEN 0 128 :::80 :::*

2.3.5 测试http服务是否可以正常访问 确保上述服务的端口在防火墙中是放行的,也可以将防火墙关闭:

[root@promote ~]# systemctl stop firewalld

3. 自动化安装

按照前面的步骤,在本地局域网内搭建上述服务后,将客户机重启并从网卡启动,就会启动PXE安装。在安装过 程中,需要对待安装系统做一些配置,例如时区、磁盘分区等。为了实现这部分的自动化,可以使用kickstart 安装方式。

kickstart可以解析配置文件,其中可以给出安装过程中所有需要回答的问题。安装程序解析这个配置文件,就可以实现完全的自动化安装。

为了实现kickstart安装,需要完成以下步骤。

3.1 创建kickstart文件

kickstart文件是一个文本文件,通过关键字指定了安装过程中需要配置的选项。可以使用图形化的工具 Kickstart Configurator生成kickstart文件,也可以手动写。在系统安装结束后,安装程序也会创建一个 kickstart文件在/root/目录下,文件名是anaconda-ks.cfg,这个文件保存的是安装系统时的配置参数。

由于kickstart支持的选项非常多,这里就不一一列举,可以参考kickstart选项。

3.2 使得安装源可以被访问

无论使用kickstart安装还是其他方式安装,都必须访问安装源。安装源可以在光盘上,也可以在磁盘和网络 上,其内容包含了待安装的软件包,一般是从安装光盘中复制而来的。

3.3 使得kickstart文件可以被访问

在使用PXE安装时,为了使用自动化安装,需要访问kickstart文件。此时需要将kickstart文件放置在网络服务 器上,在安装过程中通过网络获取文件,开启自动化安装。

现在支持三种形式的网络服务:nfs、http、https,分别需要在启动参数中添加如下配置项:

ks=nfs:<server>:/<path>
ks=http://<server>/<path>
ks=https://<server>/<path>

对于PXE安装,启动的配置文件是pxelinux.cfg/default。假设ks文件被放置HTTP服务上的根目录 下,pxelinux.cfg/default文件需要被修改为如下内容:

[root@promote ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
prompt 1
timeout 600
display boot.msg

label linux
menu label ^Install or upgrade an existing system
menu default
kernel bclinux7/vmlinuz
append initrd=bclinux7/initrd.img ks=http://192.168.1.1/ks.cfg
label vesa
menu label Install system with ^basic video driver
kernel bclinux7/vmlinuz
append initrd=bclinux7/initrd.img xdriver=vesa nomodeset ks=http://192.168.1.1/ks.cfg
label rescue
menu label ^Rescue installed system
kernel bclinux7/vmlinuz
append initrd=bclinux7/initrd.img rescue
label local
menu label Boot from ^local drive
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memte
append -

4. 外部引用

1. kickstart选项

CentOS7 搭建 PXE 安装系统的更多相关文章

  1. centos7 搭建pxe 安装centos windows(非全自动)(这个教程测试centos6和7.2可以用,Windows各版本也可以)

    yum install dhcp xinetd syslinux tftp-server httpd 编辑dhcpdb配置(192.168.0.1为本机IP) ; max-lease-time ; l ...

  2. SLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——1.安装系统ubuntu_mate_16.04

    摘要 通过前面一系列的铺垫,相信大家对整个miiboo机器人的DIY有了一个清晰整体的认识.接下来就正式进入机器人大脑(嵌入式主板:树莓派3)的开发.本章将从树莓派3的开发环境搭建入手,为后续ros开 ...

  3. Centos7使用pxe安装KVM虚拟机

    Centos7使用pxe安装KVM虚拟机 一.安装服务所需的软件 [root@localhost ~]yum install nginx dhcp vsftpd syslinux -y [root@l ...

  4. cobbler PXE 安装系统时出现的问题

    cobbler PXE 安装系统时出现的问题 1.安装包未找到.解决方法:ios镜像里没有软件包,换掉该软件包的ios镜像,或者在ks.cfg 文件里删去或注释掉%packages 里指定安装的软件包 ...

  5. 环境搭建-VMware安装系统

    常用的虚拟化软件: 1.vmware:收费 commercial(商业版的) 2.vitualbox:free   虚拟化软件:vmware workstation(虚拟系统工作站)   安装系统任务 ...

  6. centos7最小化安装系统

    https://blog.csdn.net/hellboy0621/article/details/80392273

  7. DHCP服务+PXE自动安装系统

    DHCP服务+PXE自动安装系统 DHCP安装 安装DHCP服务器 yum install dhcp -y 安装完dhcp默认无法启动,需要编辑配置文件设置分配地址范围等相关信息,服务器自身IP地址要 ...

  8. 【Linux】使用 PXE+Kickstart 无人值守批量安装系统

    一.PXE背景知识 通过 PXE+DHCP+TFTP+VSftpd+Kickstart 服务程序搭建出无人值守安装系统,从而批量部署客户机系统. PXE(Preboot eXecute Environ ...

  9. Dnsmasq 配置PXE批量安装系统

    以下测试都是基于centos 7下的环境 需要安装的软件为 nginx 用来下载ks.cfg和系统镜像文件用的,也可以用ftp服务器来代替 dnsmasq 提供dhcp服务和tftp服务,也可以单独去 ...

  10. PXE+Kickstart无人值守安装系统re

    PXE(Preboot Excute Environment)预启动执行环境,可以让计算机通过网络启动系统,主要用于无人值守安装系统中引导客户端主机安装Linux操作系统. 由于之前有过使用cobbl ...

随机推荐

  1. 红客突击队&突击队分队

    红客突击队,于2019年,由队长k龙联合国内多位顶尖高校研究生牵头成立.其团队从成立至今多次参加国际网络安全竞赛并取得良好成绩,积累了丰富的竞赛经验.团队现有三十多位正式成员及若干预备人员,旨在打造国 ...

  2. VMware虚拟软件使用方法、网络配置与远程连接排错方法

    一.虚拟软件使用方法 1. 软件启动方法 系统当中有些软件是可以多次启动,多实例 vmware不具有多实例功能 2. 软件关闭注意事项 尽量选择挂起虚拟主机关闭软件 3. 虚拟主机拍快照(后悔药 月光 ...

  3. 【SW】利用3D打印机打印 PCB 钢网的方法

    每完成一个小作品以后,PCB打样回来,手工焊接着费时费力,定制钢网又未免太过浪费,想到自己有一台 FDM 3D 打印机,是不是可以通过 3D 打印机打印 "钢网" 呢? 在网上也翻 ...

  4. ChatGpt国内教程

    近ChatGPT大火呀,小伙伴们是不是在网上看到各种和ChatGPT有趣聊天的截图,比如翻译代码.编写代码,奈何自己实力不够,被网络拒之门外,只能眼馋别人的东西.看别人玩,肯定不如自己玩一把舒服的啊. ...

  5. pnpm

    一.概念 performant npm ,意味"高性能的 npm".pnpm由npm/yarn衍生而来,解决了npm/yarn内部潜在的bug,极大的优化了性能,扩展了使用场景.被 ...

  6. cnpm : 无法将“cnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。所在位置 行:1 字符: 1

    出现问题原因: 使用vscode终端powershell控制台查看cnpm版本或者运行cnpm的相关命令时提示如标题错误(cmd控制台提示:'cnpm' 不是内部或外部命令,也不是可运行的程序或批处理 ...

  7. xmind使用分享

    Xmind 介绍 1. 特点 是表达发散性思维的有效工具,图文并重,把各主题的隶属关系和相关的层级表现出来,把关键字与图像,文字,颜色建立起链接记忆. 2.安装,下载与破解 参考:https://bl ...

  8. STL中的智能指针(Smart Pointer)及其源码剖析: std::unique_ptr

    STL中的智能指针(Smart Pointer)及其源码剖析: std::unique_ptr 和 std::auto_ptr一样,std::unique_ptr也是一种智能指针,它也是通过指针的方式 ...

  9. 一文详解 jitpack 多渠道maven库发布

    先说一下,为什么会有这篇文章? 最初接触 JitPack 时,发现网络上大量涉及JitPack的教程不可用.通过两天的研究才搞明白: 1.不同的gradle版本,gradle api使用方式 与 Ji ...

  10. 【KAWAKO】speechmetrics-语音方面评价指标库的安装与使用

    目录 简介 安装 将工程以压缩包形式下载到本地 把压缩包传到服务器(你想部署的地方)上进行解压 用编辑器打开setup.py进行修改 在工程目录下进行安装 测试 简介 speechmetrics库提供 ...