
ネットワークとパーティション共有を除けば、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