KVMのWindows 10:ブートディスクをVirtioに変更する


25

IDEディスクを使用してWindows 10仮想マシンをインストールしましたが、Virtioドライバーを使用するようにディスクを変更したいと考えています。

Windowsの他のバージョンの場合、この質問のアプローチは十分であるようです-IDE VMをvirtio VMに移行する方法は?

ただし、Windows 10では、これがINACCESSIBLE_BOOT_DEVICE問題につながります。

望ましいアプローチは、最初からVirtioデバイスを使用し、プロンプトが表示されたら適切なvirtioドライバーをインストールすることです。残念ながら、KVMでCDを変更する際に別の問題が発生していました(2つのCDROMデバイスも動作しませんでした)。

再インストールせずにこの問題を修正する方法はありますか?

同様の問題はこちら-https://me.m01.eu/blog/2015/03/windows-10-kvm-and-iscsi/#comment-36090


+1。私はこの問題を自分で理解できませんでした。以前のバージョンのWindowsのさまざまな回避策に従って、VirtIOブロックデバイスを接続した後、Windows VMにVirtIOドライバーをインストールしようとしましたが、INACCESSIBLE_BOOT_DEVICEブルースクリーンが表示されました。最終的にVirtIOブートデバイスに再インストールしました。
-Deltik

私は怠け者なので、確認のためにコメントとして投稿します:virtioの「コントローラー」を使用して、ディスクを追加します。Windowsから要求されたら、ドライバーをインストールします。パーティションなどを作成する必要はありません。次に、ブートディスクをvirtioに切り替えます。コントローラードライバーインスタンスがインストールされているため(非常に重要)、動作するはずです。
ダニエルB

@DanielB:それはまさに私がやったことです。あなたの提案は、Windows 10ではなく、以前のバージョンのWindowsで機能するようです
。– Deltik

なるほど。さて、私はあなたの問題を解決しない唯一の最良の方法を持っていると思います(笑):Windows ISOを変更して、ドライバを含めるだけです。起動可能なままにする必要があることに注意してください。そうすれば、virtioに直接(できれば)インストールできます。
ダニエルB

1
@DanielB:VirtIOドライバーは、インストールプロセスで別のドライバーディスクを使用してロードできます。Windows 10にVirtIOドライバーがインストールされている場合、問題はありません。IDEからVirtIOにWindowsを切り替えるためのインターネット上の既存の指示は、Windows 10 KVM仮想マシンでは機能しません。
-Deltik

回答:


24

すべての答えは正しいですが、virtioドライバーをインストールした後、いくつかの追加手順を実行する必要がある場合があります。私が従った手順は次のとおりです。

  1. 管理者特権でコマンドプロンプトを開き、次のように入力してVMをセーフモードで起動するように設定します

    bcdedit / set {current} safeboot minimal

  2. VMをシャットダウンし、ブートデバイスタイプをvirtioに変更します。

  3. VMを起動します。セーフモードに入ります。

    注:セーフモードでは、virtioドライバーを含むすべてのブート開始ドライバーが有効になり、ロードされます。現在、それを使用するためにインストールされたミニポートがあるため、カーネルは、ブート時にロードされるドライバーの一部になり、再度無効にすることはなくなりました。

  4. 起動されたVMでbcdeditの設定をリセットして、(昇格したコマンドプロンプトで)次のように入力して、マシンが通常モードで起動できるようにします。

    bcdedit / deletevalue {current} safeboot

  5. できた


1
素晴らしい!これは私にとって欠けていたビットでした。何をそこに入れるべきかわからなかっbcdedit /set safeboot minimal{current}ので、私はを使用しました。
チャールズグリーン

2
@CharlesGreen {current}はリテラルであり、そのまま入力します。
Marc。2377

パスワードログインではネットワークアクセスが必要になる可能性があるため、PINログインを使用している場合の問題。その結果、Windowsを再インストールしています。answers.microsoft.com/en-us/windows/forum/windows_10-security/...
アンドリュー・オルニー

ログオンの問題を回避するために、ステップ1でbcdedit / set {current} safebootネットワークを試しました。また、最初にローカルユーザーを作成して安全性を高めました。ドメインに接続していて、間違ったことをしないようにしたいすべてのことを制御できません。そして、ネットワークパラメータは少なくともプロセスを台無しにしませんでした。
HackerBaloo

1)、つまり、昇格したプロンプトをどのように行いますか?
フレデリックノール

16

