Windows 10 w KVM: zmień dysk rozruchowy na Virtio

25

Zainstalowałem maszynę wirtualną z systemem Windows 10 za pomocą dysku IDE i chciałbym teraz zmienić dysk, aby korzystać ze sterownika Virtio.

W przypadku innych wersji systemu Windows podejście zawarte w tym pytaniu wydaje się wystarczające - jak przeprowadzić migrację maszyny wirtualnej IDE na maszynę wirtualną virtio?

Jednak w przypadku systemu Windows 10 prowadzi to do INACCESSIBLE_BOOT_DEVICEproblemu.

Wiem, że preferowanym podejściem jest użycie urządzenia Virtio od samego początku i zainstalowanie odpowiedniego sterownika virtio po wyświetleniu monitu. Niestety miałem pewne osobne problemy ze zmianą płyty CD w KVM (nie mogłem też uruchomić 2 urządzeń CDROM).

Czy istnieje sposób na rozwiązanie tego problemu bez ponownej instalacji?

Podobny problem tutaj - https://me.m01.eu/blog/2015/03/windows-10-kvm-and-iscsi/#comment-36090

Graeme
źródło
+1. Nie mogłem samodzielnie rozwiązać tego problemu. Postępując zgodnie z różnymi obejściami poprzednich wersji systemu Windows, próbowałem zainstalować sterownik VirtIO na maszynie wirtualnej Windows po podłączeniu urządzenia blokowego VirtIO, ale nadal mam INACCESSIBLE_BOOT_DEVICEniebieski ekran. Skończyło się na ponownej instalacji na urządzeniu rozruchowym VirtIO.
Deltik
Ponieważ jestem leniwy, opublikuję go jako komentarz do weryfikacji: Dodaj dodatkowy dysk z „kontrolerem” virtio. Zainstaluj sterownik, gdy system Windows o to poprosi. Nie musisz tworzyć partycji ani nic. Następnie zmień dysk rozruchowy na virtio. Ponieważ instancja sterownika kontrolera jest teraz zainstalowana (bardzo ważne), powinna działać.
Daniel B
@DanielB: Właśnie to zrobiłem. Wygląda na to, że Twoja sugestia działa w poprzednich wersjach systemu Windows, ale nie w systemie Windows 10.
Deltik
Hmm, okej. Myślę, że wtedy mam jeden najlepszy sposób, aby nie rozwiązać twojego problemu (LOL): Po prostu zmodyfikuj ISO systemu Windows i dołącz sterowniki. Pamiętaj, że musi pozostać bootowalny. W ten sposób możesz (mam nadzieję) zainstalować bezpośrednio na Virtio.
Daniel B
1
@DanielB: Sterownik VirtIO można załadować w procesie instalacji za pomocą osobnego dysku ze sterownikami. Jeśli system Windows 10 jest zainstalowany ze sterownikiem VirtIO, nie ma problemu. Po prostu istniejące instrukcje w Internecie dotyczące przełączania systemu Windows z IDE na VirtIO nie działają na maszynach wirtualnych KVM z systemem Windows 10.
Deltik,

Odpowiedzi:

24

Wszystkie odpowiedzi są prawidłowe, ale może być konieczne wykonanie kilku dodatkowych kroków po zainstalowaniu sterowników virtio. Oto kroki, które wykonałem:

  1. Otwórz wiersz polecenia z podwyższonym poziomem uprawnień i ustaw maszynę wirtualną na uruchomienie w trybie awaryjnym, wpisując

    bcdedit / set {current} safeboot minimal

  2. zamknij maszynę wirtualną i zmień typ urządzenia rozruchowego na virtio.

  3. uruchom maszynę wirtualną. Wejdzie w tryb awaryjny.

    Uwaga: W trybie awaryjnym wszystkie sterowniki rozruchowe zostaną włączone i załadowane, w tym sterownik virtio. Ponieważ jest teraz zainstalowany miniport, aby z niego korzystać, jądro sprawi, że stanie się ono częścią sterowników, które mają być ładowane podczas rozruchu i nie będzie go ponownie wyłączać.

  4. w uruchomionej maszynie wirtualnej zresetuj ustawienia bcdedit, aby umożliwić maszynie uruchomienie w trybie normalnym, wpisując (ponownie w wierszu polecenia z podwyższonym poziomem uprawnień):

    bcdedit / deletevalue {current} safeboot

  5. Gotowy.

