最近有个同行的人跟我提下怎么操作封装镜像,故此我总结了下如下文章

# 封装定制自己的 Kali-Linux ISO

myblog

# Kali Linux ISO 简介


构建自定义的 Kali ISO 既简单,有趣又有意义。您几乎可以使用 Debian 动态构建脚本来配置 Kali ISO 构建的任何方面。
这些脚本允许开发人员通过提供一个框架来轻松构建实时系统映像,该框架使用配置集来自动化和自定义构建映像的所有方面。
Kali Linux 开发团队已采用了这些脚本,并且已使用它们来制作正式的 Kali ISO 版本。

# 您应该在哪里建立 ISO?


最理想的是在预装 Kali 的环境里定制你的 Kali ISO. 如果不是这样,请务必使用最新版本的 live-build 脚本。

# 一、准备就绪 - 设置实时构建系统


  • 我们首先需要通过使用以下命令安装和设置实时构建及其要求来准备 Kali ISO 构建环境:
> sudo apt update
> sudo apt install -y curl git live-build cdebootstrap
> git clone https://gitlab.com/kalilinux/build-scripts/live-build-config.git
  • github kali_live 镜像包装地址 github 地址入口
  • 现在,您只需输入 live-build-config 目录并运行我们的 build.sh 包装器脚本,即可构建更新的 Kali ISO ,如下所示
> cd live-build-config/
> ./build.sh --verbose
  • build.sh 脚本将需要一段时间才能完成,因为它会下载创建 ISO 所需的所有必需软件包,取决于你的网络快慢。

# 二、配置 Kali ISO 构建(可选)


# 构建说明

如果您想自定义您的 Kali Linux ISO,本节将解释一些细节。通过 kali-config 目录,Kali Linux live build 支持各种自定义选项,这些选项在 Debian live build 4.x 页面上有详细记录。但是,对于不耐烦的人,这里是一些重点。

# 使用不同的桌面环境构建 Kali

从 Kali 2.0 开始,我们现在支持各种桌面环境的内置配置,包括 KDE,Gnome,E17,I3WM,LXDE,MATE和XFCE 。要构建其中的任何一个,您将使用类似于以下内容的语法:

#These are the different Desktop Environment build options:
 > ./build.sh --variant {gnome,kde,xfce,mate,e17,lxde,i3wm} --verbose
 #To build a KDE ISO:
 > ./build.sh --variant kde --verbose
 #To build a MATE ISO:
 > ./build.sh --variant mate --verbose
 #...and so on.

# 控制构建中包含的软件包

  • 您的构建中包含的软件包列表将出现在相应的 kali- $ variant 目录中。
  • 例如,如果要构建默认的 Xfce ISO,则应使用以下软件包列表文件 -kali-config / variant-xfce / package-lists / kali.list.chroot
  • 默认情况下,此列表包括 kali-linux-default 元软件包以及其他一些软件包。可以将它们注释掉并替换为包的手动列表,以包括在 ISO 中以获得更大的定制性。

# 说明

  • config 目录里包含了定制 ISO 的各种重要的自定义选项,这些选项在 Debian 的 live build 3.x 页面有文档说明。然而如果你没有耐心,请特别注意以下的配置文件:
  • config/package-lists/kali.list.chroot 包含要安装在 Kali ISO 里的软件包的列表。你可以指定移除已经安装的软件包。也可以切换你的 Kali ISO 的桌面环境 (KDE,Gnome,XFCE,LXDE 等).
  • hooks/ – hooks 目录允许我们在不同阶段调用脚本封装定制 Kali Live ISO. 更多关于 hooks 的信息,参考 live build 手册。举个例子,Kali 是这样添加取证模式的引导菜单的:
cat config/hooks/forensic-menu.binary
#!/bin/sh
cat >>binary/isolinux/live.cfg <<END
label live-forensic
    menu label ^Live (forensic mode)
    linux /live/vmlinuz
    initrd /live/initrd.img
    append boot=live noconfig username=root hostname=kali noswap noautomount
END

# 三、封装 ISO


在封装 ISO 之前,可以指定需要的架构,选择 amd64 或者 i386. 还要注意 lb build 需要 root 权限。如果你不指定架构,live build 将根据你现在使用的架构来封装 ISO.

  • 如果你想在在 32 位系统封装 64 位的 ISO, 务必打开多架构支持:
