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 с ошибкой