Windows 10 trong KVM: thay đổi đĩa khởi động thành Virtio


25

Tôi đã cài đặt máy ảo Windows 10 bằng đĩa IDE và bây giờ muốn thay đổi đĩa để sử dụng trình điều khiển Virtio.

Đối với các phiên bản Windows khác, cách tiếp cận trong câu hỏi này dường như là đủ - Làm thế nào để di chuyển IDE VM sang VM VM?

Tuy nhiên với Windows 10, điều này dẫn đến một INACCESSIBLE_BOOT_DEVICEvấn đề.

Tôi biết rằng cách tiếp cận ưa thích là sử dụng thiết bị Virtio ngay từ đầu và cài đặt trình điều khiển virtio phù hợp khi được nhắc. Thật không may, tôi đã gặp một số vấn đề riêng khi thay đổi CD trong KVM (tôi cũng không thể có 2 thiết bị CDROM hoạt động).

Có cách nào để khắc phục vấn đề này mà không cần cài đặt lại không?

Vấn đề tương tự ở đây - https://me.m01.eu/blog/2015/03/windows-10-kvm-and-iscsi/#comment-36090


+1. Tôi không thể tự mình tìm ra vấn đề này. Sau nhiều cách giải quyết khác nhau cho các phiên bản Windows trước, tôi đã thử cài đặt trình điều khiển VirtIO trên Windows VM sau khi cắm thiết bị chặn VirtIO, nhưng tôi vẫn thấy INACCESSIBLE_BOOT_DEVICEmàn hình màu xanh. Tôi đã kết thúc việc cài đặt lại trên thiết bị khởi động VirtIO.
Deltik

Bởi vì tôi lười biếng, tôi sẽ đăng nó dưới dạng một nhận xét để bạn xác minh: Thêm một đĩa bổ sung, với trình điều khiển virtio. Cài đặt trình điều khiển khi Windows yêu cầu bạn. Không cần phải tạo phân vùng hoặc bất cứ điều gì. Sau đó chuyển đĩa khởi động sang virtio. Bởi vì một phiên bản trình điều khiển bộ điều khiển hiện đã được cài đặt (rất quan trọng), nên nó sẽ hoạt động.
Daniel B

@DanielB: Đó chính xác là những gì tôi đã làm. Có vẻ như đề xuất của bạn hoạt động cho các phiên bản Windows trước, nhưng không phải Windows 10.
Deltik

Hừm, được thôi. Chà tôi đoán vậy thì tôi có một cách tốt nhất để không giải quyết vấn đề của bạn (lol): Chỉ cần sửa đổi Windows ISO và bao gồm các trình điều khiển. Hãy nhớ rằng nó cần phải duy trì khả năng khởi động. Bằng cách đó bạn có thể (hy vọng) cài đặt thẳng đến virtio.
Daniel B

1
@DanielB: Trình điều khiển VirtIO có thể được tải trong quá trình cài đặt với một đĩa trình điều khiển riêng. Nếu Windows 10 được cài đặt với trình điều khiển VirtIO, không có vấn đề gì. Chỉ là các hướng dẫn hiện có trên Internet để chuyển Windows từ IDE sang VirtIO không hoạt động cho các máy ảo Windows 10 KVM.
Deltik

Câu trả lời:


24

Tất cả các câu trả lời đều đúng nhưng bạn có thể cần thực hiện thêm một số bước sau khi đã cài đặt trình điều khiển virtio. Dưới đây là các bước tôi đã làm theo:

  1. Mở một dấu nhắc lệnh nâng cao và đặt VM khởi động vào chế độ an toàn bằng cách nhập

    bcdedit / set {current} safeboot tối thiểu

  2. tắt VM và thay đổi loại thiết bị khởi động thành virtio.

  3. khởi động VM. Nó sẽ vào chế độ an toàn.

    Lưu ý: Trong chế độ An toàn, tất cả các trình điều khiển khởi động sẽ được bật và tải, bao gồm cả trình điều khiển virtio. Vì hiện tại đã có một miniport được cài đặt để sử dụng nó, giờ đây kernel sẽ biến nó thành một phần của trình điều khiển sẽ được tải khi khởi động và không vô hiệu hóa lại.

  4. trong VM đã khởi động, thiết lập lại cài đặt bcdedit để cho phép máy khởi động vào chế độ Bình thường bằng cách gõ (trong dấu nhắc lệnh nâng cao lại):

    bcdedit / deletevalue {current} safeboot

  5. Làm xong.


1
Tuyệt diệu! Đây là một chút thiếu cho tôi. Tôi đã sử dụng bcdedit /set safeboot minimal, bỏ qua {current}vì tôi không chắc chắn những gì đáng lẽ phải đi vào đó.
Charles Green