かなり簡単な答えが提供されます -そして、他のオプションのヒントと一緒に多くの場合に機能するかもしれません。(私のように)IDEに切り替えられず、VirtIOの使用を強制される場合、次の代替アプローチが機能する可能性があります。

  1. Windows 10 DVD / CD ISOとvirtioドライバーISOの両方をVMに追加します。
    • 最新のドライバーISOは、https: //fedorapeople.org/groups/virt/virtio-win/repo/latest/にあるRPMから取得できます
  2. Windows 10 DVD / CDから起動し、修復モードオプションからコマンドプロンプトを表示します。
  3. CLI経由でドライバーをロードします。例 drvload e:\viostor\w10\amd64\viostor.inf
    • 私の場合、e:はvirtioインストールISOが割り当てられた場所でした。
    • ドライバーf:をロードした後、Windowsインストールがマウントされた場所になりました。
  4. DISMコマンドを使用して、ストレージコントローラードライバーを挿入します。
    • 例えば dism /image:f:\ /add-driver /driver:e:\viostor\w10\amd64\viostor.inf
    • 上記のように、環境に応じてドライブ文字の割り当てを変更します。

特別なウィンドウがCD / Imageを起動し、実際のWindowsインストールイメージをその場で「パッチ」することをいじる必要がなくなります。

このニッチなケースでは、スタートアップの修復を避けることをお勧めします(私にとっては失敗しました)。vistor.infを読み込んだ後にインクルードする方法を知らなかったようです。試してみる場合は、Windows 10のDVDがすべてを復元または再インストールしようとするのを避けてください。

DISMアプローチの功績:dismを使用してドライバーを追加する


1
4の代替:infファイルを右クリック->インストールします。
RBS

また、これを破るウィンドウの更新に注意してください。redditの投稿によると、「アップデートによりVirtIOドライバーが消去されました」:reddit.com/r/VFIO/comments/6b06y5/…。これは、デュアルブートとVMの両方としてWindowsインストールを実行し、ネイティブハードウェア上で更新を適用する場合に発生する可能性があります
...-JPvRiel

1
これに加えて、以下の回答。セーフモード(bcdedit / set {current} safeboot minimal)でブートしてから、セーフモードブート(bcdedit / deletevalue {current} safeboot)を削除してから再起動する必要がありました。その後、Windows Server 2016 Essentialsと連携しました。
Gトラウォ

10

一般的な手順は次のとおりです。

  1. VMにVirtIOドライバーをインストールする
  2. VirtIOを使用するようにVMのシステムディスクを設定します
  3. VMが起動しない場合、スタートアップ修復または修復インストールを実行します

手順詳細は以下のとおりです。

  1. ブートディスクをIDEに戻します。
  2. Windows VMがシャットダウンされていることを確認してください。
  3. ここからVirtIOドライバーISOをダウンロードします
  4. VMのCDドライブにマウントします。
  5. VirtIOタイプのストレージデバイスを追加します。サイズの割り当ては、ドライバーのインストールに使用しているため重要ではありません。
  6. Windows VMを起動します。ドライバをインストールしようとします。そうでない場合は、デバイスマネージャーを開き、SCSIデバイスの横に感嘆符アイコンが表示されます。ドライバを更新し、マウントされたISOの適切なディレクトリを指すように選択できます。インストールしたら、再起動せずにマシンをシャットダウンします。
  7. Windowsのvirt-manager設定で、ストレージタイプをIDEからVirtIOに変更します。
  8. 以前に作成したストレージデバイスを削除できます。もはや必要ありません。
  9. Windowsを起動すると、起動してSCSIドライバがインストールされます。再起動する必要があります。
  10. VMが起動せず、ドライバーがインストールされている場合は、次のことを試してください。

    1. Windowsの起動を妨げる可能性のある特定のシステムの問題を修正できるスタートアップ修復
    2. 最後の解決策:Windows 10 ISOから起動しながらインストール修復します。これにより、すべてのアプリケーションとユーザー設定が保持され、Windowsが更新されて起動されます。最新のWindows 10 ISOを使用します。

残念ながら最後の手順が必要な場合、発生する可能性のあるもう1つの困難は、WindowsブートCDがMicrosoftによってこれらのドライバーが含まれていないためにVirtIOディスクを理解できない場合です。この場合、これらのドライバーを含むカスタムブートCD / USBを作成する必要がありますが、最新のもの(現在1511)を取得して、インストールと同じレベルのWindows ISOから開始するようにしてください。

Windowsでドライバーをスリップストリームする方法に関するチュートリアルを次に示します。


この回答は機能します(Windowsの他のバージョンでも機能します)。ただし、手順9で起動しようとするとINACCESSIBLE_BOOT_DEVICEエラーが発生します(質問を投稿した場所です)。スタートアップ修復(10.1)は機能せず、ステップ10.2は実際には実行できません。修復インストールは、最初にCDなしでシステムを起動し、次にCDで実行することによってのみ実行できますsetup.exe。これが質問のリンクで説明されていることであり、私が知る限り、他の方法はありません。
グレアム