Llegolas
źródło
1
Fantastyczny! To był dla mnie brakujący element. Użyłem bcdedit /set safeboot minimal, pomijając, {current}ponieważ nie byłem pewien, co tam ma się stać.
Charles Green
2
@CharlesGreen {current}jest dosłowny, wpisujesz jak jest.
Marc.2377
Problem, jeśli masz login PIN, ponieważ hasło może wymagać dostępu do sieci. W rezultacie ponownie instaluję system Windows. answer.microsoft.com/en-us/windows/forum/windows_10-security/…
Andrew Olney
Próbowałem z siecią bcdedit / set {current} w kroku pierwszym, aby uniknąć problemu z logowaniem, najpierw stworzyłem lokalnego użytkownika, aby był bardzo bezpieczny i tak naprawdę nie sądzę, że problem dotyczy mnie, ale ponieważ maszyna jest podłączony do domeny i nie mam kontroli nad wszystkim, co chciałem mieć pewność, że nie zrobię nic złego. A parametr sieci przynajmniej nie zepsuł procesu.
HackerBaloo,
jak robisz 1), to znaczy podwyższony monit?
Frederick Nord
16

Udzielono dość prostej odpowiedzi - i może działać w wielu przypadkach, wraz ze wskazówkami dotyczącymi innych opcji. Jeśli (tak jak ja) nie możesz przełączyć się na IDE i zmuszony do korzystania z VirtIO, może działać następujące podejście alternatywne:

  1. Dodaj zarówno ISO DVD / CD systemu Windows 10, jak i sterownik ISO virtio ISO do VM.
  2. Uruchom system Windows 10 DVD / CD i przejdź do wiersza polecenia z opcji trybu naprawy.
  3. Załaduj sterownik przez CLI np drvload e:\viostor\w10\amd64\viostor.inf
    • W moim przypadku e: gdzie przypisano ISO instalacji virtio.
    • Po załadowaniu sterownik f: był miejscem instalacji systemu Windows.
  4. Użyj polecenia DISM, aby wstrzyknąć sterownik kontrolera pamięci
    • Na przykład dism /image:f:\ /add-driver /driver:e:\viostor\w10\amd64\viostor.inf
    • Jak wyżej, zmień przypisania liter dysków zgodnie z własnym środowiskiem.

Zapobiega zbędnemu tworzeniu specjalnych płyt CD / obrazów do uruchamiania systemu Windows i „łatania” rzeczywistego obrazu instalacyjnego systemu Windows w locie.

Uwaga: w tym niszowym przypadku sugeruję unikanie naprawy przy rozruchu (co dla mnie nie powiodło się). Wydawało się, że nie wie, jak dołączyć vistor.inf po załadowaniu, a jeśli spróbujesz, uważaj, aby uniknąć gotowości systemu Windows 10 do przywracania lub ponownego instalowania DVD ...

Kredyt za podejście DISM: Dodanie sterowników w celu usunięcia sterowników

JPvRiel
źródło
1
Alternatywa dla 4: Kliknij plik inf prawym przyciskiem myszy -> Zainstaluj.
rbs
Uważaj także na to, że aktualizacja systemu Windows to zepsuje. Zgodnie z postem reddit „aktualizacja usunęła moje sterowniki VirtIO”: reddit.com/r/VFIO/comments/6b06y5/… . Może się to zdarzyć w przypadku, gdy uruchomisz instalację systemu Windows jako podwójny rozruch i
maszynę
1
To plus odpowiedź poniżej. Musiałem wykonać rozruch w trybie awaryjnym (bcdedit / set {current} safeboot minimal), a następnie usunąć rozruch w trybie awaryjnym (bcdedit / deletevalue {current} safeboot), a następnie uruchomić ponownie. Następnie współpracował z systemem Windows Server 2016 Essentials.
G Trawo
10

Kroki, które należy wykonać ogólnie to:

  1. Zainstaluj sterowniki VirtIO na maszynie wirtualnej
  2. Ustaw dysk systemowy maszyny wirtualnej na używanie VirtIO
  3. Jeśli maszyna wirtualna nie uruchamia się, wykonaj naprawę przy uruchamianiu lub nawet napraw instalację

