
Помимо работы в сети и совместного использования разделов я заставил qemu работать примерно так, как мне нужно. У меня есть немного особая настройка, мне нужно пройти через /dev/sda
, /dev/sda1
и /dev/sda2
. (Возможно ли пройти через , /dev/sda
не проходя через /dev/sda3
него? Я могу обойтись альтернативными методами.)
/dev/sda
(MBR) = Windows Bootmgr включен/dev/sda1
/dev/sda1
= Зарезервированный системой раздел (загрузчик Windows)
/dev/sda2
C:/
= раздел Windows 7
/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
Вы можете использовать device mapper для формирования устройства, которое содержит нужные вам части исходного устройства. Например:
$ 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