Windows 10 di KVM: ubah disk boot ke Virtio

25

Saya telah menginstal mesin virtual Windows 10 menggunakan disk IDE dan sekarang ingin mengubah disk untuk menggunakan driver Virtio.

Untuk versi Windows lainnya, pendekatan dalam pertanyaan ini tampaknya cukup - Bagaimana cara memigrasi IDE VM ke virtio VM?

Namun dengan Windows 10, ini mengarah ke INACCESSIBLE_BOOT_DEVICEmasalah.

Saya sadar bahwa pendekatan yang lebih disukai adalah menggunakan perangkat Virtio dari awal dan menginstal driver virtio yang sesuai ketika diminta. Sayangnya saya mengalami beberapa masalah terpisah dengan mengubah CD di KVM (saya juga tidak bisa mendapatkan 2 perangkat CDROM).

Apakah ada cara untuk memperbaiki masalah ini tanpa menginstal ulang?

Masalah serupa di sini - https://me.m01.eu/blog/2015/03/windows-10-kvm-and-iscsi/#comment-36090

Graeme
sumber
+1. Saya tidak bisa memecahkan masalah ini sendiri. Mengikuti berbagai solusi untuk Windows versi sebelumnya, saya mencoba menginstal driver VirtIO pada Windows VM setelah mencolokkan perangkat blok VirtIO, tetapi saya masih mendapatkan INACCESSIBLE_BOOT_DEVICElayar biru. Saya akhirnya menginstal ulang pada perangkat boot VirtIO.
Deltik
Karena saya malas, saya akan mempostingnya sebagai komentar untuk Anda verifikasi: Tambahkan disk tambahan, dengan virtio "controller". Instal driver ketika Windows meminta Anda untuk melakukannya. Tidak perlu membuat partisi atau apa pun. Kemudian alihkan disk boot ke virtio. Karena instans driver controller sekarang diinstal (sangat penting), itu harus bekerja.
Daniel B
@DanielB: Itulah yang saya lakukan. Tampaknya saran Anda berfungsi untuk versi Windows sebelumnya, tetapi tidak untuk Windows 10.
Deltik
Hm, oke. Ya saya rasa saya punya satu cara terbaik untuk tidak menyelesaikan masalah Anda (lol): Cukup modifikasi Windows ISO dan sertakan drivernya. Perlu diingat itu harus tetap bootable. Dengan begitu Anda dapat (mudah-mudahan) menginstal langsung ke virtio.
Daniel B
1
@DanielB: Driver VirtIO dapat dimuat dalam proses instalasi dengan disk driver terpisah. Jika Windows 10 diinstal dengan driver VirtIO, tidak ada masalah. Hanya saja instruksi yang ada di Internet untuk mengalihkan Windows dari IDE ke VirtIO tidak berfungsi untuk mesin virtual Windows 10 KVM.
Deltik

Jawaban:

24

Semua jawaban sudah benar tetapi Anda mungkin perlu melakukan beberapa langkah tambahan setelah Anda menginstal driver virtio. Berikut langkah-langkah yang saya ikuti:

  1. Buka prompt perintah yang ditinggikan dan atur VM untuk boot ke safe mode dengan mengetik

    bcdedit / set minimal safeboot {saat}

  2. matikan VM dan ubah tipe perangkat booting ke virtio.

  3. boot VM. Ini akan masuk dalam mode aman.

    Catatan: Dalam mode Aman semua driver boot-start akan diaktifkan dan dimuat, termasuk driver virtio. Karena sekarang ada miniport yang terinstal untuk menggunakannya, kernel sekarang akan menjadikannya bagian dari driver yang akan dimuat saat boot dan tidak menonaktifkannya lagi.

  4. di VM yang boot, setel ulang pengaturan bcdedit untuk memungkinkan mesin mem-boot ke mode Normal dengan mengetik (pada command prompt yang ditinggikan lagi):

    bcdedit / deletevalue safeboot {saat ini}

  5. Selesai

