Примеры kickstart, preseed.cfg файлов

Дополнение к статье Настраиваем сетевую загрузку с помощью mikrotik, ipxe, bios, uefi.

Решил добавить примеры рабочих kickstart, preseeds.cfg файлов, которые используются у меня для быстрой настройки операционных систем.

Kickstart, Preseed.cfg файлы нужны для быстрой настройки операционной системы без нашего вмешательства.

Нужно только запустить установку операционной системы и указать путь до Kickstart, Preseed файла. Дальше установшик самостоятельно настроит операционную систему. Что экономит кучу времени и дает на выходе ясный и стабильный результат.

Основой для моих kickstart, preseed.cfg послужил репозиторий от VMWARE.

Пароль

Пароль для пользователя support - SuperPa$$w0rd.

Для генерации пароля нужно выполнить команду.

openssl passwd -6

Kickstart

Это kickstart файл для RockyLinux. Скорее всего этот файл также будет работать и для RHEL, AlmaLinux.

10

# Rocky Linux 10

url --url="http://mirror.ps.kz/rocky/10.2/BaseOS/x86_64/os"

text

eula --agreed
lang en_US.UTF-8
keyboard 'us'

network --device=eno1 --bootproto=dhcp

rootpw --lock

user --name=support --iscrypted --password=$6$RZiNVLtjx4DWjFzr$zIiuGa7lNlbBnSH0Gk9JRwmS4RuzhEQ0uAJOmdKVAkkWSVghhcaCBH5vmsxLce8H7KRw58qgCqZc3TK5dy.61/ --groups=wheel

firewall --enabled --ssh

authselect select sssd

selinux --enforcing

timezone Asia/Aqtobe

bootloader --location=mbr

zerombr

clearpart --all --initlabel

part /boot/efi --label=EFIFS --fstype vfat --size=1024
part /boot --label=BOOTFS --fstype xfs --size=1024
part pv.sysvg --size=100 --grow

volgroup sysvg pv.sysvg

logvol / --name=lv_root --vgname=sysvg --label=ROOTFS --fstype xfs --size=12288
logvol /home --name=lv_home --vgname=sysvg --label=HOMEFS --fstype xfs --fsoptions="nodev,nosuid" --size=4096
logvol /opt --name=lv_opt --vgname=sysvg --label=OPTFS --fstype xfs --fsoptions="nodev" --size=2048
logvol /tmp --name=lv_tmp --vgname=sysvg --label=TMPFS --fstype xfs --fsoptions="nodev,noexec,nosuid" --size=4096
logvol /var --name=lv_var --vgname=sysvg --label=VARFS --fstype xfs --fsoptions="nodev" --size=4096
logvol /var/log --name=lv_log --vgname=sysvg --label=LOGFS --fstype xfs --fsoptions="nodev,noexec,nosuid" --size=4096
logvol /var/log/audit --name=lv_audit --vgname=sysvg --label=AUDITFS --fstype xfs --fsoptions="nodev,noexec,nosuid" --size=4096

services --enabled=NetworkManager,sshd

skipx

%packages --ignoremissing --excludedocs
@core
-iwl*firmware
%end

%post
dnf install -y sudo perl podman
echo "support ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/support
sed -i "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers
%end

reboot --eject

9

# Rocky Linux 9

url --url="http://mirror.ps.kz/rocky/9.8/BaseOS/x86_64/os"

text

eula --agreed
lang en_US.UTF-8
keyboard 'us'

network --device=eno1 --bootproto=dhcp

rootpw --lock

user --name=support --iscrypted --password=$6$RZiNVLtjx4DWjFzr$zIiuGa7lNlbBnSH0Gk9JRwmS4RuzhEQ0uAJOmdKVAkkWSVghhcaCBH5vmsxLce8H7KRw58qgCqZc3TK5dy.61/ --groups=wheel

firewall --enabled --ssh

authselect select sssd

selinux --enforcing

timezone Asia/Aqtobe

bootloader --location=mbr

zerombr

clearpart --all --initlabel

part /boot/efi --label=EFIFS --fstype vfat --size=1024
part /boot --label=BOOTFS --fstype xfs --size=1024
part pv.sysvg --size=100 --grow

volgroup sysvg pv.sysvg

