Ubuntu PXE安装服务器部署

通过PXE自动进行服务器操作系统的安装是大规模服务器运维过程中的必要手段,本文档详细描述PXE服务器的部署和配置。

PXE自动服务器安装原理(以下内容来自互联网)

PXE(Pre-boot execution environment)是intel公司开发的一个技术,支持工作站从远程服务器上下载镜像,并由此启动操作系统。在启动过程中,终端请求分配IP地址,在使用TFTP协议下载一个启动软件包到本地内存中执行,最后由这个启动软件包完成终端基本软件的设置,从而完成操作系统的安装。

PXE的工作流程如下:

PXE服务器需要提供的服务

在通过PXE安装ubuntu操作系统时,PXE服务器需要提供如下4个服务

DHCP: dhcp服务用于在OS安装过程中进行IP地址的分配。

TFTP:TFTP服务用于OS安装过程中请求下载系统引导文件。

NFS:NFS服务用于OS安装过程请求下载内核镜像和对应配置文件。

HTTP:HTTP服务用于Ubuntu安装过程中请求软件包

DHCP服务安装和配置

DHCP服务用于向客户端动态分配IP地址。我们当前使用软件isc-dhcp-server提供DHCP服务。

安装:

在ununtu系统下,通过执行apt-get install isc-dhcp-server完成安装。

配置:

1:修改/etc/default/isc-dhcp-server配置文件,指定提供dhcp服务的网口

例如:通过本地ens38网口对外提供dhcp服务,在修改该文件,将INTERFACESv4和INTERFACESv6内容指定为ens38网口

2:修改/etc/dhcp/dhcpd.conf配置文件,指定动态分配IP地址时的IP地址端,下载的文件名称等信息。

修改dhcpd.conf文件中的 subnet配置域,如下是一个具体例子:

配置参数说明:

filename

PXE引导启动文件名称,当前固定为 pxelinux.0

next-server

TFTP服务器地址(可以与DHCP服务共服务器部署,也可以分部署)

allow booting

允许在该段PXE

allow bootp

允许在该段PXE

range

描述分配的IP地址段

Option routers

描述的网关地址

Option subnet-mask

掩码

Option broadcast-address

广播地址

如果要根据MAC地址为服务器分配固定的IP地址,则需要打开host配置,样例如下:

TFTP服务安装和配置

TFTP服务用于在启动阶段向客户段提供引导文件,当前我们使用tftpd-hpa提供tftp服务

安装:

在Ubuntu下通过如下命令安装tftpd-hpa服务。

apt-get install tftpd-hpa

配置:

修改/etc/default/tftpd-hpa文件,修改tftp服务指定的根目录,配置样例如下:

nfs服务安装和配置

NFS服务可以提供给安装阶段下载内核文件

安装:

在ubuntu下通过如下方式安装nfs服务。

apt get-install nfs-kernel-server

配置:

修改/etc/exports文件,为nfs指定服务根目录,配置样例如下:

HTTP服务的安装和配置

在软件包安装过程中,http为Ubuntu提供软件源服务。在这里,我们使用apache提供http服务。

安装:

执行apt-get install apache2进行安装。

配置:

安装完成后,修改/etc/apache2/sites-available/000-default.conf文件,为其指定http服务根目录,配置样例如下:

注意配置文件中的 DocumentRoot项和Directory标签,这两个位置与后面OS安装相关,详细信息后面说明。

被安装OS文件准备

我们从标准的ubuntu ISO镜像文件中获取系统安装的文件。

1:使用mount命令挂载Ubuntu ISO镜像文件,这里以ubuntu Server版本为例子,将ISO镜像文件挂载到1604目录

mount -t iso9660 ubuntu-16.04.5-server-amd64.iso 1604

2:为TFTP根目录准备安装引导文件

TFTP根目录需要包含以下内容

其中pxelinux.cfg是一个目录,包括内容如下:

从挂载1604/install/netboot/ubuntu-installer/amd64目录下拷贝pxelinux.0到tftp服务根目录/opt/tftp

从挂载1604/install/netboot/ubuntu-installer/amd64/boot-screens目录下拷贝ldlinux.c32,libcom32.c32,libutil.c32,vesamenu.c32文件到tftp服务根目录/opt/tftp

在tftp服务根目录/opt/tftp目录下创建pxelinux.cfg目录,并在该目录下创建配置文件default和 pxe.conf(当前文件内容为空,后面章节补充内容)