Llegolas
sumber
1
Fantastis! Ini adalah bagian yang hilang bagi saya. Saya menggunakan bcdedit /set safeboot minimal, menghilangkan itu {current}karena saya tidak yakin apa yang seharusnya masuk ke sana.
Charles Green
2
@CharlesGreen {current}adalah literal, Anda mengetik apa adanya.
Marc.2377
Masalah jika Anda memiliki PIN login karena kata sandi login dapat memerlukan akses jaringan. Saya menginstal ulang Windows sebagai hasilnya. answer.microsoft.com/en-us/windows/forum/windows_10-security/…
Andrew Olney
Saya mencoba dengan jaringan safeboot bcdedit / set {current} pada langkah pertama untuk menghindari masalah logon, saya juga pertama-tama membuat pengguna lokal menjadi lebih aman dan saya tidak benar-benar berpikir masalah tetap berlaku bagi saya, tapi karena mesinnya sudah terhubung ke domain dan saya tidak memiliki kendali atas semua yang saya ingin memastikan saya tidak melakukan kesalahan. Dan parameter jaringan setidaknya tidak merusak proses.
HackerBaloo
bagaimana Anda melakukannya 1), yaitu, prompt yang ditinggikan?
Frederick Nord
16

Jawaban yang cukup sederhana diberikan - dan dapat bekerja dalam banyak kasus, bersama dengan petunjuk pada opsi lain. Jika (seperti saya) Anda tidak dapat beralih ke IDE dan dipaksa untuk menggunakan VirtIO, maka pendekatan alternatif berikut mungkin berhasil:

  1. Tambahkan Windows 10 DVD / CD ISO dan ISO virtio driver ke VM.
  2. Boot windows 10 DVD / CD dan masuk ke command prompt dari opsi mode perbaikan.
  3. Muat driver melalui mis. CLI drvload e:\viostor\w10\amd64\viostor.inf
    • Dalam kasus saya e: adalah di mana virtio instal ISO ditugaskan.
    • Setelah memuat driver f: adalah tempat pemasangan windows menjadi terpasang.
  4. Gunakan perintah DISM untuk menyuntikkan driver pengontrol penyimpanan
    • Misalnya dism /image:f:\ /add-driver /driver:e:\viostor\w10\amd64\viostor.inf
    • Seperti di atas, ubah tugas huruf drive sesuai dengan lingkungan Anda sendiri.

Hindari perlu bermain-main dengan membuat windows khusus CD / Gambar dan 'tambalan' windows menginstal gambar yang sebenarnya dengan cepat.

Catatan, untuk kasus khusus ini, saya sarankan menghindari perbaikan startup (yang gagal untuk saya). Tampaknya tidak tahu cara memasukkan vistor.inf setelah memuatnya, dan jika Anda mencobanya, berhati-hatilah untuk menghindari keinginan DVD Windows 10 untuk memulihkan atau menginstal ulang semuanya ...

Kredit untuk pendekatan DISM: Menggunakan disp untuk menambah driver

JPvRiel
sumber
1
Alternatif ke 4: Klik kanan file inf -> Instal.
rbs
Juga, perhatikan pembaruan windows yang melanggar ini. Sesuai dengan posting reddit, "pembaruan menghapus driver Virtio saya": reddit.com/r/VFIO/comments/6b06y5/… . Ini mungkin terjadi di sudut kasus ketika Anda menjalankan instalasi Windows Anda sebagai dual boot dan VM dan menerapkan pembaruan ketika pada perangkat keras asli ...
JPvRiel
1
Ini, ditambah jawaban di bawah ini. Saya harus melakukan boot ke Safe Mode (bcdedit / set {current} safeboot minimal) dan kemudian hapus boot Safe Mode (bcdedit / deletevalue {current} safeboot), dan kemudian restart. Setelah itu, ia bekerja dengan Windows Server 2016 Essentials.
G Trawo
10

Langkah-langkah yang harus diikuti secara umum adalah:

  1. Instal driver VirtIO di VM
  2. Atur disk sistem VM untuk menggunakan VirtIO
  3. Jika VM tidak bisa boot, jalankan Startup Repair atau bahkan Repair Install

