【Linux】使用 PXE+Kickstart 无人值守批量安装系统

时间:2022-09-30 18:22:36

一、PXE背景知识

  通过 PXE+DHCP+TFTP+VSftpd+Kickstart 服务程序搭建出无人值守安装系统,从而批量部署客户机系统。

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

  PXE(Preboot eXecute Environment,预启动执行环境)是由 Intel 公司开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持 PXE 技术),主

要用于在无人值守安装系统中引导客户端主机安装 Linux 操作系统。

  Kickstart 是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg 文件,当安装过程中需要填写参数时则自动匹配 Kickstart 生成的文件。所以只要Kickstart 文件包含了安装过程中需要人工填写的所有参数,那么从理论上来讲完全不需要运维人员的干预,就可以自动完成安装工作。

二、PXE开始部署

#本次pxe server为centos74系统,要安装的pxe client操作系统也是centos74;

#关闭firewalld、NetworkManager、selinux

[root@foryou_hg ~]# systemctl stop firewalld

[root@foryou_hg ~]# systemctl disable  firewalld

[root@foryou_hg ~]# systemctl stop NetworkManager

[root@foryou_hg ~]# systemctl disable  NetworkManager

[root@foryou_hg ~]# vim /etc/selinux/config

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

[root@foryou_hg ~]# setenforce 0

setenforce: SELinux is disabled

[root@foryou_hg ~]# getenforce

Disabled

#查看yum源是否安装成功:

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

1、配置 DHCP 服务程序

# DHCP 服务程序用于为客户端主机分配可用的 IP 地址,而且这是服务器与客户端主机进行文件传输的基础。

1)yum安装dhcp

[root@foryou_hg ~]# yum install -y dhcp

2)配置dhcp配置文件

[root@foryou_hg ~]# vim /etc/dhcp/dhcpd.conf #添加如下内容

allow booting;

allow bootp;

ddns-update-style interim;

ignore client-updates;

subnet 192.168.1.0 netmask 255.255.255.0 {

option subnet-mask 255.255.255.0;

option domain-name-servers 192.168.1.30;

range dynamic-bootp 192.168.1.100  192.168.1.200;

default-lease-time 21600;

max-lease-time 43200;

next-server 192.168.1.30

filename "pxelinux.0";

}

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

3)重启dhcp并将其加入开机启动

[root@foryou_hg ~]# systemctl restart dhcpd

[root@foryou_hg ~]# systemctl enable  dhcpd

2、配置 TFTP 服务程序

#TFTP 是一种非常精简的文件传输服务程序,它的运行和关闭是由 xinetd 网络守护进程服务来管理的。 xinetd 服务程序会同时监听系统的多个端口,然后根据用户请求的端口号调取相应的服务程序来响应用户的请求。需要开启 TFTP 服务程序,只需在 xinetd 服务程序的配置文件中把 disable 参数改成 no 就可以了。保存配置文件并退出,然后重启 xinetd服务程序,并将其加入到开机启动项中(在 RHEL 7 系统中,已经默认启用了 xinetd 服务程序,因此在将其添加到开机启动项中的时候没有输出信息属于正常情况)。

#vsftpd 是一款功能丰富的文件传输服务程序,允许用户以匿名开放模式、本地用户模式、虚拟用户模式来进行访问认证。但是,当前的客户端主机还没有安装操作系统,该如何进行登录认证呢?而 TFTP 作为一种基于 UDP 协议的简单文件传输协议,不需要进行用户认证即可获取到所需的文件资源。因此可以配置 TFTP 服务程序,为客户端主机提供引导及驱动文件。当客户端主机有了基本的驱动程序之后,再通过 vsftpd 服务程序将完整的光盘镜像文件传输过去。(只要能将系统安装镜像成功传输给客户端即可,因此也可以使用 httpd 来替代 vsftpd 服务程序。)(TFTP 协议不具备 FTP 的许多功能(例如列出目录,密码认证等等),但 TFTP 协议配置非常简单,而且资源消耗更低,非常适合传输不敏感的文件。)

1)yum安装tftp-server

[root@foryou_hg ~]# yum install -y tftp-server

2)配置tftp-server配置文件

[root@foryou_hg ~]# vim /etc/xinetd.d/tftp  #只需要把 disable 参数改成 no 就可以了

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              = 11

cps                     = 100 2