3:在PXE安装OS过程中,需要通过NFS或HTTP服务下载内核映像文件到客户端服务器,因此我们在tftp服务根目录下创建一个OS安装目录,以组织不同的OS安装文件(这样,tftp在访问时也可以通过相对路径进行访问)

  1. 在tftp根目录/opt/tftp目录下创建目录OSInstall用来保存我们所有可能的OS信息。

对于安装ubuntu系统,我们在OSInstall目录下创建子级目录ubuntu用于保存安装文件。

考虑到ubuntu还有不同的发现版本,因此可以在ubuntu目录下在创建版本目录,比如说16.04表示Ubuntu 16.04的安装文件所在目录。

目录结构如下(该目录根据具体要求创建,无特殊要求)

  1. 拷贝ubunt ISO挂载目录下的所有文件到 OSInstall/ubuntu/16.04目录

注意:由于cp拷贝的时候使用通配*无法将.disk拷贝到目的目录,因此需要单独拷贝一次.disk目录内容。

  1. 修改nfs服务配置,将/opt/tftp/OSInstall目录共享出去

修改/etc/exports文件,将nfs的共享根目录修改为/opt/tftp/OSInstall

4)修改http服务配置,将/opt/tftp/OSInstall目录设置为http服务根目录

4:准备自动化安装配置文件ks.cfg

在安装系统过程中,当系统提示选择语言,键盘等信息时,如果不想人工操作,则可以通过该配置文件交由系统自动完成。该文件是一个文本文件,其内容如下:

编辑完成该文件后,考虑到不同的操作系选择不一样,因此建议将该文件拷贝到具体操作系统目录下,例如拷贝到OSInstall/ubuntu/16.04/目录

配置文件编写

在PXE安装过程中,需要编写的配置文件主要包括3个,即tftp根目录下的pxelinux.cfg子目录内的default和pxe.conf文件,

其中pxe.conf文件描述引导启动过程中启动菜单选项。Default文件描述启动引导启动使用的文件信息。

此外还有一个文件ks.cfg用于描述系统安装过程中的自动响应,该文件我们放置于每个操作系统文件的根目录下。

pxe.conf文件内容:

MENU TITLE PXE Server
NOESCAPE 1
ALOWOPTIONS 1
PROMPT 0
MENU WIDTH 80
MENU ROWS 14
MENU TABMSGROW 24
MENU MARGIN 10
MENU COLOR border 30;44 #ffffffff $00000000 std

Default文件内容如下:

DEFAULT vesamenu.c32
TIMEOUT 20
PROMPT 0
MENU INCLUDE pxelinux.cfg/pxe.conf
NOESCAPE 1

LABEL Install Ubuntu 16.04 Server
MENU LABEL Install Ubuntu 16.04 Server
kernel OSInstall/ubuntu/16.04/install/vmlinuz
append boot=install automatic-ubiquity netboot=nfs nfsroot=172.17.1.12:/opt/tftp/OSInstall initrd=OSInstall/ubuntu/16.04/install/netboot/ubuntu-installer/amd64/initrd.gz live-installer/net-image=OSInstall/ubuntu/16.04/install/filesystem.squashfs quit
ENDTEXT

ks.cfg文件内容如下:

auth --useshadow --enablemd5
bootloader --location=mbr
clearpart --all --initlabel
firewall --disable
install
keyboard us
lang en_US
langsupport en_US
logvol swap --vgname=sdn_vg --name=lv_swap --size=2048
logvol / --vgname=sdn_vg --fstype ext4 --size=1 --grow --name=lv_root
mouse
network --bootproto=dhcp --nameserver=172.17.1.12 --noipv6 --activate --device=eth0 --onboot=on
openssh-server
%packages
part /boot --fstype ext2 --size 500
part pv.01 --size=1 --grow
reboot
rootpw --disabled
text
timezone Asia/Shanghai
url --url http://172.17.1.12/ubuntu/16.04/
user test --fullname "test" --iscrypted --password --plaintext --password test123
volgroup sdn_vg pv.01
zerombr yes

