同一SSD上Archlinux/Windows 11/Kali Linux加密三系统的引导配置求助
同一SSD上Archlinux/Windows 11/Kali Linux加密三系统的引导配置求助
看起来你已经离目标很近了——非加密的Kali已经能被Arch的GRUB正常识别引导,只是加密Kali根分区后就卡壳了。核心问题其实是两个:一是Arch的GRUB需要开启磁盘解密支持,二是Kali的初始化镜像(initramfs)得包含加密驱动,这样整个引导链才能顺畅跑通。下面是一步步的实操方案:
第一步:清理并重新准备Kali的加密分区
如果你之前的加密分区尝试留了烂摊子,先把nvme0n1p7重置干净:
- 先备份Kali当前的重要数据(如果有的话)
- 用
gdisk /dev/nvme0n1进入分区工具,找到p7,删除后重新创建一个类型为8300(Linux文件系统)的分区,保存退出 - 创建LUKS加密卷:
cryptsetup luksFormat /dev/nvme0n1p7,输入你要设置的加密密码(注意别选错分区!) - 临时打开加密卷:
cryptsetup open /dev/nvme0n1p7 kali-root - 给加密卷创建文件系统(Kali默认用ext4就行):
mkfs.ext4 /dev/mapper/kali-root
第二步:重新安装Kali到加密分区(重点避坑引导)
启动Kali安装镜像,选择手动分区模式:
- 找到
/dev/mapper/kali-root,挂载为/(根目录),不要格式化(我们刚弄好) - 找到nvme0n1p1(你的EFI分区),挂载为
/boot/efi,绝对不要勾选格式化! - 跳过swap分区的创建(你明确不需要)
- 到「安装GRUB引导加载程序」这一步时,不要选择安装到EFI分区或整个磁盘,直接选「跳过」——因为我们要继续用Arch的GRUB来统一管理引导,避免覆盖掉你原来的Arch引导配置
第三步:配置Kali的initramfs以支持加密引导
这一步要在Arch系统里操作,给Kali的初始化镜像加上加密驱动:
- 重新打开Kali的加密卷:
cryptsetup open /dev/nvme0n1p7 kali-root - 挂载Kali根分区和EFI分区:
mount /dev/mapper/kali-root /mnt/kali mount /dev/nvme0n1p1 /mnt/kali/boot/efi - 挂载系统必要的虚拟目录,方便进入Kali的chroot环境:
mount --bind /dev /mnt/kali/dev mount --bind /proc /mnt/kali/proc mount --bind /sys /mnt/kali/sys - 进入Kali的chroot:
chroot /mnt/kali - 编辑
/etc/crypttab,添加Kali加密卷的配置(让系统启动时能识别加密分区):
先运行blkid /dev/nvme0n1p7复制分区的UUID,然后在文件里加一行:kali-root UUID=<你复制的UUID> none luks - 编辑
/etc/initramfs-tools/modules,添加加密所需的内核模块:dm-crypt cryptd - 更新Kali的initramfs(把加密驱动打包进去):
update-initramfs -u -k all - 退出chroot:
exit,然后依次卸载所有挂载的分区并关闭加密卷:umount /mnt/kali/boot/efi /mnt/kali/dev /mnt/kali/proc /mnt/kali/sys /mnt/kali cryptsetup close kali-root
第四步:配置Arch的GRUB以识别加密Kali
现在让Arch的GRUB能解密并引导Kali:
- 打开Arch的GRUB配置文件
/etc/default/grub,确保以下两个选项正确设置:GRUB_ENABLE_CRYPTODISK=y # 开启GRUB的磁盘解密支持,这是关键! GRUB_DISABLE_OS_PROBER=false # 你已经开启了,确认一下就行 - 保存后,先试试让os-prober自动识别加密Kali:运行
os-prober,如果能检测到Kali,直接生成新的GRUB配置:grub-mkconfig -o /boot/grub/grub.cfg - 如果os-prober没识别到,就手动添加Kali的引导条目:
编辑/etc/grub.d/40_custom,添加以下内容(记得替换占位符):
内核版本号可以去menuentry 'Kali Linux (Encrypted)' { insmod part_gpt insmod cryptodisk insmod luks insmod ext2 set root='hd0,gpt1' # 这里对应你的EFI分区nvme0n1p1,hd0是NVME磁盘,若有多盘需调整 cryptomount UUID=<nvme0n1p7的UUID> set root='cryptouuid/<nvme0n1p7的UUID>' linux /vmlinuz-<Kali内核版本号> root=/dev/mapper/kali-root ro quiet splash initrd /initrd.img-<Kali内核版本号> }/mnt/kali/boot目录查看(挂载Kali分区后),比如vmlinuz-6.1.0-kali9-amd64 - 最后重新生成GRUB配置:
grub-mkconfig -o /boot/grub/grub.cfg
第五步:测试引导
重启电脑,进入Arch的GRUB菜单,选择「Kali Linux (Encrypted)」,输入你设置的加密密码,应该就能正常进入Kali了!
后续注意事项
- 每次Kali更新内核后,都需要重复第三步的chroot操作更新initramfs,同时要检查GRUB里的内核路径是否需要更新
- 绝对不要在Kali里再安装GRUB到EFI分区,否则会覆盖掉Arch的GRUB配置
- 你的1.5G EFI分区足够存放三个系统的引导文件,不用担心空间问题
备注:内容来源于stack exchange,提问作者Nayrosk




