
# Скрипты для сборки облачных образов Kali (форк https://salsa.debian.org/cloud-team/debian-cloud-images)
Сборщик облачных образов Kali Linux на основе FAI (Fully Automatic Installation), форк от Debian Cloud Images.
Это те же самые скрипты сборки, которые команда Kali использует для создания официальных облачных образов Kali Linux, доступных на kali.org/get-kali/.
Для получения дополнительной информации см.: kali.org/docs/cloud/, а также kali.org/docs/troubleshooting/common-cloud-setup/.
Соберите свой Kali уже сегодня!
Мы рекомендуем выполнять сборку на хосте под управлением Linux, соответствующем желаемой архитектуре.
Существуют различные способы подготовиться к использованию скрипта сборки kali-cloud. Вы можете либо:
build.sh - Сборка прямо на вашей машинеbuild-in-container.sh - Сборка внутри контейнера (например, Docker или Podman) Для работы build.sh требуется доступ суперпользователя (например, sudo или rootful-контейнер). Однако KVM не требуется.
Сначала установите git и убедитесь, что репозиторий склонирован локально:
$ sudo apt-get install --no-install-recommends \
git ca-certificates
$ git clone https://gitlab.com/kalilinux/build-scripts/kali-cloud.git
$ cd ./kali-cloud/
Чтобы собрать напрямую на вашем хосте с помощью build.sh, установите зависимости для сборки:
$ sudo apt-get install --no-install-recommends \
python3-minimal libpython3-stdlib python3-yaml python3-libcloud python3-marshmallow python3-httpx python3-pytest \
fai-server fai-setup-storage \
sudo \
qemu-utils qemu-user-binfmt \
fdisk \
udev \
dosfstools \
apt-utils \
debsums
ПРИМЕЧАНИЕ: В зависимости от версии ОС может потребоваться использовать qemu-user-static (устаревший) вместо qemu-user-binfmt (современный/актуальный).
ПРИМЕЧАНИЕ: qemu-user-static/qemu-user-binfmt требуется только при сборке для другой архитектуры (например, хост amd64, сборка образа arm64).
Теперь вы можете использовать ./build.sh, который соберёт облачный образ Kali прямо на вашей машине.
Если вы НЕ используете Kali в качестве базовой ОС, вам потребуется установить kali-archive-keyring из Kali, чтобы fai мог получать пакеты Kali.
$ sudo apt-get install --no-install-recommends \
wget ca-certificates
$ wget https://http.kali.org/pool/main/k/kali-archive-keyring/kali-archive-keyring_20YY.X_all.deb
$ sudo apt-get install ./kali-archive-keyring_*_all.deb
ПРИМЕЧАНИЕ: Замените 20YY.X на значения, указанные здесь, в kali-archive-keyring.
Теперь вы можете следовать инструкциям раздела Сборка на хосте (Kali) для установки зависимостей сборки.
Мы пропустим настройку какого-либо контейнерного ПО.
Если вы предпочитаете собирать внутри контейнера, вам потребуется установить и настроить docker или podman на вашей машине.
docker требует добавления пользователя в группу Docker или использования учётной записи root (например, $ sudo ./build-in-container.sh).podman протестирован с rootful-режимом (например, $ sudo ./build-in-container.sh). При запуске в rootless-режиме build-in-container.sh попытается повысить свои привилегии через sudo или переключиться на перенастройку podman machine в rootful-режим, см. Известные ограничения.build-in-container.sh — это обёртка над build.sh. Он определяет, какой OCI-совместимый контейнерный движок использовать, создаёт образ контейнера, если он отсутствует, а затем запускает контейнер для выполнения сборки изнутри.
У вас есть три способа предоставить образ контейнера:
$ # Option #1 - Automated build (recommended)
$ ./build-in-container.sh
$ ./build-in-container.sh --force # If you need to rebuild the image from scratch
$
$
$
$ # Option #2 - Manual build
$ docker build -t kali-build/kali-cloud .
$ # ...OR...
$ podman build -t kali-build/kali-cloud .
$
$
$
$ # Option #3 - Use the pre-generated
$ docker pull registry.gitlab.com/kalilinux/build-scripts/kali-cloud:latest
$ docker tag registry.gitlab.com/kalilinux/build-scripts/kali-cloud:latest kali-build/kali-cloud
$ # ...OR...
$ podman pull registry.gitlab.com/kalilinux/build-scripts/kali-cloud:latest
$ podman tag registry.gitlab.com/kalilinux/build-scripts/kali-cloud:latest kali-build/kali-cloud
$
$ # ...then point the build at it:
$ ./build-in-container.sh # Locally built (automated or manual)
$ IMAGE=registry.gitlab.com/kalilinux/build-scripts/kali-cloud:latest ./build-in-container.sh # Pre-generated
Если у вас установлены и docker, и podman, build-in-container.sh по умолчанию будет использовать podman. Чтобы изменить это, добавьте префикс CONTAINER=docker перед ./build-in-container.sh:
$ CONTAINER=docker ./build-in-container.sh [...]
Теперь вы можете использовать ./build-in-container.sh (вместо ./build.sh) для сборки образа.
$ ./build.sh --help
Usage: build.sh [OPTIONS]
Build a Kali Linux Cloud image.
Build options:
-a, --arch ARCH Build an image for this architecture (default: amd64)
Supported: amd64 arm64
-b, --branch BRANCH Kali branch used to build the image (default: kali-rolling)
Supported: kali-rolling kali-dev kali-last-snapshot
-k, --keep Keep intermediary build artifacts
-m, --mirror URL Mirror used to build the image (default: http://http.kali.org/kali)
-o, --output DIR Output directory (default: /home/kali/kali-cloud/output)
-v, --variant VARIANT Cloud platform/target image to build (default: genericcloud)
Supported: genericcloud azure ec2 gce generic nocloud
-x, --version VERSION What to name the image release as (default: rolling)
-z, --zip Compress image after the build
-h, --help Show this help and exit
Cloud options:
-H, --hostname HOSTNAME Set system host name (default: kali)
-P, --packages PKGS Install extra packages (comma/space separated list)
-s, --size SIZE Size of the disk image in GB (default: ...depends on --variant)
-T, --toolset TOOLSET The selection of tools to include in the image (default: default)
Supported: default minimal