2
@CharlesGreen {current}là nghĩa đen, bạn nhập vào nguyên trạng.
Marc.2377

Vấn đề nếu bạn có đăng nhập mã PIN vì đăng nhập mật khẩu có thể yêu cầu truy cập mạng. Kết quả là tôi đang cài đặt lại Windows. answer.microsoft.com/en-us/windows/forum/windows_10-security/iêu
Andrew Olney

Tôi đã thử với mạng an toàn bcdedit / set {current} ở bước một để tránh sự cố đăng nhập, trước tiên tôi cũng tạo một người dùng cục bộ để an toàn hơn và tôi thực sự không nghĩ rằng vấn đề được áp dụng cho tôi, nhưng vì máy là được kết nối với một tên miền và tôi không kiểm soát mọi thứ tôi muốn để đảm bảo rằng tôi đã không làm gì sai. Và tham số mạng ít nhất không làm hỏng quá trình.
HackerBaloo

Làm thế nào để bạn làm 1), đó là, nhắc nhở nâng cao?
Frederick Nord

16

Một câu trả lời khá đơn giản được cung cấp - và có thể hoạt động trong nhiều trường hợp, cùng với gợi ý về các lựa chọn khác. Nếu (như tôi) bạn không thể chuyển sang IDE và buộc phải sử dụng VirtIO, thì phương pháp thay thế sau đây có thể hoạt động:

  1. Thêm cả Windows 10 DVD / CD ISO và trình điều khiển ISO cho VM.
    • Trình điều khiển ISO mới nhất có thể được rút ra khỏi RPM được tìm thấy tại https: // fedorap People.org/groups/virt/virtio-win/repo/latest/
  2. Khởi động windows 10 DVD / CD và vào dấu nhắc lệnh từ tùy chọn chế độ sửa chữa.
  3. Tải trình điều khiển qua CLI, vd drvload e:\viostor\w10\amd64\viostor.inf
    • Trong trường hợp của tôi e: là nơi ISO cài đặt virtio được chỉ định.
    • Sau khi tải trình điều khiển f: là nơi cài đặt windows được gắn kết.
  4. Sử dụng lệnh DISM để tiêm trình điều khiển lưu trữ
    • Ví dụ dism /image:f:\ /add-driver /driver:e:\viostor\w10\amd64\viostor.inf
    • Như trên, thay đổi bài tập ký tự ổ đĩa theo môi trường của riêng bạn.

Tránh cần phải nghịch ngợm với việc tạo các cửa sổ đặc biệt khởi động CD / Hình ảnh và 'bản vá' các cửa sổ thực tế cài đặt hình ảnh khi đang di chuyển.

Lưu ý, đối với trường hợp thích hợp này, tôi khuyên bạn nên tránh sửa chữa khởi động (thất bại đối với tôi). Dường như không biết cách bao gồm vistor.inf sau khi tải nó và nếu bạn dùng thử, hãy cẩn thận để tránh sự háo hức DVD của Windows 10 để khôi phục hoặc cài đặt lại mọi thứ ...

Tín dụng cho phương pháp DISM: Sử dụng tháo gỡ để thêm trình điều khiển


1
Thay thế cho 4: Nhấp chuột phải vào tệp inf -> Cài đặt.
rbs

Ngoài ra, xem ra cho bản cập nhật Windows phá vỡ điều này. Theo bài đăng trên reddit, "bản cập nhật đã xóa trình điều khiển VirtIO của tôi": reddit.com/r/VFIO/comments/6b06y5/ . Điều này có thể xảy ra trong trường hợp góc khi bạn chạy cài đặt Windows của mình dưới dạng cả khởi động kép và VM và áp dụng bản cập nhật khi trên phần cứng gốc ...
JPvRiel

1
Điều này, cộng với câu trả lời dưới đây. Tôi đã phải khởi động vào Chế độ an toàn (bcdedit / set {current} safeboot tối thiểu) và sau đó xóa khởi động Chế độ an toàn (bcdedit / deletevalue {current} safeboot), sau đó khởi động lại. Sau đó, nó đã hoạt động với Windows Server 2016 Essentials.
G Trawo

10

Các bước để làm theo nói chung là:

  1. Cài đặt trình điều khiển VirtIO trong VM
  2. Đặt đĩa hệ thống của VM để sử dụng VirtIO
  3. Nếu VM không khởi động, hãy thực hiện Startup Repair hoặc thậm chí là Repair Install

