UNIXAWESOME

Автоматическая установка Ubuntu при помощи preseed

July 8, 2020

Иногда бывает необходимо сделать установку в автоматическом режиме, или просто количество машин на которые будет совершатся установка очень велико и на каждой нажимать ‘Далее’, ‘Далее’ не хватит ни времени ни нервов.

Есть решение этой проблемы.
Preseeding — метод автоматизации установки операционной системы Debian и ее производных.

Установочный образ буду делать на основе Lubuntu 18.04 LTS

Первым делом скачиваем образ системы https://releases.ubuntu.com/18.04/

Переходим в директорию где лежит наш образ и создаём скрипт. Для автоматического монтирования и распаковки.

Установим rsync, он нам понадобится для распаковки.

apt install rsync

isoextract.sh

#!/bin/bash

# Имя директории для распаковки
BUILDDIR=iso
# Название образа
IMAGE=lubuntu-18.04.4-desktop-amd64.iso

# Распаковываем образ в директорию
rm -rf $BUILDDIR/
mkdir $BUILDDIR
echo "----- Mounting image -----"
sudo mount -o loop $IMAGE /mnt/iso
echo "----- Syncing -----"
rsync -av /mnt/iso/ $BUILDDIR
chmod -R u+w $BUILDDIR
sudo umount /mnt/iso
echo "----- Complete -----"

Делаем его исполняемым

chmod +x isoextract.sh

Запускаем

./isoextract.sh

Можно и без скрипта обойтись прописав все команды вручную в консоли.

Редактируем файл iso/boot/grub/grub.cfg. Добавляем в конец.

menuentry "Install Lubuntu CUSTOM" {
    set gfxpayload=keep
    linux   /casper/vmlinuz  file=/cdrom/preseed/lubuntu-1804.seed auto=true priority=critical debian-installer/locale=ru_RU keyboard-configuration/layoutcode=us ubiquity/reboot=true languagechooser/language-name=English countrychooser/shortlist=US localechooser/supported-locales=ru_RU.UTF-8 boot=casper automatic-ubiquity initrd=/casper/initrd quiet splash noprompt noshell ---
    initrd  /casper/initrd
}

Добавляем файл с инструкцией для автоматической установки. Обо всех опциях можно почитать здесь https://help.ubuntu.com/lts/installation-guide/s390x/apb.html

iso/preseed/lubuntu-1804.seed

d-i debian-installer/locale string ru_RU.UTF-8
d-i debian-installer/keymap string us
d-i keyboard-configuration/xkb-keymap select us
d-i keyboard-configuration/toggle select No toggling
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string localhost
d-i netcfg/get_domain string localdomain

d-i mirror/country string manual
d-i mirror/http/hostname string archive.ubuntu.com
d-i mirror/http/directory string /ubuntu
d-i mirror/http/proxy string

d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password $6$dNeJFAOOS9MN$G13fPx85sxDlHnxwTKjERFXUL09sGpVYlVWsNrF3PB3z4jiW39rOy6nOCjMJWY02AHyXEEs7p5gt0SCDOhtWH1

d-i passwd/make-user boolean true
d-i passwd/user-fullname string user
d-i passwd/username string user
d-i passwd/user-password-crypted password $6$dNeJFAOOS9MN$G13fPx85sxDlHnxwTKjERFXUL09sGpVYlVWsNrF3PB3z4jiW39rOy6nOCjMJWY02AHyXEEs7p5gt0SCDOhtWH1
d-i passwd/user-default-groups string audio cdrom video sudo
d-i user-setup/encrypt-home boolean false

d-i clock-setup/utc boolean true
d-i time/zone string UTC
d-i clock-setup/ntp boolean true

# LG provided NTP, should be replaced! 
d-i clock-setup/ntp-server string 0.ua.pool.ntp.org

d-i preseed/early_command string umount /media
d-i partman/unmount_active boolean true
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select atomic
# This makes partman automatically partition without confirmation, provided
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/mount_style select uuid

d-i base-installer/install-recommends boolean false
d-i  base-installer/kernel/altmeta   string hwe-18.04

d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
d-i apt-setup/backports boolean true

tasksel tasksel/first multiselect lubuntu-core

d-i pkgsel/include string openssh-server
d-i pkgsel/upgrade select full-upgrade
d-i pkgsel/update-policy select none
popularity-contest popularity-contest/participate boolean false
d-i grub-installer/only_debian boolean true
d-i finish-install/reboot_in_progress note

Создаём шифрованный пароль и изменяем строки:
passwd/root-password-crypted password
passwd/user-password-crypted password

Шифруем наш пароль

mkpasswd -m sha-512

Ставим дополнительные пакеты

apt install genisoimage isolinux wget xorriso

Копируем файл в директорию к нашим скриптам /usr/lib/ISOLINUX/isohdppx.bin

Создаём скрипт для создания ISO образа
isocompress.sh

MBR_FILE=isohdpfx.bin
IMAGE=lubuntu-1804-custom.iso
BUILD=iso/

xorriso -as mkisofs \
   -r -V 'LUBUNTU 1804' \
   -o $IMAGE \
   -J -J -joliet-long -cache-inodes \
   -isohybrid-mbr $MBR_FILE \
   -b isolinux/isolinux.bin \
   -c isolinux/boot.cat \
   -boot-load-size 4 -boot-info-table -no-emul-boot \
   -eltorito-alt-boot \
   -e boot/grub/efi.img \
   -no-emul-boot -isohybrid-gpt-basdat -isohybrid-apm-hfsplus \
    $BUILD

Делаем исполняемым

chmod +x isocompress.sh

Запускаем.

./isocompress.sh

Если нет ошибок, то получаем в нашей папке готовый образ. Теперь можно записывать на флешку и устанавливать.