Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Предупреждение | ||
---|---|---|
| ||
|
Информация |
---|
PXE (англ.Preboot eXecution Environment) — среда для загрузки компьютеров с помощью сетевой карты без использования жестких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы. Подробная информация об автоматической установке с помощью списка ответов: https://www.debian.org/releases/stretch/s390x/apbs01.html.ru |
Примечание |
---|
Описанная в данной статье методика установки на виртуальных машинах может приводить к черному экрану после перезагрузки. Чтобы избежать этого рекомендуется использовать виртуальные графические адаптеры:
|
Как это работает
Предполагается, что:
- установка производится на компьютер (клиент), подключенный к локальной сети;
- в этой сети имеются:
- настроенный DHCP-сервер, выдающий клиентским компьютерам не только сетевые IP-адреса, но и другие сетевые параметры (в частности, IP-адрес TFTP-сервера, с которого будет загружаться установочный образ). Далее для примера приводится установка и настройка DHCP-сервера, однако если в сети уже имеется собственный DHCP-сервер, то следует выполнить его настройку в соответствии с приведенными в статье инструкциями ;
- настроенный TFTP сервер, с которого можно загрузить установочные данные и файлы для первичной загрузки:
- tftp://192.168.56.1/se
- tftp://192.168.56.1/ce
настроенные разделяемые сетевые ресурсы, из которых можно загружать пакеты. Для загрузки могут использоваться протоколы FTP или HTTP.
Предупреждение Это не совсем обычные репозитории пакетов: в обычных репозиториях пакетов нет загрузочных модулей ядра.
Чтобы необходимые модули были доступны при сетевой установке проще всего использовать в качестве разделяемых сетевых ресурсов примонтированные установочные диски (образы дисков).Для примера используются HTTP-репозитории.
- http://192.168.56.1/repo/se
- http://192.168.56.1/repo/ce
Информация |
---|
Обратите внимание: используются РАЗНЫЕ источники данных, работающие по РАЗНЫМ протоколам, расположенные в РАЗНЫХ местах файловой системы, и, возможно, даже на разных серверах:
|
Информация |
---|
Для упрощения изложения далее предполагается, что сетевые службы DHCP, TFTP, HTTP располагаются на одном и том же компьютере. При необходимости эти службы могут быть установлены на разных компьютерах |
Как это работает:
- клиент подключается к сети и запрашивает IP-адрес, передавая в запросе информацию о собственной конфигурации;
- DHCP-сервер назначает клиенту IP-адрес и вместе с назначенным адресом передаёт клиенту дополнительные сетевые параметры, в том числа IP-адрес TFTP-сервера с необходимыми файлами сценариев установки;
- клиент подключается к TFTP-серверу и загружает файлы со сценариями установки;
- клиент выполняет установку в соответствии с полученными сценариями.
Предупреждение |
---|
Установка выполняется с заранее заданными фиксированными именами (имя хоста, имя пользователя, пароль пользователя). Рекомендуется после установки сменить имена и пароли. |
Установка и настройка DHCP/TFTP-сервера
Установка пакетов
Установить необходимые пакеты:
Command |
---|
sudo apt install tftpd-hpa pxelinux syslinux |
Где:
- tftpd-hpa - TFTP-server;
- pxelinux - загрузчик для сетевой загрузки PXE;
- syslinux - загрузчик для сетевой загрузки DOS FAT / NTFS;
Настройка службы TFTP
Служба tftpd после установки запускается автоматически и сразу предоставляет доступ к каталогу /srv/tftp/, в котором далее и будут размещены файлы для сетевой загрузки.
Установка и настройка службы DHCP
Информация |
---|
Создание собственой службы DHCP требуется только в том случае, если в сети нет уже такой действующей службы. Если в сети уже имеется служба DHCP (DHCP-сервер), то следует внести в его настройку указанные ниже параметры в соответствии его с инструкциями по эксплуатации. |
Для создания собственного DHCP-сервера:
Установить пакет:
Command sudo apt install isc-dhcp-server Настроить пакет:
В файле /etc/default/isc-dhcp-server:
Блок кода INTERFACESv4="eth0"
Настроить конфигурацию в файле /etc/dhcp/dhcpd.conf. В данной конфигурации dhcp сервер будет определять тип клиента (UEFI или Legacy BIOS) и передавать ему нужный загрузчик:
Блок кода authoritative; option domain-name "my.dom"; default-lease-time 600; max-lease-time 7200; log-facility local7; option domain-name-servers 8.8.8.8; allow booting; allow bootp; option fqdn.no-client-update on; option fqdn.rcode2 255; option pxegrub code 150 = text ; next-server 192.168.56.1; option architecture code 93 = unsigned integer 16 ; if option architecture = 00:07 { filename "bootx64.efi"; } elsif option architecture = 00:09 { filename "bootx64.efi"; } else { filename "pxelinux.0"; } subnet 192.168.56.0 netmask 255.255.255.0 { range 192.168.56.20 192.168.56.250; option broadcast-address 192.168.56.255; option routers 192.168.56.1; option subnet-mask 255.255.255.0; }
После внесения изменений в настройки перезапустить службу:
Command sudo systemctl restart isc-dhcp-server
Независимо от используещейся службы DHCP для загрузки по сети нужны следующие файлы:
- pxelinux.0;
- библиотеки syslinux;
- ядро ОС;
- специальный initrd.
Эти файлы находятся на установочном диске в каталоге netinst и для того, чтобы они могли быть переданы клиентам, они должны быть скопированы в каталог /srv/tftp/.
Для копирования файлов:
Для Astra Linux Special Edition (в примере ниже предполагается, что основной установочный диск находится в приводе компакт дисков) это копирование сделать командами:
Command sudo mkdir -p /srv/repo/se/
sudo mount /dev/sr0 /srv/repo/se/
sudo mkdir -p /srv/tftp/se/
sudo cp /srv/repo/se/netinst/linux /srv/tftp/se/
sudo cp /srv/repo/se/netinst/initrd.gz /srv/tftp/se/
Для Astra Linux Common Edition, если образ установочного диска находится в файле ce212.iso:
Command sudo mkdir -p /srv/repo/ce/
sudo mount ce212.iso /srv/repo/ce
sudo mkdir -p /srv/tftp/ce/
sudo cp /srv/repo/ce/netinst/linux /srv/tftp/ce/
sudo cp /srv/repo/ce/netinst/initrd.gz /srv/tftp/ce/
Скопировать в каталог /srv/tftp файл pxelinux.0 и необходимые библиотеки syslinux из установленной ОС:
Command sudo cp /usr/lib/PXELINUX/pxelinux.0 /srv/tftp/
sudo cp /usr/lib/syslinux/modules/bios/{chain.c32,ldlinux.c32,libcom32.c32,libutil.c32,menu.c32} /srv/tftp/
Создать каталог /srv/tftp/pxelinux.cfg/:
Command sudo mkdir -p /srv/tftp/pxelinux.cfg
Создать в этом каталоге файл /srv/tftp/pxelinux.cfg/default со следующим содержимым:
Блок кода ui menu.c32 PROMPT 0 MENU TITLE PXE Boot menu TIMEOUT 50 DEFAULT local LABEL local MENU LABEL Boot from local drive kernel chain.c32 append hd0 # Astra Linux Special Edition LABEL netinstall MENU LABEL Start Astra Linux SE net install kernel se/linux append initrd=se/initrd.gz modprobe.blacklist=evbug auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=se16 domain=my.dom astra-license/license=true url=tftp://192.168.56.1/se/preseed.cfg interface=auto netcfg/dhcp_timeout=60 astra_install=1 vga=788 # Astra Linux Common Edition LABEL netinstall MENU LABEL Start Astra Linux CE net install kernel ce/linux append initrd=ce/initrd.gz modprobe.blacklist=evbug auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=ce212 domain=my.dom astra-license/license=true url=tftp://192.168.56.1/ce/preseed.cfg interface=auto netcfg/dhcp_timeout=60 vga=788
Информация При использовании приведенного выше файла по умолчанию загрузка клиента выполняется с локального жесткого диска. Это сделано для предотвращения повторной автоматической установки после завершения первой установки, или случайной установки на компьютер с уже установленной ОС, подключенный к этой же сети. Важные параметры:
hostname - имя хоста, которое будет использовано при автоматической установке ОС;
domain - имя домена ;
url - адрес, по которому должны быть доступны конфигурационные файлы. В данном примере используется протокол TFTP, однако можно использовать FTP или HTTP (файлы при этом должны быть размещены в соответствующих локациях).
append ... astra_install=1 - параметр ядра astra_install=1 необходим для корректной установки Astra Linux Special Edition с включенным МКЦ.
Для загрузки в режиме UEFI служит специальный EFI образ загрузчика grub. Для его установки:
Загрузить архив с образом с помощью web-браузера по ссылке: скачать. По умолчанию архив будет сохранен в подкаталоге Загрузки домашнего каталога;
Распаковать архив Загрузки/netinst.tar.gz в каталог /srv/tftp:
Command sudo tar xvf Загрузки/netinst.tar.gz -C /srv/tftp
Отредактировать конфигурационный файл /srv/tftp/debian-installer/amd64/grub/grub.cfg:
Блок кода if loadfont $prefix/font.pf2 ; then set gfxmode=800x600 set gfxpayload=keep insmod efi_gop insmod efi_uga insmod video_bochs insmod video_cirrus insmod gfxterm insmod png terminal_output gfxterm fi if background_image /isolinux/splash.png; then set color_normal=light-gray/black set color_highlight=white/black else set menu_color_normal=cyan/blue set menu_color_highlight=white/blue fi menuentry "Boot default EFI bootloader" { set background_color=black regexp -s root '\((.+)\)' "$cmdpath" chainloader /EFI/Boot/Bootx64.efi } # Установка Astra Linux Special Edition menuentry 'Install Astra Linux SE' { set background_color=black linux /se/linux modprobe.blacklist=evbug debian-installer/allow_unauthenticated=true auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=test2 domain=my.dom astra-license/license=true url=tftp://192.168.56.1/se/preseed.cfg interface=auto netcfg/dhcp_timeout=60 initrd /se/initrd.gz } # Установка Astra Linux Common Edition menuentry 'Install Astra Linux CE' { set background_color=black linux /ce/linux modprobe.blacklist=evbug debian-installer/allow_unauthenticated=true auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=test2 domain=my.dom astra-license/license=true url=tftp://192.168.56.1/ce/preseed.cfg interface=auto netcfg/dhcp_timeout=60 initrd /ce/initrd.gz }
При редактировании следует указать правильное имя домена и пути поиска файлов. При этом, несмотря на указание в имени пути протокола FTP, в самом деле используется протокол TFTP, что следует учесть, указывая имя файла. По умолчанию в файле задана загрузка образа EFI из EFI/Boot/Bootx64.efi (на некоторых системах может быть иначе). Это сделано для того, чтобы избежать повторной автоматической установки после завершения первой установки, или случайной установки на компьютер с уже установленной ОС, подключенный к этой же сети;
Перезапустить службы:
Command sudo systemctl restart isc-dhcp-server # если используется
sudo systemctl restart tftpd-hpa
Автоматическая установка с помощью файла preseed.cfg
Файл preseed.cfg для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) см. далее.
Файл preseed.cfg для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6): preseed_se16.cfg.
Файл preseed.cfg для Astra Linux Common Edition 2.12: preseed_ce.cfg.
Файл после скачивания скопировать в каталог установочных файлов соответствующего дистрибутива под именем preseed.cfg:
Информация |
---|
sudo cp preseed_se16.cfg /srv/tftp/se/preseed.cfg |
или
Информация |
---|
sudo cp preseed_ce.cfg /srv/tftp/ce/preseed.cfg |
Важные параметры файла preseed:
Путь к HTTP-репозиторию с пакетами для установки:
Блок кода |
---|
# Репозиторий для установки # Если вы выберете ftp, то mirror/country string устанавливать не обязательно d-i mirror/protocol string http d-i mirror/country string manual d-i mirror/http/hostname string 192.168.56.1 # для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) d-i mirror/http/directory string /repo/se # или, вариант для Astra Linux Common Edition 2.12 #d-i mirror/http/directory string /repo/ce d-i mirror/http/proxy string |
Или вариант для FTP-репозиториев:
Блок кода |
---|
d-i mirror/protocol string ftp d-i mirror/ftp/hostname string 192.168.56.1 d-i mirror/ftp/directory string /repo/se # или, вариант для Astra Linux Common Edition 2.12 #d-i mirror/ftp/directory string /repo/ce d-i mirror/ftp/proxy string |
Часовой пояс:
Блок кода |
---|
# Здесь вы можете указать любое допустимое значение для $TZ; смотрите # допустимые значения в файле /usr/share/zoneinfo/. d-i time/zone string Europe/Moscow |
В следующем блоке подготавливаются разделы на жестком диске (по умолчанию стоит автоматическое создание с использованием всего диска, с одним корневым разделом и разделом поддкачки (см. Область подкачки (swap): особенности применения и обеспечения безопасности)):
Раскрыть |
---|
#Если система имеет свободное место, вы можете выбрать для разметки # d-i partman-efi/non_efi_system boolean true # Если один из дисков, который нужно разметить с помощью автоматической |
Создание пользователя user и задание пароля:
Предупреждение | ||
---|---|---|
Не рекомендуется использовать пароли в виде открытого текста.
Эта команда запросит ввод пароля и выведет на экран кеш этого пароля. |
Блок кода |
---|
# Создать учётную запись обычного пользователя. d-i passwd/user-fullname string u d-i passwd/username string u # Пароль обычного пользователя, или открытым текстом #d-i passwd/user-password password 12345678 #d-i passwd/user-password-again password 12345678 # или в виде MD5 хеша. d-i passwd/user-password-crypted password $1$EPkHS/dI$0tl23aI/oMBBNdBVZP0o.1 |
Устанавливаемые компоненты:
Блок кода |
---|
tasksel tasksel/first multiselect Base, Fly # Доступные компоненты и входящие в них пакеты можно посмотреть в /usr/share/tasksel/debian-tasks.desc |
Дополнительно устанавливаемые пакеты можно указать в:
Блок кода |
---|
# Отдельные дополнительные пакеты для установки d-i pkgsel/include string openssh-server |
Установка загрузчика. По умолчанию, загрузчик ставится на первый диск в MBR. Но в Astra Linux Common Edition 2.12 необходимо указать вручную, на какой диск ставить загрузчик:
Блок кода |
---|
# В ОС ALCE необходимо указывать на какой диск ставить загрузчик grub-installer grub-installer/choose_bootdev select /dev/sda d-i grub-pc/install_devices multiselect /dev/sda # По умолчанию grub ставится на первый диск # Или же, если вы хотите установить загрузчик не в mbr, # то раскомментируйте и отредактируйте следующие строки: #d-i grub-installer/only_debian boolean false #d-i grub-installer/with_other_os boolean false #d-i grub-installer/bootdev string (hd0,0) #d-i grub-pc/install_devices multiselect /dev/sda # Для установки grub на несколько дисков: #d-i grub-installer/bootdev string (hd0,0) (hd1,0) (hd2,0) |
Пароль для загрузчика:
Предупреждение | ||
---|---|---|
Не рекомендуется использовать пароли в виде открытого текста.
Эта команда запросит ввод пароля и выведет на экран кеш этого пароля. |
Блок кода |
---|
# Необязательный пароль на grub, или в виде открытого текста #d-i grub-installer/password password 12345678 #d-i grub-installer/password-again password 12345678 #grub-installer grub-installer/password-mismatch error # или в шифрованном виде с помощью хеша MD5, смотрите grub-md5-crypt(8). d-i grub-installer/password-crypted password $1$EPkHS/dI$0tl23aI/oMBBNdBVZP0o.1 |
Самый последний параметр позволяет выполнить команды перед завершением установки и перезагрузки компьютера, например включить ssh сервер:
Блок кода |
---|
# Эта команда выполняется перед окончанием установки, пока ещё # есть рабочий каталог /target. Вы можете выполнить chroot в /target # и непосредственно использовать его, или же воспользоваться командами # apt-install и in-target для облегчения задачи установки пакетов и # запуска команд в целевой системе. d-i preseed/late_command string in-target systemctl enable ssh.service |
Теперь, если подключить машину к этой сети и настроить в BIOS/UEFI загрузку по сети, автоматически запустится установка Astra Linux . Так же можно установить систему вручную, ответив на все вопросы, и после установки выполнить команды:
Command |
---|
sudo debconf-get-selections --installer > preseed.new |
Это создаст файл preseed.new с готовыми ответами, который можно использовать как прототип для создания конфигурации для следующих установок.
Автоматическая установка обновлений после установки системы
В Astra Linux Common Edition 2.12 можно выполнить обновление указав в late-command:
Блок кода |
---|
d-i preseed/late_command string in-target apt update; in-target apt dist-upgrade; |
В Astra Linux Special Edition для автоматической установки обновлений нужно создать файл update.service в корне ftp или http сервера с таким содержимым:
Блок кода |
---|
[Unit] Description=Update system After=rc-local.service network-online.target Before=getty.target Before=systemd-user-sessions.service [Service] StandardOutput=tty Type=oneshot ExecStart=/usr/local/bin/update.sh [Install] WantedBy=multi-user.target |
Там же создать файл update.sh в котором должны быть указаны репозитории с обновлениями. Репозитории могут размещаться где угодно, важно только правильно указать путь к ним:
Блок кода |
---|
#!/bin/bash clear # вносим в /etc/apt/sources.list используемые репозитории (для примера - репозиторий server, работающий по протоколу ftp): echo "deb ftp://server/repo/se/mounted-iso-main smolensk main contrib non-free" > /etc/apt/sources.list echo "deb ftp://server/repo/se/mounted-iso-devel smolensk main contrib non-free" >> /etc/apt/sources.list echo "deb ftp://server/repo/se/repository-update smolensk main contrib non-free" >> /etc/apt/sources.list echo "deb ftp://server/repo/se/repository-update-dev smolensk main contrib non-free" >> /etc/apt/sources.list echo "Updating system, please wait..." echo "Do not turn off your computer!" apt-get update &> /dev/null apt-get -y dist-upgrade &> /dev/null apt-get -y install chromium &> /dev/null rm -f /etc/systemd/system/multi-user.target.wants/update.service systemctl daemon-reload rm -f /usr/local/bin/update.sh reboot |
а в preseed.conf в конец добавляем команды для загрузки и запуска созданных файлов:
Блок кода |
---|
d-i preseed/late_command string in-target systemctl enable ssh ; \ in-target wget -O /usr/local/bin/update.sh ftp://10.0.2.20/se/update.sh; \ in-target chmod +x /usr/local/bin/update.sh; \ in-target wget -O /lib/systemd/system/update.service ftp://10.0.2.20/se/update.service; \ in-target systemctl enable update.service; |
Если всё сделано корректно - то после завершения установки ОС, после первой перезагрузки выполнится сценарий обновления, самоудалится и перезагрузит машину.
Приложение: partman-auto - автоматическая разметка дисковых разделов
Информация |
---|
Данная статья является переводом статьи : https://github.com/xobs/debian-installer/blob/master/doc/devel/partman-auto-recipe.txt |
0. Введение
Директива partman-auto является частью системы управления дисковыми разделами, автоматизирующей разбиение дисков на дисковые разделы. Порядок разбиения управляется рецептами, предоставляемыми в виде файлов, а также может управляться пакетами udeb (пакетами, предназначенными для Debian Installer) или указанием параметров разметки в файле предварительных настроек preseed. В настоящем документе описываются формы рецептов и порядок их применения.
1. Форма рецептов
Все символы перевода строки и табуляции преобразуются в пробелы. Далее каждые два или более пробела заменяются одним пробелом. Почти все лексемы разделяются пробелами. Важным исключением является открывающая фигурная скобка ("{"); перед котоной _не_ должно быть пробелов.
Далее в правилах пробелы обозначаются символом подчеркивания ("_").
Блок кода |
---|
<рецепт>::=<заголовок>_<раздел> <заголовок>::=<простое имя>|<имя debconf> <простое имя>::=<имя>_: |
<имя> может быть, например "Multi user system".
Блок кода |
---|
<имя debconf>::=<шаблон debconf>_:: |
Назначением лексемы <имя debconf> является перевод имен рецептов на другие языки.
Блок кода |
---|
<раздел>::=<раздел>|<раздел>_<разделы> <раздел>::=<лимиты>_<спецификации>_. <лимиты>::=<минимальный размер>_<приоритет>_<максимальный размер>_<файловая система> |
- <минимальный размер> задает минимальный допустимый размер дискового раздела в мегабайтах. Размер округляется до размера дискового цилиндра, поэтому есть задать минимальный размер 20МБ при размере цилиндра 12МБ размер дискового раздела будет 12МБ. Размеры также могут быть заданы в процентах от общего объёма системного ОЗУ или (начиная с partman-auto версии 87) как число плюс проценты (например, "2000+50%"), что задает размер как указанное число плюс указанный процент от общего объёма системного ОЗУ;
- <приоритет> - некоторое число, обычно между числами <минимальный размер> и <максимальный размер>. Оно определяет приоритеты разделов при назначении размера. Если <приоритет> слишком мал (относительно приоритета другого раздела) этот раздел получит размер ближе к величине <минимальный размер>. Для маленьких разделов рекомендуется задавать <приоритет> больше чем их <максимальный размер>;
- <максимальный размер> - максимальный размер раздела. Специальное значение -1 используется для задания разделов неограниченного размера;
- <файловая система> - файловая система для этого раздела. Может быть задана как $default_filesystem для использования значения по умолчанию (в настоящее время ext3).
Блок кода |
---|
<спецификаторы>::=<спецификатор>|<спецификатор>_<спецификаторы> <спецификатор>::=<внутренний спецификатор>|<регулярный спецификатор>|<спецификатор типа> <внутренний спецификатор>::=$primary{_}|$bootable{_}|$default_filesystem{_} |
- $primary{_} - раздел должен быть создан как первичный (если это возможно);
- $bootable{_} - раздел должен быть загрузочным;
- $default_filesystem{_} - определяет, что должна использоваться файловая система, заданная по умолчанию (в настоящее время ext3).
Блок кода |
---|
<регулярный спецификатор>::=<имя файла>{ <содержимое файла> } |
- <file name> - имя файла, который будет создан в разделе (подробности см. часть 2.4 руководства по partman);
- <file contents> - информация, которая будет записана в этот файл.
Блок кода |
---|
<спецификатор типа>::=$lvmok{_}|$defaultignore{_}|$lvmignore{_} |
- $lvmok{_} - указувает, что раздел может быть логическим томом LVM при использовании LVM;
- $defaultignore{_} - используется для очистки принятых по умолчанию параметров раздела (применимо при использовании LVM);
- $lvmignore{_} - используется для очистки принятых по умолчанию параметров раздела LVM (применимо при неиспользовании LVM)
Спецификаторы defaultignore и lvmignore позволяют в одном рецепте определить разные параметры, например, раздела /boot в LVM-схеме разбиения на разделы и не-LVM схеме.
2. Примеры
Пример: корневой раздел и раздел подкачки (swap)
Блок кода |
---|
partman-auto/text/atomic_scheme: 500 10000 1000000 ext4 $primary{ } $bootable{ } method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ / } . 64 512 300% linux-swap method{ swap } format{ } . |
Этим рецептом задается, что:
- Раздел root должен быть не менее 500 МБ и фактически не имеет максимального размера. Размер раздела swap изменяется от 64МБ до тройного размера системного ОЗУ;
- Параметр $bootable{ } делает раздел загружаемым, и параметр $primary{ } делает раздел первичным.
Кроме того, в примере используются параметры:
- method{ format } - указывает, что раздел должен быть отформатирован. Для разделов подкачки (swap) используется значение "swap". Для создания раздела без форматирования используется значение "keep" (такой раздел может применяться для резервирования дискового пространства);
- format{ } - следует указать, чтобы раздел был отформатирован;
- use_filesystem{ } - указывает, что на разделе размещается файловая система;
- filesystem{ ext4 } - указывает тип файловой системы для размещения на разделе;
mountpoint{ / } - задает точку монтирования раздела. Дополнительно можно задать опции монтирования, например, для задания опций "nodev,ro":
Блок кода options/nodev{ nodev } options/ro{ ro }
Также возможно задать метку файловой системы для поддерживающих метки файловых систем. Например, для задания метки "astralinux":
Блок кода |
---|
label{ astralinux } |
При установке должен быть отформатирован один дисковый раздел, помеченный как:
Блок кода |
---|
method{ format } |
Пример: корневой раздел, раздел подкачки и отдельный раздел /home
Блок кода | ||
---|---|---|
| ||
300 4000 7000 ext4 $primary{ } $bootable{ } method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ / } . 64 512 300% linux-swap method{ swap } format{ } . 100 10000 1000000000 ext4 method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /home } . |
Информация |
---|
Разделы будут создаваться в том порядке, в котором они перечислены в рецепте. |
3. Опции, специфичные для LVM
При использовании метода автоматического разбиения "lvm" в рецепте задаются специальные опции. Это позволяет разбить на разделы несколько дисков, определяя разделы, содержащие физические тома, принадлежность этих томов группам томов, имена и принадлежность логических томов.
В одной сессии может быть обработано несколько дисков, что также должно быть указано в рецепте. Разделы, не являющиеся логическими томами и не имеющие назначенных дисков (например, /boot) по умолчанию размещаются на первом диске. Для явного задания физического тома определим раздел следующим образом:
Блок кода |
---|
100 1000 1000000000 ext4 $defaultignore{ } $primary{ } method{ lvm } device{ /dev/hdb } vg_name{ vg00 } . |
Параметры "device{ ... }" и "vg_name{ }" опциональны.
Указанные в параметре device устройства обязательно должны быть объявлены с помощью параметра partman-auto/disk.
Группа томов, в которую входит логический том, может быть задана как "in_vg{ }", например:
Блок кода |
---|
96 512 300% linux-swap $lvmok{ } in_vg{ vg00 } lv_name{ myswap } method{ swap } format{ } . |
Параметр "lv_name{ }" задает имя логического тома, который будет создан.
4. Зависимость от архитектуры
Некоторые архитектуры предъявляют специфические требования к дисковым разделам. Например, многие из них требуют выделения специального дискового радела для поддержки загрузки. В частности, так называемые NewWorld PowerMAC машины требуют загрузочный дисковый раздел, размещенный в начале дискаn. Ниже приведен фрагмент рецепта для создания такого раздела:.
Блок кода |
---|
1 1 1 hfs $bootable{ } method{ newworld } . |
Этот раздел должен быть первым в списке разделов и он не должет быть отформатирован.
Другой пример — архитектура netwinder, требующая небольшой раздел /boot, отформатированный в файловую систему ext2 версии 0:
Блок кода |
---|
50 500 100 ext2 $primary{ } $bootable{ } method{ format } format{ } use_filesystem{ } filesystem{ ext2r0 } mountpoint{ /boot } . |
И, наконец, пример настройки загрузочного раздела EFI для архитектуры ia64:
Блок кода |
---|
100 100 150 fat16 $primary{ } method{ efi } format{ } . |
Для других архитектур см. соответствующие рецепты в udeb-пакете partman_auto.
5. Ограничения
Из-за ограничений реализации partman-auto для того, чтобы было использовано всё свободное дисковое пространство, должен быть задан один раздел максимального размера. Обычно для этого используется раздел /home, которому назначается максимальный размер 1000000000, что достаточно для существующих устройств хранения данных. Если большой раздел /home не нужен, можно задать дополнительный дисковый раздел с размером 1000000000, с методом создания "keep" и оставить его не примонтированым. После завершения инсталляции такой раздел можно удалить.
6. Как вычисляются размеры разделов
Предположим, требуется создать N разделов и min[i], max[i] и priority[i] — максимальный размер, минимальный размер и приоритет раздела i как описано в части 1 настоящей статьи.
Предположим free_space — размер свободного места для размещения разделов. Тогда:
Блок кода |
---|
for(i=1;i<=N;i++) { factor[i] = priority[i] - min[i]; } ready = FALSE; while (! ready) { minsum = min[1] + min[2] + ... + min[N]; factsum = factor[1] + factor[2] + ... + factor[N]; ready = TRUE; for(i=1;i<=N;i++) { x = min[i] + (free_space - minsum) * factor[i] / factsum; if (x > max[i]) x = max[i]; if (x != min[i]) { ready = FALSE; min[i] = x; } } } |
В итоге значение min[i] будет значением размера радела i.
Приложение. Особенности настройки параметров сети
Eсли файл ответов загружается из сети, то настройка параметров сети выполняется до загрузки файла ответов, и параметры настройки сети, заданные в этом файле, игнорируются. То есть, настройка сети с помощью файла ответов по умолчанию применима если загрузка происходит с компакт-диска или USB-накопителя. При загрузке файла ответов из сети можно только указать используемый для загрузки файлов ответов сетевой интерфейс, для чего используется параметр ядра interface, например interface=eth1
.
Принудительно выполнить перенастройку сети (например, задать статический адрес) с помощью файла ответов после завершения установки по сети можно следующим способом:
Создать на ftp-сервере сценарий со следующим содержимым:
Блок кода #!/bin/sh kill-all-dhcp; netcfg
При выполнении этого сценария будут отключены службы автоматической настройки сети через DHCP и выполнены директивы netcfg из файла ответов (список возможных директив см. ниже).
Сделать файл с созданным сценарием исполняемым:
Command sudo chmod +x <имя_файла_со_сценарием> Добавить следующую строку в файл ответов непосредственно перед статической настройкой сети:
Блок кода d-i preseed/run string ftp://<путь_к_файл_со_сценарием>
Для настройки сети могут использоваться следующие переменные debconf:
Пер
Переменная | Описание |
---|---|
d-i netcfg/enable boolean false | Полностью выключить настройку сети. Это полезно при установке на устройства, не имеющие сети, когда вопросы о сети неуместны. |
d-i netcfg/choose_interface select auto | Автоматический выбор активного сетевого интерфейса, если такой имеется. Если имеется более одного интерфейса, то при данной настройке список интерфейсов выводиться не будет. |
d-i netcfg/choose_interface select eth1 | Принудительный выбор указанного сетевого интерфейса (в данном случае - интерфейс eth1). |
d-i netcfg/link_wait_timeout string 10 | Время ожидания появления связи (link) (по умолчанию 3 секунды). Значение указывается в секундах. |
d-i netcfg/dhcp_timeout string 60 d-i netcfg/dhcpv6_timeout string 60 | Время ожидания параметров DHCP |
d-i netcfg/disable_autoconfig boolean true | Отключение автоматической настройки сети, переход к ручной настройке. |
d-i netcfg/dhcp_failed note d-i netcfg/dhcp_options select Configure network manually | Игнорирование отсутствия DHCP-сервера |
d-i netcfg/get_nameservers string 192.168.1.1 | Статические настройки параметров сети (пример для IPv4). |
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 | Статические настройки параметров сети (пример для IPv6). |
d-i netcfg/hostname string somehost | Принудительное задание имени хоста (значения, предлагаемые DHCP или реверсивным DNS игнорируются). |
d-i netcfg/wireless_wep string | Выключение диалога о ключе WEP |
d-i netcfg/dhcp_hostname string radish | Специальное имя DHCP-сервера, которое используют некоторые провайдеры в качестве некоего пароля. |
d-i hw-detect/load_firmware boolean true | Разрешение загрузки несвободных микропрограмм без запроса подтверждения (или значение false для запрета загрузки). |
netcfg/get_netmask string 255.255.255.0 | Принудительное задание маски сети. Если не задано, то маска выбирается автоматически. |
netcfg/get_gateway string 192.168.1.1 | Принудительное задание адреса сетевого шлюза. Если не задано, то адрес сетевого шлюза выбирается автоматически. Специальное значение none указывает, что шлюз не используется. |
Пример файла preseed.cfg для Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.7
Особенности установки:
- Загрузка выполняется из Интернет-репозитория Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.7 (см. Интернет-репозитории Astra Linux Special Edition x.7);
Установка выполняется с раздельными дисковыми разделами для корневого каталога и каталогов /boot и /tmp и без создания раздела подкачки (подробнее про рекомендованную структуру разделов см. Astra Linux Red Books):
Блок кода d-i partman-auto/expert_recipe string myroot :: \ 512 16384 512 ext2 \ $primary{ } $bootable{ } \ method{ format } format{ } use_filesystem{ } filesystem{ ext2 } mountpoint{ /boot } .\ 8192 16384 16384 ext4 \ method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ / } .\ 2048 16384 2048 ext4 \ method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /tmp } options/noexec{ noexec } options/nodev{ nodev } options/nosuid{ nosuid } .\ 500 8192 -1 ext4 \ method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /home } . d-i partman-auto/choose_recipe select myroot
Установка ПО выполняется в минимальной конфигурации (только базовые пакеты Base packages и графическая оболочка Fly desktop), дополнительно устанавливается служба SSH Server для обеспечения возможности удаленного управления компьютером:
Блок кода tasksel tasksel/first multiselect Base packages, Fly desktop, SSH server
Установка ПО Astra Linux Directory (ALD) не выполняется;
- Создается пользователь-администратор с именем astra и паролем 12345678;
- В примере файла ОС устанавливается c максимальным уровнем защищенности, однако возможны варианты:
Максимальный уровень защищенности:
Блок кода d-i astra-additional-setup/os-check select Maximum security level Smolensk
Усиленный уровень защищенности:
Блок кода d-i astra-additional-setup/os-check select Advanced security level Voronezh
Базовый уровень защищенности:
Блок кода d-i astra-additional-setup/os-check select Base security level Orel
- Если это позволяет выбранный уровень защищенности, то могут быть включены МРД и МКЦ. Также может быть запрещена трассировка:
Максимальный уровень защищенности:
Блок кода d-i astra-additional-setup/additional-settings-smolensk multiselect Enable Mandatory Integrity Control, Enable Mandatory Access Control, Disable ptrace capability
Усиленный уровень защищенности:
Блок кода d-i astra-additional-setup/additional-settings-voronezh multiselect Enable Mandatory Integrity Control, Disable ptrace capability
Базовый уровень защищенности:
Блок кода d-i astra-additional-setup/additional-settings-orel multiselect Disable ptrace capability
- После установки:
- Удалятся серверная служба синхронизации времени ntp, и включается клиентская служба синхронизации времени systemd-timesyncd.service (см. Службы синхронизации времени в ОС Astra Linux):
Блок кода d-i preseed/late_command string in-target apt purge -y ntp ; \ in-target systemctl enable systemd-timesyncd.service ; \
Удаляются созданные при установке сетевые подключения:
Блок кода in-target rm -f /etc/NetworkManager/system-connections/*;
(сетевые подключения будут автоматически созданы при включении компьютера после установки).
Пример файла preseed.cfg:
Блок кода | ||
---|---|---|
| ||
# Сетевой репозиторий для установки d-i mirror/protocol string http d-i mirror/http/hostname string dl.astralinux.ru d-i mirror/http/directory string /astra/stable/1.7_x86-64/repository-main # Настройки языка d-i mirror/country string manual d-i debian-installer/locale string ru_RU d-i debian-installer/locale select ru_RU.UTF-8 d-i debian-installer/language string ru d-i debian-installer/country string RU d-i debian-installer/keymap string ru # Настройки клавиатуры d-i console-tools/archs select at d-i console-keymaps-at/keymap select ru d-i console-setup/toggle string Ctrl+Shift d-i console-setup/layoutcode string ru d-i keyboard-configuration/toggle select Ctrl+Shift d-i keyboard-configuration/layoutcode string ru d-i keyboard-configuration/xkb-keymap select ru d-i languagechooser/language-name-fb select Russian d-i countrychooser/country-name select Russia # Настройки сетевого интерфеска d-i netcfg/choose_interface select auto # Выбор компонент репозитория d-i apt-setup/non-free boolean true d-i apt-setup/contrib boolean true d-i apt-setup/services-select none # Настройка часов и синхронизации времени d-i clock-setup/utc boolean true d-i time/zone string Europe/Moscow d-i clock-setup/ntp boolean false # Разметка диска d-i partman-auto/method string regular d-i partman-auto/purge_lvm_from_device boolean true d-i partman-lvm/confirm boolean true # Для режима legacy bios: d-i partman-auto/expert_recipe string myroot :: \ 512 16384 512 ext2 \ $primary{ } $bootable{ } \ method{ format } format{ } use_filesystem{ } filesystem{ ext2 } mountpoint{ /boot } .\ 8192 16384 16384 ext4 \ method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ / } .\ 2048 16384 2048 ext4 \ method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /tmp } options/noexec{ noexec } options/nodev{ nodev } options/nosuid{ nosuid } .\ 500 8192 -1 ext4 \ method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /home } . d-i partman-auto/choose_recipe select myroot #d-i partman-auto/choose_recipe select atomic # Для режима UEFI: # d-i partman-auto/choose_recipe select /lib/partman/recipes-amd64-efi/30atomic # Этот параметр заставляет partman выполнить разметку автоматически без подтверждения. d-i partman/confirm_write_new_label boolean true d-i partman/choose_partition select finish d-i partman/confirm boolean true d-i partman-auto-crypto/erase_disks boolean true d-i partman-basicfilesystems/no_swap boolean false d-i partman-target/mount_failed boolean true d-i partman-partitioning/unknown_label boolean true d-i partman-auto/purge_lvm_from_device string true d-i partman-lvm/vgdelete_confirm boolean true d-i partman/confirm_write_new_label string true d-i partman-lvm/confirm boolean true d-i partman/confirm_nooverwrite boolean true d-i base-installer/kernel/image string linux-image-5.10-generic d-i passwd/make-user boolean true # Учетная запись и пароль пользователя d-i passwd/user-fullname string astra d-i passwd/username string astra d-i passwd/user-password password 12345678 d-i passwd/user-password-again password 12345678 d-i debian-installer/allow_unauthenticated string true # Выбор ПО для установки tasksel tasksel/first multiselect Base packages, Fly desktop, SSH server tasksel tasksel/astra-feat-setup multiselect # Выбор уровня защищенности ОС d-i astra-additional-setup/os-check select Maximum security level Smolensk # Выбор параметров ОС d-i astra-additional-setup/additional-settings-smolensk multiselect Enable Mandatory Integrity Control, Enable Mandatory Access Control, Disable ptrace capability tripwire tripwire/use-localkey boolean false tripwire tripwire/use-sitekey boolean false tripwire tripwire/installed note ok portsentry portsentry/warn_no_block note ok astra-license astra-license/license boolean true krb5-config krb5-config/kerberos_servers string libnss-ldapd libnss-ldapd/ldap-base string libnss-ldapd libnss-ldapd/ldap-uris string libnss-ldapd libnss-ldapd/nsswitch multiselect services ald-client ald-client/make_config boolean false ald-client ald-client/manual_configure false astra-feat-setup astra-feat-setup/feat multiselect kiosk mode false astra-feat-setup astra-feat-setup/feat multiselect Служба ALD false d-i console-cyrillic/switch select "Клавиша Menu" d-i console-cyrillic/toggle select Control+Shift d-i samba-common/dhcp boolean false d-i samba-common/workgroup string testgroup1 popularity-contest popularity-contest/participate boolean false d-i grub-installer/only_debian boolean true d-i grub-installer/with_other_os boolean true # Пароль загрузчика grub d-i grub-installer/password password 12345678 d-i grub-installer/password-again password 12345678 grub-installer grub-installer/password-mismatch error # Не показывать последнее сообщение о том, что установка завершена. d-i finish-install/reboot_in_progress note d-i finish-install/exit/poweroff boolean true d-i preseed/late_command string in-target apt purge -y ntp ; \ in-target systemctl enable systemd-timesyncd.service ; \ in-target rm -f /etc/NetworkManager/system-connections/*; |