Các thủ tục chi tiết là:

  1. Trả đĩa khởi động về IDE.
  2. Hãy chắc chắn rằng Windows VM được tắt.
  3. Tải xuống trình điều khiển VirtIO ISO từ đây .
  4. Gắn nó vào ổ đĩa CD cho VM.
  5. Thêm một thiết bị lưu trữ thuộc loại VirtIO. Việc phân bổ kích thước không thành vấn đề vì bạn đang sử dụng nó để cài đặt trình điều khiển.
  6. Khởi động máy ảo Windows. Nó sẽ cố gắng cài đặt trình điều khiển. Nếu không, hãy mở Trình quản lý thiết bị và bạn sẽ thấy thiết bị SCSI được liệt kê với biểu tượng dấu chấm than bên cạnh nó. Bạn có thể chọn cập nhật trình điều khiển và trỏ đến thư mục phù hợp của ISO. Sau khi cài đặt, không khởi động lại mà tắt máy.
  7. Trong cài đặt virt-manager cho Windows, thay đổi loại lưu trữ từ IDE sang VirtIO.
  8. Bạn có thể loại bỏ thiết bị lưu trữ mà bạn đã tạo trước đó. Nó không còn cần thiết nữa.
  9. Khởi động Windows, nó sẽ khởi động và cài đặt trình điều khiển SCSI. Bạn sẽ cần phải khởi động lại sau khi nó làm.
  10. Nếu VM không khởi động nhưng trình điều khiển đã được cài đặt, bạn có thể thử làm:

    1. Startup Repair có thể khắc phục một số sự cố hệ thống có thể ngăn Windows khởi động.
    2. Giải pháp cuối cùng: Sửa chữa Cài đặt trong khi khởi động từ Windows 10 ISO. Điều này sẽ giữ tất cả các ứng dụng và cài đặt người dùng, chỉ cần làm mới Windows và khởi động. Sử dụng ISO 10 Windows gần đây.

Nếu không may là bước cuối cùng được yêu cầu, một khó khăn nữa có thể gặp phải là nếu CD khởi động Windows không thể hiểu được đĩa VirtIO vì các trình điều khiển này không được Microsoft đưa vào. Trong trường hợp này, người ta cần tạo CD / USB khởi động tùy chỉnh có chứa các trình điều khiển này, nhưng hãy đảm bảo rằng bạn bắt đầu từ Windows ISO có cùng cấp độ với cài đặt bằng cách lấy bản mới nhất (hiện là 1511).

Dưới đây là một số hướng dẫn về cách trượt trình điều khiển trong Windows:


Câu trả lời này sẽ hoạt động (và không hoạt động đối với các phiên bản khác trên Windows), ngoại trừ ở bước 9, khi bạn cố khởi động, có lỗi INACCESSIBLE_BOOT_DEVICE (đây là khi tôi đăng câu hỏi). Sửa chữa khởi động (10.1) không hoạt động và bước 10.2 không thực sự có thể. Cài đặt sửa chữa chỉ có thể được thực hiện bằng cách khởi động hệ thống trước, không có CD, sau đó chạy setup.exetrên CD. Đây là những gì liên kết trong câu hỏi mô tả và theo như tôi biết thì không có cách nào khác để làm điều đó.
Graeme

Chính xác thì tôi nên cung cấp thông tin nào khác? Tôi đã nói với bạn nhiều lần rằng tùy chọn không có ở đó. Vấn đề ở đây là bạn liên tục khẳng định rằng nó là. Nếu đó là trường hợp có 'hàng tá người khác trong các bài viết khác nhau được tìm thấy trên Internet', hãy tham khảo một. Liên kết một bài viết mô tả cách khởi động từ CD và bắt đầu cài đặt sửa chữa - mà không cần khởi động hệ thống đã cài đặt trước và chạy setup.exetrên CD. Liên kết một bài viết từ một nguồn đáng tin cậy chứng tỏ bạn không hoàn toàn nói dối và tôi sẽ xin lỗi và cung cấp cho bạn upvote quý giá của bạn.
Graeme

Xem ví dụ video này về cách thực hiện Startup Repair trên Windows 10 từ phương tiện cài đặt. Nếu không, hãy thử sử dụng Dấu nhắc lệnh . Như tôi đã nói ở trên, bạn có thể cần ISO trượt dòng - Tôi không biết liệu cài đặt WIn10 có chứa trình điều khiển VirtIO hay không.
harrymc

Hoặc bạn có thể điều chỉnh phương thức drvload để thêm trình điều khiển VirtIO vào hình ảnh cài đặt Windows PE đã khởi động.
harrymc

2
Mặc dù câu trả lời ở trên nghe có vẻ hay và có vẻ đơn giản, nhưng thật không may với VM của tôi sử dụng pc-q35-2.5mô phỏng / loại máy, không thể thêm bộ điều khiển IDE.
JPvRiel

5

câu trả lời từ harrymc hoạt động tốt với tôi.

