isocut – инструмент настройки образа ОС
Введение
Размер полного открытого образа операционной системы OpenScaler велик и процесс загрузки или передачи образа занимает много времени. Кроме того, когда для установки операционной системы используется открытый образ OpenScaler, то в некоторых сценариях использования устанавливаются все пакеты RPM, содержащиеся в образе. Вы не можете выбрать установку только необходимых пакетов программного обеспечения.
В некоторых случаях бывает не требуется устанавливать полный пакет программного обеспечения, предоставляемый образом или бывает необходимо установить дополнительные пакеты программного обеспечения. В этом случае может прийти на помощь базовый инструмент из состава операционной системы OpenScaler isocut — инструмент для настройки образа. Вы можете использовать этот инструмент для настройки ISO-образа, содержащего только необходимые пакеты RPM, на основе открытого образа OpenScaler. Пакеты программного обеспечения могут быть теми, которые содержатся в официальном ISO-образе или дополнительными для удовлетворения пользовательских требований.
В этой статье будет описано как установить и использовать isocut.
Установка isocut
Аппаратные и программные требования
Для создания ISO-файла с помощью isocut на компьютере требуются следующие аппаратные и программные средства:
- Архитектура процессора: AArch64 или X86_64
- Операционная система: OpenScaler 22.03 LTS или новее
- Дисковое пространство: 60 ГБ или более места на диске для запуска isocut и хранения ISO-образов.
Подготовка тестовой ОС
Ниже в качестве примера для использования был взят x86_64 совместимый сервер и была установлена ОС OpenScaler 22.03 LTS SP3. Достаточно минимальной конфигурации.
- Убедитесь, что на установлена ОС OpenScaler 22.03 LTS SP3. Для этого выполните команду:
$ cat /etc/openScaler-release
openScaler release 22.03 (LTS-SP3)
- Загрузите ISO-образ (должен быть полным, т.е. everything) соответствующей архитектуры и сохраните его в любом каталоге (рекомендуется, чтобы доступное дисковое пространство для создания каталога и файлов превышало 20 ГБ). В этом примере ISO-образ сохраняется в каталоге /home/isocut_iso. Выполните следующие команды:
mkdir /home/isocut_iso
wget https://repo.openscaler.ru/openScaler-22.03-LTS-SP3/ISO/x86_64/openScaler-22.03-LTS-SP3-everything-x86_64-dvd.iso
Адрес загрузки образа x86_64 следующий:
Примечание: Адрес для загрузки образа AArch64 следующий:
- Создайте файл /etc/yum.repos.d/local.repo для настройки локального репозитория Yum. Ниже приведен пример файла конфигурации. Параметр baseurl — это каталог для монтирования ISO-образа.
[local]
name=local
baseurl=file:///home/isocut_mount
gpgcheck=0
enabled=1
- Запустите следующую команду от имени пользователя root, чтобы смонтировать образ в каталог /home/isocut_mount (убедитесь, что каталог монтирования совпадает с каталогом baseurl, настроенным в файле репозитория) в качестве хранилища Yum:
sudo mount -o loop /home/isocut_iso/openScaler-22.03-LTS-SP3-everything-x86_64-dvd.iso /home/isocut_mount
- Запускаем репозиторий Yum.
yum clean all
yum makecache
- Устанавливаем isocut от имени пользователя root командой ниже (также см. Рисунок 1):
sudo yum install -y isocut
7. Запустите следующую команду от имени пользователя root, чтобы убедиться, что инструмент успешно установлен:
# sudo isocut -h
Checking input …
usage: isocut [-h] [-temp temporary_workspace] [-rpms rpm_path] [-install_pic install_picture_path] [-kickstart kickstart_file_path] [-product product_name] [-version version_number]
[-cut_packages cut_packages]
source_iso dest_iso
Cut openScaler iso to small one
positional arguments:
source_iso source iso image
dest_iso destination iso image
optional arguments:
-h, –help show this help message and exit
-temp temporary_workspace
temporary path
-rpms rpm_path extern rpm packages path
-install_pic install_picture_path
install bg picture path
-kickstart kickstart_file_path
kickstart file path
-product product_name
product name
-version version_number
version number
-cut_packages cut_packages
cut packages, yes/no, default is yes
Также предлагается ниже на Рисунке 2 пример выполнения такой команды с помощью.
Адаптация и настройка образа
В этом разделе описывается, как использовать isocut для создания образов путем адаптации или добавления пакетов RPM к образу OpenScaler.
Описание команды
Формат
Запустите команду isocut, чтобы использовать инструмент. Формат команды следующий:
isocut [ –help | -h ] [ -t <temporary_workspace> ] [ -r <rpm_path> ] [ -k <kickstart_file_path> ] [ -p <product_name> ] [ -v <version_number>] [ -i <install_picture_path> ] [ -c <cut_packages> ] < source_iso > < dest_iso >
Описание параметров
Параметр Обязательность Описание
–help | -h No Запрашивает справочную информацию о команде.
-t <temporary_workspace> No Указывает путь к временному каталогу temp_path для запуска инструмента, который является абсолютным путем. По умолчанию /tmp.
-r <rpm_path> No Указывает путь к пакетам RPM, которые будут добавлены в ISO-образ.
-k <kickstart_file_path> No Указывает путь к шаблону kickstart, если для автоматической установки используется kickstart.
-p <product_name> No Наименование пакета
-v <version_number> No Версия пакета
-i <install_picture_path> No Путь к фоновым изображениям, использованным при установке
-c <cut_packages> No Указывает, нужно ли сокращать пакеты RPM. Значение по умолчанию – сокращать пакеты RPM.
source_iso Yes Путь и имя исходного ISO-образа, который необходимо указать. Если путь не указан, по умолчанию используется текущий.
dest_iso Yes Указывает путь и имя нового ISO-образа, созданного инструментом. Если путь не указан, по умолчанию используется текущий.
Фоновые изображения, используемые при установке, должны соответствовать следующим требованиям к наименованию и разрешению:
- Фон левой боковой панели при установке: sidebar-bg.png, 290×780
- Логотип в верхнем левом углу при установке: sidebar-logo.png, 132×32
- Фон верхней панели инструментов на странице настроек: top bar-bg.png, 831×105.
Источники пакета программного обеспечения
RPM-пакеты нового образа могут быть двух типов:
- Пакеты, содержащиеся в официальном ISO-образе. В этом случае устанавливаемые RPM-пакеты указаны в файле конфигурации /etc/isocut/rpmlist. Формат именования пакета — architecture. Например, kernel.aarch64.
- Дополнительные пакеты. В этом случае используйте параметр -r, чтобы указать путь, по которому хранятся пакеты RPM, при запуске команды isocut и добавьте имена пакетов RPM в конфигурационный файл /etc/isocut/rpmlist. (Смотрите формат имен выше).
Замечание. 1) Во время настройки образа, если пакет RPM, указанный в файле конфигурации, не может быть найден, пакет RPM не будет добавлен в образ. 2) Если зависимость пакета RPM неверна, при запуске isocut может появиться сообщение об ошибке.
Kickstart функции
Вы можете использовать kickstart для автоматической установки образов, используя параметр -k, чтобы указать файл kickstart при запуске команды isocut.
isocut предоставляет шаблон kickstart (конфигурационный файл находится по этому пути /etc/isocut/anaconda-ks.cfg). Вы можете изменить шаблон по мере необходимости.
Изменение kickstart шаблона
Если вам необходимо использовать шаблон kickstart, предоставленный isocut, внесите следующие изменения:
- Настройте пароль пользователя root и пароль GRUB2 в файле /etc/isocut/anaconda-ks.cfg. В противном случае автоматическая установка образа будет приостановлена во время процесса установки пароля, ожидая, пока вы введете пароли вручную.
- Если вы хотите указать дополнительные пакеты RPM и использовать kickstart для автоматической установки, укажите пакеты RPM в поле %packages как в файле /etc/isocut/rpmlist, так и в файле kickstart.
Смотрите следующий раздел для получения подробной информации о том, как изменить файл kickstart.
Настройка начальных паролей
Установка начального пароля пользователя root
Установите начальный пароль пользователя root следующим образом в файле /etc/isocut/anaconda-ks.cfg. Замените ${pwd} на зашифрованный пароль командой:
rootpw –iscrypted ${pwd}
Получите первоначальный пароль пользователя root следующим образом (требуются права root):
- Добавьте пользователя для генерации пароля, например, testUser:
sudo useradd testUser
- Установите пароль для пользователя testUser. Выполните следующую команду, чтобы установить пароль в соответствии с запросом:
$ sudo passwd testUser
Changing password for user testUser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
- Просмотрите файл /etc/shadow, чтобы получить зашифрованный пароль. Зашифрованный пароль — это строка между двумя двоеточиями (:), следующая за именем пользователя для тестирования. (В качестве примера используется *******).
$ sudo cat /etc/shadow | grep testUser
testUser:***:19052:0:90:7:35::
- Выполните следующую команду, чтобы заменить поле pwd в файле /etc/isocut/anaconda-ks.cfg на зашифрованный пароль (замените ******* на фактический пароль).:
rootpw –iscrypted ***
Настройка начального пароля GRUB2
Добавьте следующую конфигурацию в файл /etc/isocut/anaconda-ks.cfg, чтобы установить первоначальный пароль GRUB2: замените ${pwd} на зашифрованный пароль.
%addon com_grub_safe –iscrypted –password=’${pwd}’
%end
Замечание. 1. Для настройки начального пароля GRUB требуются права root. 2. Пользователь по умолчанию, соответствующий паролю GRUB — root. В системе должна существовать утилита grub2-set-password. Если нет, то установите ее заранее.
- Выполните следующую команду и установите пароль GRUB2 в соответствии с запросом:
$ sudo grub2-set-password -o ./
Enter password:
Confirm password:
grep: .//grub.cfg: No such file or directory
WARNING: The current configuration lacks password support!
Update your configuration with grub2-mkconfig to support this feature.
- После выполнения команды в текущем каталоге будет создан файл user.cfg. Содержимое, начинающееся с grub.pbkdfsha512, является зашифрованным паролем GRUB2.
$ sudo cat user.cfg
GRUB2_PASSWORD=grub.pbkdf2.sha512.***
- Добавьте следующую информацию в файл /etc/isocut/anaconda-ks.cfg. Замените ******* на зашифрованный пароль GRUB2.
%addon com_grub_safe –iscrypted –password=’grub.pbkdf2.sha512.***’
%end
Настройка поля %packages
Если вы хотите указать дополнительные пакеты RPM и использовать kickstart для автоматической установки, укажите пакеты RPM в поле %packages как в файле /etc/isocut/rpmlist, так и в файле kickstart.
В этом разделе описывается, как указать пакеты RPM в файле /etc/isocut/anaconda-ks.cfg.
Конфигурации %packages в файле /etc/isocut/anaconda-ks.cfg по умолчанию следующие:
%packages –multilib –ignoremissing
acl.aarch64
aide.aarch64
……
NetworkManager.aarch64
%end
Добавьте указанные пакеты RPM в конфигурации %packages в следующем формате:
software_package_name.architecture. Например, kernel.aarch64.
%packages –multilib –ignoremissing
acl.aarch64
aide.aarch64
……
NetworkManager.aarch64
kernel.aarch64
%end
Руководство по использованию isocut
Примечание:
- Не изменяйте и не удаляйте элементы конфигурации по умолчанию в файле /etc/iso cut/rpmlist.
- Для всех операций по обеспечению безопасности требуются права суперпользователя.
- Исходный образ, который необходимо настроить, может быть базовым образом или образом для всего. В этом примере используется базовый образ openScaler-22.03-LTS-SP3-everything-x86_64-dvd.iso.
- В этом примере предположим, что новый образ называется iso и хранится в каталоге /home/result, временным каталогом для запуска инструмента является /home/temp, а дополнительные пакеты RPM хранятся в каталоге /home/rpms.
Пример использования
- Откройте конфигурационный файл /etc/isocut/rpm list и укажите пакеты RPM, которые необходимо установить (из официального ISO-образа).
sudo vi /etc/isocut/rpmlist
- Убедитесь, что объем временного каталога для запуска isocut превышает 8 ГБ. Временным каталогом по умолчанию является /tmp. Вы также можете использовать параметр -t, чтобы указать другой каталог в качестве временного каталога. Путь к каталогу должен быть абсолютным. В этом примере используется каталог /home/temp. Следующие выходные данные команды показывают, что доступное место на диске в каталоге /home составляет 147 ГБ, что соответствует требованиям.
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 31G 0 31G 0% /dev/shm
tmpfs 13G 1.3G 11G 11% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/mapper/openscaler-root 167G 3.7G 155G 3% /
tmpfs 31G 248K 31G 1% /tmp
/dev/sda2 974M 139M 769M 16% /boot
/dev/mapper/openscaler-home 147G 18G 122G 13% /home
/dev/mapper/openscaler-var 201G 5.0G 186G 3% /var
/dev/sda1 599M 6.2M 593M 2% /boot/efi
/dev/loop0 18G 18G 0 100% /home/isocut_mount
- Адаптируйте и настройте образ.
Сценарий 1: Все RPM-пакеты нового образа взяты из официального ISO-образа.
# sudo isocut -t /home/temp /home/isocut_iso/openScaler-22.03-LTS-SP3-everything-x86_64-dvd.iso /home/result/new.iso
Checking input …
Checking user …
Checking necessary tools …
Initing workspace …
Copying basic part of iso image …
Getting the description of iso image …
Downloading rpms …
Finish create yum conf
finished
Regenerating repodata …
Checking rpm deps …
Replacing install background pictures …
Updating EFI config file …
Updating legacy config file …
Updating treeinfo file …
Customizing kickstart file …
Remaking iso …
Adding checksum for iso …
Adding sha256sum for iso …
ISO cutout succeeded, enjoy your new image “/home/result/new.iso”
isocut.lock unlocked …
Пример успешного выполнения команды для этого сценария можно увидеть на Рисунке 3 ниже:
Сценарий 2: Пакеты RPM для нового образа взяты из официального ISO-образа и дополнительных пакетов в /home/rpms:
# sudo isocut -t /home/temp -r /home/rpms /home/isocut_iso/openScaler-22.03-LTS-SP3-everything-x86_64-dvd.iso /home/result/new.iso
Checking input …
Checking user …
Checking necessary tools …
Initing workspace …
Copying basic part of iso image …
Getting the description of iso image …
Downloading rpms …
Finish create yum conf
finished
Regenerating repodata …
Checking rpm deps …
Replacing install background pictures …
Updating EFI config file …
Updating legacy config file …
Updating treeinfo file …
Customizing kickstart file …
Remaking iso …
Adding checksum for iso …
Adding sha256sum for iso …
ISO cutout succeeded, enjoy your new image “/home/result/new.iso”
isocut.lock unlocked …
Пример результата выполнения этой команды можно увидеть ниже на Рисунке 4.
Сценарий 3. Для автоматической установки используется файл kickstart. Необходимо изменить файл /etc/isocut/anaconda-ks.cfg следующей командой:
sudo isocut -t /home/temp -k /etc/isocut/anaconda-ks.cfg /home/isocut_iso/openScaler-22.03-LTS-SP3-everything-x86_64-dvd.iso /home/result/new.iso
Функции cut_packages
На основе стандартного ISO-образа, выпущенного сообществом OpenScaler, пакет RPM может быть адаптирован по запросу в процессе настройки установки.
Указав параметр cut_packages, можно выбрать следует ли сокращать пакеты RPM.
Пример использования
Сценарий 1: Пользователь решает не сокращать пакеты RPM.:
sudo isocut -t /opt/tlriso/tmp -p openScaler -c no -v 22.03-LTS-SP3 /home/isocut_iso/openScaler-22.03-LTS-SP3-everything-x86_64-dvd.iso openScaler-22.03-LTS-SP3-x86_64-dvd_new.iso
Сценарий 2: Пользователь решает отключить пакеты RPM. Выполните следующую команду:
sudo isocut -t /opt/tlriso/tmp -p openScaler -c yes -v 22.03-LTS-SP3 /home/isocut_iso/openScaler-22.03-LTS-SP3-everything-x86_64-dvd.iso openScaler-22.03-LTS-SP3-x86_64-dvd_new.iso
Сценарий 3: Пакеты RPM по умолчанию отключены, а значение параметра пустое.
sudo isocut -t /opt/tlriso/tmp -p openScaler -v 22.03-LTS-SP3 /home/isocut_iso/openScaler-22.03-LTS-SP3-everything-x86_64-dvd.iso openScaler-22.03-LTS-SP3-x86_64-dvd_new.iso
Результаты
По результатам успешной установки и использования isocut для ОС OpenScaler 22.03 LTS SP3 можно сделать вывод, что данное ПО совместимо с ОС семейства OpenScaler и такое решение может быть в дальнейшем успешно использовано для создания своих собственных сборок операционной системы с нужным количеством пакетов, а также приемлемым размером дистрибутива. Программное обеспечение isocut сокращает затраты на развертывание ОС, одновременно снижая расходы на занимаемое дисковое пространство под нужды ОС конкретного пользователя и предоставляет простой механизм использования для пользователей, выполнения различного круга задач с применением cерверной ОС OpenScaler.