The prosedur secara rinci adalah:

  1. Kembalikan disk boot ke IDE.
  2. Pastikan windows VM dimatikan.
  3. Unduh driver Virtio ISO dari sini .
  4. Pasang di CD drive untuk VM.
  5. Tambahkan perangkat penyimpanan yang merupakan tipe VirtIO. Alokasi ukuran tidak masalah karena Anda menggunakannya untuk menginstal driver.
  6. Mulai VM Windows. Ini akan mencoba menginstal driver. Jika tidak, buka Device Manager dan Anda akan melihat perangkat SCSI terdaftar dengan ikon tanda seru di sebelahnya. Anda dapat memilih untuk memperbarui driver dan arahkan ke direktori ISO yang sesuai yang terpasang. Setelah diinstal, jangan reboot tetapi matikan mesin.
  7. Dalam pengaturan virt-manager untuk Windows, ubah jenis penyimpanan dari IDE ke VirtIO.
  8. Anda dapat menghapus perangkat penyimpanan yang Anda buat sebelumnya. Tidak lagi dibutuhkan.
  9. Mulai Windows, itu harus boot dan menginstal driver SCSI. Anda harus reboot setelah itu.
  10. Jika VM tidak bisa boot tetapi driver diinstal, Anda dapat mencoba melakukan:

    1. Perbaikan Startup yang dapat memperbaiki masalah sistem tertentu yang mungkin mencegah Windows dari memulai.
    2. Solusi terakhir: Perbaiki Instal saat boot dari Windows 10 ISO. Ini akan menjaga semua aplikasi dan pengaturan pengguna, hanya menyegarkan Windows dan boot. Gunakan Windows 10 ISO terbaru.

Jika langkah terakhir sayangnya diperlukan, satu lagi kesulitan yang mungkin dihadapi adalah jika CD boot Windows tidak dapat memahami disk VirtIO karena driver ini tidak termasuk di dalamnya oleh Microsoft. Dalam hal ini, seseorang perlu membuat CD / USB boot khusus yang berisi driver ini, tetapi pastikan Anda mulai dari Windows ISO yang tingkatannya sama dengan instalasi dengan mendapatkan yang terbaru (saat ini 1511).

Berikut adalah beberapa tutorial tentang cara menginstal driver di Windows:

harrymc
sumber
Jawaban ini akan berfungsi (dan tidak berfungsi untuk versi lain di Windows), kecuali bahwa pada langkah 9, ketika Anda mencoba untuk boot ada kesalahan INACCESSIBLE_BOOT_DEVICE (ini adalah di mana saya berada ketika saya memposting pertanyaan). Perbaikan startup (10.1) tidak berfungsi dan langkah 10.2 sebenarnya tidak mungkin. Instalasi perbaikan hanya dapat dilakukan dengan mem-boot sistem terlebih dahulu, tanpa CD, kemudian berjalan setup.exepada CD. Inilah yang dijelaskan oleh tautan dalam pertanyaan dan sejauh yang saya ketahui tidak ada cara lain untuk melakukannya.
Graeme
Informasi apa lagi yang harus saya berikan? Saya telah memberi tahu Anda berulang kali bahwa opsi itu tidak ada. Masalahnya di sini adalah bahwa Anda terus-menerus bersikeras itu. Jika memang ada 'lusinan artikel lain di berbagai artikel yang ditemukan di Internet', rujuklah satu. Tautkan satu artikel yang menjelaskan cara mem-boot dari CD dan mulai menginstal perbaikan - tanpa terlebih dahulu mem-boot sistem yang diinstal dan berjalan setup.exepada CD. Tautkan satu artikel dari sumber yang dapat dipercaya yang membuktikan bahwa Anda tidak berbohong dan saya akan meminta maaf dan memberi Anda upvote berharga Anda.
Graeme
Lihat misalnya video ini tentang cara melakukan Startup Repair pada Windows 10 dari media instalasi. Jika tidak, coba gunakan Prompt Perintah . Seperti yang saya katakan di atas, Anda mungkin perlu ISO slipstreamed - Saya tidak tahu jika instalasi WIn10 berisi driver VirtIO.
harrymc
Atau Anda dapat mengadaptasi metode drvload untuk menambahkan driver VirtIO ke image instalasi Windows PE yang di-boot.
harrymc
2
Walaupun jawaban di atas terdengar bagus dan terlihat sederhana, sayangnya dengan VM saya menggunakan pc-q35-2.5emulasi / tipe mesin, tidak mungkin menambahkan pengontrol IDE.
JPvRiel
5

jawaban dari harrymc berfungsi dengan baik untuk saya.

langkah-langkah berikut yang saya ikuti:

  1. Instal driver virtio di windows
  2. Tambahkan disk virtio "dummy" tambahan. Nyalakan ulang dan periksa apakah "dummy" berfungsi.
  3. Jika Langkah 2 berfungsi, maka alihkan disk boot ke virtio.
  4. Mulai ulang
  5. Hapus disk virtio "dummy" tambahan
  6. ...
