Kickstart 自动安装系统教程

Kickstart 是 Red Hat 系列 Linux(CentOS、RHEL、Fedora、AlmaLinux)的自动安装技术,通过一个配置文件(ks.cfg)预先定义安装过程中的所有选项,实现完全无人值守的操作系统安装。Ubuntu 新版本则使用 Autoinstall(cloud-init)方案实现类似功能。本教程将详细讲解两种自动安装方案的配置方法。

一、Kickstart 基础

1.1 获取参考配置

安装完 CentOS/RHEL 后,系统会自动生成一个 Kickstart 参考文件:

# CentOS/RHEL 安装后的参考配置
cat /root/anaconda-ks.cfg

1.2 Kickstart 配置文件结构

Kickstart 文件由三个部分组成:命令段(安装选项)、软件包段(%packages)和脚本段(%pre / %post)。

二、完整 Kickstart 配置示例

# /var/www/html/ks.cfg - CentOS/AlmaLinux 自动安装配置

# 安装模式
text
url --url="http://mirror.example.com/centos/9-stream/BaseOS/x86_64/os/"

# 系统语言和键盘
lang en_US.UTF-8
keyboard us

# 网络配置
network --bootproto=dhcp --device=eth0 --onboot=yes --hostname=server01.example.com

# Root 密码(使用加密密码)
rootpw --iscrypted $6$rounds=656000$randomsalt$encryptedpasswordhere

# 创建普通用户
user --name=admin --groups=wheel --iscrypted --password=$6$rounds=656000$salt$hash

# 时区设置
timezone Asia/Shanghai --utc

# 引导加载器
bootloader --location=mbr --boot-drive=vda

# 清除所有分区
clearpart --all --drives=vda --initlabel

# 磁盘分区方案
part /boot --fstype=ext4 --size=1024
part swap --size=2048
part / --fstype=ext4 --size=1 --grow

# SELinux
selinux --enforcing

# 防火墙
firewall --enabled --ssh

# 安装完成后重启
reboot

# 软件包选择
%packages
@^minimal-environment
vim-enhanced
wget
curl
net-tools
openssh-server
chrony
%end

# 安装后脚本
%post --log=/root/ks-post.log
#!/bin/bash

# 启用必要服务
systemctl enable sshd
systemctl enable chronyd

# SSH 安全加固
sed -i 's/#PermitRootLogin yes/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config

# 添加 SSH 公钥
mkdir -p /root/.ssh
chmod 700 /root/.ssh
echo "ssh-rsa YOUR_PUBLIC_KEY_HERE" > /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

# 更新系统
yum update -y

# 安装常用工具
yum install -y htop iotop tmux git

# 配置时间同步
systemctl start chronyd
chronyc makestep

echo "Kickstart post-install completed: $(date)" >> /root/ks-post.log
%end

三、高级分区方案

# LVM 分区方案
clearpart --all --drives=vda --initlabel
part /boot --fstype=ext4 --size=1024
part pv.01 --size=1 --grow

volgroup vg_system pv.01
logvol / --vgname=vg_system --fstype=ext4 --size=10240 --name=lv_root
logvol /var --vgname=vg_system --fstype=ext4 --size=5120 --name=lv_var
logvol /var/log --vgname=vg_system --fstype=ext4 --size=3072 --name=lv_log
logvol /tmp --vgname=vg_system --fstype=ext4 --size=2048 --name=lv_tmp
logvol swap --vgname=vg_system --size=2048 --name=lv_swap
logvol /home --vgname=vg_system --fstype=ext4 --size=1 --grow --name=lv_home

四、生成加密密码

# 使用 Python 生成加密密码(用于 Kickstart 的 rootpw 字段)
python3 -c 'import crypt; print(crypt.crypt("your-password", crypt.mksalt(crypt.METHOD_SHA512)))'

# 或使用 openssl
openssl passwd -6 -salt randomsalt your-password

