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でやりたいことをすることは可能ですか?
警告:これは非常に機密性の高い操作です。システムに非常に簡単に損傷を与え、データを失う可能性があります。私のために働いたことはあなたのために働かないかもしれません。続行する前に、必要なバックアップを作成することをお勧めします。
私の経験とこのウェブサイトがこの情報のソースです: 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を使用できます。
LinuxとWindows7の両方をまだインストールしていない場合は、別々のパーティションの同じハードドライブにインストールします。それらを別々のドライブにインストールする場合は、リンクの手順を参照してください。それらの間でデュアルブートできる場所にそれらを設定します。先に進む前に、パーティションを希望どおりに設定してください。注:一部のWindowsインストールでは、休止状態用に個別のパーティションが作成されます。このパーティションを削除したい場合は、今がそれを行う時です。これについては手順を調べる必要がありますが、Windows内から実行できることはわかっています。正しく/完全に行わないと、パーティションはそれ自体を再作成できます。したがって、このパーティションを削除することを選択した場合は、コンピューターを再起動してWindowsを再起動し、パーティションが再作成されるかどうかを確認してください。
Linuxを起動します。
LinuxとWindowsの両方を含むハードドライブへのパスを把握します。通常、これは/dev/sda
です。LinuxMint17.1では、メインメニューからディスクを起動して、ハードドライブへのパスを確認できます。ディスクドライブのリストからハードドライブを選択します。これで、ハードドライブに関する情報がウィンドウの残りの部分を占めます。この情報の上部に、ハードドライブのサイズが太字で表示され、そのすぐ下に必要なパスが小さなテキストで表示されます。
注:これからは、/dev/sda
を使用して、Windows7とLinuxの両方のパーティションを含むハードドライブへのパスを参照します。これを正しいパスに置き換える必要があります。
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 デバイスマッパーの線形マッピングを設定する方が適しているようで、チャンクサイズの丸めの問題。私はデバイスマッパーで成功しました。
前の手順でのfdisk出力を調べます。 1つのセクターが占めるバイト数を決定します。あなたのセクターが私のように512バイトである場合、これは物事を容易にします。
Fdiskの出力をもう一度調べます。最初のパーティションの開始前に使用されていないセクターの数を判別します。私の場合、最初のパーティションはセクター2048で始まります。つまり、最初の2048セクターはどのパーティション(0-2047)でも使用されていません。これにはGRUBブートローダーが含まれています。
次のコマンドを使用して、前の手順のバイトのイメージを作成します。 2048を正しいセクター数に置き換える必要があります。セクターが512バイトでない場合は、bs = bytes_per_sectorパラメーターも指定する必要があります。
dd if=/dev/zero of=boot.mbr count=2048
これで、現在のディレクトリにboot.mbrという名前のイメージファイルが作成されます。
Fdiskの出力をもう一度調べます。 Windows7パーティションへのパスを決定します。私にとって、これらはリストされている最初の2つのパーティションであり、どちらもNTFSを使用しています。私の2つのパスは、/dev/sda1
と/dev/sda2
です。
注:これからは、/dev/sda1
と/dev/sda2
を使用してWindows7パーティションを参照します。これらをシステム上の正しいパスに変更する必要があります。
イメージファイルからループバックデバイスを作成します。
Sudo losetup /dev/loop0 boot.mbr
これにより、loop0デバイスを仮想ディスクにマップできるように設定されます。
仮想ディスクにマップされるものを定義するファイルをどこかに作成します。このファイルは、device-mapperによって使用されます。私は〜/ vm/virtual_windows_disk_defに私のものを置きました。
〜/ 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
/ dev/mapper/controlが存在するかどうかを確認します。そうでない場合は、dm_modカーネルモジュールをロードしてみてください。
modprobe dm_mod
Sudo dmsetup create virtual_windows_disk ~/vm/virtual_windows_disk_def
/ dev/mapper/virtual_windows_diskが正しいサイズであることを確認してください。
Fdiskをインタラクティブモードで起動して、/ dev/mapper/virtual_windows_diskディスク上の2つのパーティションをセットアップし、/ dev/sdaディスク上の2つのWindowsパーティションと完全かつ正確に一致させます。画面上のヘルプと手順を使用して、このプロセスを完了することができます。パーティションを完全にセットアップできない場合は、これらのパーティションを書き込んだり保存したりする代わりに終了してください。私の知る限り、各パーティションで一致する必要があるのは、開始セクター、終了セクター、起動可能かどうか、ファイルシステムの種類です。 512を/ dev/sdaディスクのセクターあたりのバイト数に置き換えます(これにより、fdiskがインタラクティブモードで起動します)。
Sudo fdisk -b 512 /dev/mapper/virtual_windows_disk
Sudo chown your_username:group /dev/mapper/virtual_windows_disk
次のコマンドをプロンプトに入力します。
bootrec /FixMbr
これで、VMが起動可能になりますが、まだ起動しないでください。
プロンプトに次のコマンドを入力して、Windowsインストールに割り当てられているドライブ文字を確認します。
dir C:
dir D:
そのうちの1つは、ドライブ文字が空ではなく、ファイルが含まれていることを示している必要があります。これは、次のステップで必要になる正しいドライブ文字です。私にとってはドライブCでした。
次に、レジストリでドライブの署名を見つける必要があります。次のコマンドをプロンプトに入力します。
reg load HKLM\Computer_System D:\Windows\system32\config\system
regedit
レジストリエディタを閉じずに、コマンドプロンプトウィンドウをアクティブにします。次のコマンドを入力します。
diskpart
DISKPART> select disk 0
次の手順では、最後の文字を、レジストリエディタのそのエントリの値に現在表示されている最初の4セットの文字に置き換える必要があります。ただし、セットの順序を逆にする必要があります。たとえば、ab cd ef ghが表示されている場合は、コマンドの最後にghefcdabが必要です。
DISKPART> uniqueid disk id=ghefcdab
exit
。 diskpartプログラムが終了し、通常のコマンドPromptが表示されます。reg unload HKLM\Computer_System
提案
Linuxを起動するたびに、ループバックデバイスの作成、およびdevice-mapperを使用した/ dev/dm-0仮想ドライブのセットアップを含む手順を繰り返す必要があります。 virt-managerを起動する前にスクリプトを実行できるように、これをスクリプト化する必要があります。今のところ、そのスクリプトはこの回答の範囲を超えていますが、システム用に作成した後で追加する可能性があります。
ヒント