sdhd
sumber
Tolong jangan tambahkan "terima kasih" sebagai jawaban. Investasikan waktu dalam situs ini dan Anda akan memperoleh hak istimewa yang cukup untuk meningkatkan jawaban yang Anda sukai, yang merupakan cara Pengguna Super mengucapkan terima kasih.
DavidPostill
1
Ini adalah jawaban yang diremehkan - di Proxmox Windows 10 mengalami kesulitan menginisialisasi, bahkan setelah menginstal semua driver. Saya harus membuat disk 1 GB kecil sebagai perangkat blok VirtIO, mulai VM, verifikasi bahwa itu muncul dengan benar, dan kemudian matikan + ubah drive utama ke VirtIO. Windows 10 tidak mendeteksi driver HDD dengan benar, jadi saya harus membujuknya untuk memuatnya saat boot sebelum beralih.
Albert H
3

Sayangnya sangat mungkin untuk menginstal driver dengan sempurna dan MASIH mendapatkan "boot Device yang tidak dapat diakses." Alasannya agak mengejutkan (saya menemukan): instalasi Win 10 "mengingat" driver yang diperlukan ketika pertama kali diinstal, dan secara default TIDAK AKAN memuat driver penyimpanan lain pada saat boot. Tampaknya ini dilakukan untuk "pembajakan" - membuatnya sulit untuk menjalankan instalasi "yang sama" pada perangkat keras yang berbeda. Ada beberapa dokumentasi bagus tentang "fitur" ini di posting ini dari forum gentoo. Intinya adalah sebagai berikut:

Driver yang ditargetkan untuk dilarang-untuk-memuat-saat-boot dapat ditentukan sebagai berikut: Di dalam kunci registri Komputer \ HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Layanan ada satu subkunci untuk setiap driver yang dikenal dengan instalasi. Nama subkunci ini hanya nama pengemudi. Di dalam setiap subkunci driver, akan ada subkunci "STARTOVERRIDE" jika driver itu harus dicegah untuk memuat saat boot. Secara khusus, dalam subkunci STARTOVERRIDE terdapat parameter yang namanya "0". JIKA nilai parameter ini adalah "3", itu tidak akan dimuat saat boot. Mengatur nilai ini ke 0 sebagai gantinya akan 'menggantikan' perilaku.

Saya sendiri baru saja masuk ke Computer \ HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Services dan mencari "STARTOVERRIDE". Setiap kali saya menemukannya, jika ada nama di bawahnya yang disebut "0" dengan nilai "3", saya ubah menjadi "0". Ini tampaknya berlebihan, Anda hanya perlu mengubah drive yang perlu dimuat. Dalam kasus saya ada beberapa dari mereka, dan saya tidak pernah ingat yang mana, jadi saya hanya melakukan "pencarian F3" di dalam bagian 'layanan'.

Dan satu tip terakhir yang tidak diperlukan untuk penyimpanan virtio saat ini, ditandatangani, tetapi mungkin untuk orang lain yang membaca ini jika mereka ingin menggunakan driver yang lebih eksperimental yang belum (belum) ditandatangani: Saya menemukan BAHKAN setelah melakukan hal di atas Trik, saya JUGA perlu boot ke layar opsi lanjutan dan memilih F7 ("nonaktifkan verifikasi tanda tangan driver"). Mengganggu, itu tidak cukup untuk mengatur bendera bcd untuk menonaktifkan verifikasi driver, karena pengemudi perlu memuat sebelum mesin membaca BCD dan mengetahui bahwa itu tidak perlu memverifikasi tanda tangan.

Semua dalam semua, bukan jam Microsoft paling bersinar. Anda benar-benar harus membenci pengguna Anda jika Anda lebih suka memberikan Blue-Screen tiruan buatan untuk pengguna yang sah daripada membiarkan orang (katakanlah) mengganti disk SATA dengan disk NVMe dan membuatnya "berfungsi".

Scott Petrack
sumber
Terima kasih telah memberikan begitu banyak detail, ini adalah solusi yang paling bisa diterapkan! Satu regfile untuk mengimpor dan menyelesaikan semuanya.
Florian Heigl