web-dev-qa-db-ja.com

Linux MintをメインOSとして、Windows 7をデュアルブートし、同じWindowsインストールを使用するWindows7仮想マシンを使用する

Linux Mint 17.1(Cinnamon)をメインOSとしてインストールしようとしています。また、時々Windows7を起動できるようにしたいです。また、Linux内でWindows7仮想マシンを実行したいと思います。理想的には、Linux内から仮想マシンを起動または実行できる単一のWindows7インストールが必要です。それは可能ですか?どの仮想マシンソフトウェアがそれをサポートしていますか?理想的には、仮想マシンを使用せずにLinuxとWindowsの両方をインストールすることから始め、その後、そのWindows7のインストールで動作する仮想マシンをインストールしたいと思います。

なぜ私がこれをやりたいのか、多くの人が知りたがるでしょう。私は可能な限りLinuxで作業することを好みます。ただし、エミュレートされた環境で十分に実行できるWindowsソフトウェアを実行する必要がある場合があります。また、Windows 7でゲームをプレイし、Windowsを直接起動して、グラフィックカードやその他のハードウェアを最大限に活用したい場合もあります。複数のWindowsインストールを処理したくない、Windowsの別のコピーを購入したくない、および2つのインストールほど多くのスペースを占有したくない。私が作成したWindows7 Recovery DVDが、仮想マシンを使用せずに通常どおりにインストールする以外の方法で機能するかどうかはわかりません。

これについて考えれば考えるほど、うまくいかないようです。 Windowsが仮想マシンとして実行されているか、直接起動しているかによって、Windowsには個別のドライバーのインストールが必要になる可能性があります。 Windowsはおそらく、別のコンピューターで実行されていると見なし、2台の異なるコンピューターに2回登録する必要がありますが、これは許可されていません。

更新

私は今、KVM、VirtualBox、または無料でオープンソースの別のオプションのいずれかを使用したいと思っていることを知っています。 KVMまたはVirtualBoxでやりたいことをすることは可能ですか?

4

警告:これは非常に機密性の高い操作です。システムに非常に簡単に損傷を与え、データを失う可能性があります。私のために働いたことはあなたのために働かないかもしれません。続行する前に、必要なバックアップを作成することをお勧めします。

私の経験とこのウェブサイトがこの情報のソースです: http://fds-team.de/cms/articles/2013-12/use-a-real-windows-7-partition-in-virtualbox- kvm-vmware-player-u.html そのWebサイトには、役立つ可能性のあるその他の詳細も含まれています。

これらの手順はLinuxMint 17.1を対象としていますが、他のLinuxディストリビューション、特にUbuntuベースのディストリビューションでも手順は同じです。 VirtualBox、VMware Player、またはその他のVMware製品の代わりにKVMを使用することをお勧めします。これをKVM以外で機能させる手順については、リンクを参照してください。

なぜKVMなのか?私が行った調査によると、現時点ではこのカテゴリには3人の主要なプレーヤーがいるようです。 KVM、VirutalBox、およびいくつかの異なるVMware製品。 VMware製品はオープンソースではなく、商用利用が無料の製品はありません。 VirtualBoxは無料でオープンソースですが、USB 2.0サポートを追加する必要がある場合は、ビジネス/商用目的で使用することを想定していない拡張パックをインストールする必要があります。 USB 3.0はその拡張パックなしでサポートされていますが、VirtualBoxでのUSBサポートは、VMware製品やKVMよりも問題があります。 KVMはオープンソースであり、個人用とビジネス/商用の両方で無料で使用できます。 KVM Linuxに追加されたカーネルモジュールを使用することでオーバーヘッドを回避し、パフォーマンスと互換性を向上させます。 http://blog.scalecomputing.com/kvm-or-vmware-why-kvm-is- right-for-the-times-part-1-of-2 /

