PXE工作原理简介

PXE (Preboot Excution Environment) 预启动执行环境

工作环境介绍:

要实现PXE自动网络安装CentOS至少需要两台主机

1)PXE服务器PXE Server(同时安装DHCP,tftp,CentOS安装yum源等)

2)准备通过网络安装系统的客户机Clinet

3)准备好CentOS 6和CentOS 7两个安装光盘镜像,并挂载.

4)使用VMware等虚拟机时应给所有虚拟机的网卡分配为仅主机或其他与物理机所在局域网相隔离的模式,避免DHCP服务器对外部局域网造成混乱.

工作步骤:

1) Client开机,发广播向DHCP服务器请求IP地址,PXE Server上的DHCP服务接收到请求后,验证Client的MAC等信息通过后,发送一个可用IP地址给Client,并将启动文件pxelinux.0的存放地址(TFTP提供)发送给Client

2)得到地址的Client向TFTP服务器请求pxelinux.0文件,PXE Server(TFTP服务)向Client发送pxelinux.0的文件大小信息,Client验证如果文件大小信息可接受,便返回同意信息,之后TFTP服务向Client发送pxelinux.0文件

3)Client执行pxelinux.0文件,之后向TFTP请求配置信息文件,(TFTP服务工作目录中的pxelinux.cfg/default),TFTP服务把配置文件发给Client

4)Client向TFTP服务请求Linux内核和根文件系统,TFTP服务将kernel(vmlinuz)和initramfs(initrd.img)文件传给Client

5)Client启动Linux内核,之后通过http协议得到kickstart以及系统安装文件,并根据kickstart文件自动安装CentOS

实例:

下面一个实例来实现搭建能够同时自动安装CentOS 6和CentOS7的PXE服务器:

实例以CentOS 7为搭建环境.

1.安装所需服务

需要安装四个包:

dhcp,tftp-server,syslinux,httpd

]# yum install dhcp tftp-server syslinux httpd

所有服务设为开机启动

]# systemctl enable dhcpd
]# systemctl enable tftp.socket
]# systemctl enable httpd

dhcp: 为Client分配ip地址

tftp服务: 轻量化的ftp服务,一般网卡中会内置tftp客户端,无需操作系统支持便可实现文件下载.用于安装系统前获取启动安装系统所需的启动文件等资源.

syslinux: syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。但我们在这里只需要用到syslinux包里的某几个文件.

httpd: 主要方便用来提供网络资源下载.

2.各服务配置:

tftp:

tftp服务不需要做什么配置,安装并启动就可以直接使用了.需要留意tftp的工作目录为/var/lib/tftpboot/

httpd:

httpd服务默认配置即可使用,这里只需要记住httpd的文件目录/var/www/html/

dhcp

cat /etc/dhcpd/dhcpd.conf

subnet部分修改为以下内容.

subnet 192.168.5.0 netmask 255.255.255.0 {

range 192.168.5.100 192.168.5.105;

next-server 192.168.5.72;

filename "pxelinux.0";

}

说明:

除此之外的其他配置可以注释掉.

subnet 192.168.5.0 netmask 255.255.255.0

规划一个可以管理的子网段.可以设定多个.

range 192.168.5.100 192.168.5.105;

表示可以分配ip地址的范围,例子中是100到105 一共6个地址

next-server 192.168.5.72;

网络启动时必备参数,表示tftp的IP地址.

filename "pxelinux.0";

启动文件的文件名,位于tftp上.

3.所需文件的准备

/var/www/html/ 下需要的文件

]# tree -L 2 /var/www/html

├── centos

│   ├── 6

│   └── 7

└── ksdir

├── ks6-desktop.cfg

├── ks6-mini.cfg

├── ks7-desktop.cfg

└── ks7-mini.cfg

yum源

把centos6和centos7的光盘挂载到http工作目录/var/www/html/中作为yum源.

]# mkdir -p /var/www/html/centos/{6,7}

挂载光盘

]# mount /dev/sr1 /var/www/html/centos/6

]# mount /dev/sr0 /var/www/html/centos/7