logvol / --name=lv_root --vgname=sysvg --label=ROOTFS --fstype xfs --size=12288
logvol /home --name=lv_home --vgname=sysvg --label=HOMEFS --fstype xfs --fsoptions="nodev,nosuid" --size=4096
logvol /opt --name=lv_opt --vgname=sysvg --label=OPTFS --fstype xfs --fsoptions="nodev" --size=2048
logvol /tmp --name=lv_tmp --vgname=sysvg --label=TMPFS --fstype xfs --fsoptions="nodev,noexec,nosuid" --size=4096
logvol /var --name=lv_var --vgname=sysvg --label=VARFS --fstype xfs --fsoptions="nodev" --size=4096
logvol /var/log --name=lv_log --vgname=sysvg --label=LOGFS --fstype xfs --fsoptions="nodev,noexec,nosuid" --size=4096
logvol /var/log/audit --name=lv_audit --vgname=sysvg --label=AUDITFS --fstype xfs --fsoptions="nodev,noexec,nosuid" --size=4096

services --enabled=NetworkManager,sshd

skipx

%packages --ignoremissing --excludedocs
@core
-iwl*firmware
%end

%post
dnf install -y sudo perl podman
echo "support ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/support
sed -i "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers
%end

reboot --eject

8

# Rocky Linux 8

url --url="http://mirror.ps.kz/rocky/8.10/BaseOS/x86_64/os"

text

eula --agreed
lang en_US.UTF-8
keyboard 'us'

network --device=eno1 --bootproto=dhcp

rootpw --lock

user --name=support --iscrypted --password=$6$RZiNVLtjx4DWjFzr$zIiuGa7lNlbBnSH0Gk9JRwmS4RuzhEQ0uAJOmdKVAkkWSVghhcaCBH5vmsxLce8H7KRw58qgCqZc3TK5dy.61/ --groups=wheel

firewall --enabled --ssh

authselect select sssd

selinux --enforcing

timezone Asia/Aqtobe

bootloader --location=mbr

zerombr

clearpart --all --initlabel

part /boot/efi --label=EFIFS --fstype vfat --size=1024
part /boot --label=BOOTFS --fstype xfs --size=1024
part pv.sysvg --size=100 --grow

volgroup sysvg pv.sysvg

logvol / --name=lv_root --vgname=sysvg --label=ROOTFS --fstype xfs --size=12288
logvol /home --name=lv_home --vgname=sysvg --label=HOMEFS --fstype xfs --fsoptions="nodev,nosuid" --size=4096
logvol /opt --name=lv_opt --vgname=sysvg --label=OPTFS --fstype xfs --fsoptions="nodev" --size=2048
logvol /tmp --name=lv_tmp --vgname=sysvg --label=TMPFS --fstype xfs --fsoptions="nodev,noexec,nosuid" --size=4096
logvol /var --name=lv_var --vgname=sysvg --label=VARFS --fstype xfs --fsoptions="nodev" --size=4096
logvol /var/log --name=lv_log --vgname=sysvg --label=LOGFS --fstype xfs --fsoptions="nodev,noexec,nosuid" --size=4096
logvol /var/log/audit --name=lv_audit --vgname=sysvg --label=AUDITFS --fstype xfs --fsoptions="nodev,noexec,nosuid" --size=4096

services --enabled=NetworkManager,sshd

skipx

%packages --ignoremissing --excludedocs
@core
-iwl*firmware
%end

%post
dnf install -y sudo perl podman
echo "support ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/support
sed -i "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers
%end

reboot --eject

Preseed.cfg

Я использую только Debian, preseed.cfg для bookworm, trixie. В более старых версиях использовался другой формат.

bookworm

# Locale
d-i debian-installer/locale string en_US
d-i debian-installer/language string en
d-i debian-installer/country string KZ
# Optionally specify additional locales to be generated.
d-i localechooser/supported-locales multiselect en_US.UTF-8, ru_RU.UTF-8

# Clock and Timezone
d-i clock-setup/utc boolean true
d-i clock-setup/ntp boolean true
d-i time/zone string Asia/Aqtobe

# Mirror settings
d-i mirror/country string manual
d-i mirror/http/hostname string mirror.ps.kz
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string

# Package Configuration
d-i pkgsel/run_tasksel boolean false
d-i pkgsel/include string openssh-server python3-apt perl curl podman

# User configuration
d-i passwd/root-login boolean false

d-i passwd/make-user boolean true
d-i passwd/user-fullname string Support
d-i passwd/username string support
d-i passwd/user-password-crypted password $6$RZiNVLtjx4DWjFzr$zIiuGa7lNlbBnSH0Gk9JRwmS4RuzhEQ0uAJOmdKVAkkWSVghhcaCBH5vmsxLce8H7KRw58qgCqZc3TK5dy.61/
d-i passwd/user-uid string 1000

