通过传统的方式安装和部署计算机时,都需要人工干预的方式完成安装。如果需要部署大量的类似功能的工作站或服务器,则需要耗费大量的时间。同时传统的安装方式,每台计算机都需要光驱设备及安装光盘等介质,会额外增加部署成本。因此,许多系统管理员都希望能够通过一种网络化的无人值守的自动安装方式将操作系统部署到目标计算机中。

一、相关服务和工具

1、PXE协议

PXE 是由 Intel 设计的协议,计算机可以通过 PXE 协议从网络引导启动。PXE 协议在启动过程分为 client 和 server 端,PXE 协议运行过程主要解决两个问题:首先解决 IP 地址的问题,然后解决如何传输操作系统启动文件和安装文件的问题。对于第一个问题,可以通过 DHCP Server 解决,通常情况下 DHCP 服务器主要用于分配 IP 地址给客户端。但在 PXE 环境下,DHCP 服务器需要额外加载 PXE 的相关配置。针对第二个问题,在启动初期因为 PXE client 中有相应的 TFTP 客户端,可以通过 TFTP 协议到 TFTP 服务器中下载相关文件启动计算机。后期在安装过程中,则通过 FTP 或 NFS 协议提供大量的操作系统安装文件的下载。

2、Kickstart

通过传统的方式安装和部署计算机时,都会要求通过交互的方式,回答各类问题,以完成安装和部署任务,过程繁琐,且无法实现自动化。红帽公司开发了 Kickstart 的安装方法,通过 ks 文件可以解决所有普通安装方式中需要回答的问题。可以通过 system-config-kickstart 工具定制 ks 文件,也可以通过相关语法来手工编写安装脚本。

3、CentOS操作系统

本次实验中所使用和安装的操作系统为CentOS 7,理论上 CentOS 6也是适用的。

4、DHCP

动态主机配置协议,主要用于给 DHCP 客户端自动分配 IP 地址,便于用户管理网络内部的计算机。针对 PXE 环境下,DHCP 服务器除分配 IP 地址外,还需要额外配置"next-server"选项定义 TFTP 服务器的地址,设置"filename"选项定义启动文件的名称。并且启动"booting"与"bootp"的支持。

5、TFTP与FTP

简单文件传输协议(TFTP)主要用于为客户机与服务器之间进行简单文件传输的协议。在 PXE 早期启动过程中,主要通过 TFTP 协议传输"pxelinux.0"。文件传输协议(FTP),适用于大量文件传输的情形,在后期安装过程,主要通过 FTP 协议传输 Linux 操作系统的安装包。

二、安装配置FTP服务

FTP 服务主要是下载 ks.cfg 文件和 操作系统文件的,也可以用 HTTP 或 NFS 来代替。

1、安装vsftpd服务

[root@localhost ~]# yum install -y vsftpd

2、提供操作系统镜像文件

FTP 默认配置即可,我们需要适用匿名用户。通过ftp安装操作系统,我们需要把操作系统镜像文件拷贝到这个匿名用户目录
[root@localhost ~]# mount /dev/cdrom /var/ftp/pub/ # /var/ftp/pub是ftp的匿名用户目录

3、启动ftp服务

[root@localhost ~]# systemctl start  vsftpd    # 启动ftp服务
[root@localhost ~]# systemctl enable vsftpd # 设置开机启动

三、安装dhcp和tftp

DHCP 和 TFTP 服务可以选择单独分别去安装,也可以通过安装 dnsmasq 服务,来实现 DHCP 和 TFTP 的功能。

1、安装dnsmasq软件包

[root@localhost ~]# yum install -y dnsmasq

2、配置dnsmasq

dnsmasq 的配置文件是 /etc/dnsmasq.conf,主要是去掉以下相关的注释,并设置修改 DHCP 的范围和 TFTP 的根目录。

bogus-priv
filterwin2k
interface=eth0
dhcp-range=192.168.0.50,192.168.0.100,12h
dhcp-boot=pxelinux.
enable-tftp
tftp-root=/var/tftp # tftp目录默认是没有的,需要手动创建
dhcp-authoritative

3、创建tftp根目录

[root@localhost ~]# mkdir /var/tftp

4、启动dnsmasq

[root@localhost ~]# systemctl start  dnsmasq
[root@localhost ~]# systemctl enable dnsmasq

四、拷贝和准备相关文件

1、从iso中拷贝内核镜像和文件系统镜像

cp /var/ftp/pub/images/pxeboot/initrd.img /var/tftp/    # 拷贝文件系统镜像
cp /var/ftp/pub/images/pxeboot/vmlinuz /var/tftp/ # 拷贝内核镜像文件

2、生成pxe启动文件pxelinux.0

yum install -y syslinux                           # 安装pxelinux.0所需要的包
rpm -ql syslinux | grep "pxelinux.0" # 查询文件所在目录
cp /usr/share/syslinux/pxelinux. /var/tftp/ # 拷贝pxelinux.0文件到tftp根目录

3、准备默认的菜单配置文件

mkdir /var/tftp/pxelinux.cfg/         # 创建pxelinux.cfg目录,固定目录名称
vim /var/tftp/pxelinux.cfg/default # default文件,必须为这个名称
# 编辑内容如下
default linux
prompt
timeout
display boot.msg
label linux
kernel vmlinuz
append initrd=initrd.img text ks=ftp://192.168.0.3/ks.cfg # 这个地方指定了ks.cfg文件下载路径,后边会生成该文件

4、生成kickstart文件

kickstart 文件可以通过 system-config-kickstart 可视化工具来进行配置,生成 ks.cfg 文件;也可以通过已经安装好的操作系统的模板文件 anaconda-ks.cfg 来稍加修改即可。下边的 ks.cfg 文件是做实验时的样本,内容如下(加粗为修改部分):

