欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

程序员文章站 2022-03-21 21:25:25
...

一.PXE部署

配置环境:VM虚拟机,一台linux服务器,一台客户端,都在局域网环境下
配置流程:
服务端:
1、DHCP服务 指定分配ip地址 定位引导文件
next-server //指向TFTP路径
filename //引导程序文件位置
—————————————————————————
2、TFTP服务(简单文件传输协议) UDP69端口
高效率 容量小

(引导程序pxelinnx.0(syslinux包),压缩内核vmlinuz,
系统初始化文件initrd.img,启动菜单default)
—————————————————————————
3.FTP (vsftp) 文件传输协议 系统镜像(centos7)
安全 容量大 TCP 20(数据传输), 21(连接)
—————————————————————————
安装包:dhcp, tftp-server, vsftp, syslinux

二.安装并配置kickstart无人值守

1.先设置我们的环境,给我们的服务端添加一块网卡

1.1装一个裸机的客户端(作为无人值守部署的验证,详细教程请看我之前的教程,下面的图片是要注意的地方)

Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统
Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

记得重启我们的网卡才能生效

2.查看我们的网卡信息

[aaa@qq.com ~]# ifconfig    //查看网卡详细信息
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.17.128  netmask 255.255.255.0  broadcast 192.168.17.255
    inet6 fe80::e3c7:14af:6e4d:7216  prefixlen 64  scopeid 0x20<link>
    ether 00:0c:29:c9:dd:05  txqueuelen 1000  (Ethernet)
    RX packets 622  bytes 385786 (376.7 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 217  bytes 18826 (18.3 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet6 fe80::658e:4c2d:2273:9cf5  prefixlen 64  scopeid 0x20<link>
    ether 00:0c:29:c9:dd:0f  txqueuelen 1000  (Ethernet)
    RX packets 7  bytes 795 (795.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 82  bytes 13820 (13.4 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
//我们的两块网卡有了

3.配置这两块网卡

[aaa@qq.com ~]# cd /etc/sysconfig/network-scripts/   //到我们的网卡配置文件夹中
[aaa@qq.com network-scripts]# ls
ifcfg-ens33  ifdown-isdn      ifup          ifup-plip      ifup-tunnel
ifcfg-lo     ifdown-post      ifup-aliases  ifu-plusb     ifup-wireless
ifdown       ifdown-ppp       ifup-bnep     ifup-post      init.ipv6-global
ifdown-bnep  ifdown-routes    ifup-eth      ifup-ppp       network-functions
ifdown-eth   ifdown-sit       ifup-ib       ifup-routes    network-functions-ipv6
ifdown-ib    ifdown-Team      ifup-ippp     ifup-sit
ifdown-ippp  ifdown-TeamPort  ifup-ipv6     ifup-Team
ifdown-ipv6  ifdown-tunnel    ifup-isdn     ifup-TeamPort
[aaa@qq.com network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36  //复制ens33网卡的信息到ens36中
[aaa@qq.com network-scripts]# vim ifcfg-ens36  //进入ens36网卡进行配置

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=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.100.100   //IP地址     NETMASK=255.255.255.0  //子网掩码
GATWAY=192.168.100.1 //默认网关

4.重启网络服务查看地址有没有生效

[aaa@qq.com network-scripts]# systemctl restart network   //重启网络服务,查看我们的网址有没有配上去
[aaa@qq.com network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.17.128  netmask 255.255.255.0  broadcast 192.168.17.255
    inet6 fe80::e3c7:14af:6e4d:7216  prefixlen 64  scopeid 0x20<link>
    ether 00:0c:29:c9:dd:05  txqueuelen 1000  (Ethernet)
    RX packets 2302  bytes 679197 (663.2 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 951  bytes 111027 (108.4 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.100.100  netmask 255.255.255.0  broadcast 192.168.100.255
    inet6 fe80::658e:4c2d:2273:9cf5  prefixlen 64  scopeid 0x20<link>
    ether 00:0c:29:c9:dd:0f  txqueuelen 1000  (Ethernet)
    RX packets 9  bytes 1281 (1.2 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 230  bytes 39857 (38.9 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

5.安装DHCP服务和复制模板

[aaa@qq.com network-scripts]# yum install dhcp -y  //安装DHCP服务

[aaa@qq.com network-scripts]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes   //复制模板

6.配置dhcp服务

[aaa@qq.com network-scripts]# vim /etc/dhcp/dhcpd.conf  //配置dhcp服务

subnet 192.168.100.0 netmask 255.255.255.0 {
    range 192.168.100.20 192.168.100.30;       //地址范围
    option routers 192.168.100.100;                 //默认网关指向客户端
    option domain-name-servers 114.114.114.114;         //地址解析南京的服务器解析
    next-server 192.168.100.100;              //指向TFTP服务器是自己的地址
    filename "pxelinux.0";                        //ftp站点底下的引导程序文件位置
}

#This is a very basic subnet declaration.

:wq                                     

7.安装引导程序文件和TFTP服务

[aaa@qq.com network-scripts]# yum install syslinux -y

[aaa@qq.com network-scripts]# yum install tftp-server -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.ustc.edu.cn
 * extras: centos.ustc.edu.cn
 * updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 tftp-server.x86_64.0.5.2-22.el7 将被 安装
--> 解决依赖关系完成

8.查看tftp软件包文件

[aaa@qq.com network-scripts]# rpm -ql tftp-server
/etc/xinetd.d/tftp    //配置文件
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot     //站点

9.复制引导程序到站点中

     cp /usr/share/syslinux/pxelinux.0

    [aaa@qq.com network-scripts]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/  //复制引导程序到站点
    [aaa@qq.com network-scripts]# ls /var/lib/tftpboot/
    pxelinux.0

10.配置TFTP服务(把yes改成no就行)

[aaa@qq.com network-scripts]# vim /etc/xinetd.d/tftp

default: off
#description: The tftp server serves files using the trivial file transfer \
  protocol.  The tftp protocol is often used to boot diskless \
  workstations, download configuration files to network-aware printers, \
  and to start the installation process for some operating systems.
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
}

11.安装VSftpd文件传输协议

安全 容量大 TCP 20(数据传输), 21(连接)
[aaa@qq.com network-scripts]# yum install vsftpd -y //安装站点
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: centos.ustc.edu.cn
* extras: centos.ustc.edu.cn
* updates: mirrors.aliyun.com
正在解决依赖关系

12.挂载镜像(服务端要挂载镜像)

Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

[aaa@qq.com network-scripts]# cd /var/ftp
[aaa@qq.com ftp]# ls
pub
[aaa@qq.com ftp]# mkdir centos7 //创建一个文件夹
[aaa@qq.com ftp]# ls
centos7  pub
[aaa@qq.com ftp]# mount /dev/sr0 /var/ftp/centos7  //挂载
mount: /dev/sr0 写保护,将以只读方式挂载
[aaa@qq.com ftp]# df -hT
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda2      xfs        10G  4.3G  5.8G   43% /
devtmpfs       devtmpfs  898M     0  898M    0% /dev
tmpfs          tmpfs     912M     0  912M    0% /dev/shm
tmpfs          tmpfs     912M  9.0M  903M    1% /run
tmpfs          tmpfs     912M     0  912M    0% /sys/fs/cgroup
/dev/sda5      xfs        10G   37M   10G    1% /home
/dev/sda1      xfs       6.0G  174M  5.9G    3% /boot
tmpfs          tmpfs     183M   20K  183M    1% /run/user/0
/dev/sr0       iso9660   4.3G  4.3G     0  100% /var/ftp/centos7

13.把镜像中的系统内核和初始化文件放到站点中

[aaa@qq.com ftp]# cd centos7/
[aaa@qq.com centos7]# ls
  CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
[aaa@qq.com centos7]# cd images/
[aaa@qq.com images]# ls
efiboot.img  pxeboot  TRANS.TBL
[aaa@qq.com images]# cd pxeboot/
[aaa@qq.com pxeboot]# ls
initrd.img  TRANS.TBL  vmlinuz
[aaa@qq.com pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/  把系统内核和初始化文件放到站点中
[aaa@qq.com pxeboot]# ls /var/lib/tftpboot/
initrd.img  pxelinux.0  vmlinuz
[aaa@qq.com pxeboot]# 

14.在站点中配置启动菜单

 [aaa@qq.com pxeboot]# cd /var/lib/tftpboot/
[aaa@qq.com tftpboot]# ls
initrd.img  pxelinux.0  vmlinuz
[aaa@qq.com tftpboot]# mkdir pxelinux.cfg
[aaa@qq.com tftpboot]# ls
initrd.img  pxelinux.0  pxelinux.cfg  vmlinuz
[aaa@qq.com tftpboot]# cd pxelinux.cfg
[aaa@qq.com pxelinux.cfg]# vim default  //配置启动菜单
default auto
prompt 0

label auto
    kernel vmlinuz
    append initrd=initrd.img method=ftp://192.168.100.100/centos7

label linux text
    kernel vmlinuz
    append text initrd=initrd.img method=ftp://192.168.100.100/centos7

label linux rescue
    kernel vmlinuz
    append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7

15.关闭防火墙,增强功能,开启所有服务

[aaa@qq.com pxelinux.cfg]# systemctl stop firewalld.service 关闭防火墙
[aaa@qq.com pxelinux.cfg]# setenforce 0  //关闭增强功能
[aaa@qq.com pxelinux.cfg]# systemctl start dhcpd   //开启这三个服务
[aaa@qq.com pxelinux.cfg]# systemctl start tftp
[aaa@qq.com pxelinux.cfg]# systemctl start vsftpd
[aaa@qq.com pxelinux.cfg]# 

16.我们回到服务端安装kickstart 无人值守安装部署

[aaa@qq.com pxelinux.cfg]# yum install system-config-kickstart -y //安装无人值守工具
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile

17.开始配置kickstart 无人值守安装部署

Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

设置中文,时区,ROOT密码
Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

配置安装方法
Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

引导安装,
Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

进入分区选项,进行创建分区
创建 /boot 、/home 、swap、 / 。四个分区

Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统
Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统
Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

进行网络配置
Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

防火墙配置(禁用防火墙)
Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

配置安装后脚本
Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

把这个配置文件放到我们的ftp站点中

Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

18.把系统的配置文件模板,放到我们的kickstart配置文件中

[aaa@qq.com pxelinux.cfg]# cd /var/ftp/
[aaa@qq.com ftp]# ls
centos7  ks.cfg  pub
[aaa@qq.com ftp]# vim ks.cfg
[aaa@qq.com ftp]# cd /root
[aaa@qq.com ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面
[aaa@qq.com ~]# vim anaconda-ks.cfg   //到这个模板下
把这个模板复制到我们的无人值守工具配置文件中
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools

%end

19.用引导程序加载这个模板

加个ks.cfg文件地址就可以了ks=ftp://192.168.100.100/ks.cfg
[aaa@qq.com ftp]# cd /var/lib/tftpboot/
[aaa@qq.com tftpboot]# ls
initrd.img  pxelinux.0  pxelinux.cfg  vmlinuz
[aaa@qq.com tftpboot]# cd pxelinux.cfg/
[aaa@qq.com pxelinux.cfg]# ls
default
[aaa@qq.com pxelinux.cfg]# vim default

default auto
prompt 0

label auto
    kernel vmlinuz
    append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg

label linux text
    kernel vmlinuz
    append text initrd=initrd.img method=ftp://192.168.100.100/centos7

label linux rescue
    kernel vmlinuz
    append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7

20.我们验证是否是自动化安装

Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统
Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统

以上就是我们PXE部署的内容了。