Compartilhando partições no qemu

Compartilhando partições no qemu

Além da rede e do compartilhamento de partições, fiz o qemu funcionar exatamente como eu queria. Eu tenho uma configuração especial, preciso passar por /dev/sda, /dev/sda1e /dev/sda2. (É possível passar /dev/sdasem passar /dev/sda3por isso? Posso conviver com o uso de métodos alternativos.)

/dev/sda(MBR) = Bootmgr do Windows ativado/dev/sda1

/dev/sda1= Partição reservada do sistema (bootloader do Windows)

/dev/sda2C:/= partição do Windows 7

/dev/sda3= Arch Linux (Host)

Eu tenho /dev/sda3o grub instalado no MBR de /dev/sdc(o que significa que a inicialização /dev/sdcme inicializará na instalação do Arch Linux, a inicialização /dev/sdame inicializará no Windows). Estarei de passagem /dev/sdctambém, mas este é fácil, pois o host não precisa qualquer acesso a esta unidade após a inicialização.

Finalmente, tenho uma partição de armazenamento GPT (NTFS) na /dev/sdb2qual desejo ser facilmente acessível tanto pelo host quanto pelo meu convidado ao mesmo tempo (quero compartilhá-la entre os dois sistemas)

Como proceder com /dev/sdae /dev/sdb2?

Responder1

Você pode usar o mapeador de dispositivos para moldar um dispositivo que contenha as partes do dispositivo original desejado. Por exemplo:

$ 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

Se eu queroesconder sda2, posso criar um /dev/mapper/no_sda2onde os setores 224910 a 125045424 contêm zeros:

  • Primeiro crie um dispositivo de loop, caso contrário o dmsetup irá reclamar porque /dev/sdaestá em uso (embora loopnão irá reclamar, o que não parece muito consistente para mim):

    losetup /dev/loop0 /dev/sda
    
  • Então crie /dev/mapper/no_sda2como:

    dmsetup create no_sda2 << EOF
    0 224910 linear /dev/loop0 0
    224910 $((125045424-224910)) zero
    EOF
    

informação relacionada