除了网络和分区共享之外,我还让 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