qemu でのパーティションの共有

qemu でのパーティションの共有

ネットワークとパーティション共有を除けば、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が、起動後にホストはこのドライブにアクセスする必要がないため、これは簡単です。

/dev/sdb2最後に、ホストとゲストの両方から同時に簡単にアクセスできるようにしたいGPT (NTFS) ストレージ パーティションがあります(両方のシステム間で共有したい)

/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 にゼロが含まれるを作成できます。

  • /dev/sdaまずループ デバイスを作成します。そうしないと、dmsetup は使用中であるとしてエラーを出力します(whileloopはエラーを出力しませんが、これはあまり一貫性がないように思えます)。

    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
    

関連情報