Пересборка/модификация установочных образов Astra linux
Версия stable: 20241107_01
В docx файле инструкция с изображениями
GITFLIC: https://gitflic.ru/user/medved0001
Вконтакте: https://vk.com/medved0001
Описание
Скрипт и инструкция по пересборке/модификации установочных образов Astra linux (DEBIAN и live установщики) и подобных по структуре установщиков.
По любым вопросам и проблемам со скриптом обращайтесь в личные сообщения Вконтакте.
Инструкция
- Запустите
createiso.sh
с правами администратора
Будут созданы необходимые для работы каталоги (пути можно изменить внутри скрипта)
-
Поместите файл iso в каталог
iso-in
, смонтируйте его черездействие номер 1
и скопируйте файлы iso в каталогiso-temp
черездействие номер 3
-
Запустите редактор репозиториев через
действие номер 21
и создайте репозиторий:
3.1. Укажите путь до каталога, где будет находится репозиторий (путь к созданному скриптом каталогу repo
).
3.2. Укажите кодовое имя репозитория (не проверялась работа, если указать имя отличающееся от имени репозитория в iso образе, который вы хотите редактировать).
3.3. Выберите компоненты репозитория в соответствии с используемыми компонентами репозитория в iso образе.
В скрипте после создания репозитория можно создать свои категории для использования в репозитории, но такой формат не проверялся для установки.
3.4. Включите опцию Подписать репозиторий
. Если ключа нет, создайте его или импортируйте в KGpg. Ключ должен иметь абсолютное доверие.
В astra 1.8.1 присутствует ошибка запроса пароля к ключу. Запустите терминал и выполните export GPG_TTY=$(tty). Запускайте Kgpg и fly-admin-repo из этого окна, пароль к ключу будет запрашиваться через окно терминала.
3.5. Когда вы создали репозиторий, закройте редактор репозиториев и выполните действие номер 4 для добавления параметра Contents в параметры репозитория. В 1.8.1 можно включить галочку при создании репозитория, поэтому этот пункт можно пропустить
3.6. Далее запустите редактор репозиториев и импортируйте каталог pool из скопированного iso в репозиторий.
Ожидайте, пока репозиторий импортируется
4.Далее необходимо пересобрать файл tasksel-data
:
4.1. Положите deb пакет tasksel-data
в каталог Deb-in
4.2. Распакуйте пакет через действие номер 11
4.3. Далее необходимо зайти в каталог с распакованным deb пакетом и сделать следующее (в репозитории есть пример содержимого tasksel-data
):
4.3.1. Создать каталог etc/apt/trusted.gpg.d
и поместить в него файл открытого ключа, которым вы подписали репозиторий (т.е. у вас будет путь каталог-распакованного-пакета/etc/apt/trusted.gpg.d
).
4.3.2. Если вам необходимо на последнем этапе установки выполнить дополнительные команды, то необходимо создать файл скрипта или использовать предоставленную мной структуру tasksel-data (есть в репозитории), который позднее вы подключите в пункте 6.1.2
или 6.2.2
(зависит от инсталлятора). Некоторое ПО можно установить только на финале установки.
Например, я делаю так.
-
В распакованном каталоге
tasksel-data
я содзаю каталогopt/install-files-programm
и в него помещаю скрипты (полный путькаталог-распакованного-пакета/opt/install-files-programm
). Запускаемый в финале скрипт у вас будет 1 (в моем случае, этоpostinstos.sh
), а дополнительные скрипты и команды запускаются из него. -
В файл
install-extra.sh
я добавляю запись на установку через другой собранный пакет, который установится при выборе нужной категории (т.е. это позволяет опционально выполнить команду в финале установки не прописывая намертво команду в скрипт). -
В
delpkg.sh
записывается имя пакета для удаления. -
Оригинальный пакет
tasksel-data
для того, чтобы установить его, тем самым заменив свою пересобранную версию в конце выполнения всех команд. -
Структура пакета
df-cryptoprocsp-inst
показывает, как сделать пакет с опциональной, а не фиксированной, установкой того ПО, которое не может быть установлено стандартным путем, а только в конце установки.
4.3.3. Далее вам необходимо отредактировать файл debian-tasks.desk (находится по пути каталог-распакованного-пакета/usr/share/tasksel/debian-tasks.desk
).
Вы можете отредактировать состав пакетов в существующих категориях этого файла, удалить ненужные категории, добавить свои.
Пункт Relevance
действует для дистрибутива с установщиком Debian
(Возможно, в будущем будет учитываться и в live). В live он тоже обязателен для корректности файла, но не используется установщиком (Для live установщика позиция пункта в установщике определяется позицией пункта в файле debian-tasks.desk
).
-
Relevance
– это сортировка пунктов при выводе в инсталляторе. Чем значение выше, тем выше будет этот пункт. Разные категории могут иметь один и тот же номер, тогда порядок этих категорий будет выставлен автоматически между всеми категориями с этим номером. -
Test-new-install
задает будет ли категория выбрана, не выбрана или установлена автоматически ( значенияmark mark
,show show
,install install
).
4.3.4. Далее вам необходимо запаковать пакет обратно и заменить его в репозитории. Также загрузите в репозиторий все пакеты, указанные в каталогах в debian-tasks.desk файле и зависимости к ним.
5.Когда репозиторий будет готов, скопируйте его обратно в каталог сборки через действие номер 6
.Также создайте симлинк после копирования через действие номер 8
. Хэшсуммы для файлов репозитория по желанию.
6.Следующие действия будут отличаться в зависимости от пересобираемого инсталлятора (Astra 1.7 использует Debian инсталлятор. В Astra 1.8 есть 2 файла iso (Debian и live)):
6.1. Для Debian инсталлятора:
6.1.1. Вам необходимо распаковать файлы initrd для консольной и графической установки
6.1.2. В каталогах, где находятся эти файлы, будут созданы каталоги с распакованным initrd (initrd-extract)
Вам необходимо в файл preseed.cfg
, который находится в корне каталога initrd-extract
добавить строки в конец файла:
d-i cdrom-detect/eject boolean false
d-i preseed/late_command string in-target /bin/bash -c /opt/install-files-programm/postinstos.sh
/opt/install-files-programm/postinstos.sh
заменить при необходимости на свой путь
d-i preseed/late_command позволяет вам выполнить команду на завершающем этапе установки. Добавляйте в том случае, если вы ранее добавили нужный для выполнения файл в пакет tasksel-data.
d-i cdrom-detect/eject boolean false предотвращает отмонтирование носителя на финальном этапе установки.
6.1.3. Запакуйте файлы initrd обратно.
6.1.4. Для сборки инсталлятора на основе Debian (Astra 1.7/1.8), нужно установить isolinux
и xorriso
через действия 24-25
, после чего можно собирать iso через действие 9
6.2. Для live установщика (Astra 1.8.1):
6.2.1. Установите пакет squashfs-tools
через действие номер 26
. Также с ним установится grub-pc-bin
, необходимый для сборки гибридного iso.
Распакуйте файл с live системой через действие номер 17
(он используется инсталлятором).
6.2.2. Необходимо добавить в каталог (.../squashfs-root/etc/apt/trusted.gpg.d
) файл открытого ключа, которым подписан репозиторий (его же вы добавляли в tasksel-data
.
6.2.3. Вам необходимо в файле (.../squashfs-root/usr/lib/python3/dist-packages/astra_installer/settings/task.py
) добавить/убрать категории из файла debian-tasks.desk
.
Для того, чтобы при выборе в инсталляторе отображалось не id имя категории, а нужный вам текст, вы должны в файле .../squashfs-root/usr/lib/python3/dist-packages/astra_installer_converter/tasksel.py
добавить, по аналогии с имеющимися, имена для разных локализаций.
В установщике присутствует файл …/squashfs-root/usr/lib/python3/dist-packages/astra_installer/configs/installer/amd64/install_answers.cfg
с Preseed настройками. Мной он не менялся и не проверялся.
В файл …/squashfs-root/usr/lib/python3/dist-packages/astra_installer/configs/installer/amd64/conf.yaml
вы можете добавить необходимые вам дополнительные репозитории.
В конце файла …/squashfs-root/usr/lib/python3/dist-packages/astra_installer/configs/installer/amd64/94astra_extra_postinst
я прописал запуск скрипта на финале установки.
chroot ${TARGET} /bin/bash -c /opt/install-files-programm/postinstos.sh
6.2.4. При необходимости подключившись к каталогу squashfs-root через chroot вы можете установить необходимое ПО в live образ.
6.2.5. После всех необходимых действий, запакуйте образ live системы обратно в файл через действие номер 18
.
6.2.6. Перед сборкой iso удалите каталог squashfs-root и резервный файл filesystem1.squashfs из каталога сборки
6.2.7. Теперь можно собрать iso, для этого установите пакет xorriso
и запустите сборку через действие номер 10
Описание
Скрипт и инструкция по пересборке/модификации установочных образов Astra linux и подобных по структуре установщиков