[Документация Yandex Cloud](../../index.md) > [Yandex Cloud Marketplace](../index.md) > Партнерам > Концепции > Требования к продуктам Marketplace > Создание продукта BareMetal на базе Linux

# Создание продукта BareMetal на базе Linux для загрузки в Cloud Marketplace

Чтобы добавить в Cloud Marketplace продукт для Yandex BareMetal, нужно загрузить образ в Yandex Cloud. Продукты могут быть созданы на базе ОС Linux. Этот раздел поможет создать образ на базе ОС Linux.

## Создание образа {#create}

Образы продуктов BareMetal, размещаемых в Cloud Marketplace, должны соответствовать всем требованиям, приведенным [ниже](#requirements). Также ознакомьтесь с дополнительными [рекомендациями](#recommendations).

Образ BareMetal — это архив с полной копией файловой системы ОС, начиная от корневого каталога, который включает:

* файлы;
* вложенные директории;
* символические и жесткие ссылки с сохранением их оригинальной структуры и связей. 

Поддерживаемые форматы: `tar.bz2` и `tar.gz`.

Создайте образ одним из способов:

* Снимите образ с предварительно развернутой системы. Например, вы можете использовать [готовый скрипт](https://github.com/yandex-cloud/marketplace/blob/master/products-prepare/baremetal/baremetal-image.sh) от Yandex Cloud.
* Используйте утилиты chroot-окружения, предоставляемые операционной системой. Например, для семейства Debian — это `debootstrap`.
* Используйте образ диска виртуальной машины и извлеките файлы из него.

## Требования к образу {#requirements}

### Настройка системы {#system-setup}

* Терминал `tty0` настроен в качестве серийной консоли. Для этого задайте параметр ядра: `console=tty0`.
* Установлен пакет `cloud-init` и очищены данные предыдущих запусков `cloud-init`, если они были. Например, в Ubuntu с помощью команды: `cloud-init clean --logs --seed`.
* Отсутствуют настройки сетевых интерфейсов, кроме `lo`. Конфигурация сети будет создана при заказе сервера через `cloud-init`.
* Если ваш образ требует особых настроек для [генерации конфигурации сети через `cloud-init`](https://docs.cloud-init.io/en/latest/reference/network-config.html#network-configuration-outputs), то добавьте их в файл: `/etc/cloud/cloud.cfg.d/99_override_network.cfg`. По умолчанию используются следующие настройки:

   * Для семейства Debian: `renderers: ["netplan"]`, `activators: ["netplan"]`.
   * Для семейства RedHat: `renderers: ["sysconfig"]`, `activators: ["network-manager"]`.

* Установлен пакет `mdadm` для работы с программными RAID-массивами.
* Модуль ядра для работы с программными RAID-массивами включен в образ `initrd`. Если пакет `mdadm` устанавливался отдельно, обновите `initrd`:

   * Для семейства Debian: `update-initramfs -u`.
   * Для семейства RedHat: `dracut --regenerate-all -f`.

* В параметрах ядра включена автоматическая сборка программных RAID-массивов. Для этого добавьте параметр `rd.auto`.
* Образ должен поддерживать загрузку в режиме Legacy. Большинство дистрибутивов поддерживают этот режим по умолчанию.
* Образ должен поддерживать загрузку в режиме UEFI, например:

   * Для семейства Debian добавьте пакеты: `grub-efi-amd64-bin` и `dosfstools`.
   * Для семейства RedHat добавьте пакеты: `grub2-efi-x64` и `shim-x64`.

* Образ должен поддерживать агрегацию сетевых интерфейсов по протоколу LACP (IEEE 802.3ad).
* В настройках системного файрвола открыт необходимый минимум портов для работы ваших приложений, а также порт для доступа по [SSH](../../glossary/ssh-keygen.md) (по умолчанию — порт 22/TCP).
* SSH-сервер запускается автоматически при старте сервера.
* Доступ через SSH по паролю запрещен для всех пользователей и возможен только по ключу.
* Сервисы с вашим приложением устойчивы к перезагрузке сервера.

### Очистка образа {#image-cleanup}

* Следующие каталоги не содержат файлов или подкаталогов:

   * `/dev`
   * `/proc`
   * `/run`
   * `/sys`
   * `/tmp`
   * `/var/tmp`

* Каталог `/var/log` не содержит файлов. Подкаталоги допустимы, если также не содержат файлов.
* Файл `/etc/machine-id` существует и не содержит данных.
* Файл `/var/lib/dbus/machine-id` отсутствует или не содержит данных.
* Очищен кеш пакетного менеджера. В случае `apt` содержимое каталогов `/var/cache/apt` и `/var/lib/apt/lists` удалено, сами каталоги сохранены.
* Очищена история консольных команд (`.bash_history`, `.zsh_history` и т. д.).
* Очищена информация о настройках, ранее полученных по `DHCP`. Например, в Ubuntu в зависимости от версии и настроек это могут быть файлы: `/var/lib/NetworkManager/*.lease` или `/var/lib/dhcp/dhclient.leases`.

## Рекомендации для образа {#recommendations}

Приведенные ниже требования не являются обязательными, однако мы рекомендуем соблюдать их.

### Безопасность {#security}

Убедитесь, что:

* В образе нет системных пользователей, кроме тех, которые нужны приложениям.
* В образе нет заранее сгенерированных SSH-ключей и паролей.

   {% note warning %}

   Пароли приложений должны генерироваться при старте ВМ, чтобы пользователь смог изменить их при первом входе через серийную консоль или SSH.

   {% endnote %}

* В файле `/etc/sudoers*` не настроены лишние привилегии для пользователей.

### Настройка системы {#system-configuration}

* Установлена временная зона `Europe/Moscow` (+03:00).
* Настроена синхронизация времени с публичными серверами `NTP`. Например, как описано в практическом руководстве [Настройка синхронизации часов с помощью NTP](../../tutorials/infrastructure-management/ntp.md).
* Запрещены цели `systemd`, отвечающие за энергосбережение. Например, с помощью команды `systemctl mask`:

   * `sleep.target`
   * `suspend.target`
   * `hibernate.target`
   * `hybrid-sleep.target`

* В системе установлена только одна версия ядра. Это ускорит развертывание продукта и обеспечит предсказуемый пользовательский опыт.
* Выключено автоматическое обновление пакетов.
* Выключено автоматическое обновление прошивок оборудования (например, сервис `fwupd.service` в Ubuntu). Сервис BareMetal самостоятельно управляет прошивками оборудования.
* Репозитории пакетов используют зеркала в зоне .RU (например, [mirror.yandex.ru](http://mirror.yandex.ru)). Это ускорит скачивание и защитит от проблем с доступом к заблокированным ресурсам.
* Сохранены драйверы всех устройств. Сервис BareMetal предоставляет различные серверные конфигурации, и ваш образ должен работать на разном оборудовании.
* В образ добавлен небольшой набор системных утилит, которые помогут пользователю в случае возникновения проблем:

   * `curl`
   * `dig`
   * `ethtool`
   * `lshw`
   * `lspci`
   * `mtr`
   * `ping`
   * `traceroute`
   * `vim`