使用 live-build 自定义 Kali ISO 的高级技巧
live-build 简介
live-build 是 Debian Live 官方的构建工具,Kali 用它来生成官方 ISO。它的核心设计:
- 配置和内容分离:
config/目录放配置,auto/目录放构建脚本,所有被打包进去的文件都放在config/includes.chroot/下 - 可重复:同一份配置多次构建结果应该一致(build reproducibility)
- 分层覆盖:
includes.chroot/下的文件会覆盖基础系统中的同名文件
最小化构建
# 安装依赖
sudo apt install -y live-build kali-linux-headless kali-tools-top10
# 创建项目
mkdir kali-lite && cd kali-lite
lb config --distribution kali-rolling --binary-images iso-hybrid --desktop none --apt-indices false
lb build
# 生成 live-image-amd64.iso
高级配置技巧
一、修改启动菜单
默认启动菜单(图形安装、文本安装、Live、Forensic Mode 等)可以通过 config/bootloaders/ 下的模板修改。
mkdir -p config/bootloaders/grub-pc
cp /usr/share/live/build/bootloaders/grub-pc/grub.cfg config/bootloaders/grub-pc/
# 编辑 grub.cfg,添加自定义菜单项
二、注入自定义脚本(开机自动运行)
mkdir -p config/includes.chroot/usr/local/bin/
cat > config/includes.chroot/usr/local/bin/firstboot.sh << 'EOF'
#!/bin/bash
# 首次开机自动配置
passwd kali <<PASS
kali2024
kali2024
PASS
# 配置国内镜像源
cat > /etc/apt/sources.list.d/kali.list <<'APT'
deb http://mirrors.aliyun.com/kali kali-rolling main contrib non-free non-free-firmware
APT
apt update
echo "首次启动配置完成"
EOF
chmod +x config/includes.chroot/usr/local/bin/firstboot.sh
# 让它在开机时自动运行
mkdir -p config/includes.chroot/etc/profile.d/
cat > config/includes.chroot/etc/profile.d/run-firstboot.sh << 'EOF'
# 只运行一次,之后删除
if [ -f /usr/local/bin/firstboot.sh ]; then
/usr/local/bin/firstboot.sh
rm /usr/local/bin/firstboot.sh
fi
EOF
三、预装 SSH 密钥
mkdir -p config/includes.chroot/home/kali/.ssh
cp ~/.ssh/authorized_keys config/includes.chroot/home/kali/.ssh/
chmod 600 config/includes.chroot/home/kali/.ssh/authorized_keys
四、自定义内核参数
mkdir -p config/includes.binary/boot/grub/
cat > config/includes.binary/boot/grub/grub.cfg << 'EOF'
set default=0
set timeout=5
menuentry "Custom Kali (persistence)" {
linux /live/vmlinuz boot=live persistence quiet
initrd /live/initrd.img
}
EOF
persistence 让 Live USB 的所有改动持久化到 U 盘上(默认 Live 模式重启丢失所有数据)。
五、Persistence 持久化分区
构建 ISO 时可以预留一个固定大小的 persistent 分区,Live 系统启动后自动挂载并保存用户数据:
lb config --iso-volume "Custom Kali" --partition 8GB
或者在 auto/config 中通过 hooks 手动创建分区表。
六、Chroot hooks(构建时自定义操作)
config/hooks/live/ 下的 hook 脚本会在构建过程中(chroot 里)执行:
mkdir -p config/hooks/live
cat > config/hooks/live/01-custom-software.chroot << 'EOF'
#!/bin/bash
apt install -y fzf zsh
chsh -s /bin/zsh kali
# 修改 kali 用户默认 shell
EOF
chmod +x config/hooks/live/01-custom-software.chroot
构建速度优化
- 使用本地镜像源:在 lb config 时指定
--mirror-bootstrap、--mirror-binary - 启用 apt 缓存:如果多次构建,把
/var/cache/apt/archives/挂进 chroot - 并行构建:live-build 默认串行,可以在 auto 脚本中手动加并发
常见问题排查
构建失败时用 verbose 模式看详细日志:
lb build --verbose 2>&1 | tee build.log
常见问题:
- 网络超时:换更快的镜像源
- 某个包安装失败:手动
apt install <那个包>看具体错误 - 内存不足:构建过程需要至少 4GB RAM
- 磁盘空间不够:需要 10GB+ 临时空间
团队共享
构建好的 ISO 可以上传到对象存储(阿里云 OSS、腾讯云 COS),团队所有人下载即用。或者把整个 kali-lite 项目推到 Git 仓库,每个人拉下来自己构建——保证可复现。