Как установить virt-install и kickstart на Rocky Linux 10

Дата публикации: 2025-09-19T13:36:59

Теги: ["rocky", "virt-install", "kickstart"]

⏪ Вернуться домой
⏪ В Gemlog

Установка Kickstart - это автоматизированный метод установки дистрибутивов Linux, таких как Red Hat Enterprise Linux (RHEL), Rocky, AlmaLinux, CentOS, Fedora или их производные. Он позволяет предварительно определить параметры установки в файле конфигурации, что делает его идеальным для развертывания систем быстро и последовательно без ручного вмешательства.

Как работает Kickstart

* Простой текстовый файл, который содержит ответы на все вопросы, обычно задаваемые программой установки, такие как:

* Разделение диска

* Программные программы для установки

* Конфигурация сети для сервера

* Временная зона

* Пароль пользователя root

* Имя файла: `ks.cfg`

* Во время установки система читает файл Kickstart и выполняет все шаги, указанные в нем, не заставляя пользователя для ввода.

* Файл Kickstart может быть доставлен в целевую систему через:

* локальное хранилище (например, USB, CD/DVD или жесткий диск).

* сетевой сервер (например, HTTP, FTP или NFS).

Автоматическая установка VM с использованием Virt-install и kickstart

Рассматриваем пример:

Шаг 1. Скачать OS ISO изображение (DVD)

Скачать Enterprise Linux DVD iso. Это может быть RHEL, CentOS Stream, Rocky Linux, AlmaLinux, Oracle Linux, etc.

В этом примере мы загружаем Rocky Linux DVD iso.

wget https://download.rockylinux.org/pub/rocky/10/isos/x86_64/Rocky-10.0-x86_64-dvd1.iso

Переместить файл ISO в каталог хранилища по умолчанию.

sudo mv Rocky-10.0-x86_64-dvd1.iso /var/lib/libvirt/images/Rocky-10.0-x86_64-dvd1.iso

Шаг 2. Создание сценария установки kickstart

Мы начнем с создания нового файла под названием `ks.cfg`:

vim ks.cfg

Содержание в файле:

# System language
lang ru_RU.UTF-8

# Keyboard layout
keyboard us

# Network configuration
network --bootproto=dhcp

# Timezone
timezone Europe/Moscow --utc

# Root password (plain text)
rootpw --plaintext StrongRootPassw0rd

# Skip the GUI installation (remove for desktop installs)
skipx

# Run installer in text mode
text

# Clear the Master Boot Record
zerombr

# Partitioning information
bootloader --timeout=1 --location=mbr --append="net.ifnames=0 biosdevname=0"
clearpart --all --initlabel
part /boot --fstype=ext4 --size=512
part swap --size=1024
part / --fstype=xfs --grow --size=1

# Packages
%packages
@core
@base
openssh-server
openssh-clients
vim
bash-completion
sudo
selinux-policy-devel
net-tools
tar
bzip2
bind-utils
policycoreutils-python-utils
python3
python3-libselinux
tar
yum-utils
firewalld
%end

# Automatically reboot after installation and eject media
reboot --eject

# Post-installation script
%post
echo "Installation complete!" > /root/installation-log.txt
%end

Дополнительные варианты, которые вы можете использовать в Kickstart:

Использовать зашифрованный пароль пользователя

# Generate encrypted passsword
## Python3
python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'
## Python2
python -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'

Для root пользователя:

rootpw --iscrypted 

Добавление стандартной учетной записи пользователя

# plain text password
user --groups=wheel --name=Rocky --plaintext --password=StrongUserPassword --gecos="Rocky User"

# Encrypted password
user --groups=wheel --name=Rocky --iscrypted --password= --gecos="Rocky User"

Установка статического IP-адреса

network --bootproto=static --ip=192.168.122.100 --gateway=192.168.122.1  --netmask=255.255.255.0  --noipv6 --device=eth0 --nameserver=192.168.122.1,8.8.8.8 --activate

Настройка пользовательских разделов с различными размерами

part / --fstype=ext4 --size=10240
part /var --fstype=ext4 --size=20480
part swap --size=2048

Использование LVM (Logical Volume Manager)

zerombr
clearpart --all --initlabel
autopart --type=lvm

Использование LVM (Logical Volume Manager) с пользовательскими разделами

# Clear existing partitions and create a new layout
clearpart --all --initlabel

# Create a standard partition for /boot
part /boot --fstype=ext4 --size=1024

# Create PV for LVM that uses the entire remaining disk space
part pv.01 --grow
## Create a new physical volume of  50GB
#part pv.01 --size=50000

# Create a volume group named "vg_root"
volgroup vg_root --pesize=4096 pv.01