# 使用 grub-crypt(旧版系统)
grub2-mkpasswd-pbkdf2

五、Ubuntu Autoinstall

Ubuntu 20.04+ 使用 Autoinstall 替代了传统的 Preseed。配置文件采用 YAML 格式:

# /var/www/html/autoinstall/user-data
#cloud-config
autoinstall:
  version: 1
  locale: en_US.UTF-8
  keyboard:
    layout: us

  network:
    network:
      version: 2
      ethernets:
        eth0:
          dhcp4: true

  storage:
    layout:
      name: direct

  identity:
    hostname: ubuntu-server
    username: admin
    password: '$6$rounds=656000$salt$encryptedpassword'

  ssh:
    install-server: true
    allow-pw: false
    authorized-keys:
      - ssh-rsa YOUR_PUBLIC_KEY_HERE

  packages:
    - vim
    - curl
    - wget
    - htop
    - tmux
    - ufw

  late-commands:
    - curtin in-target -- systemctl enable ufw
    - curtin in-target -- ufw allow ssh
    - curtin in-target -- ufw --force enable
    - curtin in-target -- apt-get update
    - curtin in-target -- apt-get upgrade -y

5.1 提供 Autoinstall 配置

# 通过 HTTP 服务器提供
mkdir -p /var/www/html/autoinstall
# 将 user-data 放在上述目录
# 创建空的 meta-data 文件
touch /var/www/html/autoinstall/meta-data

# 内核启动参数中指定
# autoinstall ds=nocloud-net;s=http://PXE_SERVER_IP/autoinstall/

六、Kickstart 验证

# 安装验证工具
yum install pykickstart -y    # CentOS/RHEL
apt install pykickstart -y    # Ubuntu

# 验证 Kickstart 文件语法
ksvalidator ks.cfg

# 查看 Kickstart 文件差异
ksdiff ks1.cfg ks2.cfg

# 将现有系统转换为 Kickstart 文件
system-config-kickstart

七、配合 PXE 使用

# PXE 引导菜单中指定 Kickstart 文件
# /srv/tftp/pxelinux.cfg/default

LABEL centos9-auto
    MENU LABEL Install CentOS 9 (Automated)
    KERNEL images/centos9/vmlinuz
    APPEND initrd=images/centos9/initrd.img inst.ks=http://PXE_SERVER_IP/ks.cfg

LABEL ubuntu2204-auto
    MENU LABEL Install Ubuntu 22.04 (Automated)
    KERNEL images/ubuntu2204/vmlinuz
    APPEND initrd=images/ubuntu2204/initrd autoinstall ds=nocloud-net;s=http://PXE_SERVER_IP/autoinstall/

八、安装后自动配置脚本

# %post 脚本可以完成各种初始化操作

%post --log=/root/ks-post.log
#!/bin/bash

# 配置 DNS
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf

# 安装监控工具
yum install -y sysstat atop

# 配置自动安全更新
yum install -y yum-cron
systemctl enable yum-cron

# 配置日志轮转
cat > /etc/logrotate.d/custom <<ROTATE
/var/log/myapp/*.log {
    daily
    rotate 14
    compress
    missingok
    notifempty
}
ROTATE

# 设置内核参数优化
cat >> /etc/sysctl.conf <<SYSCTL
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
vm.swappiness = 10
SYSCTL
sysctl -p

echo "安装后配置完成: $(date)"
%end

总结

Kickstart(CentOS/RHEL)和 Autoinstall(Ubuntu)是实现 Linux 系统无人值守安装的标准方案。掌握自动安装技术可以大幅提高批量服务器部署效率,减少人为配置错误。配合 PXE 网络启动 使用可以实现完全自动化的操作系统部署流程。搬瓦工 VPS 本身可通过 KiwiVM 面板重装系统,但学习这些技术有助于理解 Linux 部署自动化的核心概念。选购搬瓦工 VPS 请查看全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 循环折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。