- Установка и настройка DHCP/TFTP-сервера
- Установка пакетов
- Настройка службы TFTP
- Установка и настройка службы DHCP
- Автоматическая установка с помощью файла preseed.cfg
- Автоматическая установка обновлений после установки системы
- Автоматическая разметка дисковых разделов с помощью partman-auto
- 1. Форма рецептов
- 2. Примеры
- Пример: корневой раздел и раздел подкачки (swap)
- Пример: корневой раздел, раздел подкачки и отдельный раздел /home
- 3. Опции, специфичные для LVM
- 4. Зависимость от архитектуры
- 5. Ограничения
- 6. Как вычисляются размеры разделов
- Особенности настройки параметров сети
- Пример файла preseed.cfg для Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.7
- Загрузка по сети в режиме восстановления (rescue mode)
Установка и настройка DHCP/TFTP-сервера
Установка пакетов
Установить необходимые пакеты:
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-сервера:
sudo apt install isc-dhcp-server |
В файле /etc/default/isc-dhcp-server:
Настроить конфигурацию в файле /etc/dhcp/dhcpd.conf. В данной конфигурации dhcp сервер будет определять тип клиента (UEFI или Legacy BIOS) и передавать ему нужный загрузчик:
После внесения изменений в настройки перезапустить службу:
sudo systemctl restart isc-dhcp-server |
Независимо от используещейся службы DHCP для загрузки по сети нужны следующие файлы:
- pxelinux.0;
- библиотеки syslinux;
- ядро ОС;
- специальный initrd.
Эти файлы находятся на установочном диске в каталоге netinst и для того, чтобы они могли быть переданы клиентам, они должны быть скопированы в каталог /srv/tftp/.
Для копирования файлов:
Для Astra Linux Special Edition (в примере ниже предполагается, что основной установочный диск находится в приводе компакт дисков) это копирование сделать командами:
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:
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 из установленной ОС:
sudo cp /usr/lib/PXELINUX/pxelinux.0 /srv/tftp/
sudo cp /usr/lib/syslinux/modules/bios/
Создать каталог /srv/tftp/pxelinux.cfg/:
sudo mkdir -p /srv/tftp/pxelinux.cfg
Создать в этом каталоге файл /srv/tftp/pxelinux.cfg/default со следующим содержимым:
При использовании приведенного выше файла по умолчанию загрузка клиента выполняется с локального жесткого диска. Это сделано для предотвращения повторной автоматической установки после завершения первой установки, или случайной установки на компьютер с уже установленной ОС, подключенный к этой же сети. |
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:
sudo tar xvf Загрузки/netinst.tar.gz -C /srv/tftp
Отредактировать конфигурационный файл /srv/tftp/debian-installer/amd64/grub/grub.cfg:
При редактировании следует указать правильное имя домена и пути поиска файлов. При этом, несмотря на указание в имени пути протокола FTP, в самом деле используется протокол TFTP , что следует учесть, указывая имя файла. По умолчанию в файле задана загрузка образа EFI из EFI/Boot/Bootx64.efi (на некоторых системах может быть иначе). Это сделано для того, чтобы избежать повторной автоматической установки после завершения первой установки, или случайной установки на компьютер с уже установленной ОС, подключенный к этой же сети;
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 -репозиториев:
В следующем блоке подготавливаются разделы на жестком диске (по умолчанию стоит автоматическое создание с использованием всего диска, с одним корневым разделом и разделом подкачки (см. Область подкачки (swap): особенности применения и обеспечения безопасности)):
# Если один из дисков, который нужно разметить с помощью автоматической
# разметки, содержит старую конфигурацию LVM, то пользователю выдаётся
# предупреждение. Ответ можно автоматизировать.
d-i partman-auto/purge_lvm_from_device boolean true
# И подтвердить запись lvm разделов.
d-i partman-lvm/confirm boolean true
# Вы можете выбрать любой из имеющихся наборов разметки.
# Замечание: он должен содержать локализованные (переведённые) значения.
# Расскомментируйте ниже нужный тип разметки
# Для режима legacy bios:
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 true
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
Создание пользователя (user) и задание пароля:
Не рекомендуется использовать пароли в виде открытого текста.
В примере ниже использован вариант с указанием пароля 12345678 в виде открытого текста, и вариант с указанием хеша. Получить хеш пароля можно командой:
openssl passwd -1 |
Эта команда запросит ввод пароля и выведет на экран кеш этого пароля.
Дополнительно устанавливаемые пакеты можно указать в:
Установка загрузчика. По умолчанию, загрузчик ставится на первый диск в MBR. Но в Astra Linux Common Edition 2.12 необходимо указать вручную, на какой диск ставить загрузчик:
Пароль для загрузчика:
Не рекомендуется использовать пароли в виде открытого текста.
В примере ниже использован пароль 12345678 и его хеш. Получить хеш пароля можно командой:
openssl passwd -1 |
Эта команда запросит ввод пароля и выведет на экран кеш этого пароля.
Не указывайте пароль в виде открытого текста!
Выполнение команд перед завершением установки и перезагрузкой компьютера, например включить ssh сервер:
Теперь, если подключить машину к этой сети и настроить в BIOS/UEFI загрузку по сети, автоматически запустится установка Astra Linux . Так же можно установить систему вручную, ответив на все вопросы, и после установки выполнить команды:
sudo debconf-get-selections —installer > preseed.new
sudo debconf-get-selections >> preseed.new
Это создаст файл preseed.new с готовыми ответами, который можно использовать как прототип для создания конфигурации для следующих установок.
Автоматическая установка обновлений после установки системы
В Astra Linux Common Edition 2.12 можно выполнить обновление указав в late-command:
В Astra Linux Special Edition для автоматической установки обновлений нужно создать файл update.service в корне ftp или http сервера с таким содержимым:
Там же создать файл update.sh в котором должны быть указаны репозитории с обновлениями. Репозитории могут размещаться где угодно, важно только правильно указать путь к ним:
а в preseed.conf в конец добавляем команды для загрузки и запуска созданных файлов:
Если всё сделано корректно — то после завершения установки ОС, после первой перезагрузки выполнится сценарий обновления, самоудалится и перезагрузит машину.
Автоматическая разметка дисковых разделов с помощью partman-auto
Данная статья является переводом статьи : https://github.com/xobs/debian-installer/blob/master/doc/devel/partman-auto-recipe.txt |
Директива partman-auto является частью системы управления дисковыми разделами, автоматизирующей разбиение дисков на дисковые разделы. Порядок разбиения управляется рецептами, предоставляемыми в виде файлов, а также может управляться пакетами udeb (пакетами, предназначенными для Debian Installer) или указанием параметров разметки в файле предварительных настроек preseed. В настоящем документе описываются формы рецептов и порядок их применения.
1. Форма рецептов
Все символы перевода строки и табуляции преобразуются в пробелы. Далее каждые два или более пробела заменяются одним пробелом. Почти все лексемы разделяются пробелами. Важным исключением является открывающая фигурная скобка («<"); перед котоной _не_ должно быть пробелов.
Далее в правилах пробелы обозначаются символом подчеркивания («_»).
Назначением лексемы является перевод имен рецептов на другие языки.
- задает минимальный допустимый размер дискового раздела в мегабайтах. Размер округляется до размера дискового цилиндра, поэтому есть задать минимальный размер 20МБ при размере цилиндра 12МБ размер дискового раздела будет 12МБ. Размеры также могут быть заданы в процентах от общего объёма системного ОЗУ или (начиная с partman-auto версии 87) как число плюс проценты (например, «2000+50%»), что задает размер как указанное число плюс указанный процент от общего объёма системного ОЗУ;
- — некоторое число, обычно между числами и . Оно определяет приоритеты разделов при назначении размера. Если слишком мал (относительно приоритета другого раздела) этот раздел получит размер ближе к величине . Для маленьких разделов рекомендуется задавать больше чем их ;
- — максимальный размер раздела. Специальное значение -1 используется для задания разделов неограниченного размера;
- — файловая система для этого раздела. Может быть задана как $default_filesystem для использования значения по умолчанию (в настоящее время ext3).
- $primary <_>— раздел должен быть создан как первичный (если это возможно);
- $bootable <_>— раздел должен быть загрузочным;
- $default_filesystem <_>— определяет, что должна использоваться файловая система, заданная по умолчанию (в настоящее время ext3).
- — имя файла, который будет создан в разделе (подробности см. часть 2.4 руководства по partman);
- — информация, которая будет записана в этот файл.
- $lvmok <_>— указувает, что раздел может быть логическим томом LVM при использовании LVM;
- $defaultignore <_>— используется для очистки принятых по умолчанию параметров раздела (применимо при использовании LVM);
- $lvmignore <_>— используется для очистки принятых по умолчанию параметров раздела LVM (применимо при неиспользовании LVM)
Спецификаторы defaultignore и lvmignore позволяют в одном рецепте определить разные параметры, например, раздела /boot в LVM-схеме разбиения на разделы и не-LVM схеме.
2. Примеры
Пример: корневой раздел и раздел подкачки (swap)
Этим рецептом задается, что:
- Раздел root должен быть не менее 500 МБ и фактически не имеет максимального размера. Размер раздела swap изменяется от 64МБ до тройного размера системного ОЗУ;
- Параметр $bootable < >делает раздел загружаемым, и параметр $primary < >делает раздел первичным.
Кроме того, в примере используются параметры:
- method < format >— указывает, что раздел должен быть отформатирован. Для разделов подкачки (swap) используется значение «swap». Для создания раздела без форматирования используется значение «keep» (такой раздел может применяться для резервирования дискового пространства);
- format < >— следует указать, чтобы раздел был отформатирован;
- use_filesystem < >— указывает, что на разделе размещается файловая система;
- filesystem < ext4 >— указывает тип файловой системы для размещения на разделе;
mountpoint < / >— задает точку монтирования раздела. Дополнительно можно задать опции монтирования, например, для задания опций «nodev,ro»:
Также возможно задать метку файловой системы для поддерживающих метки файловых систем. Например, для задания метки «astralinux»:
При установке должен быть отформатирован один дисковый раздел, помеченный как:
Пример: корневой раздел, раздел подкачки и отдельный раздел /home
Разделы будут создаваться в том порядке, в котором они перечислены в рецепте. |
3. Опции, специфичные для LVM
При использовании метода автоматического разбиения «lvm» в рецепте задаются специальные опции. Это позволяет разбить на разделы несколько дисков, определяя разделы, содержащие физические тома, принадлежность этих томов группам томов, имена и принадлежность логических томов.
В одной сессии может быть обработано несколько дисков, что также должно быть указано в рецепте. Разделы, не являющиеся логическими томами и не имеющие назначенных дисков (например, /boot) по умолчанию размещаются на первом диске. Для явного задания физического тома определим раздел следующим образом:
Параметры «device< . >» и «vg_name< >» опциональны.
Указанные в параметре device устройства обязательно должны быть объявлены с помощью параметра partman-auto/disk.
Группа томов, в которую входит логический том, может быть задана как «in_vg< >«, например:
Параметр «lv_name< >» задает имя логического тома, который будет создан.
4. Зависимость от архитектуры
Некоторые архитектуры предъявляют специфические требования к дисковым разделам. Например, многие из них требуют выделения специального дискового радела для поддержки загрузки. В частности, так называемые NewWorld PowerMAC машины требуют загрузочный дисковый раздел, размещенный в начале дискаn. Ниже приведен фрагмент рецепта для создания такого раздела:.
Этот раздел должен быть первым в списке разделов и он не должет быть отформатирован.
Другой пример — архитектура netwinder, требующая небольшой раздел /boot, отформатированный в файловую систему ext2 версии 0:
И, наконец, пример настройки загрузочного раздела EFI для архитектуры ia64:
Для других архитектур см. соответствующие рецепты в udeb-пакете partman_auto.
5. Ограничения
Из-за ограничений реализации partman-auto для того, чтобы было использовано всё свободное дисковое пространство, должен быть задан один раздел максимального размера. Обычно для этого используется раздел /home, которому назначается максимальный размер 1000000000, что достаточно для существующих устройств хранения данных. Если большой раздел /home не нужен, можно задать дополнительный дисковый раздел с размером 1000000000, с методом создания «keep» и оставить его не примонтированым. После завершения инсталляции такой раздел можно удалить.
6. Как вычисляются размеры разделов
Предположим, требуется создать N разделов и min[i], max[i] и priority[i] — максимальный размер, минимальный размер и приоритет раздела i как описано в части 1 настоящей статьи.
Предположим free_space — размер свободного места для размещения разделов. Тогда:
В итоге значение min[i] будет значением размера радела i.
Особенности настройки параметров сети
Eсли файл ответов загружается из сети, то настройка параметров сети выполняется до загрузки файла ответов, и параметры настройки сети, заданные в этом файле, игнорируются. То есть, настройка сети с помощью файла ответов по умолчанию применима если загрузка происходит с компакт-диска или USB-накопителя. При загрузке файла ответов из сети можно только указать используемый для загрузки файлов ответов сетевой интерфейс, для чего используется параметр ядра interface, например interface= eth1 .
Принудительно выполнить перенастройку сети (например, задать статический адрес) с помощью файла ответов после завершения установки по сети можно следующим способом:
Создать на ftp-сервере сценарий со следующим содержимым:
При выполнении этого сценария будут отключены службы автоматической настройки сети через DHCP и выполнены директивы netcfg из файла ответов (список возможных директив см. ниже).
Сделать файл с созданным сценарием исполняемым:
sudo chmod +x |
Добавить следующую строку в файл ответов непосредственно перед статической настройкой сети:
Для настройки сети могут использоваться следующие переменные 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-сервера |
Статические настройки параметров сети (пример для 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):
Установка ПО выполняется в минимальной конфигурации (только базовые пакеты Base packages и графическая оболочка Fly desktop), дополнительно устанавливается служба SSH Server для обеспечения возможности удаленного управления компьютером:
Установка ПО Astra Linux Directory (ALD) не выполняется;
Максимальный уровень защищенности:
Усиленный уровень защищенности:
Базовый уровень защищенности:
Максимальный уровень защищенности:
Усиленный уровень защищенности:
Базовый уровень защищенности:
- Удалятся серверная служба синхронизации времени ntp, и включается клиентская служба синхронизации времени systemd-timesyncd.service (см. Службы синхронизации времени в ОС Astra Linux):
Удаляются созданные при установке сетевые подключения:
(сетевые подключения будут автоматически созданы при включении компьютера после установки).
Пример файла preseed.cfg:
Загрузка по сети в режиме восстановления (rescue mode)
Разрешение загрузки (локально или по сети) в режиме восстановления существенно снижает защищенность информационной системы, предоставляя неограниченных доступ анонимным пользователям. |
Для того, чтобы предоставить пользователям возможность загрузки компьютеров в режиме восстановления следует создать в файле pxelinux.cfg/default элемент меню следующего содержания:
От ранее приведенных примеров меню данный пример отличается добавленной опцией:
включающей загрузку в режиме восстановления