Szczegółowa procedura to:

  1. Wróć dysk rozruchowy do IDE.
  2. Upewnij się, że maszyna wirtualna z systemem Windows jest zamknięta.
  3. Pobierz ISO sterowników VirtIO stąd .
  4. Zamontuj go w napędzie CD maszyny wirtualnej.
  5. Dodaj urządzenie pamięci masowej typu VirtIO. Przydział rozmiaru nie ma znaczenia, ponieważ używasz go do instalowania sterowników.
  6. Uruchom maszynę wirtualną z systemem Windows. Spróbuje zainstalować sterowniki. Jeśli nie, otwórz Menedżera urządzeń i powinieneś zobaczyć urządzenie SCSI na liście z ikoną wykrzyknika obok niego. Możesz wybrać aktualizację sterownika i wskazać odpowiedni katalog zamontowanego ISO. Po zainstalowaniu nie uruchamiaj ponownie komputera, ale wyłącz komputer.
  7. W ustawieniach virt-manager dla Windows zmień typ pamięci z IDE na VirtIO.
  8. Możesz usunąć wcześniej utworzone urządzenie pamięci masowej. To nie jest już potrzebne.
  9. Uruchom system Windows, powinien uruchomić się i zainstalować sterowniki SCSI. Po wykonaniu tej czynności konieczne będzie ponowne uruchomienie komputera.
  10. Jeśli maszyna wirtualna nie uruchamia się, ale sterowniki są zainstalowane, możesz spróbować:

    1. Naprawa przy uruchamianiu, która może rozwiązać niektóre problemy systemowe, które mogą uniemożliwić uruchomienie systemu Windows.
    2. Ostatnie rozwiązanie: Napraw instalację podczas uruchamiania z systemu Windows 10 ISO. Pozwoli to zachować wszystkie aplikacje i ustawienia użytkownika, po prostu odświeżając system Windows i uruchamiając. Użyj najnowszej wersji systemu Windows 10 ISO.

Jeśli niestety wymagany jest ostatni krok, można napotkać jeszcze jedną trudność, jeśli dysk rozruchowy systemu Windows nie może zrozumieć dysku VirtIO, ponieważ sterowniki te nie zostały w nim zawarte przez firmę Microsoft. W takim przypadku należy utworzyć niestandardowy rozruchowy dysk CD / USB zawierający te sterowniki, ale upewnij się, że zaczynasz od systemu Windows ISO, który jest na tym samym poziomie co instalacja, uzyskując najnowszy (obecnie 1511).

Oto kilka samouczków dotyczących sposobu przesyłania sterowników w systemie Windows:

harrymc
źródło
Ta odpowiedź zadziała (i działa w przypadku innych wersji w systemie Windows), z wyjątkiem tego, że w kroku 9 podczas próby rozruchu występuje błąd INACCESSIBLE_BOOT_DEVICE (tutaj byłem, kiedy wysłałem pytanie). Naprawa przy uruchamianiu (10.1) nie działa, a krok 10.2 nie jest w rzeczywistości możliwy. Instalację naprawczą można wykonać tylko poprzez uruchomienie systemu, bez dysku CD, a następnie uruchomienie go setup.exena dysku CD. Tak opisuje link w pytaniu i, o ile wiem, nie ma innego sposobu, aby to zrobić.
Graeme,
Dokładnie jakie inne informacje powinienem podać? Wielokrotnie powtarzałem, że nie ma takiej opcji. Problem polega na tym, że ciągle nalegasz, aby tak było. Jeśli tak jest, że w różnych artykułach w Internecie znajduje się „kilkadziesiąt innych”, odwołaj się do jednego z nich. Link do jednego artykułu opisującego sposób rozruchu z dysku CD i rozpoczęcia instalacji naprawczej - bez wcześniejszego uruchamiania zainstalowanego systemu i uruchamiania setup.exena dysku CD. Link do jednego artykułu z wiarygodnego źródła, który dowodzi, że nie kłamiesz, a ja przeprosię i dam ci cenną opinię.
Graeme
Zobacz na przykład ten film wideo, jak wykonać naprawę systemu podczas uruchamiania systemu Windows 10 z nośnika instalacyjnego. Jeśli nie, spróbuj użyć wiersza polecenia . Jak powiedziałem powyżej, może być konieczne zastosowanie standardu ISO - nie mam pojęcia, czy instalacja WIn10 zawiera sterowniki VirtIO.
harrymc
Lub możesz dostosować metodę drvload do dodawania sterowników VirtIO do rozruchowego obrazu instalacyjnego systemu Windows PE.
harrymc
2
Chociaż powyższa odpowiedź brzmi dobrze i wygląda prosto, niestety z moją pc-q35-2.5maszyną wirtualną używającą emulacji / typu maszyny, nie można dodać kontrolera IDE.
JPvRiel 18.04.17
5

odpowiedź od harrymca działa dla mnie dobrze.