Ubuntu PXE安装服务器部署相关推荐

  1. 【记录】ubuntu下安装和部署RAP2

    ubuntu下安装和部署RAP2 1. 后台部署 1.1 安装mysql和redis $ sudo apt update $ sudo apt install mysql-server $ sudo ...

  2. 阿里云服务器(Ubuntu)--mysql的安装和部署

    一:下载安装 1.升级升级apt-get: apt-get update sudo apt-get update 2.查看是否安装mysql: 若输入上图所示命令没有任何的输出(如上图),则没有安装m ...

  3. Ubuntu 16.04下部署Graylog日志服务器

    Graylog 是一个开源的日志管理系统,集中式收集.索引.分析其它服务器发来的日志.它是由 Java 语言编写的,能够接收 TCP.UDP.AMQP 协议发送的日志信息,并且使用 Mongodb 做 ...

  4. [PXE] Linux(centos6)中PXE 服务器搭建,PXE安装、启动及PXE理论详解

    本篇blog主要讲述了[PXE] linux(centos)PXE无盘服务器搭建,安装,启动及pxe协议详解 , Kickstart (PXE+DHCP+TFTP+HTTP). PXE环境概述 作为中 ...

  5. 虚拟机 pxe服务器,配置PXE安装ESXi主机

    PXE - Preboot eXecution Environment,启前环境.人们常说的PXE安装,就是通过网络为电脑.主机或服务器安装操作,各个操作系统都有这种需求.这样做的好处是:不需要安装光 ...

  6. 群晖pxe安装windows_通过PXE快速部署VMware ESXi 6.5

    说明 我们一般默认安装ESXi 都是通过cd或者u盘之类的介质进行安装ESXi系统,不过如果我们的环境新到一大批服务器并且需要在规定的时间内完成系统的部署,那么一台台部署显然是不可能的,所以我们就使用 ...

  7. ubuntu linux 批量部署,使用Cobbler批量部署Linux和Windows:CentOS/Ubuntu批量安装(二)...

    通过前面服务端的部署,已经配置好了 Cobbler Server 端,接下来开始进行 CentOS/Ubuntu 的批量安装,在进行 CentOS/Ubuntu 批量安装时,也需要通过Cobbler来 ...

  8. python web开发c6——阿里云上ubuntu+flask+gunicorn+nginx服务器部署(一)简单测试

    简述 Nginx在服务器部署中的作用 请求通过Nginx实现反向代理,将请求提交给代理服务器.本文中只用了一台服务器,所以是代理到本机. gunicorn的作用 作为服务器代码的容器.接收Nginx的 ...

  9. 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(二):Apache安装和配置

    基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...

最新文章

  1. 返璞归真 asp.net mvc (2) - 路由(System.Web.Routing)
  2. mysql sql诊断建议_MySQL诊断调优常用SQL语句
  3. redis缓存穿透、缓存击穿、缓存雪崩概念及解决方案
  4. 记录node内存瓶颈分析
  5. 利用QCommonStyle绘制自定义的窗体部件
  6. P1616 疯狂的采药(洛谷,动态规划递推,完全背包)
  7. .net学习笔记----WebConfig常用配置节点介绍
  8. 计算机教学与实际生活相结合,小学数学教学与实际生活相结合的方法思考
  9. VI 修改^M为unix换行符
  10. 制作python模块安装包[转载自刘天斯]
  11. oracle regexp提取数字,Oracle中的正则替换【REGEXP
  12. 欧姆龙plc的IO存储器区详解
  13. 营销推广的好工具:博客营销
  14. IDEA中,更换背景颜色
  15. Could not open client transport with JDBC Uri: jdbc:hive2://slaver2:10000: java.net.ConnectException
  16. Linux LTP (一)
  17. 一款基于RFID的固定资产管理系统
  18. 受用一生的高效 PyCharm 使用技巧
  19. [渝粤教育] 西南科技大学 财务管理与分析 在线考试复习资料(3)
  20. 惠州东江威立雅的全方位文件安全管理

热门文章

  1. java字符转数字_java怎样做到字符串转数字
  2. 携手引领全球电竞消费升级:CGU现场七彩虹NVIDIA访谈
  3. IIC通信协议,搞懂这篇就够了
  4. coalesce命令 oracle,请教表空间coalesce问题
  5. 3ds Max随堂笔记 二维、三维、世界空间修改器
  6. php explode txt,使用PHP的explode函数踩过的坑
  7. 计算机存储盘教程,计算机存储u盘启动盘创建工具的详细教程
  8. sort函数和swap函数
  9. scrapy抓取cnblog新闻
  10. 保姆级手把手教学 数学建模美赛信件格式latex模板(overleaf)