修改/etc/fstab,实现开机自动挂载

LABEL=CentOS\0407\040x86_64 /var/www/html/centos/7 iso9660 ro 0 0

LABEL=CentOS_6.9_Final /var/www/html/centos/6 iso9660 ro 0 0

kickstart文件

我这里提前准备了四个ks文件,分别为CentOS 6 和7的桌面版本和最小化安装版本,分别为:

ks7-desktop.cfg,ks7-mini.cfg,ks6-desktop.cfg,ks6-mini.cfg

把他们放到/var/www/html/ksdir/下

]# mkdir /var/www/html/ksdir

修改ks文件中的相关参数:

只列出与本次安装相关的参数

vim ks6-desktop.cfg

url --url=http://192.168.7.72/centos/6/

vim ks7-desktop.cfg

url --url=http://192.168.7.72/centos/7/

ks6-mini.cfg和ks7-mini.cfg对应上面两个参数改成一样

/var/lib/tftpboot/ 目录下需要的文件

├── 6

│   ├── initrd.img

│   └── vmlinuz

├── 7

│   ├── initrd.img

│   └── vmlinuz

├── boot.msg

├── pxelinux.0

├── pxelinux.cfg

│   └── default

├── splash.png

└── vesamenu.c32

启动文件

这里的文件为用于启动安装程序的文件

pxelinux.0

]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

kernel(vmlinuz)

我们需要用于启动安装程序的内核vmliuz,可从光盘复制

vesamenu.c32

菜单界面生成文件vesamenu.c32,这个菜单比menu.c32更美观一些.配合需要的文件还有boot.msg和splash.png,也不需要区分CentOS版本,这里直接用CentOS 7的文件.

]# cp /var/www/html/centos/7/isolinux/{vesamenu.c32,boot.msg,splash.png} /var/lib/tftpboot/
]# mkdir /var/lib/tftpboot/{6,7}
]# cp /var/www/html/centos/6/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/6
]# cp /var/www/html/centos/7/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/7

此外还需要一个菜单内容文件pxelinux.cfg/default

]# mkdir /var/lib/ftptboot/pxelinux.cfg
]# cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

按照规划修改一下default内容

default vesamenu.c32

#prompt 1

timeout 60

display boot.msg

menu background splash.png

menu title PXE Install CentOS

menu color border 0 #ffffffff #00000000

menu color sel 7 #ffffffff #ff000000

menu color title 0 #ffffffff #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

label c6desktop

menu label Install an CentOS ^6 desktop system

kernel 6/vmlinuz

append initrd=6/initrd.img ks=http://192.168.7.72/ksdir/ks6-desktop.cfg

label c7desktop

menu label Install an CentOS ^7 desktop system

kernel 7/vmlinuz

append initrd=7/initrd.img ks=http://192.168.7.72/ksdir/ks7-desktop.cfg

label c6mini

menu label Install an CentOS 6 mini system

kernel 6/vmlinuz

append initrd=6/initrd.img ks=http://192.168.7.72/ksdir/ks6-mini.cfg

label c7mini

menu label Install an CentOS 7 mini system

kernel 7/vmlinuz

append initrd=7/initrd.img ks=http://192.168.7.72/ksdir/ks7-mini.cfg

label local

menu default

menu label Boot from ^local drive

localboot 0xffff

完成之后,启动所有服务.

新建虚拟机Client,开机引导设备选network,等待安装菜单的出现,选定要安装的系统版本即可.

