使用 simple-cdd 和 debian-cd 构建官方 Kali Linux 安装程序 ISO 镜像,支持多种架构、变体、镜像源和容器化构建。
通过 simple-cdd(配合 debian-cd)构建 Kali Linux 安装程序 ISO。
这些正是 Kali 团队 用来生成官方 Kali Linux 基础镜像的 构建脚本,可在 kali.org/get-kali/ 找到。
这些镜像可用于在安装过程中进行各种自定义配置来安装 Kali,支持从 CD/DVD/Blu-ray/USB/sdCard 启动。如需实现 live 启动(例如在不改动任何现有操作系统的情况下试用 Kali),请参阅 kali-live:
今天就构建 属于你的 Kali 吧!
我们建议在与目标架构相匹配的 Linux 主机上进行构建。
有多种方式可以准备好使用 kali-installer 构建脚本。你可以选择:
要让 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-installer.git
$ cd ./kali-installer/
要使用 build.sh 直接在主机上构建,请安装构建依赖:
$ sudo apt-get install --no-install-recommends \
simple-cdd debian-cd \
cpio \
mtools \
dosfstools \
xorriso
现在你可以使用 ./build.sh,它会直接在你的机器上构建一个 Kali 安装程序 ISO。
如果你不是以 Kali 作为基础操作系统,则需要安装 Kali 的 kali-archive-keyring,以便 simple-cdd 能够获取 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
$ wget https://http.kali.org/pool/main/d/debian-cd/debian-cd_*_all.deb
$ sudo apt-get install ./debian-cd_*_all.deb
注意:将 20YY.X 替换为此处 kali-archive-keyring 中显示的值。
根据你运行此操作的时间,你可能还需要特定版本的 simple-cdd (软件包跟踪器:Debian/Kali) 和/或 debian-cd (软件包跟踪器:Debian/Kali)。
现在你可以按照从主机(Kali)构建来安装构建依赖项。
我们将跳过任何容器软件的设置。
如果你更愿意从容器内构建,你需要在你的机器上安装并配置 docker 或 podman。
docker 要求将用户添加到 Docker 组,或使用 root 账户(例如 $ sudo ./build-in-container.sh)。podman 已使用 rootful 模式测试过(例如 $ sudo ./build-in-container.sh),但目前不支持 rootless 模式。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-installer .
$ # ...OR...
$ podman build -t kali-build/kali-installer .
$
$
$
$ # Option #3 - Use the pre-generated
$ docker pull registry.gitlab.com/kalilinux/build-scripts/kali-installer:latest
$ docker tag registry.gitlab.com/kalilinux/build-scripts/kali-installer:latest kali-build/kali-installer
$ # ...OR...
$ podman pull registry.gitlab.com/kalilinux/build-scripts/kali-installer:latest
$ podman tag registry.gitlab.com/kalilinux/build-scripts/kali-installer:latest kali-build/kali-installer
$
$ # ...then point the build at it:
$ ./build-in-container.sh # Locally built (automated or manual)
$ IMAGE=registry.gitlab.com/kalilinux/build-scripts/kali-installer:latest ./build-in-container.sh # Pre-generated
如果你同时安装了 docker 和 podman,build-in-container.sh 将默认使用 podman。要更改此设置,请在 ./build-in-container.sh 前加上 CONTAINER=docker:
$ CONTAINER=docker ./build-in-container.sh [...]
现在你可以使用 ./build-in-container.sh(而不是 ./build.sh)来构建镜像。
$ ./build.sh --help
Usage: build.sh [OPTIONS]
Build a Kali Linux Installer image.
Build options:
-a, --arch ARCH Build an image for this architecture (default: amd64)
Supported: amd64 arm64 armhf
-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-installer/output)
-v, --variant VARIANT Variant of image to build (default: default)
Supported: default everything netinst purple
-x, --version VERSION What to name the image release as (default: rolling)
-h, --help Show this help and exit
Installer options:
-H, --hostname HOSTNAME Set system host name (default: kali)
-P, --packages PKGS Install extra packages (comma/space separated list)
Apt caching proxy:
Auto-detected: localhost:3142 (apt-cacher-ng), localhost:8000 (squid-deb-proxy).
If detected and http_proxy is not set, http_proxy is exported automatically.
Supported environment variables:
http_proxy HTTP proxy URL, see README.md for details
DEBUG Print extra debug output
Any --flag value can be pre-set via its env var (e.g. ARCH, BUILD_MIRROR, OUT_DIR)
Examples:
build.sh
build.sh --branch kali-rolling
build.sh -b kali-dev -v netinst -a arm64
注意:有三个标志与其变量名不一致:--mirror 对应 BUILD_MIRROR,--hostname 对应 KALI_HOSTNAME(bash 已设置 HOSTNAME),--output 对应 OUT_DIR。其他所有标志均使用其自身名称的大写形式(例如 --branch 对应 BRANCH)。
如需更多信息和/或示例,请参阅:
可根据偏好使用 build.sh 或 build-in-container.sh。
为简洁起见,从此刻起我们将使用 build.sh。
默认选项将为 AMD64 架构构建一个 Kali rolling 镜像:
$ sudo ./build.sh
┏━━(Kali Installer image)
┃ * Building a Kali Linux Installer image for amd64 architecture
┃ # System:
┃ * Build environment is host (bare metal)
┃ * Host architecture is amd64
┃ # Build:
┃ * Branch : kali-rolling
┃ * Build mirror : http://http.kali.org/kali/
┃ * Keep temporary files: false
┃ * Output : /home/kali/kali-installer/output/kali-linux-rolling-installer-amd64.iso
┃ * Variant : default
┃ * Version : rolling
┃ # Installer:
┃ * Additional packages :
┃ * Hostname : kali
┃ # Proxy configuration:
┃ * No apt caching proxy detected
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[...]
构建一个不同的安装镜像变体(-v/--variant),该变体包含所有工具,或进行网络安装: