加密分区并允许 qemu 将其用作来宾驱动器

加密分区并允许 qemu 将其用作来宾驱动器

我正在尝试加密 SSD 上的 25GB 分区,cryptsetup以便将QEMU-KVM其用作来宾驱动器。

我尝试过 luksformatting 驱动器:

cryptsetup luksFormat /dev/disk/by-id/...

然后打开它:

cryptsetup luksOpen /dev/disk/by-id/... windows-vm

尽管 QEMU 在尝试/dev/mapper/windows-vm使用以下脚本访问设备时权限被拒绝:

#!/bin/bash
exec qemu-system-x86_64 \
    --enable-kvm \
    -netdev user,id=vmnic -device virtio-net,netdev=vmnic \
    -usbdevice tablet \
    -monitor stdio \
    -machine type=pc,accel=kvm \
    -cpu host \
    -m 4G \
    -balloon virtio \
    -name Windows \
    -smp cores=2 \
    -vga std \
    -soundhw ac97 \
    -drive file=/dev/mapper/windows-vm,cache=none,if=virtio \
    "$@"

我也尝试安装它,但安装抱怨它的 fs 类型错误,这是有道理的,因为我没有mkfs在设备上运行。尽管我认为我不需要这样做,因为 Windows 无论如何都会格式化设备。

有没有什么方法可以将cryptsetupluks 加密与分区配对,以便一旦打开就QEMU-KVM可以像普通 qcow2/raw 图像文件一样从中读取/写入/启动?

编辑:事实证明,这可能是/dev/mapper/windows-vm块设备的权限问题,因为当我以 root 访问权限运行 QEMU 时,安装过程开始,而不是给我一个权限被拒绝的错误。有没有办法让普通用户可以直接访问块设备?默认情况下,cryptsetup 给出了 `/dev/mapper/windows-vm 设备 root:root 0600。

谢谢。

答案1

我相信 QEMU 需要一个磁盘映像文件并且/dev/mapper/windows-vm是一个块设备。根据拱门维基您可以向 QEMU 传递一个分区,但这需要您mkfs在块设备上运行。然后 wiki 继续说这种方法是有问题的,因为你无法将引导加载程序安装到分区(我认为这不是 100% 准确)。由于 Xen(我认为它在一定程度上依赖于 QEMU)可以处理块设备,因此可能有一些希望让它发挥作用。

如果您不担心使用原始磁盘映像文件的开销,最简单的选择是在分区上创建文件系统,然后在该新文件系统中创建原始磁盘映像文件。该磁盘映像文件将被加密,因为它位于加密分区上。

相关内容