Вопрос или проблема
Я пытаюсь настроить полностью автоматизированную установку для debian bookworm vm.
В основном все работает. Но установщик всегда останавливается, чтобы предложить мне выбрать зеркало.
Следует отметить, что когда я устанавливаю протокол на FTP, выбор зеркала работает. Но тогда установка завершается с ошибкой на этапе base-install (конкретно на пакете busybox).
Что я делаю не так?
Вот мой скрипт virt-install:
#!/usr/bin/sh
virt-install \
--connect qemu:///system \
--name "${1}" \
--vcpus 1 \
--memory 1024 \
--network default \
--disk ${HOME}/virtual_machines/"${1}".qcow2,size=25,format=qcow2 \
--cdrom ${HOME}/download/images/debian-12.9.0-amd64-netinst.iso \
--install debian12 \
--initrd-inject ${PWD}/preseed.cfg
и preseed.cfg:
### Locale ###
d-i debian-installer/locale string en_US
d-i keyboard-configuration/xkb-keymap select us
### Network ###
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/hostname string bookworm-vm
d-i netcfg/wireless_wep string
### Mirrors ###
d-i mirror/protocol string http
d-i mirror/country string US
d-i mirror/http/hostname string mirrors.ocf.berkeley.edu
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
d-i mirror/suite string stable
### User & Passwords ###
d-i passwd/root-password-crypted password $y$j9T$~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
d-i passwd/user-fullname string Virtual User
d-i passwd/username string usrx
d-i passwd/user-password-crypted password $y$j9T$~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
d-i passwd/user-default-groups string adm sudo
### Time ###
d-i clock-setup/utc boolean true
d-i time/zone string US/Pacific
d-i clock-setup/ntp boolean true
### Disk ###
d-i partman-auto/init_automatically_partition select biggest_free
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
d-i partman-md/confirm boolean true
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
### Apt ###
d-i apt-setup/cdrom/set-first boolean false
d-i apt-setup/disable-cdrom-entries boolean true
d-i apt-setup/use_mirror boolean true
d-i apt-setup/services-select multiselect security, updates
### Packages ###
d-i pkgsel/run_tasksel boolean false
d-i pkgsel/include string openssh-server build-essential sudo
### Feedback ###
popularity-contest popularity-contest/participate boolean false
### Grub ###
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i grub-installer/bootdev string /dev/vda
### Final ###
d-i finish-install/reboot_in_progress note
Ответ или решение
Для решения проблемы, связанной с тем, что Debian preseed не выбирает зеркало по умолчанию, давайте разберем все аспекты, которые могут влиять на это поведение. Мы также рассмотрим ваш текущий скрипт и preseed-файл, чтобы определить возможные ошибки и предложить оптимальное решение.
Теория
Debian preseed предоставляет возможность автоматизации установки операционной системы Debian на виртуальные машины или физические устройства. Это достигается путем указания различных параметров в файле preseed.cfg, который определяет конфигурацию системы, включая выбор зеркала для загрузки пакетов.
Основные элементы, на которые стоит обратить внимание при конфигурировании preseed для выбора зеркала:
- Протокол доступа: в вашем случае это HTTP (и FTP, который, как вы упомянули, имеет проблемы с установкой).
- Хостное имя зеркала: это полный адрес сервера, с которого будет производиться загрузка.
- Директория: путь, относительно которого хранится дерево пакетов; обычно это "/debian".
- Кеширующий прокси: опциональная настройка, если в сети используется прокси-сервер для загрузки.
Пример
В вашем скрипте virt-install и файле preseed.cfg вы уже указали ряд параметров для выбора зеркала:
d-i mirror/protocol string http
d-i mirror/country string US
d-i mirror/http/hostname string mirrors.ocf.berkeley.edu
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
Эти настройки предназначены для того, чтобы preseed автоматически выбрал зеркало, используя протокол HTTP. Однако возникшая у вас проблема указывает на то, что процесс останавливается, чтобы запросить ввод пользователя для выбора зеркала, что говорит о том, что некоторые параметры могли быть неправильно указаны или неработающие в данном контексте.
Применение
-
Проверка доступности зеркала: Убедитесь, что указанный URL-адрес mirrors.ocf.berkeley.edu актуален и доступен из вашей сети. Вы можете попробовать выполнить команду
curl
илиwget
с сервера, на котором вы запускаете виртуальную машину, чтобы убедиться, что доступ к этому зеркалу возможен. -
Актуальность данных зеркала: Возможно, указанные вами данные устарели. Свяжитесь с администраторами зеркала или проверьте сайт на предмет актуальных настроек.
-
Проверка параметров preseed: Дважды проверьте, что параметры указаны правильно и не содержат опечаток. Особенно обратите внимание на то, что
d-i mirror/http/hostname
не содержит опечаток. -
Тестирование на другом зеркале: Попробуйте сменить зеркало на другой популярный сервер, чтобы исключить возможность проблемы с текущим зеркалом. Например, вы можете использовать официальное зеркало Debian.
-
Логирование: Включите расширенное логирование для процесса установки, чтобы отслеживать, где именно возникает проблема.
-
Обновление preseed файла: Убедитесь, что preseed-файл специфицирован строго в соответствии с имеющимися версиями документации. Иногда изменения в конфигурации дистрибутива требуют обновлений в preseed-конфигурациях.
-
Проблема с протоколами: Поскольку FTP-протокол не работает корректно, возможно, стоит полностью сконцентрироваться на HTTP и проверить, нет ли блокировок портов или других сетевых ограничений, что может препятствовать корректной работе HTTP.
С этими изменениями и проверками вы сможете настроить preseed так, чтобы он автоматически выбирал зеркало без необходимости вмешательства. Убедитесь, что конфигурационные файлы всегда синхронизируются с последними изменениями и рекомендациями от создателей дистрибутива. Если проблема сохранится, рассмотрите возможность обращения к более глубоким уровням настройки сети или взаимодействия с командой поддержки Debian.