心得经验总结:搭建UEFIPXE基于linux相关资料

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 心得经验总结:搭建UEFIPXE基于linux相关资料

查看apache的版本信息,如果是通过yum,或者是rpm安装的,可以使用rpm -qa |gerp httpd 来查看;

Grub相关资料:

配置PXE环境自动安装Linux

前言

一般情况下,新服务器上架。都需要系统管理员手工安装系统,配置IP地址,然后远程登陆服务器进行软件安装、配置之类的管理。这种方式,在服务器数量还不多的情况下,是正常的。试想,如果一次上架上百台服务器,再依次安装操作系统,将是一种灾难。很难在规定的时间内将服务器顺利上架并配置完毕。

这就需要在大型机房中,以DHCP+DNS模式管理服务器IP地址和主机名。服务器上架前,以其MAC地址为依据,在DHCP中配置主机保留并分配主机名。DHCP结合TFTP提供的PXE服务,提供PXE引导Linux内核和启动镜像,通过自动应答文件来实现操作系统的自动安装和配置。就Linux来说,安装后启动saltstack客户端salt-minion服务即可实现新服务器的自动受控。其余的安装服务便可以通过saltstack来完成。自始至终,将不用通过ssh形式登陆新服务器,且可以实现软件包的自动化安装和配置管理。

理论描述

自动启动安装过程

服务器从第一次加电到连接到salt-master主机,受其集中管理,将经过以下一系列过程:

系统管理员在DHCP服务器中将其MAC地址绑定到特定IP地址和主机名,并指定PXE启动文件。

服务器加电启动,通过PXE获取IP地址并加载PXEClient,以TFTP的形式获取Linux内核和初始化启动映像。

服务器加载自动应答脚本,通过网络获取软件包,来自动安装Linux系统。安装并开机启动salt-minion服务。

服务器安装完成并重新启动后,自动获取IP地址,连接salt-master请求受控。

salt-master控制新服务器后,以管理员配置模板自动安装软件包配置服务,管理新主机。

以上过程我们需要架设的服务有DNS、DHCP、TFTP、HTTP/FTP服务。其中,DHCP和DNS提供地址和主机名分配,TFTP提供PXE启动映像,HTTP/FTP作为Linux软件仓库提供安装过程中需要的软件包。

DHCP Option 60

DHCP Option 60 Vendor class identifier为厂商类标识符。这个选项作用于客户端可选地识别客户端厂商类型和配置。这个信息是N个8位编码,由DHCP服务端解析。厂商可能会为客户端选择定义特殊的厂商类标识符信息,以便表达特殊的配置或者其他关于客户端的信息。比如:这个标识符可能编码了客户端的硬件配置。客户端发送过来的服务器不能解析的类规范信息必须被忽略(尽管可能会有报告)。服务器响应厂商规范信息到客户端应该仅仅通过Option 43来完成。

此信息需要在DHCP服务器上定义,DHCP服务器通过其判断客户端是不是PXEClient。并通过其Arch代码来判断其平台,以此为依据提供不同的PXE引导程序给客户端。

PXE和gPXE

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。在启动过程中,BIOS把PXEClient调入内存中执行,然后由PXEClient向DHCP服务器请求分配IP地址,再用TFTP或MTFTP协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

gPXE是一个开源的网络启动器。它提供了一个直接的PXE替代方案,并且提供DNS、HTTP、iSCSI等多种额外功能。另外,由于gPXE存在商业收购风险。其开发者又启动了一个名为iPXE的开源项目。作为gPXE的一个分支。iPXE支持HTTP、ISCSI、FCoE、Wi-Fi、InfiniBand等多种启动方式。且支持通过脚本来控制启动过程。

BIOS和UEFI

BIOS(Basic Input/Output System的缩写、中文:基本输入输出系统),在IBM PC兼容机上,是一种业界标准的固件接口。BIOS这个字眼是在1975第一次由CP/M操作系统中出现。BIOS是个人电脑启动时加载的第一个软件。

BIOS用于计算机开机时执行系统各部分的的自检,并启动引导程序或装载在内存的操作系统。此外,BIOS还向操作系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS服务而不是直接访问硬件。现代操作系统会忽略BIOS提供的抽象层并直接访问硬件组件。

UEFI,全称“统一的可扩展固件接口”(Unified Extensible Firmware Interface),是一种详细描述类型接口的标准。这种接口用于操作系统自动从预启动操作环境,加载到一种操作系统上。

