在 U 盘上安装带加密持久化的 Kali Linux

本文最后更新于 2025年10月19日 下午

本文介绍如何在 U 盘上写入 Kali Live 系统并为持久化数据创建 LUKS 加密分区(即加密 persistence)。
操作会清除 U 盘上的所有数据,请务必备份并确认目标设备(例如 /dev/sdb)无误后再执行命令。⚠️


准备工作 ✅

  1. 一张 U 盘(建议 16GB 及以上,实际大小越大持久化空间越多)。
  2. Kali Linux 的 ISO 文件(例如 kali-linux-2019.2-amd64.iso)。
  3. 一台 Linux 电脑(含 dd, parted, cryptsetup, mkfs.ext4, e2label 等工具)。
  4. 提示:下面的命令需要 root 权限,请在命令前加 sudo 或切换到 root 执行。

整体思路 🧭

  1. dd 将 Kali ISO 写入整个 U 盘,创建一个可引导的 Live USB。
  2. 使用 parted 在 U 盘上创建一个新的分区用于持久化(不会破坏已写入的 Live 系统分区,只是在剩余空间上新建分区)。
  3. 对该分区进行 LUKS 加密(cryptsetup luksFormat),打开映射并格式化为 ext4。
  4. 在该文件系统根下创建 persistence.conf,配置为 / union(Kali Live 的持久化约定),然后卸载并关闭 LUKS 映射。
  5. 启动 Kali Live 时选择带持久化的启动项即可使用加密的持久化分区。

详细步骤(示例命令) 🛠️

重要:下面示例使用的设备是 /dev/sdb,请务必先确认你的 U 盘设备节点(例如使用 lsblk / fdisk -l)并替换为实际设备路径,误用会导致数据不可恢复的丢失。

1. 写入 ISO(将会覆盖整个 U 盘)

1
2
# 将 ISO 写入 /dev/sdb(注意是整个设备,不是分区 /dev/sdb1)
sudo dd if=kali-linux-2019.2-amd64.iso of=/dev/sdb bs=1M status=progress && sync
  • bs=1M:每次读取写入 1MB,提高速度。
  • status=progress:显示写入进度(某些 dd 版本支持)。
  • sync:刷新缓存,确保数据写完。

写入后,U 盘会有 Live 系统的分区表(通常包含一个 FAT/ISO 9660 或者 squashfs),但通常还有未分配的剩余空间 —— 我们将在剩余空间上创建持久化分区。


2. 确认设备与分区情况

1
2
lsblk
sudo fdisk -l /dev/sdb

查看输出,确认 /dev/sdb 上已有的分区(例如 /dev/sdb1, /dev/sdb2 等)以及未分配空间开始和结束的扇区或 MB 范围。我们需要知道可用的起始/结束位置以便创建持久化分区。


3. 使用 parted 创建持久化分区

下面命令演示如何在设备上创建一个主分区(调整开始/结束值以适配你的 U 盘):

1
sudo parted /dev/sdb --script mkpart primary 3354MiB 13600MiB
  • 3354MiB / 13600MiB 是示例的起始与结束位置(单位可用 MB 或 MiB),请根据 fdisk/lsblk 的输出调整。
  • 你也可以使用扇区号或百分比来指定分区位置。
  • 创建后会生成一个新的分区(比如 /dev/sdb3)。注意分区编号可能不同,请以 lsblk 显示为准。

如果你更喜欢交互式操作也可直接运行 sudo parted /dev/sdb 然后在提示符下使用 mkpart


4. 对分区进行 LUKS 加密并打开映射

假设刚创建的分区为 /dev/sdb3,使用 LUKS(加密)格式化并打开,映射名为 usb

1
2
3
4
5
# LUKS 格式化(会要求你输入并确认一个 passphrase)
sudo cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb3

# 打开映射,映射名称 usb -> /dev/mapper/usb
sudo cryptsetup luksOpen /dev/sdb3 usb
  • --verify-passphrase:在格式化时要求确认密码。
  • 记住你设置的 passphrase,用于以后解密(如果遗忘将无法恢复数据)。

5. 在映射上创建文件系统并标注

1
2
3
4
5
# 在解密映射上创建 ext4 文件系统
sudo mkfs.ext4 /dev/mapper/usb

# 给文件系统设置标签(可选),这里用 persistence 标签
sudo e2label /dev/mapper/usb persistence

6. 挂载并配置持久化

1
2
3
4
5
6
7
8
9
10
11
12
13
# 创建挂载点并挂载
sudo mkdir -p /mnt/usb
sudo mount /dev/mapper/usb /mnt/usb

# 创建 persistence 配置文件,Kali Live 识别 "/ union" 表示持久化根目录
echo "/ union" | sudo tee /mnt/usb/persistence.conf

# 同步并卸载
sync
sudo umount /mnt/usb

# 关闭 LUKS 映射
sudo cryptsetup luksClose /dev/mapper/usb
  • persistence.conf 内容 "/ union" 表示将持久化数据映射到根目录,从而保留系统设置与安装的软件等。
  • 你也可以在分区上创建 persistence 目录并放置特定子目录规则,详见 Kali 官方文档(如果需要我可以另外补充)。

启动并使用持久化加密 U 盘 🎯

  1. 将 U 盘插入目标电脑,启动并选择从 USB 启动(进入 BIOS/UEFI 或选择启动菜单)。
  2. 在启动菜单里选择 Kali Live (persistence)Live USB persistence(不同版本菜单字样不同)。
  3. 系统启动时会提示你输入 LUKS passphrase(你在第 4 步设置的密码),输入后即可挂载加密分区并启用持久化。
  4. 若未看到带 persistence 的选项,可能需要在启动菜单的 Advanced optionsLive 子菜单中选择,或参照 Kali 官方 Live USB persistence 使用方法。

常见问题与排查 🔍

  • 找不到分区 /dev/sdb3

    • 可能分区编号不同,使用 lsblk / sudo fdisk -l /dev/sdb 确认实际设备名。
  • 写入 ISO 后没有剩余空间

    • 某些 ISO 会占用整个设备或创建分区表不留空闲,可能需要在写入后使用 gparted 调整或手动重新分区(风险较高,请小心)。
  • 启动没有看到 persistence 选项

    • 有些 Kali ISO 的启动菜单变量名不同,确保 ISO 支持 persistence(官方 Live ISO 通常支持)。
  • 忘记 LUKS 密码

    • 无法恢复,请务必妥善保管密码或使用密码管理器。

小结 ✨

通过上述步骤,你可以得到一个 可引导且带有 LUKS 加密持久化分区的 Kali Live USB

  • Live 系统无修改风险(系统以只读镜像运行);
  • 所有个人配置与数据存储在加密的持久化分区中,断电后内容仍受加密保护;
  • 适合希望在可移动介质上保存私人配置但又需要一定安全保障的场景。

如果你希望我把这些步骤整理成可执行的脚本(交互式询问设备与大小)、或补充如何在 Windows 下写入 ISO(使用 Rufus 等工具),或生成图文教程与截图,我可以继续帮你完善。🔧😄