以下の手順では、内部でKVMを使用するvirt-managerの使用方法を説明します。これにより、ターミナルを介してKVMにすべてを設定する代わりにGUIを使用できます。

  1. LinuxとWindows7の両方をまだインストールしていない場合は、別々のパーティションの同じハードドライブにインストールします。それらを別々のドライブにインストールする場合は、リンクの手順を参照してください。それらの間でデュアルブートできる場所にそれらを設定します。先に進む前に、パーティションを希望どおりに設定してください。注:一部のWindowsインストールでは、休止状態用に個別のパーティションが作成されます。このパーティションを削除したい場合は、今がそれを行う時です。これについては手順を調べる必要がありますが、Windows内から実行できることはわかっています。正しく/完全に行わないと、パーティションはそれ自体を再作成できます。したがって、このパーティションを削除することを選択した場合は、コンピューターを再起動してWindowsを再起動し、パーティションが再作成されるかどうかを確認してください。

  2. Linuxを起動します。

  3. LinuxとWindowsの両方を含むハードドライブへのパスを把握します。通常、これは/dev/sdaです。LinuxMint17.1では、メインメニューからディスクを起動して、ハードドライブへのパスを確認できます。ディスクドライブのリストからハードドライブを選択します。これで、ハードドライブに関する情報がウィンドウの残りの部分を占めます。この情報の上部に、ハードドライブのサイズが太字で表示され、そのすぐ下に必要なパスが小さなテキストで表示されます。

    注:これからは、/dev/sdaを使用して、Windows7とLinuxの両方のパーティションを含むハードドライブへのパスを参照します。これを正しいパスに置き換える必要があります。

  4. Sudo fdisk -l /dev/sdaを実行して、Windows7のハードドライブ上のパーティションに関する必要な情報を取得します。Windows7で使用される2つのNTFSパーティションが表示される可能性があります。最初のパーティションはかなり小さいです。ブートローダーとリカバリシステムが含まれています。他のNTFSパーティションには、実際のWindows 7インストールが含まれているため、はるかに大きくする必要があります。 VMには両方のNTFSパーティションが必要です。

    目標:ここで、目標は仮想ハードディスクを作成することです。これにより、Windows 7をVMから起動するか、直接起動するかに関係なく、MBRを正しく設定して正しく維持することができます。これにより、Windows 7への直接起動とVMからの起動を切り替えるたびに、修復ユーティリティを実行する必要がなくなります。 device-mapperを使用して、ループバックデバイスと2つのWindows7パーティションにマップされた線形にマップされた仮想ハー​​ドディスクを作成します。これらの手順のほとんどを取得したWebサイトでは、RAIDを使用していますが、それを正しく機能させるのに問題がありました。 RAIDでは、チャンクサイズの丸めが原因で仮想ディスクが小さすぎました。 https://unix.stackexchange.com/questions/217078/raid-mdadm-virtual-disk-too-small デバイスマッパーの線形マッピングを設定する方が適しているようで、チャンクサイズの丸めの問題。私はデバイスマッパーで成功しました。

  5. 前の手順でのfdisk出力を調べます。 1つのセクターが占めるバイト数を決定します。あなたのセクターが私のように512バイトである場合、これは物事を容易にします。

  6. Fdiskの出力をもう一度調べます。最初のパーティションの開始前に使用されていないセクターの数を判別します。私の場合、最初のパーティションはセクター2048で始まります。つまり、最初の2048セクターはどのパーティション(0-2047)でも使用されていません。これにはGRUBブートローダーが含まれています。

  7. 次のコマンドを使用して、前の手順のバイトのイメージを作成します。 2048を正しいセクター数に置き換える必要があります。セクターが512バイトでない場合は、bs = bytes_per_sectorパラメーターも指定する必要があります。

    dd if=/dev/zero of=boot.mbr count=2048  
    

    これで、現在のディレクトリにboot.mbrという名前のイメージファイルが作成されます。

  8. Fdiskの出力をもう一度調べます。 Windows7パーティションへのパスを決定します。私にとって、これらはリストされている最初の2つのパーティションであり、どちらもNTFSを使用しています。私の2つのパスは、/dev/sda1/dev/sda2です。

    注:これからは、/dev/sda1/dev/sda2を使用してWindows7パーティションを参照します。これらをシステム上の正しいパスに変更する必要があります。

  9. イメージファイルからループバックデバイスを作成します。

    Sudo losetup /dev/loop0 boot.mbr

    これにより、loop0デバイスを仮想ディスクにマップできるように設定されます。

  10. 仮想ディスクにマップされるものを定義するファイルをどこかに作成します。このファイルは、device-mapperによって使用されます。私は〜/ vm/virtual_windows_disk_defに私のものを置きました。

  11. 〜/ vm/virtual_windows_disk_def内に、マッピングごとに行を作成します。各行は、「logical_start_sector num_sectors linear destination_device0」の形式にする必要があります。線形とは、線形マップを実行していることを意味します。 destination_deviceはデバイスパスである必要があります。 0は、マッピングが宛先デバイスの最初のセクターから開始されることを意味します。最初の行は、boot.mbrを仮想ディスクの先頭にマップする必要があります。 Windows7パーティションごとに追加の行が必要になります。これらは私のファイルの内容です:

    02048リニア/ dev/loop0 0

    20483072000線形/ dev/sda1 0

    3074048447886719線形/ dev/sda2 0

    これが、各行の正しいセクター数を取得する方法です。

    blockdev --getsize/dev/loop0

    blockdev --getsize/dev/sda1

    blockdev --getsize/dev/sda2

  12. / dev/mapper/controlが存在するかどうかを確認します。そうでない場合は、dm_modカーネルモジュールをロードしてみてください。

    modprobe dm_mod

  13. Sudo dmsetup create virtual_windows_disk ~/vm/virtual_windows_disk_def

  14. / dev/mapper/virtual_windows_diskが正しいサイズであることを確認してください。

  15. Fdiskをインタラクティブモードで起動して、/ dev/mapper/virtual_windows_diskディスク上の2つのパーティションをセットアップし、/ dev/sdaディスク上の2つのWindowsパーティションと完全かつ正確に一致させます。画面上のヘルプと手順を使用して、このプロセスを完了することができます。パーティションを完全にセットアップできない場合は、これらのパーティションを書き込んだり保存したりする代わりに終了してください。私の知る限り、各パーティションで一致する必要があるのは、開始セクター、終了セクター、起動可能かどうか、ファイルシステムの種類です。 512を/ dev/sdaディスクのセクターあたりのバイト数に置き換えます(これにより、fdiskがインタラクティブモードで起動します)。

    Sudo fdisk -b 512 /dev/mapper/virtual_windows_disk
    
  16. Sudo chown your_username:group /dev/mapper/virtual_windows_disk

  17. メインメニューから、Virtual Machine Manager(これはvirt-managerです)を起動します。
  18. Virt-manager内で、[ファイル]-> [接続の追加]を選択します。
  19. ハイパーバイザーがQEMU/KVMに設定されていることを確認してください。
  20. [リモートホストに接続する]チェックボックスがオフになっていることを確認します。
  21. 自動接続がチェックされていることを確認してください。
  22. 「接続」をクリックして接続を作成します。
  23. 接続(localhost(QEMU))を右クリックし、[新規]を選択します。
  24. 名前を入力します。
  25. 「オペレーティングシステムのインストール方法の選択」で、「既存のディスクイメージのインポート」を選択します。
  26. 「進む」ボタンをクリックします。
  27. [既存のストレージパスを提供する]で、[参照]をクリックして/ dev/md-0を選択します(私のシステムでは、これは/ dev/mapper/virtual_windows_diskのエイリアスとして自動的にセットアップされました)
  28. VMが開始するまで先に進みます。修復が必要な問題を示しているはずです。この問題のためにWindowsを起動できないはずですが、少なくともこれらの結果が得られれば、正しい方向に進んでいます。
  29. VMを強制的にシャットダウンします。
  30. Windowsインストール/修復DVD /イメージをVMに接続します。私のコンピュータにはすでにWindowsがインストールされていますが、東芝はインストール/修復DVDを作成する方法を提供しました。私の場合、ディスク4を使用する必要があります。これは、Windows回復環境がインストールされているディスクだからです。 Linux内からこのディスクのISOを作成することができました。ディスクをドライブに配置するのではなく、ISOをCDドライブとしてVMに接続する方が好きですが、どちらの方法でも機能します。
  31. VMの詳細領域で、[ブートオプション]を選択します。 「ブートメニューを有効にする」がチェックされていることを確認してください。ハードディスクとCDROMがチェックされ、ブートオプションになることを示していることを確認してください。矢印ボタンを使用して、ハードディスクをそのすぐ下にあるCDROMで上に移動します。 [適用]ボタンをクリックして、変更を保存します。これで、VMが起動しているときに、F12キーを押して起動するデバイスを選択するように変更するまで、少し待つ必要があります。
  32. VMを起動し、F12キーを押してブートメニューにアクセスします。
  33. DVD/CDROMドライブから起動します。これにより、Windowsのインストール/修復ディスクが起動します。
  34. 他のWebサイトからの指示では、Shift + F10を押してコマンドプロンプトにアクセスするように指示されていますが、これは私には何もしません。 (東芝のリカバリオプションではなく)システムリカバリオプションを選択する必要がありました。次。
  35. 私のシステムでは、診断が自動的に実行され、コンピューターが検出した問題の修復を提案します。修復を行わせず、他のオプションを選択してください。
  36. 「システムイメージを使用してコンピューターを復元する...」ではなく、「回復ツールを使用する...」が選択されていることを確認します。オペレーティングシステムのリストにWindows7が表示されます。それが選択されていることを確認し、「次へ」を押します。 「詳細オプションを表示...」というリンクをクリックします。
  37. [コマンドプロンプトを開く]を選択します。
  38. 次のコマンドをプロンプトに入力します。

    bootrec /FixMbr

    これで、VMが起動可能になりますが、まだ起動しないでください。

  39. プロンプトに次のコマンドを入力して、Windowsインストールに割り当てられているドライブ文字を確認します。

    dir C:

    dir D:そのうちの1つは、ドライブ文字が空ではなく、ファイルが含まれていることを示している必要があります。これは、次のステップで必要になる正しいドライブ文字です。私にとってはドライブCでした。

  40. 次に、レジストリでドライブの署名を見つける必要があります。次のコマンドをプロンプトに入力します。

    reg load HKLM\Computer_System D:\Windows\system32\config\system

    regedit

  41. HKEY_LOCAL_MACHINE\Computer_System\MountedDevicesに移動します。 Xが2ステップ前のドライブ文字と一致する\ DosDevices\X:エントリを見つけます。次のステップでは、そのエントリのデータを参照する必要があります。
  42. レジストリエディタを閉じずに、コマンドプロンプトウィンドウをアクティブにします。次のコマンドを入力します。

    diskpart

    DISKPART> select disk 0

  43. 次の手順では、最後の文字を、レジストリエディタのそのエントリの値に現在表示されている最初の4セットの文字に置き換える必要があります。ただし、セットの順序を逆にする必要があります。たとえば、ab cd ef ghが表示されている場合は、コマンドの最後にghefcdabが必要です。

    DISKPART> uniqueid disk id=ghefcdab

  44. 次のコマンドを入力します:exit。 diskpartプログラムが終了し、通常のコマンドPromptが表示されます。
  45. レジストリエディタを閉じます。
  46. これをコマンドプロンプトに入力します:reg unload HKLM\Computer_System
  47. コマンドプロンプトを閉じます。
  48. 再起動またはシャットダウンするオプションが表示された場合は、ここで実行してください。それ以外の場合は、VMにシャットダウンするように指示します。それでも問題が解決しない場合は、VMを強制的にシャットダウンします。 VMがシャットダウンされている場合は、そのままにしておきます。再起動した場合は、手動でシャットダウンするか、それが不可能な場合は、強制的にシャットダウンします。
  49. VMの詳細で、[構成]矢印をチェックして、その他のオプションを表示します。 「ホストCPU構成のコピー」ボタンをクリックします。 「適用」ボタンをクリックします。終了しました!次の手順は、すべてが正しく機能したことを確認するのに役立ちます。
  50. VMを起動します。問題や修復を必要とせずに、通常どおりWindowsを起動するはずです。 VMをシャットダウンします。
  51. この次のステップでは、画面から目を離さないでください。休止状態を選択してシステムをシャットダウンします(そうしないと、Linuxを再度起動するときにいくつかの手順を繰り返す必要があります)。コンピューターを起動してから、Windowsを直接起動します。画面を注意深く観察して、修理が行われたか、または必要かどうかを確認します。すべてが正しければ、修復を実行または必要とせずにWindowsを起動する必要があります。私のシステムでは、正しくセットアップされていない場合、Windowsが自動的に修復され、何も問題が発生していないかのようにWindowsが起動します。そのため、画面を注意深く監視する必要があります。修復が必要な場合は、diskpartで行った署名の変更に問題がありました。 Linuxを起動し、署名が正しくなるように細心の注意を払って関連する手順を繰り返します。