可扩展固件接口(Extensible Firmware Interface,EFI)是 Intel 为 PC 固件的体系结构、接口和服务提出的建议标准。其主要目的是为了提供一组在 OS 加载之前(启动前)在所有平台上一致的、正确指定的启动服务,被看作是有近20多年历史的 BIOS 的继任者。

另外,由于UEFI不支持32位,所以UEFI部分只讨论x64平台。由于没有实验环境,不支持安腾架构。

操作步骤

预安装配置环境

以下操作以CentOS为平台,配置过程中涉及到的HTTP/FTP,DNS,DHCP等基础服务,这里不再讨论他们的安装配置方法。只要能满足如下功能即可:

HTTP/FTP服务:提供软件仓库,包括内核、启动映像、cfg等相关文件的下载

DNS服务:提供xiyang-liu.com、salt-master.xiyang-liu.com等内部主机名的解析

DHCP服务器:为客户及分配IP地址。

在开始接下来的配置之前,确保客户机能够正常使用以上三类服务,且DHCP服务器可以正常使用HTTP/FTP服务。如果在所有的配置中都使用IP地址,而不是主机名,则可以忽略DNS服务要求。

DHCP初始配置文件内容如下:

authoritative;

ddns-update-style none;

ignore client-updates;

one-lease-per-client true;

shared-network main {

subnet 10.17.25.0 netmask 255.255.255.0 {

option routers 10.17.25.254;

option subnet-mask 255.255.255.0;

option domain-name "xiyang-liu.com";

pool {

range 10.17.25.200 10.17.25.210;

host nagios-test {

hardware ethernet 00:0d:56:66:82:c3;

fixed-address 10.17.25.200;

}

}

}

}

shared-network xxzx {

subnet 10.17.15.0 netmask 255.255.255.0 {

option routers 10.17.15.254;

option subnet-mask 255.255.255.0;

option domain-name "xiyang-liu.com";

option domain-name-servers 10.17.26.88, 8.8.8.8;

default-lease-time 86400;

max-lease-time 172800;

pool {

range 10.17.15.1 10.17.15.20;

}

}

}

配置TFTP服务

这里选择在DHCP服务器上配置和安装TFTP服务,以提供PXE引导程序的下载。

通过以下命令安装TFTP服务

yum install tftp-server xinetd -y

修改TFTP服务配置如下所示:

【root@dhcp ~】# sed '/^#/d' /etc/xinetd.d/tftp

service tftp

{

socket_type = dgram

protocol = udp

wait = yes

user = root

server= /usr/sbin/in.tftpd

server_args = -v -s /var/lib/tftpboot #启用调试输出

disable = no #启用服务

per_source = 11

cps = 100 2

flags = IPv4

}

启动TFTP服务,并修改其防火墙设置,使其有如下所示的输出:

【root@dhcp ~】# chkconfig xinetd on

【root@dhcp ~】# grep 69 /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m udp -p udp --dport 69 -j ACCEPT

验证TFTP服务

安装完成TFTP服务器后,先对其正常工作与否进行验证,否则后面除了问题不好排错。

运行TFTP服务后,在/var/lib/tftpboot/目录中创建测试文件

cp /root/install.log /var/lib/tftpboot/

使用Windows 7/8的TFTP命令,来下载服务器端的install.log文件,以确保TFTP服务可用。如出现未找到TFTP命令,请在Windows控制面板—程序—启用或禁用Windows功能中,勾选TFTP客户端,点击确定。来为Windows 7安装TFTP客户端。

禁用Windows防火墙,或者在控制面板—高级安全Windows防火墙界面—入站规则中,启用专用网络和公用网络的“普通文件传输协议应用”。或者直接添加C:windowssystem32tftp.exe的例外。以允许TFTP文件传入。

以上设置完成后,执行如下命令并有如下所示结果,则说明TFTP服务可正常使用。

C:Usersxiyang

传输成功: 1 秒 9090 字节,9090 字节/秒

安装PXELINUX

这里我们使用syslinux的一个组件pxelinux.0作为BIOS平台的引导程序。同时syslinux还提供gpxelinux.0来实现gPXE功能。通过它可以使用快速的HTTP协议,而非较慢的TFTP协议来下载Linux镜像,以加速安装。不过有些硬件对gPXE支持不好。例如,IBM X3650 M4。