flags                   = IPv4

}

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

3)重启xinetd并将其加入开机启动

[root@foryou_hg ~]# systemctl restart xinetd

[root@foryou_hg ~]# systemctl enable  xinetd

3、配置 SYSLinux 服务程序

#SYSLinux 是一个用于提供引导加载的服务程序。与其说 SYSLinux 是一个服务程序,不如说更需要里面的引导文件,在安装好 SYSLinux 服务程序软件包后, /usr/share/syslinux 目录中会出现很多引导文件。

1)yum安装syslinux

[root@foryou_hg ~]# yum install -y syslinux

2)复制必要文件到tftpboot默认目录下

#1.我们首先需要把 SYSLinux 提供的引导文件复制到 TFTP 服务程序的默认目录中,也就是前文提到的文件 pxelinux.0,这样客户端主机就能够顺利地获取到引导文件了。    2.另外在 RHEL7 系统光盘镜像中也有一些我们需要调取的引导文件。确认光盘镜像已经被挂载到/mnt目录后,使用复制命令将光盘镜像中自带的一些引导文件也复制到 TFTP 服务程序的默认目录中。

[root@foryou_hg pub]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

直接复制镜像中的isolinux/*到此目录即可;

[root@foryou_hg pub]#cp -rp  /mnt/isolinux/* /var/lib/tftpboot/

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

然后在 TFTP 服务程序的目录中新建 pxelinux.cfg 目录,将系统光盘中的开机选项菜单复制到该目录中,并命名为 default。这个 default 文件就是开机时的选项菜单,如图 下图 所示。

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

[root@foryou_hg tftpboot]# mkdir pxelinux.cfg

[root@foryou_hg tftpboot]# cp /mnt/isolinux/isolinux.cfg pxelinux.cfg/default

我这里就不在原有基础上进行更改了,而采取精简配置,自定义编写default文件

[root@foryou_hg pxelinux.cfg]# chmod 777 default #修改default文件权限为777

#default 1代表:这里默认按1选项的方式进行安装系统,prompt参数代表需要手动安装按1键后才会开始安装系统:

[root@foryou_hg pxelinux.cfg]# vim default

default 1

#default rescue

#prompt 1

timeout 100

 

display boot.msg

 

label rescue

  kernel vmlinuz

  append load_ramdisk=1 initrd=initrd.img rescue

 

 

label 1

  kernel vmlinuz

  append ks=ftp://192.168.1.30/pub/ks.cfg  initrd=initrd.img

 

label rhel6

  kernel vmlinuz

  append ks=ftp://192.168.1.30/pub/dashuju6_4.cfg ksdevice=eth4 initrd=initrd.img

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

4、配置 vsftpd 服务程序

1)yum安装vsftpd

[root@foryou_hg ~]# yum install -y tftp-server

2)在确认系统光盘镜像已经正常挂载到/mnt/目录后,把目录中的光盘镜像文件全

部复制到 vsftpd 服务程序的工作目录中。

[root@foryou_hg pub]# pwd

/var/ftp/pub

[root@foryou_hg pub]# cp -rp /mnt/* /var/ftp/pub/centos74/

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

5、创建 KickStart 应答文件

在 root 管理员的家目录中有一个名为 anacondaks.cfg 的文件,它就是应答文件。

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

[root@foryou_hg ~]# cp /root/anaconda-ks.cfg /var/ftp/pub/ #我这里采用自定义编辑ks.cfg文件

[root@foryou_hg ~]# cd /var/ftp/pub/

[root@foryou_hg pub]# chmod 777 ks.cfg

[root@foryou_hg pub]# vim ks.cfg

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

 #platform=x1, AMD64, or Intel EM64T
#version=DEVEL
text
firewall --disabled
install
#nfs --server=192.168.1.30 --dir=/var/ftp/pub/v_install_dir
url --url=ftp://192.168.1.30/pub/centos74
rootpw zxl520
auth --useshadow --passalgo=sha512
#graphical
firstboot --disable
keyboard us
lang en_US
selinux --disabled
logging --level=info
reboot
timezone Asia/Shanghai
network --bootproto=dhcp --onboot yes
bootloader --location=mbr
zerombr
#clearpart --all --initlabe
clearpart --all --drives=sda --initlabe
part /boot --fstype=xfs --size= --ondisk=sda
#part /biosboot --fstype=biosboot --size=
part pv. --grow --size= --ondisk=sda
volgroup sys_vg00 --pesize= pv.
logvol swap --name=swap_lv00 --vgname=sys_vg00 --size=
logvol / --fstype=xfs --name=root_lv00 --vgname=sys_vg00 --size=
#logvol /home --fstype=ext4 --name=home_lv00 --vgname=sys_vg00 --size=
logvol /app --fstype=xfs --name=data_lv00 --vgname=sys_vg00 --grow --size= %post
chkconfig --list|awk '{print chkconfig --level 345 off}'|grep -v :|grep -v off|bash && chkconfig NetworkManager off && chkconfig --level crond on && chkconfig --level haldaemon on && chkconfig --level irqbalance on && chkconfig --level lvm2-monitor on && chkconfig --level messagebus on && chkconfig --level network on && chkconfig --level ntpd on && chkconfig --level rsyslog on && chkconfig --level sshd on && chkconfig --level sysstat on && chkconfig --level udev-post on chkconfig --levels acpid off
chkconfig --levels atd off
chkconfig --levels auditd off
chkconfig --levels autofs off
chkconfig --levels bluetooth off
chkconfig --levels cpuspeed off
chkconfig --levels cups off
chkconfig --levels firstboot off
chkconfig --levels gpm off
chkconfig --levels iptables off
chkconfig --levels lvm2-monitor off
chkconfig --levels mdmonitor off
chkconfig --levels netfs off
chkconfig --levels nfs off
chkconfig --levels nfslock off
chkconfig --levels psacct off
chkconfig --levels rdisc off
chkconfig --levels rhnsd off
chkconfig --levels rpcgssd off
chkconfig --levels rpcidmapd off
chkconfig --levels rpcsvcgssd off
chkconfig --levels saslauthd off
chkconfig --levels smartd off
chkconfig --levels wdaemon off
chkconfig --levels winbind off
chkconfig --levels wpa_supplicant off
chkconfig --levels ypbind off
chkconfig --levels conman off
chkconfig --levels dnsmasq off
chkconfig --levels httpd off
chkconfig --levels ip6tables off
chkconfig --levels kdump off
chkconfig --levels netconsole off
chkconfig --levels pcscd off
chkconfig --levels restorecond off #disable NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager sed -i "s/#UseDNS yes/UseDNS no/g" /etc/ssh/sshd_config
#echo # Added for history display >> /etc/profile
#echo export HISTTIMEFORMAT="%F %T " >> /etc/profile
#echo >> /etc/rsyslog.conf
#echo # Added for Fjtelecom Log Server >> /etc/rsyslog.conf
#echo *.* @134.128.177.202 >> /etc/rsyslog.conf wget ftp://192.168.1.30/pub/install.tar.gz
tar -zxvf install.tar.gz cd install
#sh install.sh > /etc/resolv.conf #sh ssh.sh
#sh disk.sh
sh Agent-Core-RedHat_EL7-9.6.-.x86_64.rpm
cd ..
rm -rf install
rm -rf install.tar.gz ####.openssh update######
sed -i "s/#PermitRootLogin/PermitRootLogin/g" /etc/ssh/sshd_config
systemctl restart sshd
%end %packages
@^minimal
@core
wget
net-tools
vim
%end

开始部署pxe client

#此时PXE server的ip及vmwareworkstation虚拟网络编辑器的配置情况如下:

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

#此时新建pxe client虚机,创建磁盘大小为20G,网络模式为主机模式:

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

重启虚机,进入PXE安装系统模式:

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

ctrl alt f2进入shell模式:(按ctrl alt f1返回)

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

三、验证PXE部署结果

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

The end!

【Linux】使用 PXE+Kickstart 无人值守批量安装系统

【Linux】使用 PXE+Kickstart 无人值守批量安装系统的更多相关文章

  1. pxe+kickstart无人值守批量安装linux

    一.原理和概念: 1.PXE:         PXE 并不是一种安装方式,而是一种引导的方式.进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 ...

  2. pxe+kickstart自动化批量安装系统详解-技术流ken

    前言 pxe+kickstart是一款可以实现自动化批量安装系统的服务,比较经典,下面将详细介绍此服务的安装和使用. 系统环境准备 系统版本:CentOS release 6.7 (Final) 内网 ...

  3. pxe+kickstart实现无人值守批量安装linux

    pxe+kickstart实现无人值守批量安装linux 实验准备:主机myrhel2作为服务器端,新建一个没有安装操作系统的虚拟主机,而且其与服务器端在同一个网段 安装的条件: 服务器端:      ...

  4. (转)Cobbler无人值守批量安装Linux系统

    本文目录: 1.1 pxe安装系统 1.2 cobbler基本介绍 1.3 安装和配置cobbler 1.3.1 安装cobbler 1.3.2 配置dhcp和tftp 1.4 cobbler从本地光 ...

  5. 使用 PXE+Kickstart 实现无人值守批量部署系统

    一.废话两句 在云数据中心,一次几十台甚至几百台服务器上线,系统安装将变得非常繁琐,系统安装好了后还会涉及很多配置,如果一台台来安装的话工作量非常大.(虽然有加班费,开个玩笑)为了解决这个问题,我们需 ...

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

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

  7. 《Linux就该这么学》培训笔记_ch19_使用PXE+Kickstart无人值守安装服务

    <Linux就该这么学>培训笔记_ch19_使用PXE+Kickstart无人值守安装服务 文章最后会post上书本的笔记照片. 文章主要内容: 无人值守系统 部署相关服务程序 配置DHC ...

  8. kickstart 实现批量安装centos7&period;x系统

    1.1 安装系统的方法 l  光盘(ISO文件,光盘的镜像文件)===>>每一台物理机都得给一个光驱,如果用外置光驱的话,是不是每台机器都需要插一下 l  U盘:ISO镜像刻录到U盘==& ...

  9. PXE&plus;kickstart无人值守安装CentOS 7

    kickstart+cobbler系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 本文是PXE+kickstart无人值守安装CentOS ...

随机推荐

  1. C语言之const和define

    const修饰的是只读变量,不是常量,其值在编译时不能被使用,因为编译器在编译时不知道其存储的内容.编译器通常不为普通const只读变量分配存储空间,而使将他们保存在符号表中,这使得他成为一个编译期间 ...

  2. jquery的&dollar;&lpar;&rpar;&period;each&comma;&dollar;&period;each

    在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法.两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点. $().each,对于这个方法,在d ...

  3. &OpenCurlyDoubleQuote;海市蜃楼”般的逛街体验——VR全景智慧城市常诚

    <史记·天官书>:"海旁蜃气像楼台:广野气成宫阙然." 海市蜃楼,简称蜃景,是一种因为光的折射和全反射而形成的自然现象,是地球上物体反射的光经大气折射而形成的虚像. 2 ...

  4. Gym 100952J&amp&semi;&amp&semi;2015 HIAST Collegiate Programming Contest J&period; Polygons Intersection【计算几何求解两个凸多边形的相交面积板子题】

    J. Polygons Intersection time limit per test:2 seconds memory limit per test:64 megabytes input:stan ...

  5. HttpPost方式调用接口的3种方式

    第一种:需要httpclient的依赖包 <dependency> <groupId>org.apache.httpcomponents</groupId> &lt ...

  6. vue的单向数据流

    父级向子组件传递的值, 子组件不能直接修改这个穿过来的值,否则会曝出警告,这就是单项数据流. 如果是引用值,传递的是引用值得地址,而不是值本身,也就是说,子组件里修改这个传过来的值,通常的做法是放到它 ...

  7. Easyui入门视频教程 第10集---Messager的使用

    Easyui入门视频教程 第10集---Messager的使用 <script type="text/javascript"> function show(){ $.m ...

  8. 机器学习理论基础学习12---MCMC

    作为一种随机采样方法,马尔科夫链蒙特卡罗(Markov Chain Monte Carlo,以下简称MCMC)在机器学习,深度学习以及自然语言处理等领域都有广泛的应用,是很多复杂算法求解的基础.比如分 ...

  9. 淘宝 NPM 镜像

    使用说明 : 更多见  https://npm.taobao.org 你可以使用我们定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm: $ npm install -g cnpm ...

  10. python学习笔记&lpar;四&rpar; 思考和准备

    一.zip的坑 zip()函数接收多个可迭代数列,将数列中的元素重新组合,在3.0中返回迭代器指向 数列首地址,在3.0以下版本返回List类型的列表数列.我用的是3.5版本python, 所以zip ...