PXE(Preboot Excute Environment)预启动执行环境,可以让计算机通过网络启动系统,主要用于无人值守安装系统中引导客户端主机安装Linux操作系统。

由于之前有过使用cobbler+kickstart PXE安装系统的博客,这里RHEL7下使用第二种方法。

部署PXE相关环境

第一步:DHCP服务

部署DHCP服务之前,由于使用虚拟机测试,为了避免虚拟机软件的DHCP功能对本实验造成影响,在网络配置中将应用DHCP服务选项取消掉

安装DHCP服务
[root@localhost ~]# yum install -y dhcp
编辑DHCP服务配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
配置文件
allow booting;
allow bootp;
ddns-update-style interim;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.10.10;
range dynamic-bootp 192.168.10.50 192.168.10.100;
default-lease-time ;
max-lease-time ;
next-server 192.168.10.10;
filename "pxelinux.0";
}

配置完成重启DHCP服务,由于DHCP服务未成功启动也不会报错,所以查看一下DHCPD服务状态

[root@localhost ~]# systemctl restart dhcpd
[root@localhost ~]# systemctl status dhcpd
dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled)
Active: failed (Result: exit-code) since Tue -- :: EDT; 6s ago
Docs: man:dhcpd()
man:dhcpd.conf()

果然启动失败了,配置文件一定有哪里出现错误。

我们执行journal -xe命令查看一下

[root@localhost ~]# journalctl -xe
--
-- The start-up result is done.
Mar :: localhost.localdomain dhcpd[]: Internet Systems Consortium
Mar :: localhost.localdomain dhcpd[]: Copyright - Internet
Mar :: localhost.localdomain dhcpd[]: All rights reserved.
Mar :: localhost.localdomain dhcpd[]: For info, please visit https
Mar :: localhost.localdomain dhcpd[]: Not searching LDAP since lda
Mar :: localhost.localdomain dhcpd[]: Wrote leases to leases fil
Mar :: localhost.localdomain dhcpd[]: Mar :: localhost.lo
Mar :: localhost.localdomain dhcpd[]: ** Ignoring requests on eno1
Mar :: localhost.localdomain dhcpd[]: you want, please write a sub
Mar :: localhost.localdomain dhcpd[]: in your dhcpd.conf file for
Mar :: localhost.localdomain dhcpd[]: to which interface eno167777
Mar :: localhost.localdomain dhcpd[]: Mar :: localhost.lo
Mar :: localhost.localdomain dhcpd[]: Mar :: localhost.lo
Mar :: localhost.localdomain dhcpd[]: on ftp.isc.org. Features ha
Mar :: localhost.localdomain dhcpd[]: have been made to the base s
Mar :: localhost.localdomain dhcpd[]: it work better with this dis
Mar :: localhost.localdomain dhcpd[]: Mar :: localhost.lo
Mar :: localhost.localdomain dhcpd[]: http://bugzilla.redhat.com

似乎是eno167777网卡问题,原来我们还原虚拟机后没有将IP修改为DHCP配置文件中对应的192.168.10.10。修改一下。

修改完成后,再次重启DHCPD服务

[root@localhost ~]# systemctl restart dhcpd
[root@localhost ~]# systemctl status dhcpd
dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled)
Active: active (running) since Tue -- :: EDT; 6s ago
Docs: man:dhcpd()
man:dhcpd.conf()
Main PID: (dhcpd)

第二步TFTP服务

Trivial File Transfer Protocol 简单文本传输协议。该轻量级的服务由xinetd网络守护进程管理,开启TFTP服务时只需在xinetd服务主配置文件中/etc/xinetd.d/tftp文件中将disable修改为no 即可。
[root@localhost ~]# yum install -y tftp-server
[root@localhost ~]# vim /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
per_source =
cps =
flags = IPv4
}
TFTP默认占用69/udp端口,在生产环境中,需要在firewalld防火墙管理工具中永久放行69/udp端口。
[root@localhost ~]# firewall-cmd --permanent --add-port=/udp
success
[root@localhost ~]# firewall-cmd --reload
success