#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
install
url --url=ftp://
192.168.0.3/pub/ # 需要指定安装方式通过ftp来下载安装操作系统
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF- # Network information
network --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
network --hostname=localhost.localdomain # Root password
rootpw --iscrypted $$LK7yftVlSa2zcGia$4loHYYWZUosdWvZA7Qzf.0lhmrcD5n26BK1xWm7QCNBdbBSjC7MK7yAYRvmIXGI8wu.t96jo6m8RRmNyjsKY60
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --all --initlabel --drives=sda
... ... ... ... # 还有很多内容

拷贝 ks.cfg 文件到 FTP 目录

[root@localhost ~]# cp /root/anaconda-ks.cfg /var/ftp/ks.cfg
[root@localhost ~]# chmod +r /var/ftp/ks.cfg

五、客户端安装操作系统验证

以上工作完成之后,就可以开始安装操作系统了:

1、准备一台适当配置的物理机
2、连接网线,与服务器在同一个局域网内
3、设置 BIOS 从网卡启动
4、等待安装......

遇到的问题,有的主机即使设置了 BIOS 从 network 启动,仍然不能正常从网络来启动安装,需要仔细查找到 BISO 的关于 PXE 的开关设置,然后将其打开,每个主机的 BIOS 设置方式都不同,需要自己根据具体的硬件来设置。

CentOS系统通过PXE实现批量无人值守安装的更多相关文章

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

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

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

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

  3. 还在做廉价的劳动力?部署PXE实现Kickstart无人值守安装

    搭建PXE实现Kickstart无人值守安装 1.搭建PXE远程安装服务器 2.实现kicstart无人值守安装 1.PXE介绍及搭载: PXE是有Intel公司开发的网络引导技术,工作在Client ...

  4. linux系统批量无人值守安装

    一:批量无人值守安安装原理 利用DHCP TFTP FTP和PXE技术实现批量安装系统,首先在主server上安装好DHCP TFTP和FTP服务,client通过网卡的PXE技术获取到IP地址和TF ...

  5. kickstart半自动安装centos系统与pxe自动安装centos系统

    一.kickstart半自动安装centos系统 关闭防火墙,关闭selinux,使用system-config-kickstart生成kickstart配置文件,启动xmanger-Passive ...

  6. 第19章 使用PXE+Kickstart部署无人值守安装

    章节概述: 本章节将教会您通过PXE+DHCP+TFTP+VSftpd+Kickstart服务程序搭建出无人值守安装系统,从而批量部署客户机系统. 这种系统能够实现自动化运维.避免了重复性劳动,帮助提 ...

  7. 自己在安装centos 系统时, 是使用英文安装 成功,现在系统语言为英语,如何设置为中文?

    作为一个linux菜鸟,遇到的问题可谓真多,在虚拟机VMware上安装好centos系统后,心里甚喜,也连上网络了. 一.遇到的问题 but,火狐浏览器浏览网页出现乱码,也不知道怎么解决?所有的中文都 ...

  8. Linux服务器pxe+kickstart部署无人值守安装

    一.    使用光盘镜像安装好一台Redhat6.8系统的虚拟机(图形化界面) 二.    部署相关服务程序 1.     安装并配置dhcpd服务程序 a)安装dhcp服务程序 b)对dhcp服务进 ...

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

    1.配置yum源 vim /etc/yum.repos.d/development.repo [development] name=yum server baseurl=file:///mnt ena ...

随机推荐

  1. checkbox选择多数据传入后台时,怎样解析数据

    <input type="checkbox" name="test" value="值1" />显示的内容<input t ...

  2. html页面头部里的meta

    作者:zccst html中的http-equiv属性应用详解 一.简介 http-equiv 属性 -- HTTP协议的响应头报文 此属性出现在meta标签中 此属性用于代替name,HTTP服务器 ...

  3. iOS开发——判断邮箱格式

    //判断邮箱格式 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@ ...

  4. kvm 动态挂载硬盘

    根据最新需求需要动态的给kvm下的windows虚拟机挂载硬盘,网上查看了很多资料终于试通了,在这里记录下方便自己回忆,同事可以给大家做做参考,如果有问题欢迎吐槽 环境:先说说我使用的环境,环境是使用 ...

  5. UVa 124 - Following Orders

    题目大意:给一个变量列表和变量的大小关系,输出所有的满足约束的序列. 构建为有向图,然后就是拓扑排序,使用回溯输出所有的结果. #include <cstdio> #include < ...

  6. RabbitMQ消息队列(九):Publisher的消息确认机制

    在前面的文章中提到了queue和consumer之间的消息确认机制:通过设置ack.那么Publisher能不到知道他post的Message有没有到达queue,甚至更近一步,是否被某个Consum ...

  7. zend framework 配置连接数据库

        Zend_Db_Adapter是zend frmaeword的数据库抽象层api.基于pdo, 你可以使用Zend_Db_Adapter连接和处理多种 数据库,包括:microsoft SQL ...

  8. java系列--抽象类和接口

    问题:什么是接口,作用是什么 问题:什么是抽象类,作用是什么 一.抽象类 1.当父类的一些方法不确定时, 2.当一个子类继承的父类是抽象类的话,需要我们把抽象类中所有的抽象方法全部实现 3.抽象方法本 ...

  9. 闭包用法,延迟tab

    var changeTab =( function () { var timeId = 0; return function (tabId) { if (timeId) { clearTimeout( ...

  10. Python计算一个项目中含有的代码行数

    最近想要知道以前做过的project有多少行代码,因为文件太多,直接手工数效率太低,于是编写一个python程序用来计算一个project有多少代码行. 首先,在一个项目中,有很多子文件夹,子文件夹中 ...