# Create logical volumes within the "vg_root" volume group
logvol / --vgname=vg_root --name=lv_root --size=20000 --fstype=ext4
logvol /home --vgname=vg_root --name=lv_home --size=10000 --fstype=ext4
logvol swap --vgname=vg_root --name=lv_swap --size=4096 --fstype=swap

Конфигурации загрузки, такие как консоль и изменение интерфейсов сетевых карт.

bootloader --timeout 1 --append "console=tty0 console=ttyS0,115200 net.ifnames.prefix=net quiet"

Установлено состояние SELinux на установленной системе

# Enforcing
selinux --enforcing

# Permissive
selinux --permissive

# Disabled
selinux --disabled

Включить/Отключить услуги

# Comma separated list
services --disabled=auditd,cups,smartd,nfslock
services --enabled=sshd,firewalld,tuned

Настройка серверов NTP

timezone Europe/Moscow --ntpservers=time.google.com,time.windows.com

Установка VNC

Чтобы можно было удаленно просматривать графическую установку через VNC. Этот метод, как правило, предпочтителен по сравнению с текстовым режимом, поскольку в текстовых инсталляциях есть некоторые размеры и языковые ограничения

vnc --host=0.0.0.0 --port=5900 --password=Password01

Отключить IPv6 (Добавить в %post и до его %end)

echo "net.ipv6.conf.all.disable_ipv6 = 1" > /etc/sysctl.d/50-ipv6.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.d/50-ipv6.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.d/50-ipv6.conf
sed -i -e '/^::1/d' /etc/hosts
sed -i -e 's,^OPTIONS=",OPTIONS="-4 ,g' -e 's, ",",' /etc/sysconfig/chronyd
sed -Ei -e 's,^(#|)AddressFamily .*,AddressFamily inet,' /etc/ssh/sshd_config
sed -i -e 's,^IPv6_rpfilter=yes,IPv6_rpfilter=no,' /etc/firewalld/firewalld.conf
sed -i -e '/dhcpv6-client/d' /etc/firewalld/zones/public.xml

Шаг 3. Создание экземпляра VM с помощью kickstart и virt-install

Определение переменных, используемых в установке:

VM_NAME=rocky10.0   # Name of VM to create
DISK_SIZE=50        # Create 50GB disk size
MEM_SIZE=2048       # Memory setting in MiB
VCPUS=2             # CPU Cores count
BR_NAME=virbr0      # Bridge network name
OS_VARIANT="rhel10.0" # List using osinfo-query  os
INST_GRAPHICS=none  # Install graphics: none, vnc, spice
ISO_FILE=/var/lib/libvirt/images/Rocky-10.0-x86_64-dvd1.iso # Path to ISO file

Создайте экземпляр VM с помощью файла конфигурации virt-install и kickstart.

sudo virt-install \
  --name $VM_NAME \
  --memory=$MEM_SIZE \
  --vcpus=$VCPUS \
  --location $ISO_FILE \
  --disk size=${DISK_SIZE}  \
  --network bridge=$BR_NAME \
  --graphics=$INST_GRAPHICS \
  --os-variant=$OS_VARIANT \
  --console pty,target_type=serial \
  --initrd-inject ks.cfg --extra-args "inst.ks=file:/ks.cfg console=tty0 console=ttyS0,115200n8"

Процесс инсталляции должен начинаться и развиваться автоматически.

После установки вы должны получить страницу входа:

Rocky Linux 10.0 (Red Quartz)
Kernel 6.12.0-55.12.1.el10_0.x86_64 on an x86_64

Activate the web console with: systemctl enable --now cockpit.socket

localhost login:

Войти как root пользователь с паролем в файле `ks.cfg`.

localhost login: root
Password:

[root@localhost ~]# cat /etc/redhat-release
Rocky Linux release 10.0 (Red Quartz)

Мы можем проверить схему присвоения IP-адреса и раздела диска после завершения установки ОС.

[root@localhost ~]# ip ad
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:fa:af:7e brd ff:ff:ff:ff:ff:ff
    altname enp1s0
    inet 192.168.122.226/24 brd 192.168.122.255 scope global dynamic noprefixroute eth0
       valid_lft 2765sec preferred_lft 2765sec
    inet6 fe80::2a46:dfc0:3ef6:b826/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

[root@localhost ~]# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs          tmpfs     888M     0  888M   0% /dev/shm
tmpfs          tmpfs     355M  5.1M  350M   2% /run
/dev/vda3      xfs        49G  1.9G   47G   4% /
/dev/vda1      ext4      488M  260M  192M  58% /boot
tmpfs          tmpfs     178M     0  178M   0% /run/user/0

Завершение

Собственно на этом всё.

Если вам понравился этот пост о том, как установить virt-install и kickstart на Rocky Linux 10, пожалуйста, поделитесь им со своими друзьями в социальных сетях, которым может быть интересна эта статья или оставьте комментарий ниже.