# Add User to Sudoers
d-i preseed/late_command string \
    echo 'support ALL=(ALL) NOPASSWD: ALL' > /target/etc/sudoers.d/support ; \
    in-target chmod 440 /etc/sudoers.d/support ; \
    mkdir /target/home/support/.ssh ; \
    echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJYCiZieZsL9dB1uQzNWiVyETThr8l57vPOySDz6WVye support@somehost' > /target/home/support/.ssh/authorized_keys ; \
    chmod 0600 /target/home/support/.ssh/authorized_keys ; \
    chmod 0700 /target/home/support/.ssh ; \
    chown 1000:1000 -R /target/home/support/.ssh ;

# Grub and Reboot Message
d-i finish-install/reboot_in_progress note
d-i grub-installer/only_debian boolean true
d-i grub-installer/bootdev string /dev/sda

# Partitioning
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string lvm
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-auto-lvm/new_vg_name string sysvg

# Force UEFI booting (BIOS compatibility will be lost). Default: false.
d-i partman-efi/non_efi_system boolean true

# Ensure the partition table is GPT - this is required for EFI
d-i partman-partitioning/choose_label select gpt
d-i partman-partitioning/default_label string gpt

d-i partman-basicfilesystems/no_swap boolean false
d-i partman-auto/expert_recipe string \
  custom :: \
    1024 1024 1024 fat32 \
    $primary{ } \
    mountpoint{ /boot/efi } \
    method{ efi } \
    format{ } \
    use_filesystem{ } \
    filesystem{ vfat } \
    label { EFIFS } \
    . \
    1024 1024 1024 xfs \
    $primary{ } \
    $bootable{ } \
    mountpoint{ /boot } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { BOOTFS } \
    . \
    12288 12288 12288 xfs \
    $lvmok{ } \
    mountpoint{ / } \
    lv_name{ lv_root } \
    in_vg { sysvg } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { ROOTFS } \
    . \
    4096 4096 4096 xfs \
    $lvmok{ } \
    mountpoint{ /home } \
    lv_name{ lv_home } \
    in_vg { sysvg } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { HOMEFS } \
    options/nodev{ nodev } \
    options/nosuid{ nosuid } \
    . \
    2048 2048 2048 xfs \
    $lvmok{ } \
    mountpoint{ /opt } \
    lv_name{ lv_opt } \
    in_vg { sysvg } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { OPTFS } \
    options/nodev{ nodev } \
    . \
    4096 4096 4096 xfs \
    $lvmok{ } \
    mountpoint{ /tmp } \
    lv_name{ lv_tmp } \
    in_vg { sysvg } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { TMPFS } \
    options/nodev{ nodev } \
    options/noexec{ noexec } \
    options/nosuid{ nosuid } \
    . \
    4096 4096 4096 xfs \
    $lvmok{ } \
    mountpoint{ /var } \
    lv_name{ lv_var } \
    in_vg { sysvg } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { VARFS } \
    options/nodev{ nodev } \
    . \
    4096 4096 4096 xfs \
    $lvmok{ } \
    mountpoint{ /var/log } \
    lv_name{ lv_log } \
    in_vg { sysvg } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { LOGFS } \
    options/nodev{ nodev } \
    options/noexec{ noexec } \
    options/nosuid{ nosuid } \
    . \
    4096 4096 4096 xfs \
    $lvmok{ } \
    mountpoint{ /var/log/audit } \
    lv_name{ lv_audit } \
    in_vg { sysvg } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { AUDITFS } \
    options/nodev{ nodev } \
    options/noexec{ noexec } \
    options/nosuid{ nosuid } \
    . \
    4096 4096 4096 xfs \
    $lvmok{ } \
    mountpoint{ /tmp/dump } \
    lv_name{ lv_tmp_dump } \
    in_vg { sysvg } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { TMPDUMPFS } \
    options/nodev{ nodev } \
    options/noexec{ noexec } \
    options/nosuid{ nosuid } \
    . \

d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i netcfg/choose_interface select eno1

Trixie

# Locale
d-i debian-installer/locale string en_US
d-i debian-installer/language string en
d-i debian-installer/country string KZ
#Optionally specify additional locales to be generated
d-i localechooser/supported-locales multiselect en_US.UTF-8, ru_RU.UTF-8

# Clock and Timezone
d-i clock-setup/utc boolean true
d-i clock-setup/ntp boolean true
d-i time/zone string Asia/Aqtobe

