| Оглавление |
|---|
| Информация | ||
|---|---|---|
| ||
| Информация | ||
|---|---|---|
| ||
|
| Предупреждение |
|---|
Ответственность за применение и сопровождение модифицированных операционных систем, установленных с модифицированных установочных носителей, полностью лежит на авторах этих носителей. Замкнутость полученного дистрибутива не проверяется и возможность установки из него пакетов не гарантируется. Стандартная техническая поддержка Astra Linux не распространяется на такие системы. Действие сертификатов Astra Linux не распространяется на такие системы. |
Введение
В данной статье рассматривается создание модифицированного установочного диска. Модифицированный образ создается на основе стандартного образа установочного диска Astra Linux Special Edition. Модификация подразумевает изменение состава 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 install reprepro xorriso build-essential debootstrap
Создание распакованной копии установочного диска
Далее предполагается, что образ установочного диска загружен в домашний каталог текущего пользователя и что все действия выполняются в этом домашнем каталоге. Для распаковки загруженного образа:
Создать подкаталог для распаковки:
Command mkdir ~/cdРаспаковать ISO-образ в созданный каталог:
Command xorriso -osirrox on -indev путь_к_файлу.iso -extract / cd
Для выполнения дальнейших модификаций разрешить запись в распакованные файлы:
Command chmod -R +w ~/cd
В результате этого шага в подкаталоге /cd домашнего каталога текущего пользователя будет создан подкаталог /cd с копией содержимого образа установочного диска, и будет разрешено вносить изменения в содержимое этой копии.
Создание и пакетизация собственного ключа для подписания измененного установочного образа
Создание собственного ключа
| Предупреждение |
|---|
| Для подписания измененного установочного образа следует использовать ключи, выпущенные в соответствии с установленными в организации правилами. Приведенный далее пример создания ключа применим исключительно в демонстрационных целях. |
Зафиксировать имя, которое будет использоваться в ключе. Обычно в качестве такого имени применяют адрес электронной почты, который для повторного применения удобно экспортировать в переменную окружения:
Command mail="<адрес_электронной_почты>"например:
Command mail="support@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 Выполнить генерацию ключа используя созданный конфигурационный файл:
Command 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 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):
Пакетизация собственного ключа
| Информация |
|---|
Для того, чтобы исключить проверку подписей пакетов при установке, нужно добавить опцию 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/controlс параметрами пакета (в приведенном примере команды используются значения ранее заданных переменных окружения):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: AstraCodename: 1.8_x86-64Suite: stableVersion: 1.8.1Architectures: amd64Components: main contrib non-freeUDebComponents: mainSignWith: yes' > ~/cd/conf/distributions
| Предупреждение |
|---|
Приведенная для примера конфигурация использует дистрибутив Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.8, архитектуру |
Далее:
Инициализировать репозиторий:
Command reprepro -b cd/ export 1.8_x86-64Выгрузить ключ для подписи репозитория:
Command gpg --yes --armor -o ~/cd/dists/1.8_x86-64/Release.gpg -sb ~/cd/dists/1.8_x86-64/ReleaseНаполнить репозиторий пакетами, сохраненными во временном каталоге
/cache:Command reprepro --ask-passphrase -Vb cd includedeb 1.8_x86-64 cache/*.debreprepro --ask-passphrase -Vb cd includeudeb 1.8_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.8_x86-64 ~/cd/dists/stableУдалить ненужный каталог
~/cd/confи временные копии пакетов:Command rm -rf ~/cd/conf ~/cd/db cache
Замена файла конфигурации установки preseed.cfg
На установочном диске содержится файл с ответами на вопросы установщика ОС файл preseed.cfg. Для простой автоматизации установки можно задать альтернативный файл непосредственно при установке ОС. Эта возможность не обеспечивает полной автоматизации установки, но может упростить и стандартизировать установку ОС.
Пример файла для 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>.
- Подготовить накопитель:
Как упоминается ранее, при таком использовании полная автоматизация не обеспечивается, и всегда придется согласиться с лицензией и выбрать клавиши переключения языка. Порядок дальнейшей установки определяется указанным файлом preseed.cfg.
В составе дистрибутива с debian-installer
Подразумевается, что файл с новым сценарием установки preseed.cfg сохранен в текущем рабочем каталоге (в примере это домашний каталог пользователя, куда в /cd был распакован образ установочного диска).
| Информация |
|---|
| Автоматизированная установка при загрузке с установочного образа работает только при выборе консольного типа установки (без графики) в пункте меню загрузки |
Для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8) с debian-installer (есть метка di в названии загруженного образа) и более ранних очередных обновлений:
- Распаковать загрузочные образы из копии дистрибутива. Для распаковки создается временный каталог (в рассматриваемом примере это
cd), который далее используется в качестве рабочего. (см. Создание распакованной копии установочного диска). - Распаковать файлы загрузчика ранее распакованного модифицируемого образа из рабочего каталога:
Command sudo gunzip cd/install.amd/initrd.gz - Произвести замену файла
preseed.cfgв составе распакованных файлов загрузчика:Command sudo echo preseed.cfg | sudo cpio -o -H newc -A -F cd/install.amd/initrdРаскрыть title Ёще один пример файла preseed.cfg (фоновый режим установки без диалоговых окон) Блок кода title preseed.cfg # Сетевой репозиторий для установки d-i mirror/protocol string http d-i mirror/http/hostname string dl.astralinux.ru d-i mirror/http/directory string /astra/stable/1.7_x86-64/repository-main # Настройки языка d-i mirror/country string manual d-i debian-installer/locale string ru_RU d-i debian-installer/locale select ru_RU.UTF-8 d-i debian-installer/language string ru d-i debian-installer/country string RU d-i debian-installer/keymap string ru # Настройки клавиатуры d-i console-tools/archs select at d-i console-keymaps-at/keymap select ru d-i console-setup/toggle string Ctrl+Shift d-i console-setup/layoutcode string ru d-i keyboard-configuration/toggle select Ctrl+Shift d-i keyboard-configuration/layoutcode string ru d-i keyboard-configuration/xkb-keymap select ru d-i languagechooser/language-name-fb select Russian d-i countrychooser/country-name select Russia # Настройки сетевого интерфейса d-i netcfg/choose_interface select auto # Выбор компонент репозитория d-i apt-setup/non-free boolean true d-i apt-setup/contrib boolean true d-i apt-setup/services-select none # Настройка часов и синхронизации времени d-i clock-setup/utc boolean true d-i time/zone string Europe/Moscow # Определяет, нужно ли использовать NTP для установки часов во время установки d-i clock-setup/ntp boolean true # Используемый сервер NTP. Значение по умолчанию указывается здесь. Для примера указан сервер ВНИИФТРИ. d-i clock-setup/ntp-server string ntp4.vniiftri.ru # Разметка диска d-i partman-auto/method string regular d-i partman-auto/purge_lvm_from_device boolean true d-i partman-lvm/confirm boolean true # Для режима legacy bios: d-i partman-auto/expert_recipe string myroot :: \ 512 16384 512 ext2 \ $primary{ } $bootable{ } \ method{ format } format{ } use_filesystem{ } filesystem{ ext2 } mountpoint{ /boot } .\ 8192 16384 16384 ext4 \ method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ / } .\ 2048 16384 2048 ext4 \ method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /tmp } options/noexec{ noexec } options/nodev{ nodev } options/nosuid{ nosuid } .\ 500 8192 -1 ext4 \ method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /home } . d-i partman-auto/choose_recipe select myroot #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 false 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 d-i base-installer/kernel/image string linux-image-generic d-i passwd/make-user boolean true # Учетная запись и пароль пользователя d-i passwd/user-fullname string astra d-i passwd/username string astra d-i passwd/user-password password 12345678 d-i passwd/user-password-again password 12345678 # или в виде MD5 хеша. #d-i passwd/user-password-crypted password [MD5 хеш] d-i debian-installer/allow_unauthenticated string true # Имя узла и имя домена d-i netcfg/get_hostname string astra d-i netcfg/get_domain string astradomain d-i netcfg/get_hostname seen true d-i netcfg/get_domain seen true #Выбор ядра d-i base-installer/kernel/image select linux-6.1-generic #Пропустить сканирование дополнительного установочного носителя d-i apt-setup/cdrom/set-first boolean false d-i apt-setup/use_mirror boolean false # Выбор ПО для установки tasksel tasksel/first multiselect Base packages, Fly desktop, SSH server tasksel tasksel/astra-feat-setup multiselect # Выбор уровня защищенности ОС d-i astra-additional-setup/os-check select Maximum security level Smolensk # Выбор параметров ОС d-i astra-additional-setup/additional-settings-smolensk multiselect Enable Mandatory Integrity Control, Enable Mandatory Access Control, Disable ptrace capability # Подтверждение согласия с лицензионным соглашением (обязательный параметр) astra-license astra-license/license boolean true popularity-contest popularity-contest/participate boolean false d-i grub-installer/only_debian boolean true d-i grub-installer/with_other_os boolean true # Пароль загрузчика grub d-i grub-installer/password password 12345678 d-i grub-installer/password-again password 12345678 grub-installer grub-installer/password-mismatch error # Не показывать последнее сообщение о том, что установка завершена. d-i finish-install/reboot_in_progress note d-i finish-install/exit/poweroff boolean true d-i preseed/late_command string in-target apt purge -y ntp ; \ in-target systemctl enable systemd-timesyncd.service ; \ in-target rm -f /etc/NetworkManager/system-connections/*; - Запаковать файлы загрузчика модифицируемого образа:
Command sudo gzip cd/install.amd/initrdРаскрыть title Пример сценария замены preseed.cfg Command Title custom_preseed_di.sh #!/bin/bashset -eDIR=cd/install.amd/initrd.gzsudo gunzip $DIRsudo echo preseed.cfg | sudo cpio -o -H newc -A -F $DIRsudo gzip $DIR
В составе дистрибутива с 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 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 cd/boot/grub/efi.img \-o my-custom-astra.iso ~/cdГде : опция
-Vопределяет метку (volume id) создаваемого образа (в примере использована метка ASTRA_ISO), опция-oопределяет имя файла, в который будет записан образ (в примере -my-custom-astra.iso).
Дальнейшая работа с модифицированным образом не отличается от работы со стандартным образом.
| Раскрыть | |||||
|---|---|---|---|---|---|
| |||||
|