Предустановленная сетевая установка перезаписывает установочный диск USB

Позвольте мне предоставить как можно больше информации о том, что я делаю:

Я работаю в лабораторной среде разработки, управляющей более чем 100 серверными системами. Нам часто приходится переиздавать системы с разными операционными системами, и мы используем CloneZilla, чтобы сделать это быстро и легко. CloneZilla установлен на USB-накопитель и его grub.cfg файл, настроенный для запуска различных установщиков ОС. Одной из операционных систем (как вы можете себе представить) является Ubuntu (14.04 и 16.04). Он настроен для загрузки сетевого установщика Ubuntu и загрузки файла preseed/kickstart с локального веб-сервера:

#Generated by Kickstart Configurator
#platform=AMD64 or Intel EM64T

#System language
lang en_US
#Language modules to install
langsupport en_US
#System keyboard
keyboard us
#System mouse
mouse
#System timezone
timezone --utc America/Los_Angeles
#Root password
rootpw --disabled
#Initial user
user lab --fullname "Lab" --iscrypted --password $1$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#Reboot after installation
reboot
#Use text mode install
text
#Install OS instead of upgrade
install
#Use Web installation
url --url http://ubuntu.osuosl.org/ubuntu
preseed mirror/http/proxy string "http://proxy.corp.com:123"
#System bootloader configuration
#bootloader --location=mbr 
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel 
#System authorization infomation
auth  --useshadow  --enablemd5 
#Network information
network --bootproto=dhcp 
#Firewall configuration
firewall --disabled 
#Do not configure the X Window System
skipx

#preseed functions
preseed base-installer/kernel/image string linux-image-generic
preseed base-installer/kernel/override-image string linux-image-generic
preseed clock-setup/ntp-server string pool.ntp.org
preseed partman-auto/choose_recipe select atomic
preseed partman-auto/disk string /dev/sda
preseed partman-auto/method string regular
preseed partman/choose_partition select finish
preseed partman/confirm boolean true
preseed partman/confirm_nooverwrite boolean true
preseed partman/default_filesystem string ext4
preseed partman-lvm/confirm boolean true
preseed partman-lvm/device_remove_lvm boolean true
preseed partman-md/confirm boolean true
preseed partman-md/device_remove_md boolean true
preseed partman-partitioning/choose_label string gpt
preseed partman-partitioning/confirm_write_new_label boolean true
preseed partman-efi/non_efi_system boolean true
preseed pkgsel/update-policy select unattended-upgrades
preseed grub-installer/only_debian boolean true
preseed grub-installer/with_other_os boolean true
preseed netcfg/get_hostname string hostname
preseed netcfg/get_domain string domain

# auto method must be lvm
preseed partman-basicfilesystems/choose_label string gpt
preseed partman-basicfilesystems/default_label string gpt
preseed partman-partitioning/default_label string gpt
preseed partman/choose_label string gpt
preseed partman/default_label string gpt
preseed partman-auto/text/boot-root-all :: \
1 1 1 free \
$gptonly{ } \
$primary{ } \
$bios_boot{ } \
method{ biosgrub } \
. \
512 100 512 vfat \
$gptonly{ } \
$primary{ } \
method{ efi } \
format{ } \
$lvmignore{ } \
mountpoint{ /boot/efi } \
.\
128 512 256 ext2 \
$defaultignore{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext2 } \
mountpoint{ /boot } \
. \
1024 4096 -1 ext4 \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ / } \
.

preseed partman-auto/choose_recipe select boot-root-all
# This makes partman automatically partition without confirmation, provided
# that you told it what to do using one of the methods above.
preseed partman-partitioning/confirm_write_new_label boolean true
preseed partman/choose_partition select finish
preseed partman-md/confirm boolean true
preseed partman/confirm boolean true
preseed partman/confirm_nooverwrite boolean true

# This is fairly safe to set, it makes grub install automatically to the MBR
# if no other operating system is detected on the machine.
preseed grub-installer/only_debian boolean true
preseed grub-installer/with_other_os boolean true
preseed grub-installer/bootdev string /dev/sda

#addtional packages
%packages --resolvedeps
openssh-server
libvirt-bin
vim
libpam-systemd
dbus
bash-completion

Это файл preseed/kickstart для Ubuntu 16.04 (с удалением некоторой идентифицирующей информации).

Сетевой установщик успешно загружается и начинает процесс автоматической установки. Однако вместо установки на локальный жесткий диск или SSD он устанавливается на установочный диск USB и перезаписывает образ CloneZilla.

Другие операционные системы прекрасно устанавливаются через CloneZilla, используя свои локальные или сетевые установщики. Похоже, проблема в Ubuntu.

Нашим текущим решением является немедленное извлечение USB-накопителя из системы, как только вы увидите загрузчик сетевой установки и начнете инициализацию. Сетевой установщик уже загружен в оперативную память, поэтому он продолжает работу и обнаруживает только локальный диск. Вы должны быть быстрыми, потому что сетевой установщик быстро инициализируется из ОЗУ, и если вы опоздали, USB-накопитель обычно уже поврежден.

Я искал partman документация в надежде найти опцию конфигурации, которая скажет установщику игнорировать исходное мультимедийное устройство, но я полагаю, так как это сетевая установка, нет способа сделать это?

Кто-нибудь знает о параметре конфигурации preseed/kickstart, который решит эту проблему?

1 ответ

Кажется, проблема в том, что вы пишете:

preseed partman-auto/disk string /dev/sda

И USB определяется как /dev/sda,

Я думаю, что установщик достаточно умен, чтобы найти правильный диск, и вы можете удалить эту строку. В противном случае вам нужно будет указать диск для использования.

Другие вопросы по тегам