第三部:SYSlinux服务是一个提供引导加载的服务程序

安装syslinux
[root@localhost ~]# yum install -y syslinux
我们需要将syslinux服务提供的引导文件(即上面提到的pxelinu.0)复制到TFTP服务默认目录中,另外ISO镜像里也有一些引导文件需要复制到TFTP默认目录中。
[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux. .
[root@localhost tftpboot]# cp /mnt/images/pxeboot/{vmlinuz,initrd.img} .
[root@localhost tftpboot]# cp /mnt/isolinux/{vesamenu.c32,boot.msg} .
另外我们还要在TFTP默认目录中,创建一个名为pxelinux.cfg的文件夹,将镜像文件里的开机选项菜单复制到里面并重命名为default。
[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# cp /mnt/isolinux/isolinux.cfg pxelinux.cfg/default
由于默认的开机菜单中有两个选项,要么是安装系统,要么是对安装介质进行检验。既然我们已经确定采用无人值守的方式安装系统,还需要为每台主机手动选择相应的选项,未免与我们的主旨(无人值守安装)相悖。现在我们编辑这个default文件,把第1行的default参数修改为linux,这样系统在开机时就会默认执行那个名称为linux的选项了。对应的linux选项大约在64行,我们将默认的光盘镜像安装方式修改成FTP文件传输方式,并指定好光盘镜像的获取网址以及Kickstart应答文件的获取路径。
[root@localhost tftpboot]# vim !$
default linux
..
append initrd=initrd.img inst.stage2=ftp://192.168.10.10 ks=ftp://192.168.10.10/pub/ks.cfg quiet

第四步:配置vsftpd服务程序

当前pxe服务是通过镜像文件安装的,是必要的用到FTP文件传输服务。也可以使用HTTP的web网站访问的方式,只要能确保,光盘中的镜像能顺利地传输给客户端主机即可。
[root@localhost tftpboot]# yum install -y vsftpd
[root@localhost tftpboot]# systemctl start vsftpd
[root@localhost tftpboot]# systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service'
接下来将镜像中的所有文件复制到vsftpd服务的的工作目录中(过程大概几分钟),同时在firewalld防火墙管理工具中放行ftp服务。在selinux域策略中放行FTP传输。
[root@localhost linuxprobe]# firewall-cmd --permanent --add-service=ftp
success
[root@localhost linuxprobe]# firewall-cmd --reload
success
[root@localhost linuxprobe]# getsebool -a | grep ftpd
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
[root@localhost linuxprobe]# setsebool -P ftpd_connect_all_unreserved=on

创建KickStart应答文件

在rhel7系统中root用户家目录有个anaconda-ks.cfg文件,是为当前系统的ks应答文件。ks文件具体参数在上次实验中有详细的讲解。这里只改三个地方测试效果即可:首先把第6行的光盘镜像安装方式修改成FTP协议,仔细填写好FTP服务器的IP地址,并用本地浏览器尝试打开下检查有没有报错。然后把第21行的时区修改成上海(Asia/Shanghai),最后再把29行的磁盘选项设置为清空所有磁盘内容并初始化磁盘。
首先将该文件复制到ftp家目录中。chmod +r 命令让所有人都可对其读取。
t@localhost ~]# cp  /root/anaconda-ks.cfg /var/ftp/pub/ks.cfg
[root@localhost ~]# chmod -r !$
chmod -r /var/ftp/pub/ks.cfg
修改参数
#version=RHEL7
# System authorization information
auth --enableshadow --passalgo=sha512 # Use CDROM installation media
url --url=ftp://192.168.10.10                    设置FTP安装模式
# 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=eno16777736 --onboot=off --ipv6=auto
network --hostname=localhost.localdomain
# Root password
rootpw --iscrypted $$0XQWDt7L9e0SdNCH$LyxVJ8ZoncLu2tTPn/4nUjOT.DFmLgejZOWWg/U9aF7qPJGnLs6JuDZ1/RHrr17HKs1zA10ifsUk.axakInCG.
# System timezone
timezone Asia/Shanghai --isUtc                  设置时区为上海
# X Window System configuration information
xconfig --startxonboot
# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --all --initlabel                    清空并初始化磁盘 %packages
@base
@core
@desktop-debugging
@dial-up

自动部署客户端

PXE+Kickstart无人值守安装系统re的更多相关文章

  1. 使用PXE+Kickstart无人值守安装系统

    PXE预启动执行环境(即Preboot execute environment) 是一种能够让计算机通过网络启动的引导方式,只要网卡支持PXE协议即可使用,用于在无人值守安装系统服务中引导客户机安装服 ...

  2. KickStart 无人值守安装系统

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  3. [转]CentOS 6.4下PXE+Kickstart无人值守安装操作系统

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  4. CentOS6 PXE+Kickstart无人值守安装

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  5. CentOS 6.4下PXE+Kickstart无人值守安装操作系统 转

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  6. CentOS 6.6下PXE+Kickstart无人值守安装操作系统

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  7. 【转载】CentOS 6.4下PXE+Kickstart无人值守安装操作系统

    [转载]CentOS 6.4下PXE+Kickstart无人值守安装操作系统 转自:CentOS 6.4下PXE+Kickstart无人值守安装操作系统 - David_Tang - 博客园 http ...

  8. Centos下PXE+Kickstart无人值守安装操作系统

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

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

    1.PXE的工作过程: 1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP: 2. DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放 ...

随机推荐

  1. Android开发——JVM、Dalvik以及ART的区别【转帖】

    转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52354964 0. 前言 Dalvik是Google公司自己设计用于Android平 ...

  2. 【CentOS 6.5】 Qt Creator 启动失败

    在CentOS 6.5中 点击 [应用程序]->[编程]->Qt Creator , 没有反应,Creator没有启动,转而进入Shell cd /opt/Qt5.2.1/Tools/Qt ...

  3. CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点 以下 ...

  4. 一次使用 Redis 优化查询性能的实践

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,一次使用 Redis 优化查询性能的实践 应用背景 有一个应用需要上传一组ID到 ...

  5. selenium webdriver——JS滚动到最底部

    JS控制滚动条的位置: window.scrollTo(x,y); 竖向滚动条置顶 window.scrollTo(0,0); 竖向滚动条置底 window.scrollTo(0,document.b ...

  6. 使用打印方法时,要先引用命名空间: Using System.Drawing.Pringing

    使用打印方法时,要先引用命名空间: Using System.Drawing.Pringing PrintDocument类的重要属性和方法:属性:DocumentName  设置打印文档时要显示的文 ...

  7. [jOOQ中文]2. jOOQ与Spring和Druid整合

    https://segmentfault.com/a/1190000010496053 jOOQ和Spring很容易整合. 在这个例子中,我们将整合: Alibaba Druid(但您也可以使用其他连 ...

  8. 可视化库-Matplotlib基础设置(第三天)

    1.画一个基本的图 import numpy as np import matplotlib.pyplot as plt # 最基本的一个图,"r--" 线条加颜色, 也可以使用l ...

  9. IntelliJ IDEA—IDEA2018.1激活方式

    前言 以前用过2015的版本,后面就没有使用了,现在又重新用起来了,突然发现激活好难,通过网上找破解方式,总算找到了一种可以实现破解的方法了.. 破解方式 本人使用的是使用破解补丁的方式实现破解的,此 ...

  10. 【HTTP请求】、详解

    一.协议介绍 HTTP(HyperText Transfer Protocol,超文本传输协议)是一套计算机通过网络进行通信的规则,使HTTP客户端能够从HTTP服务器端请求到信息和服务,目前的版本号 ...