Оглавление |
---|
Как это работает
Предполагается, что:
установка производится на компьютер клиент, подключенный к локальной сети;- настроенный FTP (TFTP) сервер, с которого можно загрузить установочные данные:
- tftp://192.168.56.1/repo/smolensk
- tftp://192.168.56.1/repo/orel
- настроенный DHCP-сервер, выдающий клиентским компьютерам не только сетевые IP-адреса, но и другие сетевые параметры (в частности, IP-адрес TFTP-сервера, с которого будет загружаться установочный образ);
- настроенные репозитории, из которых можно загружать пакеты. Для примера используются HTTP-репозитории:
- http://192.168.56.1/repo/smolensk
- http://192.168.56.1/repo/orel
- Подробнее про настройку репозиториев см. Создание локального репозитория.
Информация |
---|
Для упрощения изложения далее предполагается, что сетевые службы DHCP TFTP располагаются на одном и том же компьютере. При необходимости эти службы могут быть установлены на разных компьютерах |
Как это работает:
клиент подключается к сети и запрашивает IP-адрес, передавая в запросе информацию о собственной конфигурации;DHCP-сервер назначает клиенту IP-адрес и вместе с назначенным адресом передаёт клиенту дополнительные сетевые параметры, в том числа IP-адрес TFTP-сервера с необходимыми файлами сценариев установки;
Информация | ||
---|---|---|
| ||
|
Предупреждение | ||
---|---|---|
| ||
|
Примечание |
---|
Описанная в данной статье методика установки на виртуальных машинах может приводить к черному экрану после перезагрузки. Чтобы избежать этого рекомендуется использовать виртуальные графические адаптеры:
|
Подготовка инфраструктуры PXE на Astra Linux
Информация |
---|
PXE (англ.Preboot eXecution Environment) — среда для загрузки компьютеров с помощью сетевой карты без использования жестких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы. См. также статью Контроль целостности Astra Linux при установке и эксплуатации. |
См. страницу Подготовка инфраструктуры PXE на Astra Linux
Автоматическая установка с помощью файла preseed
Hide If | ||||
---|---|---|---|---|
| ||||
|
Файлы preseed представляют собой заранее подготовленные ответы на вопросы установщика ОС. Их использование позволяет обеспечить полностью автоматическую установку с заранее заданной конфигурацией.
Ссылки для скачивания файлов:
- Файл preseed.cfg для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8) см. в статье Установка Astra Linux Special Edition x.8 по сети.
- Файл preseed.cfg для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) см. Пример файла 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-auto/init_automatically_partition \
# select Авто - использовать наибольшее свободное место
#Или же, вы можете задать размечаемый диск. Имя устройства
# должно задаваться в обычном не-devfs формате.
# Например, для использования первого жёсткого диска SCSI/SATA:
#d-i partman-auto/disk string /dev/sda
# Замечание: если вы хотите использовать любой доступный диск, не важно
# какое у него имя, закоммерируйте строку выше. Она работает только если
# в системе один жёсткий диск.
# Также, вы можете указать какой метод использовать.
# Доступные методы: "regular", "lvm" и "crypto"
d-i partman-auto/method string regular
# Автоматическая установка на компьютеры с уже установленной ОС в режиме UEFI без запроса подтверждения# d-i partman-efi/non_efi_system boolean true
# Если один из дисков, который нужно разметить с помощью автоматической
# разметки, содержит старую конфигурацию 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 в виде открытого текста, и вариант с указанием хеша. Получить хеш пароля можно командой:Command openssl passwd -1 Эта команда запросит ввод пароля и выведет на экран кеш этого пароля.
Блок кода # Создать учётную запись обычного пользователя. 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)
Пароль для загрузчика:
Предупреждение Не рекомендуется использовать пароли в виде открытого текста.
В примере ниже использован пароль 12345678 и его хеш. Получить хеш пароля можно командой:Command openssl passwd -1 Эта команда запросит ввод пароля и выведет на экран кеш этого пароля.
Не указывайте пароль в виде открытого текста!Блок кода # Необязательный пароль на 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 в конец добавить команды для загрузки и запуска созданных файлов:
Блок кода |
---|
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
См. страницу Автоматическая разметка дисковых разделов с помощью partman-auto
Особенности настройки параметров сети
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 для Astra Linux Special Edition 1.7 см. на странице Пример файла preseed для 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):
Блок кода 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
При установке выполняется синхронизация времени:
Блок кода d-i clock-setup/ntp boolean true d-i clock-setup/ntp-server string ntp2.vniiftri.ru
- После установки:
- Удалятся серверная служба синхронизации времени 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/*;
(сетевые подключения будут автоматически созданы при включении компьютера после установки).
Загрузка по сети в режиме восстановления (rescue mode)
Предупреждение |
---|
Разрешение загрузки (локально или по сети) в режиме восстановления существенно снижает защищенность информационной системы, предоставляя неограниченных доступ анонимным пользователям. |
Для того, чтобы предоставить пользователям возможность загрузки компьютеров в режиме восстановления следует создать в файле pxelinux.cfg/default элемент меню, ссылающийся на файл preseed. Например, для файла с именем preseed.cfg:
Блок кода |
---|
LABEL netinstall
MENU LABEL Start Astra Linux 1.07.02 rescue
kernel 1.07.00/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 debian-installer/allow_unauthenticated=true rescue/enable=true |
От ранее приведенных примеров меню данный пример отличается добавленной опцией:
Блок кода |
---|
rescue/enable=true |
включающей загрузку в режиме восстановления
Установка выполняется с заранее заданными фиксированными именами (имя хоста, имя пользователя, пароль пользователя).
Рекомендуется после установки сменить имена и пароли.
Информация |
---|
Данная статья применима к:
|
Информация |
---|
PXE (англ.Preboot eXecution Environment) — среда для загрузки компьютеров с помощью сетевой карты без использования жёстких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы. |
Информация |
---|
Подробная информация об автоматической установке с помощью списка ответов: https://www.debian.org/releases/stretch/s390x/apbs01.html.ru |
Примечание |
---|
Описанная в данной статье методика установки на виртуальных машинах может приводить к черному экрану после перезагрузки. Чтобы избежать этого рекомендуется использовать виртуальные графические адаптеры:
|
Установка и настройка DHCP/TFTP-сервера
Установка пакетов
Установим необходимые пакеты:
Command |
---|
sudo apt install isc-dhcp-server tftpd-hpa pxelinux syslinux |
Где:
- Пакеты для DHCP-сервера:
- isc-dhcp-server - DНCP-севрер;
- Пакеты для TFTP-сервера:
- tftpd-hpa - TFTP-server;
- pxelinux - загрузчик для сетевой загрузки PXE;
- syslinux - загрузчик для сетевой загрузки DOS FAT / NTFS;
Настройка службы TFTP
Служба tftpd после установки запускается автоматически и сразу предоставляет доступ к каталогу /srv/tftp/, в котром далее и будут размещены файлы для сетевой загрузки.
Настройка службы DHCP
Пропишем наш сетевой интерфейс в /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 domain-name "example.com";
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 |
Для загрузки по сети нужны следующие файлы:
- pxelinux.0;
- библиотеки syslinux;
- ядро ОС;
- специальный initrd.
Эти файлы находятся на установочном диске в каталоге netinst. Скопируем ядро и initrd в /srv/tftp/.
Для Astra Linux SE Смоленск (в примере ниже предполагается, что основной установочный диск находится в приводе компакт дисков):
Command |
---|
sudo mkdir -p /srv/repo/smolensk/ |
Для Astra Linux CE Орел:
Если образ установочного диска находится в файле orel.iso:
Command |
---|
sudo mkdir -p /srv/repo/orel/ |
Скопируем в каталог /srv/tftp файл pxelinux.0 и необходимые библиотеки syslinux:
Command |
---|
sudo cp /usr/lib/PXELINUX/pxelinux.0 /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 SE Smolensk
LABEL netinstall
MENU LABEL Start Astra Linux Smolensk net install
kernel smolensk/linux
append initrd=smolensk/initrd.gz modprobe.blacklist=evbug auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=astra16 domain=my.dom astra-license/license=true url=tftp://192.168.56.1/repo/smolensk/preseed.cfg interface=auto netcfg/dhcp_timeout=60
# Astra Linux CE Orel
LABEL netinstall
MENU LABEL Start Astra Linux Orel net install
kernel orel/linux
append initrd=orel/initrd.gz modprobe.blacklist=evbug auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=orel212 domain=my.dom astra-license/license=true url=tftp://192.168.56.1/repo/orel/preseed.cfg interface=auto netcfg/dhcp_timeout=60 |
Обратите внимание на следующие параметры:
- hostname - имя хоста, которое будет использована при автоматической установке ОС;
- domain - имя домена ;
- url - адрес, по которому должны быть доступны конфигурационные файлы. В данном примере используется протокол TFTP, однако можно использовать FTP или HTTP (файлы при этом должны быть размещены в соответствующих локациях).
По умолчанию стоит загрузка с локального жесткого диска, что бы избежать повторной автоматической установки, после завершения первой, или случайной установки на компьютер с уже установленной ОС, подключенный к этой же сети.
Для загрузки в режиме UEFI служит специальный EFI образ загрузчика grub: скачать
Распакуйте архив 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 SE Смоленск
menuentry 'Install Astra Linux SE Smolensk' {
set background_color=black
linux /smolensk/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=ftp://192.168.56.1/repo/smolensk/preseed.cfg interface=auto netcfg/dhcp_timeout=60
initrd /smolensk/initrd.gz
}
# Установка Astra Linux CE Орел
menuentry 'Install Astra Linux CE Orel' {
set background_color=black
linux /orel/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=ftp://192.168.56.1/orel/preseed.cfg interface=auto netcfg/dhcp_timeout=60
initrd /orel/initrd.gz
}
|
Здесь так же следует обратить внимание на правильное указание имени домена и пути поиска файлов. При этом несмотря на указание в имени пути протокола FTP в самом деле используется протокол TFTP, что следует учесть, указывая имя файла.
По умолчанию стоит загрузка образа EFI из EFI/Boot/Bootx64.efi (на некоторых системах может быть иначе), что бы избежать повторной автоматической установки, после завершения первой, или случайной установки на компьютер с уже установленной ОС, подключенный к этой же сети.
Перезапускаем сервисы:
Command |
---|
sudo systemctl restart isc-dhcp-server |
Автоматическая установка с помощью файла preseed.cfg
Файл preseed.cfg для Astra Linux SE Смоленск 1.6: preseed_smol.cfg
Файл preseed.cfg для Astra Linux CE Орел 2.12: preseed_orel.cfg
Файл после скачивания скопировать каталог соответствующего дистрибутива под именем preseed.cfg:
Информация |
---|
sudo cp preseed_smol.cfg /srv/tftp/repo/smolensk/preseed.cfg |
или
Информация |
---|
sudo cp preseed_orel.cfg /srv/tftp/repo/orel/preseed.cfg |
Разберем важные параметры файла preseed:
Указываем путь к репозиторию с установочными файлами.
Устанавливаем часовой пояс:
Блок кода |
---|
# Здесь вы можете указать любое допустимое значение для $TZ; смотрите
# допустимые значения в файле /usr/share/zoneinfo/.
d-i time/zone string Europe/Moscow |
В следующем блоке подготавливаются разделы на жестком диске (по умолчанию стоит автоматическое создание с использованием всего диска, с одним корневым разделом и своп разделом)
# только его.
# Замечание: нужно указывать локализованные (переведённые) значения.
#d-i partman-auto/init_automatically_partition \
# select Авто - использовать наибольшее свободное место
#Или же, вы можете задать размечаемый диск. Имя устройства
# должно задаваться в обычном не-devfs формате.
# Например, для использования первого жёсткого диска SCSI/SATA:
#d-i partman-auto/disk string /dev/sda
# Замечание: если вы хотите использовать любой доступный диск, не важно
# какое у него имя, закоммерируйте строку выше. Она работает только если
# в системе один жёсткий диск.
# Также, вы можете указать какой метод использовать.
# Доступные методы: "regular", "lvm" и "crypto"
d-i partman-auto/method string regular
# Если один из дисков, который нужно разметить с помощью автоматической
# разметки, содержит старую конфигурацию 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
Получить хеш пароля можно командой:
Command |
---|
openssl passwd -1 |
Эта команда запросит ввод пароля и выведет на экран кеш этого пароля.
Не указывайте использованный пароль в незашифрованном виде!Блок кода |
---|
# Создать учётную запись обычного пользователя.
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 CE Орел необходимо указать вручную, на какой диск ставить загрузчик:
Блок кода |
---|
# В ОС 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)
|
Пароль для загрузчика:
Не рекомендуется использовать пароли в виде открытого текста.
В примере ниже использован хеш пароля 12345678
Получить хеш пароля можно командой:
Command |
---|
openssl passwd -1 |
Эта команда запросит ввод пароля и выведет на экран кеш этого пароля.
Не указывайте использованный пароль в незашифрованном виде!Блок кода |
---|
# Необязательный пароль на 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 |
---|
debconf-get-selections --installer > preseed.new |
Это создаст файл preseed.new с готовыми ответами, который можно использовать при следующих установках.
Автоматическая установка обновлений после установки системы
В ОС ОН Орёл можно выполнить обновление указав в late-command:
Блок кода |
---|
d-i preseed/late_command string in-target apt update; in-target apt dist-upgrade; |
В ОС СН Смоленск для автоматической установки обновлений нужно создать файл 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/smolensk/mounted-iso-main smolensk main contrib non-free" > /etc/apt/sources.list
echo "deb ftp://server/repo/smolensk/mounted-iso-devel smolensk main contrib non-free" >> /etc/apt/sources.list
echo "deb ftp://server/repo/smolensk/repository-update smolensk main contrib non-free" >> /etc/apt/sources.list
echo "deb ftp://server/repo/smolensk/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/smolensk/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/smolensk/update.service; \
in-target systemctl enable update.service; |