You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

同一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

火山引擎 最新活动