Перейти к содержанию

Автоматическая установка Debian

Существует несколько способов автоматизировать установку операционной системы. В данном примере будет показан способ полной автоматизации при помощи модификации установочного носителя.

Установите пакеты, которые будут использоваться в автоматизации:

apt install debconf-utils genisoimage rsync

Создайте директории для распаковки установочного носителя (образа диска в формате iso):

mkdir {mnt,irmod,cd}

Смонтируйте носитель (он будет смонтирован в режиме чтения):

mount -o loop $INISO mnt/

Скопируйте данные носителя для модификации:

rsync -a -H --exclude=TRANS.TBL mnt/ cd/

Размонтируйте носитель и удалите директорию (она больше не нужна):

umount mnt/
rmdir mnt/

Отредактируйте файл cd/isolinux/isolinux.cfg в соответствии с образцом:

# D-I config version 2.0
# search path for the c32 support libraries (libcom32, libutil etc.)
path
prompt 0
timeout 4
autoselect auto
include menu.cfg
default vesamenu.c32

Отредактируйте файл cd/isolinux/prompt.cfg в соответствии с образцом:

prompt 1
display f1.txt
timeout 4
include menu.cfg
include exithelp.cfg

f1 f1.txt
f2 f2.txt
f3 f3.txt
f4 f4.txt
f5 f5.txt
f6 f6.txt
f7 f7.txt
f8 f8.txt
f9 f9.txt
f10 f10.txt

Отредактируйте файл cd/isolinux/menu.cfg в соответствии с образцом:

menu hshift 4
menu width 70

menu title Debian GNU/Linux installer menu (BIOS mode)
include stdmenu.cfg
include gtk.cfg

Отредактируйте файл cd/isolinux/gtk.cfg в соответствии с образцом:

default auto
label auto
    menu label ^Automated install
    menu default
    kernel /install.amd/vmlinuz
    append auto=true priority=critical vga=788 initrd=/install.amd/initrd.gz --- quiet

Подготовьте файл автоматизации ответов на вопросы инсталлятора preseed.cfg в соответствии с образцом (замените значения параметров ниже на нужные вам):

### Localization
d-i debian-installer/language string en
d-i debian-installer/country string RU

### Keyboard
d-i keymap select ru
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string ru
d-i console-setup/variant select Россия
d-i console-setup/toggle select Alt+Shift

### Network configuration
d-i netcfg/choose_interface select auto
d-i netcfg/dhcp_timeout string 2
d-i netcfg/get_hostname string localhost
d-i netcfg/get_domain string localdomain
d-i netcfg/confirm_static boolean false
d-i netcfg/disable_dhcp boolean false

# Static (optional)
#d-i netcfg/get_nameservers string 8.8.8.8
#d-i netcfg/get_ipaddress string 192.168.1.10
#d-i netcfg/get_netmask string 255.255.255.0
#d-i netcfg/get_gateway string 192.168.1.1
#d-i netcfg/confirm_static boolean true

### Timezone
d-i clock-setup/utc boolean true
d-i time/zone string Europe/Moscow
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string 192.168.1.1

### Users
d-i passwd/root-password password rootpassword
d-i passwd/root-password-again password rootpassword
d-i passwd/user-fullname string Local Administrator
d-i passwd/username string administrator
d-i passwd/user-password password administratorpassword
d-i passwd/user-password-again password administratorpassword
d-i passwd/user-default-groups sudo

### Partition
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select atomic
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

# Automatically partition without confirmation
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

# Do not send data about installation
popularity-contest popularity-contest/participate boolean false

### Package selection
tasksel tasksel/first multiselect ssh-server
d-i pkgsel/include string sudo python3-apt aptitude

### Finish install
d-i finish-install/keep-consoles boolean true
d-i finish-install/reboot_in_progress note
d-i cdrom-detect/eject boolean true

### Grub
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i grub-installer/bootdev string default

Перепакуйте initrd с заменой файла preseed.cfg на созданный выше (предположим, созданный файл размещается в ~):

cd irmod/
gzip -d < ../cd/install.amd/initrd.gz | cpio --extract --verbose --make-directories --no-absolute-filenames
cp -f ~/preseed.cfg preseed.cfg
find . | cpio -H newc --create --verbose | gzip -9 > ../cd/install.amd/initrd.gz
cd ../
rm -fr irmod/

Пересчитайте контроьные суммы файлов:

cd cd/
md5sum `find -follow -type f` > md5sum.txt

Сформируйте образ диска с модифицированной конфигурацией процедуры установки:

cd ..
genisoimage -o debian-preseed.iso -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat ./cd
rm -rf cd

Сформированный образ можно использовать для установки физических или виртуальных машин.