我正在尝试加密 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 无论如何都会格式化设备。
有没有什么方法可以将cryptsetup
luks 加密与分区配对,以便一旦打开就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)可以处理块设备,因此可能有一些希望让它发挥作用。
如果您不担心使用原始磁盘映像文件的开销,最简单的选择是在分区上创建文件系统,然后在该新文件系统中创建原始磁盘映像文件。该磁盘映像文件将被加密,因为它位于加密分区上。