CentOS7 —— Kickstart + PXE 实现无人值守自动安装

久未见 提交于 2020-08-10 18:43:08

什么是Kickstart Installations?

Kickstart Installations(启动安装),实现无人值守自动化安装

Kickstart files(启动文件),安装前准备好,可用来自动执行安装。它可以保存在单个服务器系统上,支持一对多:即单个文件在多台计算机上安装CentOS

所有 Kickstart scripts (启动脚本)和日志也都会存储在目录中

 

启动安装的过程

启动安装的方法:DVD,NFS,FTP,HTTP/HTTPS, Hard drive (硬盘)

过程:1、创建启动文件

           2、使 Kickstart files在可移动媒体、硬盘驱动器或网络位置上可用

           3、创建启动介质(安装源),用于开始安装    

           4、使安装源可用

           5、启动Kickstart Installations

 

  • 创建启动文件

如果有安装好的CentOS,在 /root 目录下就会生成一个 anaconda-ks.cfg 文件。

    PS:# 为需root用户执行;$ 为任意用户执行,以下均以此标准    

一:可以按照对CentOS的要求通过 ios 镜像先装一下,这样就可以拿到一份不怎么需要修改的 Kickstart 配置文件

# cd /root       ls        anaconda-ks.cfg

二:使用 Kickstart Configuration Tool 来创建和修改 Kickstart 配置文件

# yum install system-config-kickstart    # 安装K...C...Tool

# system-config-kickstart    # 启动K...C...Tool

验证 Kickstart 配置文件

使用 ksvalidator 验证 Kickstart 的配置文件语法

# yum install pykickstart

$ ksvalidator /path/to/kickstart.ks    # 路径为kcikstart文件的路径

Kickstart 配置文件参考

文件(ks.cfg)保存一下,后面会用到

#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --plaintext 123456
# Use network installation
url --url="http://192.168.1.101/CentOS/7/repo"
# System language
lang en_US
# 用户协议
eula --agreed
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text
firstboot --disable
# SELinux configuration
selinux --disabled

# Firewall configuration
firewall --disabled
# Network information
network  --bootproto=dhcp --device=ens33
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai --isUtc

user --groups=wheel --name=admin --password=$6$dFOvxfykHlSQW0Al$lYq0jhdvX0MzJsfF5poagu2tRGdb9
//xrzTIvfF6JKE1q2yflO19nGZf/A77/Pyp0vIjmk7f31gFmrtrypxBa/ 
--iscrypted --gecos="admin"

# System bootloader configuration
bootloader --location=none
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all
# Disk partitioning information
part /boot --fstype="xfs" --size=1024
part swap --fstype="xfs" --size=2048
part / --fstype="xfs" --grow --size=1

%packages
...
...
...
%end

 

创建启动介质

Kickstart files必须放置在以下位置之一

  • 在可移动介质上,如 DVD 或 USB 闪存驱动器

PS:将完整iso刻录到DVD上,并设置计算机为从该磁盘启动

  • 连接到安装系统的硬盘上

PS:将完整iso放在 硬盘/USB 上安装系统

  • 在从安装系统可接触到的网络共享上

PS:将iso镜像或安装树复制到可从安装系统访问的网络上,通过网络进行安装
 

使Kickstart files可用

这里选择基于网络的方法:PXE 网络服务器启动,从网络共享下载Kickstart files,远程存储库下载文件中指定的软件包

搭建yum源

# yum install httpd# systemctl enable httpd 
# systemctl start httpd 
# cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system  #选择性执行
# systemctl status tftp
# mkdir -p /var/www/html/CentOS/7/repo  #用来放iso  
# mount -r /dev/sr0 /var/www/html/CentOS/7/repo #/dev/cdrom你的iso路径
这里建议使用启动连接的iso挂载,不然会有各种问题

搭建tftp server

# yum install tftp-server
# yum install tftp
# yum install 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   #将此值改为no,表明开启此服务
    per_source      = 11
    cps             = 100 2
    flags           = IPv4
}

# systemctl enable tftp
# systemctl start tftp
# systemctl status tftp
# 关闭防火墙 
# firewall-cmd --add-service=tftp 
# 关闭SElinux 
# vi /etc/selinux/config 
# 将SELINUX=enforcing改为SELINUX=disabled 
# 重启SElinux 

 

配置DHCP server

网络启动没地方配置ip,只能自动获取

# yum install dhcp
#vi /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#

subnet 192.168.48.0 netmask 255.255.255.0 {
    range 192.168.48.10 192.168.48.100;
    option routers 192.168.48.1;
    class "pxeclients" {
        match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
        next-server 192.168.48.128;
#        next-server 192.168.48.2;
        filename "pxelinux.0";
        }
}
~         
# systemctl start dhcpd 
# systemctl enable dhcpd 
# systemctl status dhcpd #查看状态

配置 PXE 启动文件

BIOS(Legacy)方式启动
# yum install syslinux
# tftp 默认目录为 /var/lib/tftpboot
# mkdir -p /var/lib/tftpboot/pxelinux
# cp /path_to/syslinux/{pxelinux.0, vesamenu.c32 , menu.c32}  /var/lib/tftpboot/pxelinux
# 注:/path_to 路径

创建启动菜单

# mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg
# vi /var/lib/tftpboot/pxelinux/pxelinux.cfg/default
default vesamenu.c32

timeout 100
label 1
menu label ^1)Install CentOS7 x86_64(KickStart)
kernel images/CentOS/7/vmlinuz
append initrd=images/CentOS/7/initrd.img ks=http://192.168.1.101/CentOS/7/ks.cfg 

label 2
menu label ^2)Install CentOS7 x86_64(Manual)
kernel images/CentOS/7/vmlinuz
append initrd=images/CentOS/7/initrd.img inst.repo=http://192.168.1.101/CentOS/7/repo

CentOS Kickstart files

使安装源可用,默认启动菜单指定了内核文件,没有就无法正常启动。

# mkdir -p /var/lib/tftpboot/pxelinux/CentOS/7/

# cp /path_to_x86_64_images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/images/CentOS/7/
PS:/path_to_x86_64_images:如果挂在路径不知道,通过 find / -name "pxeboot" 查找到pxeboot路径
 

启动Kickstart Installations

设置BIOS启动为PXE启动,通常情况下按“F12”

需要网络安装系统的机器和服务器接入DHCP的VLAN就可以从网络安装CentOS了。
 
 
 
 
 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!