# Mirror settings
d-i mirror/country string manual
d-i mirror/http/hostname string mirror.ps.kz
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string

# Package Configuration
d-i pkgsel/run_tasksel boolean false
d-i pkgsel/include string openssh-server python3-apt perl curl

# User configuration
d-i passwd/root-login boolean false

d-i passwd/make-user boolean true
d-i passwd/user-fullname string Support
d-i passwd/username string support
d-i passwd/user-password-crypted password $6$RZiNVLtjx4DWjFzr$zIiuGa7lNlbBnSH0Gk9JRwmS4RuzhEQ0uAJOmdKVAkkWSVghhcaCBH5vmsxLce8H7KRw58qgCqZc3TK5dy.61/
d-i passwd/user-uid string 1000

# Add User to Sudoers
d-i preseed/late_command string \
    echo 'support ALL=(ALL) NOPASSWD: ALL' > /target/etc/sudoers.d/support ; \
    in-target chmod 440 /etc/sudoers.d/support ; \
    mkdir /target/home/support/.ssh ; \
    echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJYCiZieZsL9dB1uQzNWiVyETThr8l57vPOySDz6WVye support@somehost' > /target/home/support/.ssh/authorized_keys ; \
    chmod 0600 /target/home/support/.ssh/authorized_keys ; \
    chmod 0700 /target/home/support/.ssh ; \
    chown 1000:1000 -R /target/home/support/.ssh ;

# Grub and Reboot Message
d-i finish-install/reboot_in_progress note
d-i grub-installer/only_debian boolean true
d-i grub-installed/bootdev string /dev/sda

# Partitioning
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string lvm
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-auto-lvm/new_vg_name string sysvg

# Force UEFI booting (BIOS compatibility will be lost). Default: false.
d-i partman-efi/non_efi_system boolean true

# Ensure the partition table is GPT - this is required for EFI
d-i partman-partitioning/choose_label select gpt
d-i partman-partitioning/default_label string gpt

d-i partman-basicfilesystems/no_swap boolean false
d-i partman-auto/expert_recipe string \
  custom :: \
    1024 1024 1024 fat32 \
    $primary{ } \
    mountpoint{ /boot/efi } \
    method{ efi } \
    format{ } \
    use_filesystem{ } \
    filesystem{ vfat } \
    label { EFIFS } \
    . \
    1024 1024 1024 xfs \
    $primary{ } \
    $bootable{ } \
    mountpoint{ /boot } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { BOOTFS } \
    . \
    12288 12288 12288 xfs \
    $lvmok{ } \
    mountpoint{ / } \
    lv_name{ lv_root } \
    in_vg { sysvg } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { ROOTFS } \
    . \
    4096 4096 4096 xfs \
    $lvmok{ } \
    mountpoint{ /home } \
    lv_name{ lv_home } \
    in_vg { sysvg } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { HOMEFS } \
    options/nodev{ nodev } \
    options/nosuid{ nosuid } \
    . \
    2048 2048 2048 xfs \
    $lvmok{ } \
    mountpoint{ /opt } \
    lv_name{ lv_opt } \
    in_vg { sysvg } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { OPTFS } \
    options/nodev{ nodev } \
    . \
    4096 4096 4096 xfs \
    $lvmok{ } \
    mountpoint{ /tmp } \
    lv_name{ lv_tmp } \
    in_vg { sysvg } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { TMPFS } \
    options/nodev{ nodev } \
    options/noexec{ noexec } \
    options/nosuid{ nosuid } \
    . \
    4096 4096 4096 xfs \
    $lvmok{ } \
    mountpoint{ /var } \
    lv_name{ lv_var } \
    in_vg { sysvg } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { VARFS } \
    options/nodev{ nodev } \
    . \
    4096 4096 4096 xfs \
    $lvmok{ } \
    mountpoint{ /var/log } \
    lv_name{ lv_log } \
    in_vg { sysvg } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { LOGFS } \
    options/nodev{ nodev } \
    options/noexec{ noexec } \
    options/nosuid{ nosuid } \
    . \
    4096 4096 4096 xfs \
    $lvmok{ } \
    mountpoint{ /var/log/audit } \
    lv_name{ lv_audit } \
    in_vg { sysvg } \
    method{ format } \
    format{ } \
    use_filesystem{ } \
    filesystem{ xfs } \
    label { AUDITFS } \
    options/nodev{ nodev } \
    options/noexec{ noexec } \
    options/nosuid{ nosuid } \
    . \

d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i netcfg/choose_interface select eno1