| Оглавление |
|---|
| Информация | ||
|---|---|---|
| ||
| Информация | ||
|---|---|---|
| ||
|
| Предупреждение |
|---|
Ответственность за применение и сопровождение модифицированных операционных систем, установленных с модифицированных установочных носителей, полностью лежит на авторах этих носителей. Замкнутость полученного дистрибутива не проверяется и возможность установки из него пакетов не гарантируется. Стандартная техническая поддержка Astra Linux не распространяется на такие системы. Действие сертификатов Astra Linux не распространяется на такие системы. |
Введение
В данной статье рассматривается создание модифицированного установочного диска. Модифицированный образ создается на основе стандартного образа установочного диска Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.7. Модификация подразумевает . Модификация подразумевает изменение состава DEB-пакетов и preseed-сценария. Подразумевается, что служебные пакеты (udebs) не изменяются. Для изменения пакетов udeb используется отдельная процедура (см. how to build a full image with a custom kernel). Все основные действия выполняются от имени непривилегированного пользователя, привилегии суперпользователя (в Astra Linux Special Edition с включенным МКЦ - привилегий суперпользователя с высоки уровнем целостности) требуются только для установки пакетов, монтирования носителей (если используется) и операции записи созданного образа на носитель.
Подготовка компьютера
Для выполнения дальнейших действий на компьютере, на котором будут создаваться модифицированные образы::
- В Astra Linux Special Edition x.8 подключить расширенный репозиторий, в более ранних обновлениях подключить репозиторий со средствами разработки. Порядок подключения репозиториев см. в статье Подключение репозиториев с пакетами в ОС Astra Linux и установка пакетов .
- Установить необходимые пакеты:
Command sudo apt installbsdtarreprepro xorriso build-essential debootstrap
Создание распакованной копии установочного диска
Далее предполагается, что образ установочного диска загружен в домашний каталог текущего пользователя и что все действия выполняются в этом домашнем каталоге. Для распаковки загруженного образа:
Создать подкаталог для распаковки:
Command mkdir ~/cdРаспаковать ISO-образ в созданный каталог:
Command bsdtar -xf <имя_файла_с_образом> -C ~/ xorriso -osirrox on -indev путь_к_файлу.iso -extract / cd
Для выполнения дальнейших модификаций разрешить запись в распакованные файлы:
Command chmod -R +w ~/cd
В результате этого шага в подкаталоге /cd домашнего каталога текущего пользователя будет создан подкаталог /cd с копией содержимого образа установочного диска, и будет разрешено вносить изменения в содержимое этой копии.
Создание и пакетизация собственного ключа для подписания измененного установочного образа
Создание собственного ключа
| Предупреждение |
|---|
| Для подписания измененного установочного образа следует использовать ключи, выпущенные в соответствии с установленными в организации правилами. Приведенный далее пример создания ключа применим исключительно в демонстрационных целях. |
Зафиксировать имя, которое будет использоваться в ключе. Обычно в качестве такого имени применяют адрес электронной почты, который для повторного применения удобно экспортировать в переменную окружения:
Command mail="<адрес_электронной_почты>"например:
Command mail="support@organizationsupport@organization.ru"- Создать конфигурационный файл
gen-key.cfgс параметрами генерации ключа. Содержимое файла:
Создать такой файл можно следующей командой (в качестве имени владельца ключа используется имяsupport, для указания адреса электронной почты используется ранее экспортированная переменнаяmail):Command echo "Блок кода Key-Type:1%no-protectionKey-Length:4096Subkey-Type:1Subkey-Length:4096Name-Real:support # <имя_владельца_ключа>ключа>Name-Email:$mail # <адрес_электронной_почты>Expire-Date:0" > gen-key.cfg Выполнить генерацию ключа используя созданный конфигурационный файлСоздать такой файл можно следующей командой (в качестве имени владельца ключа используется имя support, для указания адреса электронной почты используется ранее экспортированная переменная mail):
Command echo "Key-Type: 1
%no-protection
Key-Length: 4096
Subkey-Type: 1
Subkey-Length: 4096
Name-Real: support
Name-Email: $mail
Expire-Date: 0" > gen-key.cfgВыполнить генерацию ключа используя созданный конфигурационный файл:
Command gpg --batch --gen-key gpg --batch --gen-key gen-key.cfgопции команды:
--batch- — генерация ключа без запросов подтверждений;--gen-key- — команда генерации ключа;gen-key.cfg- — конфигурационный файл с параметрами генерации ключа.Экспортировать созданный ключ в файл с именем
<адрес_электронной_почты>.gpg.key(удобно опять использовать значение ранее созданной переменной окружения mail):Command gpg --armor --output "$mail.gpg.key" --export "$mail"опции команды:
--armor- — экспорт в формате ASCII;--output "$mail.gpg.key"- — имя файла, в котором сохраняется экспортированный ключ (в имени файла используется значение ранее созданной переменной окружения);--export "$mail"- — указание операции (экспорт) и имя экспортируемого объекта (используется значение ранее созданной переменной окружения);.Импортировать экспортированный ключ в комплект ключей Astra Linux:
sudoCommand :
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8):
Command sudo gpg --no-default-keyring --keyring /usr/share/keyrings/astra-archive.gpg --import "$mail.gpg.key" - Astra Linux Special Edition x.7 и более ранние очередные обновления:
Command sudo gpg --no-default-keyring --keyring /usr/share/apt/astra-archive.gpg --import "$mail.gpg.key"Далее копия созданного ключа, находящаяся в комплекте ключей Astra Linux, будет использована для подписания измененного репозитория установочного диска.
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8):
Пакетизация собственного ключа
| Информация |
|---|
Для того, чтобы исключить проверку подписей пакетов при установке, можно в файл /boot/grub/grub.cfg нужно добавить опцию debian-installer/allow-unauthenticated=true .в файл /boot/grub/grub.cfg. |
Для того, чтобы подпись репозитория, сделанная собственным публичным ключом, могла быть проверена при установке операционной системы с модифицированного носителя собственный носителя собственный публичный (открытый) ключ должен быть включен в репозитории установочного диска. Это можно сделать оформив примитивный примитивный UDEB-пакет:
Экспортировать публичный ключ в файл:
Command gpg --output "$mail.gpg" --export "$mail"в данном случае экспорт выполняется в двоичном формате, а не в формате ASCII;.
Установить права доступа на файл с экспортированным публичным ключом:
Command sudo chmod 644 "$mail.gpg"- Создать UDEB-пакет для включения собственного открытого ключа в модифицированный дистрибутив. Для примера далее используется имя пакета пакета
aptkey:Для удобства работы сохранить имя пакета в переменной окружения. Это можно сделать командой:
Command package="aptkey"Создать подкаталог для размещения пакета:
Command mkdir -p "$package/DEBIAN"Создать файл
$package/DEBIAN/controlcontrolс параметрами пакета (в приведенном примере команды используются значения ранее заданных переменных окружения):Command echo "Package: $packageVersion: 1.0Section: debian-installerPriority: importantArchitecture: allEssential: noInstalled-Size: 1024Maintainer: $mail#Package-Type: udeb#XC-Package-Type: udebDescription: Add own keyring to aptDepends: apt" > "$package/DEBIAN//control"Создать файл
$package/DEBIAN/postinstпостустановочного сценария (сценарий нечего не делает, возвращая код завершения 0 (успешное окончание) ) и присвоить файлу со сценарием разрешение на выполнение:Command echo "exit 0" > "$package/DEBIAN/postinst"chmod 0755 "$package/DEBIAN/postinst"Создать и наполнить структуру каталогов с данными пакета:
Command mkdir -p "$package/etc/apt/trusted.gpg.d"cp "$mail.gpg" "$package/etc/apt/trusted.gpg.d/"Экспортированный ключ экспортированный публичный ключ помещается в каталог пакета "
$package/etc/apt/trusted.gpg.d" чтобы при установке пакета этот ключ был размещен в системном каталоге доверенных ключей/etc/apt/trusted.gpg.d;Собрать пакет:
Command dpkg-deb --build "$package"Экспортированный публичный ключ переместить в каталог доверенных ключей рабочей системы:
Command sudo mv "$mail.gpg" /etc/apt/trusted.gpg.d/
Изменение состава пакетов в репозитории
| Предупреждение |
|---|
| После изменения состава пакетов репозитория репозиторий перестает быть подписанным ключами ООО "РусБИТех-Астра" (становится неподписанным). |
Создать каталог для временной копии репозитория. Для примера использовано имя каталога
/cache:Command mkdir -p cacheПереместить в созданный временный каталог DEB- и UDEB-пакеты из копии установочного диска:
Command find cd/pool -name \*.deb -print -exec mv {} cache \;find cd/pool -name \*.udeb -exec mv {} cache \;Переместить (или скопировать) в созданный временный каталог ранее созданный пакет с собственным ключом:
Command mv "$package.deb" "cache/${package}_1.0.deb"Очистить копию установочного диска от ненужных каталогов:
Command rm -rf $HOME/cd/{db,dists,pool}Выполнить модернизацию состава пакетов дистрибутива:
Добавить во временный каталог собственные пакеты
;.
Удалить во временном каталоге ненужные пакеты
;.
Создать в каталоге с копией установочного диска подкаталог
~/cd/conf:Command mkdir -p ~/cd/confСоздать конфигурационный файл
~/cd/conf/distributionsдля восстановления репозитория:Предупреждение Здесь и далее в командах следует указывать вместо
1.8_x86-64вашу версию дистрибутива, например1.7_x86-64Command echo 'Origin: DebianAstraCodename: 1.78_x86-64Suite: stableVersion: 1.78.01Architectures: amd64Components: main contrib non-freeUDebComponents: mainSignWith: yes' > ~/cd/conf/distributions
| Предупреждение |
|---|
Приведенная для примера конфигурация использует дистрибутив Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1. |
8, |
архитектуру |
откорректированы. |
Далее:;
Инициализировать репозиторий:
Command reprepro -b cd/ export 1.78_x86-64Выгрузить ключ для подписи репозитория:
Command gpg --yes --armor -o ~/cd/dists/1.78_x86-64/Release.gpg -sb ~/cd/dists/1.78_x86-64/ReleaseНаполнить репозиторий пакетами, сохраненными во временном каталоге
/cache:Command reprepro --ask-passphrase -Vb cd includedeb 1.78_x86-64 cache/*.debreprepro --ask-passphrase -Vb cd includeudeb 1.78_x86-64 cache/*.udebОбновить файл с контрольными суммами:
Command cd ~/cd; find ! -name md5sum.txt ! -name gostsums.txt -follow -type f -print0 | xargs -0 md5sum > md5sum.txt ; cd ..Предупреждение
Информация find: Обнаружено зацикливание в файловой системе; ...можно игнорировать.
Восстановить структуру ссылок репозитория:
Command ln -s 1.78_x86-64 ~/cd/dists/stableУдалить ненужный каталог
~/cd/confи временные копии пакетов:Command rm -rf ~/cd/conf ~/cd/db cache
Замена файла конфигурации установки preseed.cfg
при установкеНа установочном диске содержится файл с ответами на вопросы установщика ОС - файл preseed.cfg. Для простой автоматизации установки можно задать альтернативный файл непосредственно при установке ОС. Эта возможность не обеспечивает полной автоматизации установки, так всегда будут запрашиваться подтверждение согласия с лицензией и выбор клавиш переключения клавиатуры, но может упростить и стандартизировать установку ОС.
Для замены файла preseed.cfg:
При использовании модифицируемых носителей
| Информация |
|---|
| USB-носители с файловой системой iso9660 модифицируемыми не являются. Такие носители создаются копированием образа установочного диска на носитель командой dd. Такой носитель можно только скопировать на диск, распаковать и модифицировать копию, и перезаписать носитель модифицированной копией. |
Пример файла для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8) см. в Файл preseed для загрузки по сети Astra Linux x.8 статьи Автоматическая установка Astra Linux Special Edition x.8.
При установке
Для замены файла preseed.cfg при установке:
- При использовании установочных носителей созданных на USB-накопителях (на модифицируемых носителях) для замены файла
preseed:- Примонтировать носитель.
- Скопировать заменяющий файл (например,
preseed.cfg) в корень установочного носителя
- .
Внести в файл
boot/grub/grub.cfgв строки с параметрами загрузки ядра (начинаются со словаlinux) указание файлаpreseed, например:Блок кода linux /install.amd/vmlinuz quiet modprobe.blacklist=evbug astra_install=1 nomodeset debian-installer/locale=ru debian-installer/language=ru keyboard-configuration/xkb-keymap=ru console-keymaps-at/keymap=ru preseed/file=/cdrom/preseed.cfg- Отмонтировать накопитель.
- При использовании немодифицируемых
- установочных носителей (CD-ROM, DVD-ROM
- ) заменяющий файл можно предоставить с помощью USB-накопителя:
- Подготовить накопитель:
Подключить USB-накопитель к компьютеру.
Отформатировать USB-накопитель файловой системой
vfatбез создания дискового раздела:Предупреждение При форматировании все данные с накопителя будут удалены.
При форматировании использовать имя накопителя (например, sdh), а не имя дискового раздела (sdh1).
Command sudo mkfs.vfat -I /dev/<имя_накопителя>Примонтировать накопитель.
Скопировать заменяющий
preseedфайл на накопитель.- Отмонтировать накопитель.
При установке ОС:
Выбрать язык установки.
Не нажимая
<Enter> выбрать способ установки (графический или текстовый).
Нажать <F2>. Откроется список выбора параметров ядра.
Нажать <Esc>. Список выбора параметров ядра закроется, и можно будет непосредственно редактировать строку параметров ядра.
В строку параметров ядра добавить указание файла
preseed, при этом использовать не каталог/cdrom, а
каталог
/media, например:Блок кода linux /install.amd/vmlinuz quiet modprobe.blacklist=evbug astra_install=1 nomodeset debian-installer/locale=ru debian-installer/language=ru keyboard-configuration/xkb-keymap=ru console-keymaps-at/keymap=ru preseed/file=/media/preseed.cfgНажать <Enter>.
- Подготовить накопитель:
Данный способ работает как при загрузке EFI, так и при загрузке BIOS.
Как упоминается ранее, при таком использовании полная автоматизация не обеспечивается, и всегда придется согласиться с лицензией и выбрать клавиши переключения языка. Порядок дальнейшей установки определяется указанным файлом preseed.cfg.
В составе дистрибутива
с debian-installer
| Информация |
|---|
Применимо только для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8) с debian-installer (есть метка di в названии загруженного образа) и для более ранних очередных обновлений. |
Далее подразумевается, что действия выполняются в домашнем каталоге пользователя, загрузочный образ уже распакован в подкаталог cd домашнего каталога пользователя, и
Этот вариант замены preseed обеспечивает полную автоматизацию при установке, никакие вопросы задаваться не будут.
Подразумевается, что файл с новым сценарием установки preseed.cfg сохранен в текущем в домашнем каталоге . Подробнее про сценарии установки см. Автоматическая установка Astra Linux Special Edition 1.7.
Далее приведен сценарий выполняющий действия по замене файла preseed.cfg, находящегося в составе дистрибутива:
- Распаковываются загрузочные образы из копии дистрибутива. Для распаковки создается временный каталог, который далее используется в качестве рабочего;
- В распакованных образах файл preseed.cfg заменяется новым файлом;
- Образы упаковываются и помещаются в копию установочного диска.
Сценарий:
| Command |
|---|
for n in ~/cd/install.amd ~/cd/install.amd/gtk ~/cd/hd-media ~/cd/hd-media/gtk; do |
Состав каталогов, содержащих загрузочные образы (и, соответственно, файл pressed.cfg), различается в разных дистрибутивах, в частности может отсутствовать каталог hd-media.
Обновление индексов
После внесения всех изменений выполнить обновление индексов репозитория:
| Command |
|---|
| cd ~/cd; find ! -name md5sum.txt -follow -type f -print0 | xargs -0 md5sum > md5sum.txt ; cd .. |
Предупреждение
| Информация |
|---|
find: Обнаружено зацикливание в файловой системе; ... |
можно игнорировать.
Первичные проверки модифицированного дистрибутива
Примонтировать каталог с дистрибутивом:
| Command |
|---|
| sudo mount -o bind $HOME/cd /mnt |
Chroot
Выполнить создание chroot-образа из примонтированного дистрибутива:
| Информация |
|---|
На момент последнего обновления настоящей статьи для выполнения данной проверки с использованием образа Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) на обновлениях Astra Linux, выпущенных до очередного обновления 1.7, необходимо использовать пакеты debootstrap и debian-archive-keyring из очередного обновления 1.7 (см. Подключение репозиториев с пакетами в ОС Astra Linux и установка пакетов). |
| Command |
|---|
| sudo debootstrap --components=main,contrib,non-free --arch=amd64 1.7_x86-64 chroot "file:///mnt" |
Состав репозитория
Создать на рабочей машине файл /etc/apt/sources.list.d/mounted.list со ссылкой на примонтированный репозиторий:
| Command |
|---|
| echo "deb file:/mnt 1.7_x86-64 main contrib non-free" | sudo tee /etc/apt/sources.list.d/mounted.list |
пользователя. Общий порядок действий для одного образа initrd:
- Распаковать файлы загрузчика ранее распакованного модифицируемого образа из рабочего каталога.
- Произвести замену файла
preseed.cfgв составе распакованных файлов загрузчика. - Запаковать файлы загрузчика модифицируемого образа:
Образы initrd находятся в следующих каталогах:
- install.amd/initrd;
- install.amd/gtk/initrd;
- hd-media/initrd (может отсутствовать в дистрибутиве);
- hd-media/gtk/initrd (может отсутствовать в дистрибутиве);
Пример сценария замены файла preseed.cfg
Как и ранее, предполагается, что дистрибутив распакован в подкаталог cd домашнего каталога, а новый файл preseed.cfg находится в домашнем каталоге. Сценарий перебирает все известные каталоги, в которых может находиться образ initrd, и для каждого найденного каталога выполняет действия по замене файла:
| Блок кода |
|---|
for n in ~/cd/install.amd ~/cd/install.amd/gtk ~/cd/hd-media ~/cd/hd-media/gtk; do
if [ -d $n ] ; then
pushd `mktemp -d`
chmod u+w $n $n/initrd.gz
cat $n/initrd.gz | gzip -d | sudo cpio -i
sudo cp ~/preseed.cfg .
sudo find | cpio -o --format=newc | gzip -9c > $n/initrd.gz
sudo rm -rf *
chmod -R -w $n
popd
fi
done |
Пример файла preseed
Пример файла preseed:
| Раскрыть | |||||
|---|---|---|---|---|---|
| |||||
|
В составе дистрибутива с astra-installer
Подразумевается, что файл с новым сценарием установки astra-installer-preseed.yaml сохранен в текущем рабочем каталоге вместо preseed.cfg.(в примере это домашний каталог пользователя, куда в /cd был распакован образ установочного диска).
| Информация |
|---|
| Рекомендуется учитывать обьем дискового пространства рабочего каталога, который будут занимать несколько создаваемых каталогов с распакованным установочным образом |
- Создать дополнительные рабочие каталоги
mnt,squashfs,edit:Command mkdir -p ~/{mnt,squashfs,edit} - Включить модуль ядра
squashfs:Command sudo modprobe squashfs - Примонтировать установочный образ:
Command sudo mount -o loop ~/<имя_установочного_образа>.iso mnt - Удалить файл:
Command sudo rm ~/cd/live/filesystem.squashfs - Примонтировать раздел с файловой системой
squashfs:Command sudo mount -t squashfs -o loop mnt/live/filesystem.squashfs squashfs/ - Скопировать раздел в ранее созданный рабочий каталог
edit:Command sudo cp -a squashfs/* edit - Скопировать файл
astra-installer-preseed.yamlв каталог с системойsquashfs:Command sudo cp ~/astra-installer-preseed.yaml edit/etc/Раскрыть title Пример файла astra-installer-preseed.yaml (фоновый режим установки без диалоговых окон) Блок кода title astra-installer-preseed.yaml # Автоматически подтвердить согласие с лицензией license: true # Список доступных языков системы locales: - ru_RU # - en_US # Список доступных раскладок клавиатуры layouts: - ru - us # Настройки комбинации клавиш для переключения раскладки клавиатуры (alt_shift_toggle, ctrl_shift_toggle, ...) # grp options from /usr/share/X11/xkb/rules/base.lst layout_switch_keys: - ctrl_shift_toggle # Настройки часового пояса timezone: Europe/Moscow # Настройки синхронизации времени (опционально) # Для того, чтобы служба синхронизации времени автоматически запускалась после установки ОС следует указать ntp_state: True. # При этом если значение параметра ntp_settings не задано, то для синхронизации будет использоваться сервер ntp1.vniiftri.ru. ntp_settings: ntp_state: True # Статус синхронизации ntp_server: 'ntp1.vniiftri.ru' # Сервер для синхронизации (опционально) # Настройки пользователя user: username: astra # Имя пользователя # Ниже приведены примеры настройки паролей пользователя и GRUB # Supported plain and hashed passwords (see man chpasswd and man crypt) password: Testastra!357 # или # password-encrypted: $6$hackmehackme$ZzN7PixBxkr6xS2Mdc9rUgjBsF/HimXDXgDGM48JOq/fBnuOKIf42/wOjwR9vA/D2Blwbz.82AGwjxnyaVntX0 # Supported plain and encrypted GRUB passwords (see man grub-mkpasswd-pbkdf2) grub-password: Testastra!357 # или # grub-password-encrypted: <зашифрованный пароль GRUB> host: # Имя хоста hostname: astra # Генерировать случайный суффикс вида "-NNNNN" к имени хоста (не обязательно) generate_sub_name: True # Настройки репозиториев # При установке по сети требуется обязательно указать в данной секции удаленный репозиторий. При установке из образа определять данную секцию не обязательно # repos: # debootstrap: # name: # default: "Main repository" # ru_RU: "Основной репозиторий" # url: 'deb https://dl.astralinux.ru/astra/stable/1.8_x86-64/repository-main/ 1.8_x86-64 main contrib non-free' # Ядро, которое будет установлено kernel-package: 6.1.50-1-generic # Список компонентов системы, которые будут установлены tasks: - Base - Fly - hidden # Идентификатор режима защищенности, который будет применен к устанавливаемой системе (в данном примере будет применен максимальный режим) mode: 2 # Список дополнительных настроек (настройки безопасности), которые будут применены к устанавливаемой системе features: - astra-mic-control - astra-mac-control # - astra-ptrace-lock # - astra-sudo-control # Ниже приведены примеры конфигурации разметки # В данном примере разметка будет выполнена в соответствии с заранее прописанным шаблоном из указанного файла storage: # # Device is enought. Default template will be used. # device: /dev/sdb # Диск, к которому будет применена разметка, и на который будет установлена система # template: default_template.txt # Файл шаблона разметки # Выбор типа таблицы разделов: # 1. Если не используется разметка дисков с помощью опции config, то указать тип таблицы разделов можно с помощью опций gpt и bios: # gpt: True # Создать таблицу разделов GPT. Рекомендованный вариант. # bios: True # Произвести установку системы в режиме совместимости с BIOS # 2. Если используется опция config, то тип таблицы разделов указывается в команде очистки разделов clearpart: # clearpart --all --disklabel=gpt # Рекомендованный вариант # или # clearpart --all --disklabel=msdos # В данном примере полностью описывается шаблон разметки # Формат шаблона — Kickstart # Является аналогом ручной разметки # При установке в режиме UEFI требуется описать разделы, необходимые для данного режима. Пример такого описания включен в шаблон: # part /boot/efi --label=efi --fstype=ext2 --size=1024 --asprimary storage: # gpt: true # Выбор типа таблицы разделов. В данном примере не используется, так как далее для разметки диска используется опция confg, # позволяющая детально задать шаблон разметки. # Строки шаблона должны быть разделены последовательностью из двух символов "\n" (новая строка). Опция config и шаблон разметки: config: " ignoredisk --only-use=sda|vda clearpart --all --disklabel=gpt bootloader --location=partition part biosboot --fstype=biosboot --size=2 part /boot --label=boot --fstype=ext2 --size=1024 --asprimary part /boot/efi --label=efi --fstype=ext2 --size=1024 --asprimary part pv.lvm_part --grow --asprimary volgroup VG pv.lvm_part logvol / --fstype=ext4 --name=lv_root --vgname=VG --percent=100 logvol swap --fstype=swap --name=lv_swap --vgname=VG --recommended"При наличии готового
preseed.cfgдопускается Конвертация формата debian-preseed в формат astra-preseed. - Создать новую файловую систему для образа:
Command sudo mksquashfs edit cd/live/filesystem.squashfs -b 1048576 -comp xz -Xdict-size 100% -e bootГде:
edit— каталог из содержимого которого будет создан архив со сжатой файловой системойsquashfs;cd/live/filesystem.squashfs— выходной файл;-b 1048576—-comp xz—-Xdict-size 100%— задает размер словаря для алгоритма сжатия. В данном случае `100%` означает, что размер словаря будет равен размеру блока;-e boot— исключает каталог/boot.
- Записать параметры файловой системы на образ:
Command sudo du -sx --block-size=1 edit | cut -f1 | sudo tee cd/live/filesystem.size - Указать имя образа последовательно выполнив команды:
Command echo "custom-astra" | sudo tee cd/README.diskdefinesГде
custom-astra— имя модифицированного установочного образа.Раскрыть title Пример сценария модификации образа с astra-installer Блок кода title custom_astra-installer.sh #!/bin/bash # установить режим пошаговой отладки set -xe # имя установочного образа ISONAME="custom-astra.iso"; #Для добавления пользовательского файла _astra-installer-preseed.yaml_ просим выполнить следующие действия: #1. Создать основной рабочий каталог liveCD и подкаталоги: mkdir -p ~/{mnt,squashfs,edit} #2. Перейти в основной рабочий каталог: cd ~/ #3. Примонтировать live-образ: sudo mount -o loop ~/$ISONAME mnt #4. Удалить файл: sudo rm ~/cd/live/filesystem.squashfs #5. Включить модуль ядра squashfs: sudo modprobe squashfs #6. Примонтировать раздел с файловой системой squashfs: sudo mount -t squashfs -o loop mnt/live/filesystem.squashfs squashfs/ #7. Скопировать раздел в ранее созданный рабочий каталог edit: sudo cp -a squashfs/* edit #8. Скопировать файл _astra-installer-preseed.yaml_ в каталог с системой squashfs: sudo cp ~/astra-installer-preseed.yaml edit/etc/ #9. Создать новую файловую систему для образа: sudo mksquashfs edit cd/live/filesystem.squashfs #10. Записать параметры файловой системы на образ: sudo du -sx --block-size=1 edit | cut -f1 | sudo tee cd/live/filesystem.size
Обновление индексов
После внесения всех изменений выполнить обновление индексов репозитория:
| Command |
|---|
cd ~/cd; find ! -name md5sum.txt -follow -type f -print0 | xargs -0 md5sum > md5sum.txt ; cd . |
| Информация |
|---|
|
Первичные проверки модифицированного дистрибутива
Примонтировать каталог с дистрибутивом:
| Command |
|---|
sudo mount -o bind $HOME/cd /mnt |
Chroot
Выполнить создание chroot-образа из примонтированного дистрибутива:
Информация На момент последнего обновления настоящей статьи для выполнения данной проверки с использованием образа Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8) на обновлениях Astra Linux, выпущенных до очередного обновления 1.8, необходимо использовать пакеты debootstrap и debian-archive-keyring из очередных обновлений 1.7 и 1.6 в соответствии с версией очередного обновления (см. Подключение репозиториев с пакетами в ОС Astra Linux и установка пакетов).
Command sudo debootstrap --components=main,contrib,non-free --arch=amd64 1.8_x86-64 chroot "file:///mnt"
Состав репозитория
Создать на рабочей машине файл
/etc/apt/sources.list.d/mounted.listсо ссылкой на примонтированный репозиторий:Command echo "deb file:/mnt 1.8_x86-64 main contrib non-free" | sudo tee /etc/apt/sources.list.d/mounted.listДля более ранних версий следует указать вместо
1.8_x86-64необходимую версию Astra Linux Special Edition, например1.7_x86-64.Очистить кеш пакетов:
Command sudo rm -fr /var/lib/apt/lists/*Обновить списки пакетов:
Command sudo apt updateУбедиться, что добавленные в модифицированный репозиторий пакеты доступны:
Command apt policy <имя_добавленного_пакета>Удалить файл
mounted.list:Command sudo rm /etc/apt/sources.list.d/mounted.listОбновить списки пакетов:
Command sudo apt update
После выполнения проверок отмонтировать дистрибутив:
| Command |
|---|
sudo umount /mnt |
Сборка загрузочного ISO-образа модифицированного дистрибутива
Извлечь сектор MBR из исходного ISO-образа дистрибутива:
Command dd if=<имя_файла_с_ISO-образом> bs=1 count=432 of=isohdpfx.binИзвлеченный сектор будет сохранен в файле
isohdpfx.bin.- Перейти в директорию куда был распакован образ:
Command cd cd - Уточнить путь до загрузчиков для дальнейшего указания в параметрах сборки ISO-образа:
Command find * -type f -name "*.img" -o -name "*.cat" Собрать модифицированный ISO-образ выполнив команду:
Для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8) с
astra-installer:Command sudo xorriso -as mkisofs -joliet -partition_cyl_align "off" -iso-level 4 -full-iso9660-filenames -eltorito-boot boot/grub/bios.img-eltorito-catalog boot/grub/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info --protective-msdos-label --grub2-mbr $HOME/isohdpfx.bin -eltorito-alt-boot-efi-boot-part --efi-boot-image boot/grub/bios.img -e EFI/boot/efiboot.img -no-emul-boot -o ../my-custom-astra1_8.iso .Где :
-eltorito-boot— путь к загрузчику для BIOS для файловой системы загрузочных дисков по стандарту ISO 9660;-eltorito-catalog— путь к каталогу с GRUB для файловой системы загрузочных дисков по стандарту ISO 9660;-grub2-mbr— путь к сектору MBR, ранее извлеченному в isohdpfx.bin ;-efi-boot-image— общий путь к загрузчику для BIOS;-e— путь к загрузчику UEFI, файлуefiboot.img;-o— путь до выходного файла ISO-образа.
Значение остальных опций см.man xorriso.Информация Опция
-no-emul-bootуказывается дважды после файлов-загрузчиков
- Для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8) с
debian-installer(есть метка di в названии загруженного образа) и более ранние очередные обновления:Command sudo xorriso -as mkisofs -isohybrid-mbr $HOME/isohdpfx.bin -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -V "ASTRA_ISO" \-eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat -append_partition 2 0xef boot/grub/efi.img \-o ../my-custom-astra1_8di.iso .Где : опция
-Vопределяет метку (volume id) создаваемого образа (в примере использована метка ASTRA_ISO), опция-oопределяет имя файла, в который будет записан образ (в примере -my-custom-astra.iso).
Дальнейшая работа с модифицированным образом не отличается от работы со стандартным образом.
| Раскрыть | |||||
|---|---|---|---|---|---|
| |||||
|
Очистить кеш пакетов:
| Command |
|---|
| sudo rm -fr /var/lib/apt/lists/* |
Обновить списки пакетов:
| Command |
|---|
| sudo apt update |
Убедиться, что добавленные в модифицированный репозиторий пакеты доступны:
| Command |
|---|
| apt policy <имя_добавленного_пакета> |
Удалить файл /etc/apt/sources.list.d/mounted.list:
| Command |
|---|
| sudo rm /etc/apt/sources.list.d/mounted.list |
Обновить списки пакетов:
| Command |
|---|
| sudo apt update |
После выполнения проверок отмонтировать дистрибутив:
| Command |
|---|
| sudo umount /mnt |
Создание файла с загрузочным ISO-образом модифицированного дистрибутива
Извлечь сектор MBR из исходного ISO-образа дистрибутива:
| Command |
|---|
| dd if=<имя_файла_с_ISO-образом> bs=1 count=432 of=isohdpfx.bin |
Извлеченный сектор будет сохранен в файле isohdpfx.bin;
Создать модифицированный ISO-образ:
| Command |
|---|
| xorriso -as mkisofs -isohybrid-mbr isohdpfx.bin -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -V "WIKI_ISO" \ -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat -append_partition 2 0xef cd/boot/grub/efi.img \ -o wiki_iso.iso ~/cd |
В приведенном примере опция -V определяет метку (volume id) создаваемого образа (в примере использована метка WIKI_ISO), опция -o определяет имя файла, в который будет записан образ (в примере - wiki_iso.iso). Значение остальных опций см. man xorriso.
Опционально: удалить файл isohdpfx.bin:
| Command |
|---|
| rm isohdpfx.bin |