CentOS使用PXE网络启动自动安装操作系统
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网络启动自动安装操作系统的更多相关文章
- PXE网络启动无人值守自动安装 centos 全程实录
PXE网络启动无人值守自动安装 centos 全程实录 http://shayi1983.blog.51cto.com/4681835/1549854/ 搭建Pxe服务器无人听应答全自动安装CentO ...
- RHEL/CentOS 7 中配置 PXE 网络启动服务器
RHEL/CentOS 7 中配置 PXE 网络启动服务器 作者: Matei Cezar 译者: LCTT joeren | 2015-02-17 14:28 评论: 13 收藏: 8 分享: ...
- RHEL7下PXE+NFS+Kickstart无人值守安装操作系统
RHEL7下PXE+NFS+Kickstart无人值守安装操作系统 1.配置yum源 vim /etc/yum.repos.d/development.repo [development] name= ...
- RHEL7下PXE+Apache+Kickstart无人值守安装操作系统
RHEL7下PXE+Apache+Kickstart无人值守安装操作系统 1.配置yum源 vim /etc/yum.repos.d/development.repo [development] na ...
- 基于PXE网络启动的Linux系统自动化安装
在实际工作中,传统纯手动安装操作系统的方式是有一定的局限性的,例如:现在大多数的服务器都不自带光驱,若要安装系统需要外接光驱插入光盘,整个安装过程中需要人工交互确认,手动设置每一个安装设置项,人必 ...
- PXE远程自动安装操作系统
一.PXE的工作原理 PXE:基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统:PXE可以引导和安装Windows,linux等多种操 ...
- 网络启动并安装Debian
网络启动(PXEBoot)并安装Debian的官方文档在这里,不过官方文档有点冗长,我这里假设已经有一台安装好Debian,需要网络安装另一台(这台可以是虚拟机,通过ISO文件等等方式安装的).PXE ...
- PXE网络启动提示no default or ui configuration directive问题解决
按照 https://help.ubuntu.com/community/DisklessUbuntuHowto 的提示配置完系统,准备网络启动的时候,遇到: Trying to load pxeli ...
- cobbler自动安装操作系统
cobbler介绍 快速网络安装linux操作系统的服务,支持众多的Linux发行版: Red Hat, Fedora,CentOS,Debian,Ubuntu和SuSE 也可以支持网络安装windo ...
随机推荐
- python笔记04-----字典、元组、集合操作
1.字典 是一种key-value的数据类型,使用就像字典 无序的因为无下标 创建一个字典: info = { 'stu1':'qq', 'stu2':'ww', 'stu3' ...
- 132页Filter代码分析
1.long before = System.currentTimeMillis(); long after = System.currrentTimeMillis(); 解析:这两段代码之间定义的是 ...
- k8s中secret解析
概览 Secret是用来保存小片敏感数据的k8s资源,例如密码,token,或者秘钥.这类数据当然也可以存放在Pod或者镜像中,但是放在Secret中是为了更方便的控制如何使用数据,并减少暴露的风险. ...
- ++i? i++? i+=1? i=i+1? 何必纠结?
前言 今天在牛客上看面经,看到一个问题:num++; num+=1; num = num +1; 哪个效率最高? 自从学习C语言开始,我就在纠结for语言应该写i++,还是++i,其实这个问题,可以通 ...
- 通过Visual Studio 的“代码度量值”来改进代码质量
1 软件度量值指标 1.1 可维护性指数 表示源代码的可维护性,数值越高可维护性越好.该值介于0到100之间.绿色评级在20到100之间,表明该代码具有高度的可维护性:黄色评级在10到19之间,表示该 ...
- C# 日历类
using System; namespace DotNet.Utilities { /// <summary> /// 农历属性 /// </summary> public ...
- SLF4+Logback 使用及配置
在SpringBoot项目中使用slf4+logback ①在pom.xml中添加依赖 <dependency> <groupId>ch.qos.logback</gro ...
- java map常用的4种遍历方法
public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...
- Java基础之JDK的下载与安装
做Java开发已经很长一段时间了,最近在回顾Java的基础知识,感觉好多都是知道这个概念,能说个皮毛,但是往深了说又不知道怎么说,所以打算对Java从头做一个回顾,算是对自己所学知识的一个巩固和深入了 ...
- 常见IT英语单词
lable标签,master精通.主人,reference参考,release发布,schema模式,component组件,persistence持久化,generate生成产生,plugin插件, ...