他にどのような情報を提供することになっていますか?オプションが存在しないことを繰り返し述べました。ここでの問題は、あなたが常にそうだと主張することです。「インターネット上で見つかったさまざまな記事に多数の人がいる」場合は、1つを参照してください。CDから起動して修復インストールを開始する方法を説明する1つの記事をリンクします。インストール済みのシステムを起動setup.exeしてCDで実行する必要はありません。あなたがあからさまに嘘をついていないことを証明する信頼できる情報源からの記事を一つリンクしてください。あなたの貴重な賛成をおandびします。
グレアム

たとえば、インストールメディアからWindows 10でスタートアップ修復を行う方法に関するこのビデオを参照してください。そうでない場合は、コマンドプロンプトを使用してみてください。上記で述べたように、スリップストリームISOが必要な場合があります-WIn10インストールにVirtIOドライバーが含まれているかどうかはわかりません。
harrymc

または、起動されたWindows PEインストールイメージにVirtIOドライバーを追加するために、drvloadメソッドを調整できます。
harrymc

2
上記の答えは良いように見え、残念ながらpc-q35-2.5マシンエミュレーション/タイプを使用するVMでは単純に見えますが、IDEコントローラーを追加することはできません。
-JPvRiel

5

harrymcからの答えは私にとってはうまくいきます。

私が従った次の手順:

  1. Windowsにvirtioドライバーをインストールする
  2. 追加の「ダミー」virtioディスクを追加します。再起動して、「ダミー」が機能するかどうかを確認します。
  3. 手順2が機能する場合は、ブートディスクをvirtioに切り替えます。
  4. リブート
  5. 追加の「ダミー」virtioディスクを削除します
  6. ...

回答として「ありがとう」を追加しないでください。サイトにしばらく時間をかけると、あなたが好きな答えを投票するのに十分な特権を得ることができます。
DavidPostill

1
これは過小評価されている答えです-Proxmox Windows 10では、すべてのドライバーをインストールした後でも初期化に問題がありました。VirtIOブロックデバイスとして小さな1 GBのディスクを作成し、VMを起動して、正しく表示されることを確認してから、シャットダウンしてメインドライブをVirtIOに変更する必要がありました。Windows 10はHDDドライバーを正しく検出しなかったので、切り替えを行う前に、起動時にドライバーを読み込むためにそれを同軸にする必要がありました。
アルバートH

3

残念ながら、ドライバを完全にインストールして、「アクセスできない起動デバイス」を取得することは可能です。その理由は少し衝撃的です(私はそう思います):Win 10のインストールは、最初にインストールされたときに必要だったドライバーを「記憶」し、デフォルトでブート時に他のストレージドライバーをロードしません。これは、「海賊版」に行われているようです。異なるハードウェアで「同じ」インストールを実行することを難しくしています。gentooフォーラムのこの投稿には、この「機能」に関する優れたドキュメントがあります。その本質は次のとおりです。

起動時にロードを禁止する対象のドライバは、次のように決定できます。レジストリキーComputer \ HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Services内には、インストールで認識されているすべてのドライバに対して1つのサブキーがあります。このサブキーの名前は、ドライバーの名前です。各ドライバーのサブキー内には、そのドライバーが起動時に読み込まれないようにする場合、サブキー「STARTOVERRIDE」があります。特に、STARTOVERRIDEサブキー内には、名前が "0"のパラメーターがあります。このパラメーターの値が「3」の場合、ブート時にロードされません。代わりにこの値を0に設定すると、動作が「オーバーライド」されます。

私自身はComputer \ HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Servicesに移動し、「STARTOVERRIDE」を検索します。それを見つけるたびに、値が「3」で「0」という名前がその下にある場合、「0」に変更します。これはやり過ぎのようです。ロードする必要があるドライブを変更するだけです。私の場合、それらのいくつかがあり、どれも覚えていないので、その「サービス」セクション内で「F3検索」を行うだけです。

そして、現在の署名されたvirtioストレージには必要ありませんが、署名されていないより実験的なドライバを使用したい場合はこれを読んでいる人に役立つかもしれません:上記を実行した後でもEVENが見つかりましたまた、高度なオプション画面を起動してF7(「ドライバー署名検証を無効にする」)を選択する必要がありました。面倒なことに、マシンがBCDを読み取り、署名を検証する必要がないことがわかる前にドライバーをロードする必要があるため、bcdフラグを設定してドライバー検証を無効にするだけでは不十分でした。

全体として、Microsoftの最も輝く時間ではありません。正当なユーザーに人工のブルースクリーンを提供したい場合は、SATAディスクをNVMeディスクに置き換えて「正常に動作させる」よりも、ユーザーを嫌う必要があります。


多くの詳細を提供してくれてありがとう、これは最も実行可能なソリューションです!すべてをインポートして解決する1つのregfile。
フロリアンハイグル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.