> dpkg --add-architecture amd64
> apt-get update
  • 配置 live-build 封装 64 位或者 32 位 ISO:
> lb config --architecture amd64 # for 64 bit
# ...or...
> lb config --architecture i386  # for 32 bit
# ...finshed...
> lb build
  • 最后一个命令需要一些时间,因为它下载所有需要的软件包然后封装 ISO. 可以先去喝杯咖啡.

# 四、为今后封装 ISO 提速


如果你打算经常定制 ISO, 你可以把 kali 的软件包缓存在本地便于今后的封装。最简单的就是安装 apt-cacher-ng, 然后在每次打包时配置 http_proxy 环境变量.

> apt-get install apt-cacher-ng
> /etc/init.d/apt-cacher-ng start
> export http_proxy=http://localhost:3142/.... # setup and configure your live build
> lb config --apt-http-proxy http://127.0.0.1:3142/
> lb build

# 五、为较早的 i386 架构封装 ISO(附加)


# i386 架构封装 ISO

Kali Linux i386 ISO 已启用 PAE。如果您需要禁用 PAE 的较旧硬件的默认内核,则需要重建 Kali Linux ISO。

  • 重建过程与上述过程基本相同,不同之处在于,需要按如下所示在 auto / config 中将 686-pae参数更改为586 。首先,安装先决条件。
> sudo apt install -y git live-build cdebootstrap debootstrap
> git clone https://gitlab.com/kalilinux/build-scripts/live-build-config.git
  • 接下来,针对适当的架构在 auto / config 中进行更改:
> cd live-build-config/
> sed -i 's/686-pae/686/g' auto/config
  • 最后,运行您的构建。
> ./build.sh --arch i386 --verbose

# 在基于非 KALI DEBIAN 的系统上构建 KALI

您可以在 Kali 以外的基于 Debian 的系统上轻松运行实时构建。以下说明已经过测试,可以与 Debian 和 Ubuntu 一起使用。

  • 首先,我们通过确保系统已完全更新来准备系统,然后继续下载 Kali 存档密钥链和实时构建软件包。
> sudo apt update
> sudo apt upgrade
> cd /root/
> wget http://http.kali.org/pool/main/k/kali-archive-keyring/kali-archive-keyring_2018.2_all.deb
> wget https://archive.kali.org/kali/pool/main/l/live-build/live-build_20190311_all.deb
  • 完成后,我们将安装一些其他依赖项和以前下载的文件。
> sudo apt install -y git live-build cdebootstrap debootstrap curl
> sudo dpkg -i kali-archive-keyring_2018.2_all.deb
> sudo dpkg -i live-build_20190311_all.deb
  • 准备好所有环境后,我们通过设置构建脚本并检查出构建配置来开始实时构建过程。
> cd /usr/share/debootstrap/scripts/
> echo "default_mirror http://http.kali.org/kali"; sed -e "s/debian-archive-keyring.gpg/kali-archive-keyring.gpg/g" sid > /tmp/kali
> sudo mv /tmp/kali .
> sudo ln -s kali kali-rolling
> cd ~
> git clone https://gitlab.com/kalilinux/build-scripts/live-build-config.git
> cd live-build-config/
  • 此时,我们必须编辑 build.sh 脚本以绕过版本检查。为此,我们注释掉下面的 exit 1
# Check we have a good debootstrap
ver_debootstrap=$(dpkg-query -f '${Version}' -W debootstrap)
if dpkg --compare-versions "$ver_debootstrap" lt "1.0.97"; then
if ! echo "$ver_debootstrap" | grep -q kali; then
echo "ERROR: You need debootstrap >= 1.0.97 (or a Kali patched debootstrap). Your current version: $ver_debootstrap" >&2
exit 1
fi
fi
  • 进行更改后,脚本应如下所示:
# Check we have a good debootstrap
ver_debootstrap=$(dpkg-query -f '${Version}' -W debootstrap)
if dpkg --compare-versions "$ver_debootstrap" lt "1.0.97"; then
if ! echo "$ver_debootstrap" | grep -q kali; then
echo "ERROR: You need debootstrap >= 1.0.97 (or a Kali patched debootstrap). Your current version: $ver_debootstrap" >&2
# exit 1
fi
fi
  • 此时,我们可以正常建立 ISO
> sudo ./build.sh --variant light --verbose