Vmware部署Linux无人值守安装Centos7系统
Linux - 无人值守安装服务
# 需求分析
- 使用光盘镜像来安装 Linux 系统的方式; 坦白讲, 该方法适用于只安装少量 Linux 系统的情况, 如果生产环境中有数百台服务器都需安装系统, 这种方式就不太适合;
# 解决方案
- 使用 无人值守安装系统 完成数百台服务器的系统安装;
- 无人值守安装(Unattended Setup)指软件安装时无需任何用户干预, 直接按默认或通过应答文件设置安装, 这对于无特殊需求的用户或企业大批量部署安装操作系统及软件时非常方便;
# 简介
- 本节将介绍可以实现无人值守安装服务的 PXE+Kickstart 服务程序, 并手动安装部署 PXE + TFTP + FTP + DHCP + Kickstart 等服务程序, 从而搭建出一套可批量安装 Linux 系统的无人值守安装系统;
# 部署步骤
- 安装 DHCP、TFTP、SYSLinux、vsftpd、xinetd、KickStart 服务程序
- 挂载 ISO 文件
- 配置 DHCP、TFTP、SYSLinux、vsftpd、xinetd、KickStart
- 测试&上线
# 部署软件
- PXE (Preboot eXecute Environment, 预启动执行环境)
- TFTP (Trivial File Transfer Protocol, 简单文件传输协议)
- DHCP (Dynamic Host Configuration Protocol, 动态主机配置协议)
- FTP (FileTransferProtocol, 文件传输协议)
- Kickstart (RedHat红帽公司提供的应答文件)
简介
PXE(Preboot eXecute Environment,预启动执行环境)是由 Intel 公司开发的技术, 可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持 PXE 技术), 主要用于在无人机值守安装系统中引导客户端主机安装 Linux 操作系统;
Kickstart 是一种无人值守的安装方式, 其工作原理是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg 文件, 当安装过程中需要填写参数时则自动匹配 Kickstart 生成的文件;
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种基于UDP协议在客户端和服务器之间进行简单文件传输的协议;TFTP提供不复杂、开销不大的文件传输服务,可将其当作FTP协议的简化版本;
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 是一种基于UDP协议且仅限于在局域网内部使用的网络协议;该协议用于自动管理局域网内主机的IP地址、子网掩码、网关地址及DNS地址等参数,可以有效地提升IP地址的利用率,提高配置效率,并降低管理与维护成本;
FTP(FileTransferProtocol, 文件传输协议)是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20用于进行数据传输,端口21用于接受客户端发出的相关FTP命令与参数;
xinetd(eXtended InterNET services daemon,扩展的InterNET服务守护程序)常用来管理多种轻量级 Internet 服务;xinetd 提供类似于 inetd+tcp_wrapper 的功能;
# 配置文件 简介
- /var/lib/ftfpboot/vmlinuz: 可引导的压缩的内核;
- /var/lib/ftfpboot/initrd.img: 启动内存文件;
- /var/lib/ftfpboot/pxelinux.0: PXE引导程序;
- /var/lib/ftfpboot/pxelinux.cfg/default: 客户机启动安装时选择项;
安装&卸载
# 方式一:
# 一条命令安装所需服务
$ sudo yum install -y dhcp tftp-server vsftpd syslinux xinetd
# 方式二:
# 按照一步一步安装
# 安装dhcp
$ sudo yum install -y dhcp
# 安装tftp
$ sudo yum install -y tftp-server
# 安装vsftpd
$ sudo yum install -y vsftpd
# 安装syslinux
$ sudo yum install -y syslinux
# 安装xinetd
$ sudo yum install -y xinetd
DHCP
- 安装
# 安装
$ sudo yum install -y dhcp
- 卸载
# 卸载
$ sudo yum remove dhcp
TFTP
- 安装
# 安装
$ sudo yum install -y tftp-server
- 卸载
# 卸载
$ sudo yum remove tftp-server
vsftpd
- 安装
# 安装
$ sudo yum install -y vsftpd
- 卸载
# 卸载
$ sudo yum remove vsftpd
SYSLinux
- 安装
# 安装
$ sudo yum install -y syslinux
- 卸载
# 卸载
$ sudo yum remove syslinux
xinetd
- 安装
# 安装
$ sudo yum install -y xinetd
- 卸载
# 卸载
$ sudo yum remove xinetd
配置
主机名称 (Host) | 操作系统 (OS) | IP 地址(ip address) |
---|---|---|
无人值守系统 | Centos7 | 192.168.158.2 |
客户端主机 | 未安装操作系统 | - |
网络配置
- 配置 vmware 网络
vmware网络配置步骤:
编辑
->虚拟网络编辑器
->添加网络
->使用本地 DHCP 服务将 IP 地址分配给虚拟机
- 配置文件
ifcfg-ensxx
$ vi /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static # 静态配置
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
UUID=53eb3239-d967-4079-9e11-28c7ccd12821
DEVICE=ens32
ONBOOT=yes # 开启网络配置
IPADDR=192.168.158.2 # IP地址
NETWASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.158.1 # 网关
ISO挂载
挂载光盘镜像方式:在服务器使用wget下载iso到服务器上、下载iso文件,通过光驱挂载到服务器上;
将虚拟机的 CD/DVD 光盘选项设置为“使用 ISO 镜像文件”,并选择已经下载好的系统 镜像;
vmware挂载配置步骤:
虚拟机设置
->CD/DVD (SATA)
->使用 ISO 映像文件
# 创建挂载点 /media/cdrom
$ mkdir -p /media/cdrom
# 挂载 ISO 到 /media/cdrom
$ mount /dev/cdrom /media/cdrom/
DHCP
DHCP配置文件中允许 BOOTP 引导程序协议, 旨在让局域网内暂时没有操作系统的主机也能获取静态 IP地址;在配置文件的最下面加载了引导驱动文件 pxelinux.0(这个文件会在下面的步骤中创建), 其目的是让客户端主机获取到 IP 地址后主动获取引导驱动文件;
$ vi /etc/dhcp/dhcpd.conf
allow booting;
allow bootp;
ddns-update-style interim;
ignore client-updates;
subnet 192.168.158.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.158.2;
range dynamic-bootp 192.168.158.100 192.168.158.200;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.158.2;
filename "pxelinux.0";
}
在确认 DHCP 服务程序的参数都填写正确后,重新启动该服务程序,并将其添加到开机启动 项中;这样在设备下一次重启之后,在无须人工干预的情况下,自动为客户端主机安装系统;
$ systemctl restart dhcpd
$ systemctl enable dhcpd
TFTP
vsftpd 是一款功能丰富的文件传输服务程序,允许多种认证方式来进行访问认证;但是,当前的客户端主机没有安装操作系统,无法进行登录认证;而 TFTP 作为一种基于 UDP 协议的简单文件传输协议,不需要进行用户认证即可获取到所需的文件资源;配置 TFTP 服务程序,为客户端主机提供引导及驱动文件;当客户端主机有了基本的驱动程序之后,再通过 vsftpd 服务程序将完整的光盘镜像文件传输过去;
TFTP 是一种非常精简的文件传输服务程序, 它的运行和关闭是由 xinetd 网络守护进程服务来管理的;xinetd 服务程序会同时监听系统的多个端口, 然后根据用户请求的端口号调取相应的服务程序来响应用户的请求;
$ vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no # 将 YES 改为 NO
per_source = 11
cps = 100 2
flags = IPv4
}
$ systemctl restart xinetd
$ systemctl enable xinetd
TFTP 服务程序默认使用的是 UDP 协议, 占用的端口号为 69, 所以在生产环境中还需要在 firewalld 防火墙管理工具中写入使其永久生效的允许策略, 以便让客户端主机顺利获取到引导文件;
# 添加 TFTP 端口
$ firewall-cmd --permanent --add-port=69/udp
# 重启防火墙
$ firewall-cmd --reload
SYSLinux
SYSLinux 是一个用于提供引导加载的服务程序;与其说 SYSLinux 是一个服务程序, 不如说更需要里面的引导文件, 在安装好 SYSLinux 服务程序软件包后, /usr/share/syslinux 目录中会出现很多引导文件;
将 SYSLinux 提供的引导文件复制到 TFTP 服务程序的默认目录中,也就是文件 pxelinux.0,这样客户端主机就能够顺利地获取到引导文件了;
$ cd /var/lib/tftpboot
# 复制 pxelinux.0 文件到 /var/lib/tftpboot
$ cp /usr/share/syslinux/pxelinux.0 .
# 需进行 ISO 挂载, 否则出现 `No such file or directory`
$ cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} .
$ cp /media/cdrom/isolinux/{vesamenu.c32,boot.msg} .
在 TFTP 服务程序的目录中新建 pxelinux.cfg 目录;将系统光盘中的开机选项菜单复制到该目录中,并命名为 default, 这个 default 文件就是开机时的选项菜单;
$ mkdir /var/lib/tftpboot/pxelinux.cfg
$ cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
Centos 镜像默认的开机菜单中有两个选项,安装系统 |安装介质检验
;采用无人值守的方式安装系统,所以编辑 default 文件,把第 1 行的 default 参数 修改为 linux,这样系统在开机时就会默认执行那个名称为 linux 的选项;对应的 linux 选项 大约在 64 行,将默认的光盘镜像安装方式修改成 FTP 文件传输方式,并指定好光盘镜像的获取网址以及 Kickstart 应答文件的获取路径;
$ vi /var/lib/tftpboot/pxelinux.cfg/default
1 default linux # 将 这个修改为 default linux
64 append initrd=initrd.img inst.stage2=ftp://192.168.158.2 ks=ftp://192.168.158.2/pub/ks.cfg quiet # 镜像安装方式改成FTP传输方式
vsftpd
参考文档:https://www.cnblogs.com/HOsystem/p/16629572.html
无人值守安装系统的服务中,光盘镜像是通过 FTP 协议传输的,因此要用到 vsftpd 服务程序;当然,也可以使用 httpd 服务程序来提供 Web 网站访问的方式,只要能确保将光盘镜像顺利传输给客户端主机即可;
打算使用 Web 网站服务来提供光盘镜像,一定记得将上面配置文件中的光盘镜像获取网址和 Kickstart 应答文件获取网址 修改一下;
在确认系统光盘镜像已经正常挂载到/media/cdrom 目录后,把目录中的光盘镜像文件全部复制到 vsftpd 服务程序的工作目录中;
$ cp -r /media/cdrom/* /var/ftp
$ firewall-cmd --permanent --add-service=ftp
$ firewall-cmd --reload
$ setsebool -P ftpd_connect_all_unreserved=on
# 开启vsftpd服务
$ systemctl start vsftpd
# 加入vsftpd至开机启动项
$ systemctl enable vsftpd
KickStart
Kickstart 其实并不是一个服务程序,而是一个应答文件;Kickstart 应答文件中包含了系统安装过程中需要使用的选项和参数 信息,系统可以自动调取这个应答文件的内容,从而彻底实现了无人值守安装系统;
在 root 管理员的家目录中有一个名为 anaconda-ks.cfg 的文件,它就是应答文件;下面将这个文件复制到 vsftpd 服务程序的工作目 录中(在开机选项菜单的配置文件中已经定义了该文件的获取路径,也就是 vsftpd 服务程序 数据目录中的 pub 子目录中);使用 chmod 命令设置该文件的权限,确保所有人都有可读的权 限,以保证客户端主机可以顺利获取到应答文件及里面的内容;
$ cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
$ chmod +r /var/ftp/pub/ks.cfg
Kickstart 应答文件并没有想象中的那么复杂,它总共只有 46 行左右的参数和注释内容, 完全可以通过参数的名称及介绍来快速了解每个参数的作用;
把第 6 行的光盘镜像安装方式修改成 FTP 协议,仔细填写好 FTP 服务器的 IP 地址,并 用本地浏览器尝试打开下检查有没有报错。然后把第 21 行的时区修改成上海(Asia/Shanghai),再把 29 行的磁盘选项设置为清空所有磁盘内容并初始化磁盘,最后再把
$ vi /var/ftp/pub/ks.cfg
# Use CDROM installation media
url --url=ftp://192.168.158.2 # 在Use CDROM 下添加 url
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# Partition clearing information
clearpart --all --initlabel
reboot
如果觉得系统默认自带的应答文件参数较少,不能满足生产环境的需求,则可以通过 Yum软件仓库来安装 system-config-kickstart 软件包;这是一款图形化的 Kickstart 应答文件生成工具,可以根据自己的需求生成自定义的应答文件,然后将生成的文件放到/var/ftp/pub 目录中并将名字修改为 ks.cfg 即可。
问题汇总
问题一:
问题描述:
在配置 dhcpd.conf
后,使用 systemctl restart dhcpd
时,出现以下错误:
Sep 23 00:29:39 localhost.localdomain dhcpd[9744]: Please report for this software via the CentOS Bugs Database:
Sep 23 00:29:39 localhost.localdomain dhcpd[9744]: http://bugs.centos.org/
Sep 23 00:29:39 localhost.localdomain dhcpd[9744]: nt
Sep 23 00:29:39 localhost.localdomain dhcpd[9744]: exiting.
Sep 23 00:29:39 localhost.localdomain systemd[1]: dhcpd.service: main process exited, code=exited, status=1/FAILUR
Sep 23 00:29:39 localhost.localdomain systemd[1]: Failed to start DHCPv4 Server Daemon.
-- Subject: Unit dhcpd.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit dhcpd.service has failed.
--
-- The result is failed.
Sep 23 00:29:39 localhost.localdomain systemd[1]: Unit dhcpd.service entered failed state.
Sep 23 00:29:39 localhost.localdomain systemd[1]: dhcpd.service failed.
Sep 23 00:29:39 localhost.localdomain polkitd[8602]: Unregistered Authentication Agent for unix-process:9738:3132
问题原因:
虚拟机网卡 ensxxx
和dhcpd.conf的网段不一致;总的来说,就是 dhcpd.conf
配置中出现错误;
问题解决:
重新配置 dhcpd.conf
文件;
$ vi /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
allow booting; # 允许 booting 模式
allow bootp;
ddns-update-style interim;
ignore client-updates;
# subnet: 子网IP段
# netmask: 子网掩码
# subnet-mask: 子网掩码
# option domain-name-servers: 无人值守系统IP地址
# range dynamic-bootp: 客户端主机可获取的IP范围
# default-lease-time:
# max-lease-time:
# next-server:
# filename:
subnet 192.168.158.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.158.2;
range dynamic-bootp 192.168.158.100 192.168.158.200;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.158.2;
filename "pxelinux.0";
}
问题二:
问题描述:
在 进行无人值守安装时,启动系统时,出现PXE-E32: TFTP open timeout
错误;
问题原因:
- 原因一:
TFTP配置文件错误,将disable = yes
改为 disable = no
;
- 原因二:
xinetd 服务未安装或未开启
- 原因三:
防火墙未放行ftp服务
问题解决:
- 原因一解决:修改TFTP配置文件
$ vi /etc/xinetd.d/tftp
disable = no
- 原因二解决:安装xinetd或开启xinetd
$ yum install -y xinetd
$ systemctl start xinetd
- 原因三解决:放行ftp服务
$ firewall-cmd --permanent --add-service=ftp
$ firewall-cmd --reload
$ setsebool -P ftpd_connect_all_unreserved=on
问题三:
问题描述:
在 进行无人值守安装时,启动系统时,出现以下错误
Warning: /dev/root does not exist
Generaing "/run/initramfs/rdsosreport.txt"
Entering emergency mode. Exit the shell to continue
Type "journalctl" to view system logs.
You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot
after moounting them and attach it to a bug report.
问题原因:
default
文件中,append行没设置正确;
问题解决:
重新配置 default文件;
问题四:
问题描述:
在 进行无人值守安装时,启动系统时,出现以下错误:
PXE-E51: No DHCP or proxyDHCP offers were received.
PXE-M0F: Exiting Intel PXE ROM.
Operating System not found
问题原因:
dhcp服务未配置正确
问题解决:
重新配置 dhcpd.conf
文件;
$ vi /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
allow booting; # 允许 booting 模式
allow bootp;
ddns-update-style interim;
ignore client-updates;
# subnet: 子网IP段
# netmask: 子网掩码
# subnet-mask: 子网掩码
# option domain-name-servers: 无人值守系统IP地址
# range dynamic-bootp: 客户端主机可获取的IP范围
# default-lease-time:
# max-lease-time:
# next-server:
# filename:
subnet 192.168.158.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.158.2;
range dynamic-bootp 192.168.158.100 192.168.158.200;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.158.2;
filename "pxelinux.0";
}
# 重启DHCP服务
$ systemctl restart dhcpd
Vmware部署Linux无人值守安装Centos7系统的更多相关文章
- pxe+kickstart 无人值守安装CentOS7.1
CentOS6.6下PXE+Kickstart无人值守安装CentOS7.1操作系统 一.简介 1.1 什么是PXE Pxe(Pre-boot Execution Environment,预启动执行 ...
- VirtualBox下安装CentOS7系统
本文假定你已经知道如何安装VirtualBox虚拟机软件,并且已经安装好了. 首先我们需要准备好centos的iso镜像文件,可以从centos的官网下载. 以下操作使用的VirtualBox版本号是 ...
- (转)VirtualBox下安装CentOS7系统
转:https://www.cnblogs.com/hihtml5/p/8217062.html 本文假定你已经知道如何安装VirtualBox虚拟机软件,并且已经安装好了. 首先我们需要准备好cen ...
- 真实的物理机安装Centos7系统后网卡只有lo没有eno1的解决办法:实际上是物理机未安装网驱动卡
问题症状: 我真实的物理机安装Centos7系统后,在/etc/sysconfig/目录下查看,发现网卡只有lo没有eno1,出现该问题的实际原因是物理机未安装网驱动卡. 解决办法: 不多说了,让我们 ...
- [Ruby on Rails系列]1、开发环境准备:Vmware和Linux的安装
Ruby on Rails是一个采用Ruby语言的遵循MVC模式的Web开发框架.使用RoR会得到更加快速爽快的Web开发体验.相比于Java EE,该框架使Web开发的速度和效率变得更加轻快和敏捷. ...
- Linux的安装 CentOS-7.1
说明: 首先,版本:7.1版:CentOS-7-x86_64-Everything-1503-01.iso 下载自:http://mirrors.163.com/centos/7/isos/x86_6 ...
- linux pxe 安装Centos7
服务端 需要3种服务 dhcp + tftp + vsftp tftp 提供引导 为什么不使用其他协议来进行pxe引导 是因为网卡只会集成tftp这种服务 写明到镜像的方式 dhcp 下发tf ...
- win10自带虚拟机安装CentOS7系统(转)
出处:http://blog.csdn.net/bimabushihaodongxi/article/details/53677490 话说工欲善其事,必先利其器,在我准备学习Linux之前先要完成l ...
- 虚拟机安装Centos7系统后优化操作
重点说明 以下操作针对于VMware软件上新创建的Centos7的虚拟机的优化,当需要多台虚拟机的实验环境时,可通过以下需求先操作配置出一台优化机(也可称为模板机),并创建快照记录,以后的多台虚拟机环 ...
随机推荐
- Git 中的回退操作:reset 和 revert
Git 中回退有 reset 和 revert,这两个的区别就是是否保留更改记录 假设当前的提交情况是:A <- B <- C <- D <- HEAD,如下图: 当前是 D, ...
- 从零开始制作【立体键盘】,画UI免写CSS,【盲打练习】的交互逻辑只用了10来行表达式!
手把手教你从空白页面开始通过拖拉拽可视化的方式制作[立体键盘]的静态页面,不用手写一行CSS代码,全程只用10来行表达式就完成了[盲打练习]的交互逻辑. 整个过程在众触应用平台进行,快速直观. 最终U ...
- DHCP原理及配置
DHCP工作原理 集中的管理.分配IP地址,使client动态的获得IP地址.Gateway地址.DNS服务器地址等信息,并能够提升地址的使用率. 简单来说,DHCP就是一个不需要账号密码登录的.自动 ...
- Linux学习系列--用户(组)新增、查看和删除
在实际的工作中,在接触Linux的用户组管理的时候,一般来说都是在系统开建设的时候设置好,root权限由特定的负责人保管用户密码,避免误操作带来不必要的麻烦. 在具体使用的时候,会利用相关的命令设置一 ...
- linux安全之网络设置
可以通过/etc/sysctl.conf控制和配置Linux内核及网络设置. # 避免放大攻击 net.ipv4.icmp_echo_ignore_broadcasts = 1 # 开启恶意icmp错 ...
- linux常见命令(七)
df/du/ln/lsblk/mount磁盘和目录的容量df 列出文件系统整体的磁盘使用量查看磁盘占用量并用易读的格式显示出来df -hdu 列出目录的磁盘占用量查看当前目录下每个目录/文件的占用量, ...
- 兔起鹘落全端涵盖,Go lang1.18入门精炼教程,由白丁入鸿儒,全平台(Sublime 4)Go lang开发环境搭建EP00
Go lang,为并发而生的静态语言,源于C语言又不拘泥于性能,高效却不流于古板,Python灵活,略输性能,Java严谨,稍逊风骚.君不见各大厂牌均纷纷使用Go lang对自己的高并发业务进行重构, ...
- 如何基于WPF写一款数据库文档管理工具(二)
系列目录 基于WPF重复造轮子,写一款数据库文档管理工具(一) 本篇重点 上次发表了基于WPF重复造轮子,写一款数据库文档管理工具(一) 得到不少人支持,文章一度上到了博客园推荐表首页,看来大家对这个 ...
- day20--Java集合03
Java集合03 8.LinkedList 1)linkedList底层实现了双向链表和双端队列的特点 2)可以添加任意元素(元素可以重复),包括null 3)线程不安全,没有实现同步 LinkedL ...
- 大家都能看得懂的源码(一)ahooks 整体架构篇
本文是深入浅出 ahooks 源码系列文章的第一篇,该系列已整理成文档-地址.觉得还不错,给个 star 支持一下哈,Thanks. 第一篇主要介绍 ahooks 的背景以及整体架构. React h ...