yum install syslinux syslinux-tftpboot -y

以下是安装完成的syslinux版本信息

【root@dhcp~】# rpm -q syslinux syslinux-tftpboot

syslinux-4.04-3.el6.i686

syslinux-tftpboot-4.04-3.el6.noarch

安装完成后,可以看到/var/lib/tftpboot目录下(部分用到)的文件列表如下所示:

【root@dhcp ~】# ll /var/lib/tftpboot/

total 1432

-rw-r--r--. 1 root root 89376 Oct 16 02:09 gpxelinux.0

-rw-r--r--. 1 root root 26268 Oct 16 02:09 memdisk

-rw-r--r--. 1 root root 26759 Oct 16 02:09 pxelinux.0

-rw-r--r--. 1 root root 163728 Oct 16 02:09 vesamenu.c32

以上文件中,pxelinux.0即为PXE启动引导程序,gpxelinux为gPXE引导程序。memdisk用来引导ISO文件,vasamenu.c32用来在绘制PXE菜单。

配置PXELINUX

pxelinux.0默认使用pxelinux.cfg文件夹作为其配置文件夹。其配置文件的格式与isolinux相同。pxelinux通过以下步骤查找其配置文件:

首先,若其PXE协议栈提供了固件的UUID,则查找其UUID为文件名的配置文件。如果BIOS没有提供可用的UUID,则使用ffffffff-ffff-ffff-ffff-ffffffffffff。UUID为标准的小写十六进制字母格式。例如,b8945908-d6a6-41a9-611d-74a6ab80b83d。

其次,寻找其短划线分割的小写十六进制MAC地址为文件名的配置文件。例如,如果其MAC地址为88:99:AA:BB:CC:DD,则寻找文件名为01-88-99-aa-bb-cc-dd的配置文件。

再次,查找以大写十六进制格式的IP地址为文件名的配置文件。例如192.0.2.91的大写十六进制IP为C000025B。可用gethostip命令来获取一个IP地址的不同格式,如下所示:

【root@dhcp ~】# gethostip -x 10.17.25.209

0A0111D1

最后,如果配置文件依旧没找到,则会删除IP地址的一个末位十六进制数字,再次重试。最终会查找一个文件名为小写default的配置文件。

例如,如果启动文件路径为/var/lib/tftpboot/pxelinux.0(/var/lib/tftpboot/为TFTP根目录),UUID为b8945908-d6a6-41a9-611d-74a6ab80b83d,MAC地址为88:99:AA:BB:CC:DD,IP地址为192.0.2.91,则pxelinux会依次尝试如下文件:

/pxelinux.cfg/b8945908-d6a6-41a9-611d-74a6ab80b83d

/pxelinux.cfg/01-88-99-aa-bb-cc-dd

/pxelinux.cfg/C000025B

/pxelinux.cfg/C000025

/pxelinux.cfg/C00002

/pxelinux.cfg/C0000

/pxelinux.cfg/C000

/pxelinux.cfg/C00

/pxelinux.cfg/C0

/pxelinux.cfg/C

/pxelinux.cfg/default

接下来仅讨论其默认配置文件default。default配置文件的格式与isolinux一样。可以照搬isolinux的配置文件

创建pxelinux.0使用的配置文件夹pxelinux.cfg,并下载其依赖的其他配置文件。

mkdir -p /var/lib/tftpboot/pxelinux.cfg/{5,6,7}/{i386,x86_64}

rmdir /var/lib/tftpboot/pxelinux.cfg/7/i386

cd /var/lib/tftpboot/pxelinux.cfg

#下载Linux引导镜像

#CentOS 7只支持64位系统,无i386版本。

wget -P 5/i386/

wget -P 5/x86_64/

wget -P 6/i386/

wget -P 6/x86_64/

wget -P 7/x86_64/

#下载公用的菜单依赖文件

wget

下载并重命名pxelinux配置文件

wget -P /var/lib/tftpboot/pxelinux.cfg

mv /var/lib/tftpboot/pxelinux.cfg/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

编辑default文件,使其如下所示:

default pxelinux.cfg/vesamenu.c32

#prompt 1

timeout 60

display pxelinux.cfg/boot.msg

menu background pxelinux.cfg/splash.jpg

menu title Welcome to CentOS 6!

menu color border 0 #ffffffff #00000000

menu color sel 7 #ffffffff #ff000000