CentOS使用PXE网络启动自动安装操作系统的更多相关文章

  1. PXE网络启动无人值守自动安装 centos 全程实录

    PXE网络启动无人值守自动安装 centos 全程实录 http://shayi1983.blog.51cto.com/4681835/1549854/ 搭建Pxe服务器无人听应答全自动安装CentO ...

  2. RHEL/CentOS 7 中配置 PXE 网络启动服务器

    RHEL/CentOS 7 中配置 PXE 网络启动服务器 作者: Matei Cezar 译者: LCTT joeren | 2015-02-17 14:28   评论: 13 收藏: 8 分享:  ...

  3. RHEL7下PXE+NFS+Kickstart无人值守安装操作系统

    RHEL7下PXE+NFS+Kickstart无人值守安装操作系统 1.配置yum源 vim /etc/yum.repos.d/development.repo [development] name= ...

  4. RHEL7下PXE+Apache+Kickstart无人值守安装操作系统

    RHEL7下PXE+Apache+Kickstart无人值守安装操作系统 1.配置yum源 vim /etc/yum.repos.d/development.repo [development] na ...

  5. 基于PXE网络启动的Linux系统自动化安装

      在实际工作中,传统纯手动安装操作系统的方式是有一定的局限性的,例如:现在大多数的服务器都不自带光驱,若要安装系统需要外接光驱插入光盘,整个安装过程中需要人工交互确认,手动设置每一个安装设置项,人必 ...

  6. PXE远程自动安装操作系统

    一.PXE的工作原理 PXE:基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统:PXE可以引导和安装Windows,linux等多种操 ...

  7. 网络启动并安装Debian

    网络启动(PXEBoot)并安装Debian的官方文档在这里,不过官方文档有点冗长,我这里假设已经有一台安装好Debian,需要网络安装另一台(这台可以是虚拟机,通过ISO文件等等方式安装的).PXE ...

  8. PXE网络启动提示no default or ui configuration directive问题解决

    按照 https://help.ubuntu.com/community/DisklessUbuntuHowto 的提示配置完系统,准备网络启动的时候,遇到: Trying to load pxeli ...

  9. cobbler自动安装操作系统

    cobbler介绍 快速网络安装linux操作系统的服务,支持众多的Linux发行版: Red Hat, Fedora,CentOS,Debian,Ubuntu和SuSE 也可以支持网络安装windo ...

随机推荐

  1. 深度学习(十六) ReLU为什么比Sigmoid效果好

    sigmoid: Relu: 为什么通常Relu比sigmoid和tanh强,有什么不同?主要是因为它们gradient特性不同. 1.sigmoid和tanh的gradient在饱和区域非常平缓,接 ...

  2. <机器学习实战>读书笔记--决策树

    1.决策树的构造 createBranch伪代码: 检测数据集中的每个子项是否属于同一分类: IF SO RETURN 类标签 ELSE 寻找划分数据集的最好特征 划分数据集 创建分支节点 FOR 每 ...

  3. 写Markdown费事?Typora让你像写word一样行云流水,所见即所得。

    Typora 简介 Typora删除了预览窗口,以及所有其他不必要的干扰.取而代之的是实时预览. Markdown的语法因不同的解析器或编辑器而异,Typora使用的是GitHub Flavored ...

  4. 微信WeUI入门

    为帮助网页开发者实现与微信客户端一致的视觉体验,并降低设计和开发成本,微信团队推出了网页设计样式库:WeUI. 该样式库目前包含 button (按钮).cell (单元格).toast (浮层提示) ...

  5. string转xml

    //string转xml XmlDocument doc = new XmlDocument(); doc.LoadXml(temp); XmlNodeList nodes1 = doc.GetEle ...

  6. 【SSH网上商城项目实战08】查询和删除商品类别功能的实现

    转自:https://blog.csdn.net/eson_15/article/details/51338991 上一节我们完成了使用DataGrid显示所有商品信息,这节我们开始添加几个功能:添加 ...

  7. 最小生成树(prim)

    里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且 ...

  8. 几个css3动画库

    Hover.css 查看演示: http://ianlunn.github.io/Hover/ github地址: https://github.com/IanLunn/Hover Animate.c ...

  9. python中logging日志基本用法,和进程安全问题

    低配版 import logging logging.debug('debug message') # 调试模式 logging.info('info message') # 正常运转模式 loggi ...

  10. Github+hexo+next搭建教程

    今天参考的是大神的教程,学了一个新东西,但是可能由于原教程中运用的npm包与我当前使用的npm包版本不同的原因,有出过多处运行错误,但都在此教程中解决了; 总结了下命令: npm install he ...