Фрагменты конфигурации, используемые в этом приложении, также доступны в примере файла ответов https://iwawocd.cewmufwd.tk/releases/bookworm/example-preseed.txt.
Заметим, что показанный пример основан на установке для архитектуры Intel x86. Если вы выполняете установку на другую архитектуру, то некоторые примеры (например, выбор клавиатуры и установка загрузчика) могут различаться и должны быть заменены на соответствующие настройки debconf для этой архитектуры.
О том, как работают различные компоненты Debian Installer, можно найти в Раздел 6.3, «Применение отдельных компонент».
При обычной установке вопросы о локализации задаются первыми, поэтому их значения можно указать только в методе initrd или параметрах загрузки ядра. Автоматический режим (Раздел B.2.3, «Автоматический режим») включает настройку auto-install/enable=true
(обычно, через псевдоним auto
). Это задерживает вопросы локализации для того, чтобы их можно было указать с любым методом.
Для указания языка и страны можно использовать локаль; возможна любая комбинация для языка, если она поддерживается debian-installer
, и страны. Если в локали указана недопустимая комбинация, то программа установки автоматически выберет локаль, подходящую для выбранного языка. Чтобы указать локаль в параметре загрузки, используйте locale=
. ru_RU
Хотя этот метод очень прост в использовании, с его помощью нельзя задать любые комбинации языка, страны и локали[19]. Поэтому есть возможность задать автоматический ответ для каждого параметра отдельно. Язык и страну также можно указывать в параметрах запуска.
# Автоответ только для языка, страны и локали. d-i debian-installer/locale string en_US # Значения можно указывать отдельно для каждого параметра. #d-i debian-installer/language string en #d-i debian-installer/country string NL #d-i debian-installer/locale string en_GB.UTF-8 # В добавок, можно указать дополнительные локали для генерации. #d-i localechooser/supported-locales multiselect en_US.UTF-8, nl_NL.UTF-8
При настройке клавиатуры выбирается раскладка и (для нелатинских раскладок) клавиша переключения между нелатинской раскладкой и раскладкой US. Во время установки доступны только основные варианты раскладок. Дополнительные варианты доступны только в установленной системе; их можно выбрать с помощью команды dpkg-reconfigure keyboard-configuration.
# Выбор клавиатуры. d-i keyboard-configuration/xkb-keymap select ru # d-i keyboard-configuration/toggle select No toggling
Чтобы не выполнять настройку клавиатуры укажите в keymap
значение skip-config
. В результате останется активной клавиатурная раскладка ядра.
Of course, preseeding the network configuration won't work if you're loading your preconfiguration file from the network. But it's great when you're booting from optical disc or USB stick. If you are loading preconfiguration files from the network, you can pass network config parameters by using kernel boot parameters.
Если нужно использовать определённый интерфейс для загрузки по сети перед загрузкой файла ответов из сети, используйте параметр загрузки interface=
. eth1
Хотя автоматическая настройка сети обычно невозможна при загрузки файла ответов по сети (с помощью «preseed/url»), вы можете обойти этот недостаток, например, если задав статический адрес на сетевом интерфейса. Данное обходное решение заставит запуститься настройку сети ещё раз после загрузки файла ответов, если создать сценарий «preseed/run» со следующими строчками:
kill-all-dhcp; netcfg
Следующие переменные debconf относятся к настройке сети.
# Disable network configuration entirely. This is useful for cdrom # installations on non-networked devices where the network questions, # warning and long timeouts are a nuisance. #d-i netcfg/enable boolean false # netcfg will choose an interface that has link if possible. This makes it # skip displaying a list if there is more than one interface. d-i netcfg/choose_interface select auto # To pick a particular interface instead: #d-i netcfg/choose_interface select eth1 # To set a different link detection timeout (default is 3 seconds). # Values are interpreted as seconds. #d-i netcfg/link_wait_timeout string 10 # If you have a slow dhcp server and the installer times out waiting for # it, this might be useful. #d-i netcfg/dhcp_timeout string 60 #d-i netcfg/dhcpv6_timeout string 60 # Automatic network configuration is the default. # If you prefer to configure the network manually, uncomment this line and # the static network configuration below. #d-i netcfg/disable_autoconfig boolean true # If you want the preconfiguration file to work on systems both with and # without a dhcp server, uncomment these lines and the static network # configuration below. #d-i netcfg/dhcp_failed note #d-i netcfg/dhcp_options select Configure network manually # Static network configuration. # # IPv4 example #d-i netcfg/get_ipaddress string 192.168.1.42 #d-i netcfg/get_netmask string 255.255.255.0 #d-i netcfg/get_gateway string 192.168.1.1 #d-i netcfg/get_nameservers string 192.168.1.1 #d-i netcfg/confirm_static boolean true # # IPv6 example #d-i netcfg/get_ipaddress string fc00::2 #d-i netcfg/get_netmask string ffff:ffff:ffff:ffff:: #d-i netcfg/get_gateway string fc00::1 #d-i netcfg/get_nameservers string fc00::1 #d-i netcfg/confirm_static boolean true # Any hostname and domain names assigned from dhcp take precedence over # values set here. However, setting the values still prevents the questions # from being shown, even if values come from dhcp. d-i netcfg/get_hostname string unassigned-hostname d-i netcfg/get_domain string unassigned-domain # If you want to force a hostname, regardless of what either the DHCP # server returns or what the reverse DNS entry for the IP is, uncomment # and adjust the following line. #d-i netcfg/hostname string somehost # Disable that annoying WEP key dialog. d-i netcfg/wireless_wep string # The wacky dhcp hostname that some ISPs use as a password of sorts. #d-i netcfg/dhcp_hostname string radish # If you want to completely disable firmware lookup (i.e. not use firmware # files or packages that might be available on installation images): #d-i hw-detect/firmware-lookup string never # If non-free firmware is needed for the network or other hardware, you can # configure the installer to always try to load it, without prompting. Or # change to false to disable asking. #d-i hw-detect/load_firmware boolean true
Заметим, что netcfg автоматически выберет маску сети,если она не указана в netcfg/get_netmask
. В этом случае, переменная будет помечена как seen
при автоматической установке. Аналогично netcfg выберет подходящий адрес шлюза, если не указано значение в netcfg/get_gateway
. Но есть специальная настройка: netcfg/get_gateway
можно установить в «none», чтобы указать, что шлюз вообще не должен использоваться.
# Используйте следующие настройки, если хотите использовать компоненту # network-consoleдля удалённой установки через SSH. Это имеет смысл, если вы # намереваетесь выполнять оставшуюся часть установки вручную. #d-i anna/choose_modules string network-console #d-i network-console/authorized_keys_url string http://10.0.0.1/openssh-key #d-i network-console/password password r00tme #d-i network-console/password-again password r00tme
More information related to network-console can be found in Раздел 6.3.10, «Installation over network-console».
В зависимости от используемого метода установки для загрузки дополнительных компонент программы установки, установки базовой системы и настройки файла /etc/apt/sources.list
в установленной системе можно использовать сервер-зеркало.
Параметр mirror/suite
определяет версию дистрибутива для устанавливаемой системы.
Параметр mirror/udeb/suite
определяет версию дистрибутива для дополнительных компонент программы установки. Он нужен только если компоненты загружаются по сети и должны соответствовать версии, которая была использована для сборки initrd, который используется для установки с помощью одноимённого метода. Обычно программа установки автоматически определяет правильное значение, и этот параметр задавать ненужно.
# Mirror protocol: # If you select ftp, the mirror/country string does not need to be set. # Default value for the mirror protocol: http. #d-i mirror/protocol string ftp d-i mirror/country string manual d-i mirror/http/hostname string http.us.debian.org d-i mirror/http/directory string /debian d-i mirror/http/proxy string # Suite to install. #d-i mirror/suite string testing # Suite to use for loading installer components (optional). #d-i mirror/udeb/suite string testing
Могут быть автоматически настроены пароль суперпользователя и имя и пароль первого обычного пользователя. Пароли могут быть заданы как нешифрованные текстовые значения или в виде хешей crypt(3).
Предупреждение | |
---|---|
Обратите внимание, что автоматическую настройку паролей использовать небезопасно, так как любой может получить доступ к файлу ответов и узнать пароли. Хранение хешей паролей считается безопасным, если для них не используются нестойкие алгоритмы хеширования DES или MD5, которые доступны для атак перебором. Для вычисления хешей рекомендуется использовать алгоритмы SHA-256 и SHA512. |
# Пропустить создание учётной записи суперпользователя (в обычной учётной # записи пользователя можно использовать sudo). #d-i passwd/root-login boolean false # Или же пропустить создание обычной учётной записи пользователя. #d-i passwd/make-user boolean false # Пароль суперпользователя, любой открытым текстом #d-i passwd/root-password password r00tme #d-i passwd/root-password-again password r00tme # или в виде хеша crypt(3). #d-i passwd/root-password-crypted password [хеш crypt(3)] # Создать учётную запись обычного пользователя. #d-i passwd/user-fullname string Debian User #d-i passwd/username string debian # Пароль обычного пользователя, или открытым текстом #d-i passwd/user-password password insecure #d-i passwd/user-password-again password insecure # или в виде хеша crypt(3). #d-i passwd/user-password-crypted password [хеш crypt(3)] # Создать первую учётную запись с заданным UID вместо значения по # умолчанию. #d-i passwd/user-uid string 1010 # Учётная запись будет добавлена в несколько стандартных начальных групп. # Чтобы это изменить -- отредактируйте и раскомментируйте строчку ниже. #d-i passwd/user-default-groups string audio cdrom video
Также, в начале значений переменных passwd/root-password-crypted
и passwd/user-password-crypted
можно указать знак «!». В этом случае, соответствующая учётная запись будет заблокирована. Это может быть удобно для учётной записи суперпользователя, если используется другой метод настройки, предоставляющий возможность выполнить административные действия или вход в систему от имени суперпользователя (например, используя аутентификацию по SSH ключу или sudo).
С помощью следующей команды (доступной из пакета whois
) можно сгенерировать хеш SHA-512 из crypt(3) для пароля:
mkpasswd -m sha-512
# Задаёт, установлены или нет аппаратные часы по Гринвичу. d-i clock-setup/utc boolean true # Здесь вы можете указать любое допустимое значение для $TZ; смотрите # допустимые значения в файле /usr/share/zoneinfo/. d-i time/zone string US/Eastern # Определяет, нужно ли использовать NTP для установки часов во время установки d-i clock-setup/ntp boolean true # Используемый сервер NTP. Значение по умолчанию указывается здесь. #d-i clock-setup/ntp-server string ntp.example.com
Использование настроек разметки жёсткого диска в автоматической установке очень ограничено; поддерживаются параметры только для partman-auto
. Вы можете выбрать разметку только свободного места на диске или всего диска. Разметку диска можно выбрать из одного из имеющихся в программе установки наборов, пользовательского набора из файла или набора из файла ответов.
Расширенные возможности разметки с использованием RAID, LVM и шифрования поддерживаются в автоматической установке, но не так гибки как при разметке без автоматической установки.
Представленные далее примеры показывают только основы по использованию наборов. Подробности смотрите в файлах partman-auto-recipe.txt
и partman-auto-raid-recipe.txt
из пакета debian-installer
. Также эти файлы доступны в репозитории debian-installer
. Заметим, что список поддерживаемых возможностей может поменяться между выпусками.
Предупреждение | |
---|---|
Идентификация дисков зависит от порядка загрузки драйверов. Если в системе есть несколько дисков, проверьте, что выбирается правильный диск перед тем как использовать автоматическую установку. |
# If the system has free space you can choose to only partition that space. # This is only honoured if partman-auto/method (below) is not set. #d-i partman-auto/init_automatically_partition select biggest_free # Alternatively, you may specify a disk to partition. If the system has only # one disk the installer will default to using that, but otherwise the device # name must be given in traditional, non-devfs format (so e.g. /dev/sda # and not e.g. /dev/discs/disc0/disc). # For example, to use the first SCSI/SATA hard disk: #d-i partman-auto/disk string /dev/sda # In addition, you'll need to specify the method to use. # The presently available methods are: # - regular: use the usual partition types for your architecture # - lvm: use LVM to partition the disk # - crypto: use LVM within an encrypted partition d-i partman-auto/method string lvm # You can define the amount of space that will be used for the LVM volume # group. It can either be a size with its unit (eg. 20 GB), a percentage of # free space or the 'max' keyword. d-i partman-auto-lvm/guided_size string max # If one of the disks that are going to be automatically partitioned # contains an old LVM configuration, the user will normally receive a # warning. This can be preseeded away... d-i partman-lvm/device_remove_lvm boolean true # The same applies to pre-existing software RAID array: d-i partman-md/device_remove_md boolean true # And the same goes for the confirmation to write the lvm partitions. d-i partman-lvm/confirm boolean true d-i partman-lvm/confirm_nooverwrite boolean true # You can choose one of the three predefined partitioning recipes: # - atomic: all files in one partition # - home: separate /home partition # - multi: separate /home, /var, and /tmp partitions d-i partman-auto/choose_recipe select atomic # Or provide a recipe of your own... # If you have a way to get a recipe file into the d-i environment, you can # just point at it. #d-i partman-auto/expert_recipe_file string /hd-media/recipe # If not, you can put an entire recipe into the preconfiguration file in one # (logical) line. This example creates a small /boot partition, suitable # swap, and uses the rest of the space for the root partition: #d-i partman-auto/expert_recipe string \ # boot-root :: \ # 40 50 100 ext3 \ # $primary{ } $bootable{ } \ # method{ format } format{ } \ # use_filesystem{ } filesystem{ ext3 } \ # mountpoint{ /boot } \ # . \ # 500 10000 1000000000 ext3 \ # method{ format } format{ } \ # use_filesystem{ } filesystem{ ext3 } \ # mountpoint{ / } \ # . \ # 64 512 300% linux-swap \ # method{ swap } format{ } \ # . # The full recipe format is documented in the file partman-auto-recipe.txt # included in the 'debian-installer' package or available from D-I source # repository. This also documents how to specify settings such as file # system labels, volume group names and which physical devices to include # in a volume group. ## Partitioning for EFI # If your system needs an EFI partition you could add something like # this to the recipe above, as the first element in the recipe: # 538 538 1075 free \ # $iflabel{ gpt } \ # $reusemethod{ } \ # method{ efi } \ # format{ } \ # . \ # # The fragment above is for the amd64 architecture; the details may be # different on other architectures. The 'partman-auto' package in the # D-I source repository may have an example you can follow. # This makes partman automatically partition without confirmation, provided # that you told it what to do using one of the methods above. 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 # 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 # When disk encryption is enabled, skip wiping the partitions beforehand. #d-i partman-auto-crypto/erase_disks boolean false
Также вы можете автоматизировать настройку массивов программного RAID. Поддерживаются RAID уровни 0, 1, 5, 6 и 10, создание неполных массивов (degraded arrays) и можно указать запасные устройства.
Предупреждение | |
---|---|
В данном типе автоматизации разметки легко ошибиться. Также эта возможность тестировалась относительно мало разработчиками |
# Метод должен быть установлен в значение "raid". #d-i partman-auto/method string raid # Задать размечаемые диски. Они будут иметь одинаковую разметку, # поэтому это работает только, если диски одинакового размера. #d-i partman-auto/disk string /dev/sda /dev/sdb # Далее нужно указать какие физические разделы будут использоваться. #d-i partman-auto/expert_recipe string \ # multiraid :: \ # 1000 5000 4000 raid \ # $primary{ } method{ raid } \ # . \ # 64 512 300% raid \ # method{ raid } \ # . \ # 500 10000 1000000000 raid \ # method{ raid } \ # . # Наконец, нужно указать как использовать определённые ранее разделы # в настройке RAID. Указывайте правильные номера разделов # для логических разделов. Поддерживается RAID 0, 1, 5, 6 и 10; # устройства разделяются с помощью "#". # Параметры: # <raidtype> <devcount> <sparecount> <fstype> <mountpoint> \ # <devices> <sparedevices> #d-i partman-auto-raid/recipe string \ # 1 2 0 ext3 / \ # /dev/sda1#/dev/sdb1 \ # . \ # 1 2 0 swap - \ # /dev/sda5#/dev/sdb5 \ # . \ # 0 2 0 ext3 /home \ # /dev/sda6#/dev/sdb6 \ # . # Полностью формат набора описан в файле partman-auto-raid-recipe.txt, # включённом в пакет debian-installer и репозиторий D-I. # Это заставит partman сделать разметку автоматически, без подтверждения. 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
Обычно, файловые системы монтируются с использованием в качестве ключа универсального уникального идентификатора (UUID); это позволяет монтировать их правильно, даже если изменились их имена устройств. UUID-ы длинные и их сложно запоминать, поэтому, по вашему желанию, программа установки может смонтировать файловые системы основываясь на традиционных именах устройств, или на основе назначенных вами меток. Если вы укажите программе установки монтировать по меткам, то все файловые системы без метки будут смонтированы на основе UUID.
Для устройств со стабильными именами, такими как логические тома LVM, при монтировании будет продолжено использование их традиционных имён, а не UUID-ы.
Предупреждение | |
---|---|
Традиционные имена устройств могут изменяться из-за порядка, в котором ядро обнаруживает устройства при загрузке, что может приводить к монтированию не тех файловых систем. Подобным образом, могут встретиться одинаковые метки, если вы подключаете новый диск или USB-устройство, и если это случается, то ваша система начинает работать непредсказуемым образом. |
# По умолчанию, используется монтирование по UUID, но вы можете # выбрать "traditional", чтобы использовать обычные имена устройств # или "label", чтобы попробовать монтирование по меткам, перед # тем как откатиться к UUID-ам. #d-i partman/mount_style select uuid
Для этого этапа, фактически, не так много автоматизируемых настроек. В основном они касаются установки ядра.
# Настроить APT для отмены автоматической установки рекомендуемых пакетов. # Использование данного параметра может привести к установке неполноценной # системы, и он должен использоваться только # очень опытными пользователями. #d-i base-installer/install-recommends boolean false # Устанавливаемый пакет (мета) с образом ядра; можно указать «none», # если ядро устанавливать не нужно. #d-i base-installer/kernel/image string linux-image-686
Настройка файла /etc/apt/sources.list
и основных параметров конфигурации выполняется автоматически на основании метода установки и ответов на ранее заданные вопросы. Необязательно вы можете добавить другие (локальные) репозитории.
# Choose, if you want to scan additional installation media # (default: false). d-i apt-setup/cdrom/set-first boolean false # You can choose to install non-free firmware. #d-i apt-setup/non-free-firmware boolean true # You can choose to install non-free and contrib software. #d-i apt-setup/non-free boolean true #d-i apt-setup/contrib boolean true # Uncomment the following line, if you don't want to have the sources.list # entry for a DVD/BD installation image active in the installed system # (entries for netinst or CD images will be disabled anyway, regardless of # this setting). #d-i apt-setup/disable-cdrom-entries boolean true # Uncomment this if you don't want to use a network mirror. #d-i apt-setup/use_mirror boolean false # Select which update services to use; define the mirrors to be used. # Values shown below are the normal defaults. #d-i apt-setup/services-select multiselect security, updates #d-i apt-setup/security_host string security.debian.org # Additional repositories, local[0-9] available #d-i apt-setup/local0/repository string \ # http://local.server/debian stable main #d-i apt-setup/local0/comment string local server # Enable deb-src lines #d-i apt-setup/local0/source boolean true # URL to the public key of the local repository; you must provide a key or # apt will complain about the unauthenticated repository and so the # sources.list line will be left commented out. #d-i apt-setup/local0/key string http://local.server/key # or one can provide it in-line by base64 encoding the contents of the # key file (with `base64 -w0`) and specifying it thus: #d-i apt-setup/local0/key string base64://LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCi4uLgo= # The content of the key file is checked to see if it appears to be ASCII-armoured. # If so it will be saved with an ".asc" extension, otherwise it gets a '.gpg' extension. # "keybox database" format is currently not supported. (see generators/60local in apt-setup's source) # By default the installer requires that repositories be authenticated # using a known gpg key. This setting can be used to disable that # authentication. Warning: Insecure, not recommended. #d-i debian-installer/allow_unauthenticated boolean true # Uncomment this to add multiarch configuration for i386 #d-i apt-setup/multiarch string i386
Вы можете выбрать любую доступную комбинацию устанавливаемых задач. Доступные задачи:
standard
(стандартные инструменты)
desktop
(графический рабочий стол)
gnome-desktop
(рабочий стол Gnome)
xfce-desktop
(рабочий стол XFCE)
kde-desktop
(рабочий стол KDE Plasma)
cinnamon-desktop
(рабочий стол Cinnamon)
mate-desktop
(рабочий стол MATE)
lxde-desktop
(рабочий стол LXDE)
web-server
(веб-сервер)
ssh-server
(сервер SSH)
Также вы можете не выбирать задачи и выполнить установку списка пакетов каким-то другим способом. Мы рекомендуем всегда включать задачу standard
.
Or if you don't want the tasksel dialog to be shown at all, preseed pkgsel/run_tasksel
(no packages are installed via tasksel in that case).
Если вы хотите установить несколько отдельных пакетов в дополнении к пакетам, устанавливаемым задачами, то вы можете использовать параметр pkgsel/include
. В значении этого параметра в качестве разделителя можно использовать запятые или пробелы, поэтому также его можно указать в командной строке ядра.
#tasksel tasksel/first multiselect standard, web-server, kde-desktop # Or choose to not get the tasksel dialog displayed at all (and don't install # any packages): #d-i pkgsel/run_tasksel boolean false # Individual additional packages to install #d-i pkgsel/include string openssh-server build-essential # Whether to upgrade packages after debootstrap. # Allowed values: none, safe-upgrade, full-upgrade #d-i pkgsel/upgrade select none # You can choose, if your system will report back on what software you have # installed, and what software you use. The default is not to report back, # but sending reports helps the project determine what software is most # popular and should be included on the first CD/DVD. #popularity-contest popularity-contest/participate boolean false
# При установке с консоли на последовательном порту обычные виртуальные # консоли (VT1-VT6) выключаются в /etc/inittab. Раскомментируйте # следующую строку, чтобы этого не происходило. #d-i finish-install/keep-consoles boolean true # Не показывать последнее сообщение о том, что установка завершена. d-i finish-install/reboot_in_progress note # Не выдвигать лоток CD при перезагрузке, что иногда может пригодиться. #d-i cdrom-detect/eject boolean false # Остановить систему после завершения установки, а # не перегружаться в установленную систему. #d-i debian-installer/exit/halt boolean true # Эта настройка позволяет выключить питание машины, а не просто остановить её. #d-i debian-installer/exit/poweroff boolean true
# В зависимости от выбранного для установки ПО, или если что-то идёт # неправильно во время процесса установки, существует вероятность появления других # вопросов. Естественно, их тоже можно автоматизировать. Чтобы получить список # всех возможных вопросов, которые могут быть заданы во время установки, выполните # установку, а затем запустите следующие команды: # debconf-get-selections --installer > файл # debconf-get-selections >> файл
[19] При задании значения для locale
равным en_NL
, например, приведёт к установке системы с локалью по умолчанию en_US.UTF-8
. Если, например, требуется en_GB.UTF-8
, то значения для автоматического ответа нужно задавать отдельно для каждого параметра.