README.md

    Пересборка/модификация установочных образов Astra linux

    Версия stable: 20241107_01

    В docx файле инструкция с изображениями

    GITFLIC: https://gitflic.ru/user/medved0001
    Вконтакте: https://vk.com/medved0001

    Описание

    Скрипт и инструкция по пересборке/модификации установочных образов Astra linux (DEBIAN и live установщики) и подобных по структуре установщиков.

    По любым вопросам и проблемам со скриптом обращайтесь в личные сообщения Вконтакте.

    Инструкция

    1. Запустите createiso.sh с правами администратора

    Будут созданы необходимые для работы каталоги (пути можно изменить внутри скрипта)

    1. Поместите файл iso в каталог iso-in, смонтируйте его через действие номер 1 и скопируйте файлы iso в каталог iso-temp через действие номер 3

    2. Запустите редактор репозиториев через действие номер 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 и подобных по структуре установщиков

    Релизы
    20241107_01 2024-11-07
    Конвейеры
    0 успешных
    0 с ошибкой