menu color title 0 #ffffffff //代码效果参考:http://www.zidongmutanji.com/bxxx/161016.html

#00000000

menu color tabmsg 0 #ffffffff #00000000

menu color unsel 0 #ffffffff #00000000

menu color hotsel 0 #ff000000 #ffffffff

menu color hotkey 7 #ffffffff #ff000000

menu color scrollbar 0 #ffffffff #00000000

#以上为菜单配置部分,仅需修改相关文件的路径即可

#所有相对路径都是相对于pxelinux.0的位置

#通过PXELinux以KS形式自动安装64位CentOS 6

label auto64centos6 #标签

menu label *PXE:CentOS 6 x86_64 100GB+LVM New AutoInstall #菜单描述

menu default #设置为默认项目

kernel pxelinux.cfg/6/x86_64/vmlinuz #指定内核文件

append ks= ksdevice=link initrd=pxelinux.cfg/6/x86_64/initrd.img

#指定初始化镜像路径和ks.cfg文件

#通过GPXELinux以KS形式自动安装64位CentOS 6

label gpxe-auto64centos6

menu label GPXE:CentOS 6 x86_64 100GB+LVM New AutoInstall

kernel

append ks= ksdevice=link initrd=

#通过GPXE加载一个Windows PE镜像文件

label gpxe-lmtpe

menu label GPXE:Load a LMT PE image

linux memdisk

initrd

//代码效果参考:http://www.zidongmutanji.com/bxxx/215770.html

append raw iso

#通过对上面标签版本号、ks文件、位数等内容的修改

#可生成CentOS 6 32bitCentOS 5 32bitCentOS 5 64bitCentOS 7 64bit的配置

#为防止DNS解析出现问题,这里直接使用HTTP/FTP服务器的IP地址。

#从本地磁盘启动

label local

menu label Boot from local drive

localboot 0xffff

#内存测试

label memtest86

menu label Memory test

kernel pxelinux.cfg/memtest

append -

<

相关文章
|
2月前
|
安全 Linux Android开发
Linux CFI (Control-flow integrity)技术相关资料汇总
Linux CFI (Control-flow integrity)技术相关资料汇总
|
4月前
|
大数据 Linux 程序员
软件开发常见流程之服务器+Linux部署项目,会用服务器+Linux部署项目资料
软件开发常见流程之服务器+Linux部署项目,会用服务器+Linux部署项目资料
|
6月前
|
Linux Python
Linux中删除资料
Linux中删除资料
31 0
|
存储 网络协议 Ubuntu
Linux环境下使用SVN快速访问资料库?试试使用cpolar端口映射
SVN分为服务端和客户端,服务端主要是做数据资料存储,客户端主要是图形化工具连接服务端获取服务端数据资料,下面介绍在ubuntu系统安装服务端,在通过客户端远程访问。
129 0
Linux环境下使用SVN快速访问资料库?试试使用cpolar端口映射
|
Java 应用服务中间件 Linux
Linux复习资料——一篇文章学会安装Java(免环境配置)以及tomcat服务
Linux复习资料——一篇文章学会安装Java(免环境配置)以及tomcat服务
122 0
Linux复习资料——一篇文章学会安装Java(免环境配置)以及tomcat服务
|
Shell Linux
Linux复习资料——一篇文章学会sh脚本的编写(3)
Linux复习资料——一篇文章学会sh脚本的编写
99 0
Linux复习资料——一篇文章学会sh脚本的编写(3)
|
Shell Linux 开发工具
Linux复习资料——一篇文章学会sh脚本的编写(2)
Linux复习资料——一篇文章学会sh脚本的编写
125 0
Linux复习资料——一篇文章学会sh脚本的编写(2)
|
Shell Linux
Linux复习资料——一篇文章学会sh脚本的编写(1)
Linux复习资料——一篇文章学会sh脚本的编写
173 0
Linux复习资料——一篇文章学会sh脚本的编写(1)
|
关系型数据库 MySQL Linux
Linux复习资料——CentOS7下安装MySQL5.7.22(完整版本)
Linux复习资料——CentOS7下安装MySQL5.7.22(完整版本)
124 0
Linux复习资料——CentOS7下安装MySQL5.7.22(完整版本)
|
存储 Shell Linux
Linux复习资料(四)、Shell命令
Linux复习资料()、Shell命令
86 0
Linux复习资料(四)、Shell命令