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

一、相关服务和工具

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.0 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.0 /var/tftp/      # 拷贝pxelinux.0文件到tftp根目录

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

mkdir /var/tftp/pxelinux.cfg/         # 创建pxelinux.cfg目录,固定目录名称 vim /var/tftp/pxelinux.cfg/default # default文件,必须为这个名称 # 编辑内容如下 default linux prompt 1 timeout 60 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-8 # Network information network --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate network --hostname=localhost.localdomain # Root password rootpw --iscrypted $6$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. ios FTP使用NSURLSession上传

    我试图通过FTP将文件上传到服务器.根据NSK的NSURLSession类支持FTP操作.有一个着名的AppleDeveloperblog也支持.但还不清楚NSURLSessionAPI是否支持ftp上传?

  2. 支持iOS8和iOS7的设计应用程序

    支持iOS8和iOS7的故事板?>为不同的操作系统版本使用单独的故事板是否更好?>我们应该遵循哪些最佳做法来使应用程序与两个操作系统兼容?

  3. android – phonegap真的有用吗?

    我可以在应用中进行phonegap活动和原生活动吗?PhoneGap为每个主要的移动操作系统提供了一个设置,可以在任何地方创建相同的环境.这包括一个webview和一组映射到本机函数的javascript函数.这样你只需要开发一个应用程序,它可以在任何OSPhoneGap上运行,可以为其提供框架.>您的申请PhonegapAndroid的>您的申请PhonegapWindowsPhone>您的申请PhonegapiOS版>您的申请Phonegap…如果你开始问你刚刚在这里发布的问题…也许你应该首先检查Ph

  4. Nexus One – Android 2.1发布,WHERE是2.1的SDK?

    Nexus安卓手机今天开始销售2.1Os.我的朋友刚刚订购了两个隔夜送货.我认为这意味着明天或第二天它将在他手中.如何让人们在他们的身上得到2.1,这是多么遥远开发人员甚至可以触摸SDK之前的手?我已经有了用户使用Nexis-Droid2.1rom说我的高度使用的小部件不起作用.我怎么能提前测试这个没有黑客攻击我的手机?当应用程序无法正常工作时,所有这一切都会让用户感到沮丧由于开发人员没有1星,因此降低了1星的市场有机会更新他们的代码.谢谢谷歌…

  5. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. centos+php+coreseek+sphinx+mysql之一coreseek安装篇

    这篇文章主要介绍了centos+php+coreseek+sphinx+mysql之一coreseek安装篇的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下

  7. Centos7 中 Node.js安装简单方法

    这篇文章主要介绍了Centos7 中 Node.js安装简单方法,非常不错具有一定的参考借鉴价值,需要的朋友可以参考下

  8. nodejs脚本centos开机启动实操方法

    在本篇文章里小编给大家整理的是关于nodejs脚本centos开机启动实操方法,有兴趣的朋友们参考下。

  9. Centos PHP 扩展Xchche的安装教程

    这篇文章主要介绍了Centos PHP 扩展Xchche的安装教程的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

  10. Linux CentOS系统下安装node.js与express的方法

    这篇文章主要给大家介绍了在Linux CentOS系统下安装node.js与express的方法,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部