提案

Linuxを起動するたびに、ループバックデバイスの作成、およびdevice-mapperを使用した/ dev/dm-0仮想ドライブのセットアップを含む手順を繰り返す必要があります。 virt-managerを起動する前にスクリプトを実行できるように、これをスクリプト化する必要があります。今のところ、そのスクリプトはこの回答の範囲を超えていますが、システム用に作成した後で追加する可能性があります。

ヒント

  • 動作させようとしているときに、Windowsを直接起動する目的でLinuxの実行中にコンピューターを再起動する必要がある場合は、コンピューターを休止状態にしてから起動することをお勧めします。このようにして、最終的にLinuxを再起動したときに、行った作業が失われることはありません。これは、スクリプトをセットアップするまで役立ちますが、最終的にLinuxを完全に再起動する必要があるため、永続的な解決策ではありません。
  • Virt-managerまたはKVMの問題が原因でどこかで行き詰まった場合は、VirtualBoxやVMwarePlayerなどの他のオプションを試すことができます。このソリューションは仮想ドライブを作成するため、進行状況を失うことなく、異なる仮想マシンプログラムを切り替えることができます。すべてが機能した後でも、これはこのソリューションの美しさの一部です。いつでも、通常のWindowsブートまたは任意の仮想マシンプログラムから同じWindowsインストールを実行できます。一度に複数の仮想マシンを実行しないでください。
  • この情報のほとんどが由来するWebサイトは、WindowsインストールにVirtIOドライバーをインストールすると、おそらくはるかに優れたKVMパフォーマンスが得られることを示唆しています。私はまだこれを試していません。
3