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. centos7.3给squid搭建代理服务器添加认证nginx

    1先安装 nginx 这里是教程 点击查看 2 然后 使用命令 创建用户 htpasswd -c /etc/nginx/passwd.db baker 输入密码  提示添加完毕 3 查看加密后的用户和 ...

  2. 设置GO环境变量

    linux的设置方法:有4个环境变量需要设置:GOROOT.GOPATH.GOBIN以及PATH.需要设置到某一个profile文件中(~/.bash_profile(单一用户)或/etc/profi ...

  3. AWS安装

    curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" sudo python get-pip. ...

  4. Lazy JSF Primefaces Datatable Pagination

    http://www.javacodegeeks.com/2012/04/lazy-jsf-primefaces-datatable.html

  5. YARN 多租户资源池配置

    简介: YARN 多租户资源池配置 当多用户同在一个 hadoop 集群作业时,就需要对资源进行有效的限制,例如区分测试.正式资源等 一.查看默认资源池 # 访问:http://192.168.1.2 ...

  6. MVC表单提交写法1

    初学MVC,感觉跟以前的aspx页面差别很大,我们就先来看看MVC的表单是怎么提交的吧. 现在我们用一个最简单的例子来看一看MVC是怎么提交表单的(这一个例子中,我们的关注点是如何提交表单,所以不涉及 ...

  7. rundeck

    docker run -d -p 4440:4440 -e EXTERNAL_SERVER_URL=http://109.105.4.65:4440 -v/root/rundeck:/var/rund ...

  8. ArcEngine调用GP里的Merge工具传参问题

    Merge工具inputs参数形式与Python中不同: string startLayerPath= cpj.TempWs.PathName + @"\" + datasetNa ...

  9. errorlevel 续1

    -------siwuxie095             常用 errorlevel 返回值:     backup 0 备份成功 1 未找到备份文件 2 文件共享冲突阻止备份完成 3 用户用 ct ...

  10. 25- 解决'python -m pip install --upgrade pip' 报错问题

    转载于:https://blog.csdn.net/cxs123678/article/details/80659273 再安装包的时候提示 You are using pip version 9.0 ...