Virtual-Machine

加密分區並允許 qemu 將其用作訪客驅動器

  • November 12, 2015

我正在嘗試以cryptsetup允許QEMU-KVM將其用作來賓驅動器的方式加密我的 SSD 上的 25gb 分區。

我試過 luksformatting 驅動器:

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

然後打開它:

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

/dev/mapper/windows-vm儘管 QEMU 在嘗試使用此腳本訪問設備時被拒絕:

#!/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。

謝謝。

我相信 QEMU 想要一個磁碟映像文件並且/dev/mapper/windows-vm是一個塊設備。根據Arch wiki,您可以向 QEMU 傳遞一個分區,但這需要您mkfs在塊設備上執行。然後 wiki 繼續說這種方法是有問題的,因為您無法將引導載入程序安裝到分區(我認為這不是 100% 準確的)。由於我認為在一定程度上依賴於 QEMU 的 Xen 可以處理塊設備,因此可能會有一些希望讓它工作。

如果您不擔心使用原始磁碟映像文件的成本,最簡單的選擇是在分區上創建一個文件系統,然後在該新文件系統中創建一個原始磁碟映像文件。此磁碟映像文件將被加密,因為它位於加密分區上。

引用自:https://unix.stackexchange.com/questions/242661