
除了網路和分區共享之外,我還讓 qemu 工作得非常像我想要的那樣。我有一些特殊的設置,我需要通過/dev/sda
、/dev/sda1
和/dev/sda2
。 (是否可以/dev/sda
不通過它/dev/sda3
?我可以接受使用替代方法。)
/dev/sda
(MBR) = Windows Bootmgr 開啟/dev/sda1
/dev/sda1
= 系統保留分割區(Windows 的開機載入程式)
/dev/sda2
= Windows 7 的C:/
分割區
/dev/sda3
= Arch Linux(主機)
我已經將/dev/sda3
grub 安裝到了 MBR 中/dev/sdc
(這意味著引導/dev/sdc
將引導我進入我的 arch Linux 安裝,引導/dev/sda
將引導我進入 Windows)我也會通過,/dev/sdc
但這很容易,因為主機不需要啟動後對此驅動器的任何訪問。
最後,我有一個 GPT(NTFS)儲存分割區,/dev/sdb2
我希望可以同時從主機和來賓輕鬆存取該分割區(我想在兩個系統之間共用它)
我該如何繼續/dev/sda
和/dev/sdb2
?
答案1
您可以使用設備映射器來塑造包含所需原始設備部分的設備。例如:
$ grep . /sys/class/block/sda/**/(size|start)
/sys/class/block/sda/sda1/size:224847
/sys/class/block/sda/sda1/start:63
/sys/class/block/sda/sda2/size:124820514
/sys/class/block/sda/sda2/start:224910
/sys/class/block/sda/size:125045424
如果我想隱藏 sda2
,我可以建立一個/dev/mapper/no_sda2
磁區 224910 到 125045424 包含零的磁區:
首先創建一個循環設備,否則 dmsetup 會抱怨,因為
/dev/sda
正在使用中(而loop
不會抱怨,這對我來說聽起來不太一致):losetup /dev/loop0 /dev/sda
然後創建
/dev/mapper/no_sda2
為:dmsetup create no_sda2 << EOF 0 224910 linear /dev/loop0 0 224910 $((125045424-224910)) zero EOF