Установка пакетов
Установить пакет tftpd-hpa. Установить его можно из графического менеджера пакетов, или из командной строки командой:
Настройка tftp-hpa
Настройки пакета хранятся в файле /etc/default/tftpd-hpa. Приведём его к следующему виду (жирным шрифтом выделены рекомендованные к добавлению параметры):
TFTP_USERNAME=»tftp»
TFTP_DIRECTORY=»/srv/tftp»
TFTP_ADDRESS=»0.0.0.0:69″ TFTP_OPTIONS=»–secure»
TFTP_OPTIONS=»—ipv4 —secure —create —umask 027 —permissive«
В настройках указаны дополнительные опции:
Можно также поменять домашний каталог пользователя tftp в файле /etc/passwd на /srv/tftp.
Чтобы сервис начал работу с новыми настройками, его нужно перезапустить:
Размещение данных для загрузки
Создать директорию с репозиторием и примонтировать туда установочный диск:
В этой директории создать файл default . Содержимое файла default для полной автоматизации должно содержать параметры, передаваемые файлу preseed.cfg:
DEFAULT astra LABEL astra kernel linux append initrd=initrd.gz vga=788 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://10.0.2.254/preseed.cfg interface=auto netcfg/dhcp_timeout=60 TIMEOUT 5
В примере выше предполагается, что IP-адрес сервера для загрузки 10.0.2.254
Файл preesed.cfg из вложения является образцом. Его применение уничтожит все данные на носителе без запроса подтверждения.
Подготовленный файл ответов preseed.cfg положить в директорию /srv/ftp.
В файле preseed.cfg с помощью текстового редактора указать источник, из которого должны будут скачиваться пакеты при установке, например репозиторий на сервере Яндекс (адрес сервера и путь к репозиторию выделены жирным шрифтом):
# Если вы выберете ftp, то mirror/country string устанавливать не нужно.
d-i mirror/protocol string ftp
d-i mirror/country string manual
d-i mirror/ftp/hostname string ### mirror.yandex.ru
d-i mirror/ftp/directory string /astra/current/orel/repository
d-i mirror/ftp/proxy string
Выставить права на этот файл:
Получить файл ответов можно выполнив команду:
На машине, на которую будет произведена установка ОС, выставить загрузку по сети.
Установка Astra Linux по сети (UEFI или Legacy BIOS)
PXE (англ.Preboot eXecution Environment) — среда для загрузки компьютеров с помощью сетевой карты без использования жестких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы.
Подробная информация об автоматической установке с помощью списка ответов: https://www.debian.org/releases/stretch/s390x/apbs01.html.ru
Описанная в данной статье методика установки на виртуальных машинах может приводить к черному экрану после перезагрузки. Чтобы избежать этого рекомендуется использовать виртуальные графические адаптеры:
- Виртуальный графический адаптер VMSVGA для Oracle VirtualBox;
- Виртуальный графический адаптер cirrus или qxl для Virt Manager.
Подготовка инфраструктуры PXE на Astra Linux
Автоматическая установка с помощью файла preseed.cfg
Файлы preseed представляют собой заранее подготовленные ответы на вопросы установщика ОС. Их использование позволяет обеспечить полностью автоматическую установку с заранее заданной конфигурацией.
Ссылки для скачивания файлов:
- Файл 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, например:
Важные параметры файла preseed:
- Пути к репозиториям пакетов:
# Репозиторий для установки # Если вы выберете 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
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
#Если система имеет свободное место, вы можете выбрать для разметки
# только его.
# Замечание: нужно указывать локализованные (переведённые) значения.
#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
Не рекомендуется использовать пароли в виде открытого текста.
В примере ниже использован вариант с указанием пароля 12345678 в виде открытого текста, и вариант с указанием хеша. Получить хеш пароля можно командой:
# Создать учётную запись обычного пользователя. 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
# В ОС 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 и его хеш. Получить хеш пароля можно командой:
Эта команда запросит ввод пароля и выведет на экран кеш этого пароля.
Не указывайте пароль в виде открытого текста!
# Необязательный пароль на 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
# Эта команда выполняется перед окончанием установки, пока ещё # есть рабочий каталог /target. Вы можете выполнить chroot в /target # и непосредственно использовать его, или же воспользоваться командами # apt-install и in-target для облегчения задачи установки пакетов и # запуска команд в целевой системе. d-i preseed/late_command string in-target systemctl enable ssh.service
Теперь, если подключить машину к этой сети и настроить в BIOS/UEFI загрузку по сети, автоматически запустится установка Astra Linux . Так же можно установить систему вручную, ответив на все вопросы, и после установки выполнить команды:
Это создаст файл 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;
Если всё сделано корректно — то после завершения установки ОС, после первой перезагрузки выполнится сценарий обновления, самоудалится и перезагрузит машину.