Các bước sau tôi đã làm theo:

  1. Cài đặt trình điều khiển virtio trong windows
  2. Thêm một đĩa virtio "giả" bổ sung. Khởi động lại và kiểm tra xem "hình nộm" có hoạt động không.
  3. Nếu Bước 2 hoạt động, sau đó chuyển đĩa khởi động sang virtio.
  4. Khởi động lại
  5. Hủy bỏ đĩa virtio "giả" bổ sung
  6. ...

Vui lòng không thêm "cảm ơn" làm câu trả lời. Đầu tư một chút thời gian vào trang web và bạn sẽ có đủ đặc quyền để nâng cao câu trả lời bạn thích, đó là cách nói siêu cảm ơn của bạn.
DavidPostill

1
Đây là một câu trả lời bị đánh giá thấp - trong Proxmox, Windows 10 đã gặp sự cố khi khởi chạy, ngay cả sau khi cài đặt tất cả các trình điều khiển. Tôi đã phải tạo một đĩa nhỏ 1 GB dưới dạng thiết bị khối VirtIO, khởi động VM, xác minh rằng nó xuất hiện chính xác và sau đó tắt + thay đổi ổ đĩa chính thành VirtIO. Windows 10 đã không phát hiện chính xác trình điều khiển ổ cứng, vì vậy tôi phải dỗ nó để tải nó khi khởi động trước khi thực hiện chuyển đổi.
Albert H

3

Thật không may là có trình điều khiển được cài đặt hoàn hảo và VẪN nhận được "Thiết bị khởi động không thể truy cập." Lý do là một chút gây sốc (tôi tìm thấy): cài đặt Win 10 "ghi nhớ" các trình điều khiển được yêu cầu khi cài đặt lần đầu và theo mặc định SILL KHÔNG tải các trình điều khiển lưu trữ khác khi khởi động. Điều này đã được thực hiện, dường như, đối với "vi phạm bản quyền" - nó gây khó khăn cho việc chạy cài đặt "giống nhau" trên các phần cứng khác nhau. Có một số tài liệu tuyệt vời về "tính năng" này trong bài đăng này từ các diễn đàn gentoo. Bản chất như sau:

Các trình điều khiển được nhắm mục tiêu cấm tải khi khởi động có thể được xác định như sau: Trong khóa đăng ký Máy tính \ HKEY_LOCAL_MACHINE \ HỆ THỐNG Controlset001 \ Services có một khóa con cho mọi trình điều khiển được biết đến khi cài đặt. Tên của khóa con này chỉ là tên của trình điều khiển. Trong mỗi khoá con trình điều khiển, sẽ có một khóa con "STARTOVERRIDE" nếu trình điều khiển đó bị ngăn không tải khi khởi động. Đặc biệt, trong khóa con STARTOVERRIDE có một tham số có tên là "0". NẾU giá trị của tham số này là "3", nó sẽ không được tải khi khởi động. Đặt giá trị này thành 0 thay vào đó sẽ 'ghi đè' hành vi.

Bản thân tôi chỉ cần truy cập vào Máy tính \ HKEY_LOCAL_MACHINE \ HỆ THỐNG \ ControlSet001 \ Services và tìm kiếm "STARTOVERRIDE". Mỗi lần tôi tìm thấy nó, nếu có tên dưới tên gọi là "0" với giá trị "3", tôi đổi thành "0". Điều này dường như là quá mức cần thiết, bạn chỉ cần thay đổi ổ đĩa cần tải. Trong trường hợp của tôi có một vài trong số chúng và tôi không bao giờ nhớ được, vì vậy tôi chỉ thực hiện một "tìm kiếm F3" trong phần 'dịch vụ' đó.

Và một mẹo cuối cùng không cần thiết cho việc lưu trữ virtio hiện tại, đã ký, nhưng có thể là cho người khác đọc nó nếu họ muốn sử dụng trình điều khiển thử nghiệm chưa được ký (chưa): Tôi thấy rằng NGAY LẬP TỨC sau khi thực hiện ở trên lừa, tôi CSONG cần khởi động vào màn hình tùy chọn nâng cao và chọn F7 ("vô hiệu hóa xác minh chữ ký trình điều khiển"). Khó chịu, không đủ để đặt cờ bcd để vô hiệu hóa xác minh trình điều khiển, bởi vì trình điều khiển cần tải trước khi máy đọc BCD và phát hiện ra rằng nó không cần xác minh chữ ký.

Tất cả trong tất cả, không phải giờ sáng nhất của Microsoft. Bạn thực sự phải ghét người dùng của mình nếu bạn muốn cung cấp cho người dùng hợp pháp một Màn hình xanh nhân tạo được tạo ra hơn là cho phép mọi người thay thế đĩa SATA bằng đĩa NVMe và "nó chỉ hoạt động".


Cảm ơn đã cho rất nhiều chi tiết, đây là giải pháp khả thi nhất! Một regfile để nhập và giải quyết tất cả.
Florian Heigl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.