następujące kroki, które wykonałem:

  1. Zainstaluj sterownik virtio w systemie Windows
  2. Dodaj dodatkowy „sztuczny” dysk virtio. Uruchom ponownie i sprawdź, czy „manekin” działa.
  3. Jeśli krok 2 działa, przełącz dysk rozruchowy na virtio.
  4. Restart
  5. Wyjmij dodatkowy „obojętny” dysk virtio
  6. ...
sdhd
źródło
Nie dodawaj „dziękuję” jako odpowiedzi. Zainwestuj trochę czasu na stronie, a zdobędziesz wystarczające uprawnienia do głosowania na odpowiedzi, które Ci się podobają, co jest sposobem Super User na podziękowanie.
DavidPostill
1
To niedoceniana odpowiedź - w Proxmox Windows 10 miał problemy z inicjowaniem, nawet po zainstalowaniu wszystkich sterowników. Musiałem utworzyć mały dysk o pojemności 1 GB jako urządzenie blokujące VirtIO, uruchomić maszynę wirtualną, sprawdzić, czy poprawnie się wyświetla, a następnie zamknąć i zmienić główny dysk na VirtIO. System Windows 10 nie wykrył poprawnie sterownika dysku twardego, więc musiałem go nakłonić, aby załadował go podczas rozruchu przed przełączeniem.
Albert H
3

Niestety, możliwe jest, aby sterownik był perfekcyjnie zainstalowany, a STILL uzyskał „niedostępne urządzenie rozruchowe”. Powód jest nieco szokujący (uważam): instalacja Win 10 „pamięta” sterowniki, które były wymagane przy pierwszej instalacji, i domyślnie NIE ładuje innych sterowników pamięci masowej podczas uruchamiania. Wydaje się, że odbywa się to w celu „piractwa” - utrudnia to uruchomienie „tej samej” instalacji na innym sprzęcie. W tym poście z forów Gentoo znajduje się świetna dokumentacja na temat tej „funkcji” . Istota jest następująca:

Sterowniki, dla których zabronione jest ładowanie przy rozruchu, można określić w następujący sposób: W kluczu rejestru Komputer \ HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Services istnieje jeden podklucz dla każdego sterownika znanego z instalacji. Nazwa tego podklucza to tylko nazwa sterownika. W ramach każdego podklucza sterownika będzie znajdował się podklucz „STARTOVERRIDE”, jeśli ten sterownik ma uniemożliwić ładowanie podczas rozruchu. W szczególności w podkluczu STARTOVERRIDE znajduje się parametr o nazwie „0”. JEŻELI wartość tego parametru to „3”, nie zostanie załadowana podczas uruchamiania. Ustawienie tej wartości na 0 zamiast tego spowoduje „nadpisanie” zachowania.

Sam przechodzę do Computer \ HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Services i szukam „STARTOVERRIDE”. Za każdym razem, gdy go znajduję, jeśli pod nim jest nazwa o nazwie „0” z wartością „3”, zmieniam na „0”. Wydaje się, że to przesada, wystarczy zmienić dysk, który trzeba załadować. W moim przypadku jest ich kilka i nigdy nie pamiętam, więc po prostu wykonuję „wyszukiwanie F3” w tej sekcji „usługi”.

I ostatnia wskazówka, która nie jest potrzebna do bieżącej, podpisanej pamięci masowej virtio, ale może być dla kogoś innego, kto to czyta, jeśli chce użyć bardziej eksperymentalnego sterownika, który nie jest (jeszcze) podpisany: znalazłem EVEN po zrobieniu powyższego trick, RÓWNIEŻ musiałem uruchomić system z ekranu opcji zaawansowanych i wybrać F7 („wyłącz weryfikację podpisu sterownika”). Irytujące nie było ustawienie flagi bcd, aby wyłączyć weryfikację sterownika, ponieważ sterownik musi się załadować, zanim maszyna odczyta BCD i dowie się, że nie musi weryfikować podpisu.

Podsumowując, nie najbardziej świecąca godzina Microsoftu. Naprawdę musisz nienawidzić swoich użytkowników, jeśli wolisz dać legalnym użytkownikom sztuczny niebieski ekran, niż pozwolić ludziom (powiedzmy) wymienić dysk SATA na dysk NVMe i sprawić, by „po prostu działał”.

Scott Petrack
źródło
Dzięki za podanie tak wielu szczegółów, jest to najbardziej praktyczne rozwiązanie! Jeden plik do zaimportowania i rozwiązania.
Florian Heigl