Windows 10 ใน KVM: เปลี่ยน boot disk เป็น Virtio


25

ฉันได้ติดตั้งเครื่องเสมือน Windows 10 โดยใช้ดิสก์ IDE และตอนนี้ต้องการเปลี่ยนดิสก์เพื่อใช้ไดรเวอร์ Virtio

สำหรับ Windows รุ่นอื่น ๆ แนวทางในคำถามนี้ดูเหมือนจะเพียงพอแล้ว - จะย้าย IDE VM ไปยัง virtio VM ได้อย่างไร

อย่างไรก็ตามด้วย Windows 10 สิ่งนี้นำไปสู่INACCESSIBLE_BOOT_DEVICEปัญหา

ฉันทราบว่าวิธีการที่ต้องการคือการใช้อุปกรณ์ Virtio ตั้งแต่เริ่มต้นและติดตั้งไดรเวอร์ virtio ที่เหมาะสมเมื่อได้รับแจ้ง น่าเสียดายที่ฉันมีปัญหาบางอย่างกับการเปลี่ยนซีดีใน KVM (ฉันไม่สามารถรับอุปกรณ์ CDROM 2 เครื่องเพื่อใช้งานได้)

มีวิธีการแก้ไขปัญหานี้โดยไม่ต้องติดตั้งใหม่หรือไม่?

ปัญหาที่คล้ายกันที่นี่ - https://me.m01.eu/blog/2015/03/windows-10-kvm-and-iscsi/#comment-36090


+1 ฉันไม่สามารถเข้าใจปัญหานี้ได้ด้วยตัวเอง หลังจากแก้ไขปัญหาต่าง ๆ สำหรับ Windows รุ่นก่อนหน้าฉันลองติดตั้งไดรเวอร์ VirtIO ใน Windows VM หลังจากเสียบอุปกรณ์ VirtIO block แต่ฉันยังมีINACCESSIBLE_BOOT_DEVICEหน้าจอสีน้ำเงิน ฉันสิ้นสุดการติดตั้งใหม่บนอุปกรณ์สำหรับบู๊ต VirtIO
Deltik

เพราะฉันขี้เกียจฉันจะโพสต์เป็นความคิดเห็นเพื่อให้คุณตรวจสอบ: เพิ่มดิสก์เพิ่มเติมโดยใช้ virtio“ controller” ติดตั้งไดรเวอร์เมื่อ Windows ขอให้คุณ ไม่จำเป็นต้องสร้างพาร์ทิชันหรืออะไร จากนั้นสลับดิสก์สำหรับบูตเป็น virtio เนื่องจากตอนนี้มีการติดตั้งอินสแตนซ์ไดรเวอร์คอนโทรลเลอร์ (สำคัญมาก) จึงควรใช้งานได้
Daniel B

@DanielB: นั่นคือสิ่งที่ฉันทำ ดูเหมือนว่าข้อเสนอแนะของคุณใช้ได้กับ Windows รุ่นก่อนหน้า แต่ไม่ใช่ Windows 10
Deltik

หืมโอเค ดีฉันเดาแล้วฉันมีวิธีที่ดีที่สุดเดียวที่จะไม่แก้ปัญหาของคุณ (ฮ่า ๆ ): เพียงแค่ปรับเปลี่ยน Windows ISO และรวมถึงไดรเวอร์ โปรดทราบว่าจะต้องสามารถบูตได้ วิธีนี้ทำให้คุณ (หวังว่า) สามารถติดตั้งลงบน virtio ได้โดยตรง
Daniel B

1
@DanielB: สามารถโหลดไดรเวอร์ VirtIO ในกระบวนการติดตั้งด้วยแผ่นดิสก์ไดรเวอร์แยกต่างหาก หากติดตั้ง Windows 10 พร้อมไดรเวอร์ VirtIO จะไม่มีปัญหา เป็นเพียงคำแนะนำที่มีอยู่บนอินเทอร์เน็ตเพื่อสลับ Windows จาก IDE เป็น VirtIO ไม่สามารถใช้งานได้กับเครื่องเสมือน Windows 10 KVM
Deltik

คำตอบ:


24

คำตอบทั้งหมดนั้นถูกต้อง แต่คุณอาจต้องทำตามขั้นตอนเพิ่มเติมเล็กน้อยหลังจากที่คุณติดตั้งไดรเวอร์ virtio นี่คือขั้นตอนที่ฉันปฏิบัติตาม:

  1. เปิดพรอมต์คำสั่งที่ยกระดับแล้วตั้งค่า VM ให้บูตเข้าสู่เซฟโหมดโดยพิมพ์

    bcdedit / ชุด safeboot {current} น้อยที่สุดในปัจจุบัน

  2. ปิดการทำงานของ VM และเปลี่ยนประเภทอุปกรณ์สำหรับบู๊ตเป็น virtio

  3. บูต VM มันจะเข้าสู่เซฟโหมด

    หมายเหตุ: ในเซฟโหมดโปรแกรมควบคุมการเริ่มต้นระบบทั้งหมดจะเปิดใช้งานและโหลดรวมถึงโปรแกรมควบคุม virtio เนื่องจากขณะนี้มีมินิพอร์ตติดตั้งไว้เพื่อใช้งานเคอร์เนลจะทำให้เป็นส่วนหนึ่งของไดรเวอร์ที่จะโหลดในการบูตและไม่ปิดการใช้งานอีกครั้ง

  4. ใน VM ที่บู๊ตแล้วจะรีเซ็ตการตั้งค่า bcdedit เพื่อให้เครื่องสามารถบูตเข้าสู่โหมดปกติได้โดยพิมพ์ (ในพรอมต์คำสั่งที่ยกระดับอีกครั้ง):

    bcdedit / deletevalue {ปัจจุบัน} safeboot

  5. เสร็จสิ้น


1
Fantastic! นี่เป็นบิตที่ขาดหายไปสำหรับฉัน ฉันใช้bcdedit /set safeboot minimalไม่ใช้{current}เพราะฉันไม่แน่ใจว่าควรเข้าไปที่นั่นอย่างไร
ชาร์ลส์กรีน

2
@CharlesGreen {current}เป็นตัวอักษรคุณพิมพ์ตามที่เป็น
Marc.2377

ปัญหาหากคุณมีการเข้าสู่ระบบ PIN เนื่องจากการเข้าสู่ระบบรหัสผ่านอาจต้องใช้การเข้าถึงเครือข่าย ฉันกำลังติดตั้ง Windows ใหม่เป็นผล answer.microsoft.com/en-us/windows/forum/windows_10-security/…
Andrew Olney

ฉันพยายามกับ bcdedit / set {current} safeboot เครือข่ายในขั้นตอนที่หนึ่งเพื่อหลีกเลี่ยงปัญหาการเข้าสู่ระบบฉันยังสร้างผู้ใช้ภายในเพื่อให้ปลอดภัยเป็นพิเศษและฉันไม่คิดว่าปัญหาจะถูกนำไปใช้กับฉัน แต่เนื่องจากเครื่องเป็น เชื่อมต่อกับโดเมนและฉันไม่ได้ควบคุมทุกสิ่งที่ฉันต้องการเพื่อให้แน่ใจว่าฉันไม่ได้ทำอะไรผิด และพารามิเตอร์เครือข่ายอย่างน้อยก็ไม่ทำให้กระบวนการเสีย
HackerBaloo

คุณจะทำอย่างไร 1) นั่นคือพรอมต์ที่ยกระดับ
Frederick Nord

16

มีคำตอบที่ค่อนข้างง่าย - และอาจใช้งานได้ในหลายกรณีพร้อมกับคำแนะนำที่ตัวเลือกอื่น ๆ หาก (เช่นฉัน) คุณไม่สามารถเปลี่ยนเป็น IDE และถูกบังคับให้ใช้ VirtIO วิธีการทางเลือกต่อไปนี้อาจใช้ได้:

  1. เพิ่ม ISO DVD / CD windows 10 และ ISO driver virtio ให้กับ VM
  2. บูต Windows 10 DVD / CD และเข้าสู่พรอมต์คำสั่งจากตัวเลือกโหมดการซ่อมแซม
  3. โหลดไดรเวอร์ผ่าน CLI เช่น drvload e:\viostor\w10\amd64\viostor.inf
    • ในกรณีของฉัน e: เป็นที่ที่การติดตั้ง ISO ได้รับมอบหมาย
    • หลังจากโหลดไดรเวอร์ f: คือจุดที่การติดตั้ง windows ได้รับการติดตั้ง
  4. ใช้คำสั่ง DISM เพื่อฉีดไดรเวอร์คอนโทรลเลอร์หน่วยเก็บข้อมูล
    • เช่น dism /image:f:\ /add-driver /driver:e:\viostor\w10\amd64\viostor.inf
    • เปลี่ยนการกำหนดตัวอักษรของไดรฟ์ตามสภาพแวดล้อมของคุณ

หลีกเลี่ยงการต้องใช้ซอทำแผ่นซีดี / อิมเมจสำหรับ Windows แบบพิเศษและ 'แก้ไข' หน้าต่างการติดตั้งอิมเมจจริงได้ทันที

หมายเหตุสำหรับกรณีเฉพาะนี้ฉันขอแนะนำให้หลีกเลี่ยงการซ่อมแซมการเริ่มต้น (ซึ่งล้มเหลวสำหรับฉัน) ดูเหมือนว่าจะไม่ทราบวิธีการรวม vistor.inf หลังจากโหลดแล้วและถ้าคุณลองลองใช้ด้วยความระมัดระวังเพื่อหลีกเลี่ยงความกระตือรือร้นของ Windows 10 ในการกู้คืนหรือติดตั้งทุกอย่าง ...

เครดิตสำหรับวิธี DISM: การใช้ dism เพื่อเพิ่มไดรเวอร์


1
ทางเลือกที่ 4: คลิกขวาที่ไฟล์ inf -> ติดตั้ง
rbs

นอกจากนี้ระวังสำหรับการปรับปรุง windows ทำลายสิ่งนี้ เป็นต่อโพสต์ Reddit "การปรับปรุงลบไดรเวอร์ VirtIO ฉัน": reddit.com/r/VFIO/comments/6b06y5/... สิ่งนี้อาจเกิดขึ้นได้ในกรณีที่เกิดมุมเมื่อคุณเรียกใช้การติดตั้ง Windows ของคุณในฐานะทั้งบูตคู่และ VM และใช้การอัปเดตเมื่อใช้กับฮาร์ดแวร์ดั้งเดิม ...
JPvRiel

1
นี่รวมถึงคำตอบด้านล่าง ฉันต้องทำการบู๊ตเข้าสู่ Safe Mode (bcdedit / set {current} safeboot น้อยที่สุด) จากนั้นจึงเอาการบูต Safe Mode (bcdedit / deletevalue {current} safeboot ปัจจุบัน) จากนั้นรีสตาร์ท หลังจากนั้นมันทำงานกับ Windows Server 2016 Essentials
G Trawo

10

ขั้นตอนในการติดตามโดยทั่วไปคือ:

  1. ติดตั้งไดรเวอร์ VirtIO ใน VM
  2. ตั้งค่าดิสก์ระบบของ VM เพื่อใช้ VirtIO
  3. หาก VM ไม่บูตให้ดำเนินการซ่อมแซมการเริ่มต้นหรือแม้กระทั่งการซ่อมแซม

ขั้นตอนในรายละเอียดคือ

  1. ส่งคืนบูตดิสก์ไปที่ IDE
  2. ตรวจสอบให้แน่ใจว่า windows VM ปิดระบบแล้ว
  3. ดาวน์โหลดไดรเวอร์ VirtIO ISO จากที่นี่
  4. ติดตั้งบนไดรฟ์ซีดีสำหรับ VM
  5. เพิ่มอุปกรณ์เก็บข้อมูลที่เป็นประเภท VirtIO การจัดสรรขนาดไม่สำคัญเนื่องจากคุณใช้เพื่อติดตั้งไดรเวอร์
  6. เริ่ม Windows VM มันจะพยายามติดตั้งไดรเวอร์ หากไม่เป็นเช่นนั้นให้เปิดตัวจัดการอุปกรณ์และคุณจะเห็นอุปกรณ์ SCSI อยู่ในรายการพร้อมกับไอคอนเครื่องหมายอัศเจรีย์ข้างๆ คุณสามารถเลือกที่จะอัปเดตไดรเวอร์และชี้ไปที่ไดเรกทอรีที่เหมาะสมของการเมานต์ ISO เมื่อติดตั้งแล้วอย่ารีบูต แต่ปิดเครื่อง
  7. ในการตั้งค่า virt-manager สำหรับ Windows เปลี่ยนประเภทการจัดเก็บจาก IDE เป็น VirtIO
  8. คุณสามารถลบอุปกรณ์เก็บข้อมูลที่คุณสร้างไว้ก่อนหน้านี้ มันไม่จำเป็นอีกต่อไป
  9. เริ่ม Windows มันควรบูทขึ้นและติดตั้งไดรเวอร์ SCSI คุณจะต้องรีบู๊ตหลังจากนั้น
  10. หาก VM ไม่บูต แต่ติดตั้งไดรเวอร์ไว้คุณอาจลองทำ:

    1. ซ่อมแซมการเริ่มต้นที่สามารถแก้ไขปัญหาของระบบบางอย่างที่อาจทำให้ Windows ไม่สามารถเริ่มทำงานได้
    2. ทางออกสุดท้าย: ซ่อมแซมการติดตั้งในขณะที่บูตจาก ISO 10 ของ Windows นี่จะเป็นการเก็บแอปพลิเคชันและการตั้งค่าของผู้ใช้ทั้งหมดเพียงรีเฟรช Windows และบูต ใช้ ISO 10 ของ Windows ล่าสุด

หากขั้นตอนสุดท้ายนั้นจำเป็นต้องใช้ขออภัยความยากลำบากอีกอย่างหนึ่งที่อาจเกิดขึ้นคือถ้าแผ่นซีดีบูต Windows ไม่สามารถเข้าใจดิสก์ VirtIO ได้เนื่องจากไดรเวอร์เหล่านี้ไม่ได้รวมอยู่ใน Microsoft ในกรณีนี้เราต้องสร้าง CD / USB สำหรับบูตแบบกำหนดเองที่มีไดรเวอร์เหล่านี้ แต่ให้แน่ใจว่าคุณเริ่มจาก Windows ISO ที่อยู่ในระดับเดียวกับการติดตั้งโดยรับล่าสุด (ปัจจุบันคือ 1511)

ต่อไปนี้เป็นบทแนะนำเกี่ยวกับวิธีการส่งไดรเวอร์ใน Windows:


คำตอบนี้จะใช้งานได้ (และทำงานกับรุ่นอื่น ๆ ใน Windows) ยกเว้นว่าในขั้นตอนที่ 9 เมื่อคุณพยายามบูตมีข้อผิดพลาด INACCESSIBLE_BOOT_DEVICE การซ่อมแซมเริ่มต้น (10.1) ไม่ทำงานและขั้นตอน 10.2 เป็นไปไม่ได้จริง การติดตั้งซ่อมแซมสามารถทำได้โดยการบูทระบบครั้งแรกโดยไม่มีซีดีจากนั้นจึงรันsetup.exeบนซีดี นี่คือสิ่งที่ลิงค์ในคำถามอธิบายและเท่าที่ฉันทราบว่าไม่มีวิธีอื่นที่จะทำ
แกรม

ฉันควรจะจัดหาข้อมูลอื่นใดให้อย่างแน่นอน ฉันบอกคุณซ้ำแล้วซ้ำอีกว่าตัวเลือกไม่ได้อยู่ที่นั่น ปัญหาที่นี่คือคุณยืนยันอย่างต่อเนื่องว่าเป็น หากเป็นกรณีที่มี 'อื่น ๆ อีกมากมายในบทความต่าง ๆ ที่พบบนอินเทอร์เน็ต' อ้างอิงหนึ่ง เชื่อมโยงบทความหนึ่งที่อธิบายถึงวิธีการบูตจากซีดีและเริ่มการติดตั้งซ่อมโดยไม่ต้องบูทระบบที่ติดตั้งและเรียกใช้setup.exeบนซีดีก่อน ลิงก์บทความหนึ่งจากแหล่งข้อมูลที่เชื่อถือได้ที่พิสูจน์ว่าคุณไม่โกหกและฉันจะขอโทษและมอบการอัปโหลดที่มีค่าของคุณ
แกรม

ดูตัวอย่างวิดีโอนี้เกี่ยวกับวิธีการซ่อมแซมการเริ่มต้นบน Windows 10 จากสื่อการติดตั้ง ถ้าไม่พยายามที่จะใช้Command Prompt อย่างที่ฉันได้กล่าวไว้ข้างต้นคุณอาจต้องใช้ ISO แบบสตรีม - ฉันไม่รู้ว่าการติดตั้ง WIn10 มีไดรเวอร์ VirtIO หรือไม่
harrymc

หรือคุณอาจปรับวิธี drvloadสำหรับการเพิ่มไดรเวอร์ VirtIO ให้กับอิมเมจการติดตั้ง Windows PE ที่บูทแล้ว
harrymc

2
ในขณะที่คำตอบข้างต้นฟังดูดีและดูง่าย แต่น่าเสียดายที่ VM ของฉันใช้การpc-q35-2.5จำลอง / ประเภทเครื่อง แต่ไม่สามารถเพิ่มตัวควบคุม IDE
JPvRiel

5

คำตอบจาก harrymc ทำงานได้ดีสำหรับฉัน

ฉันทำตามขั้นตอนต่อไปนี้:

  1. ติดตั้งไดรเวอร์ virtio ใน windows
  2. เพิ่มดิสก์ virtio "dummy" เพิ่มเติม รีบูตและตรวจสอบว่า "จำลอง" ทำงานหรือไม่
  3. หากขั้นตอนที่ 2 ใช้งานได้ให้เปลี่ยนดิสก์สำหรับบูตเป็น virtio
  4. Reboot
  5. ลบดิสก์ virtio "dummy" เพิ่มเติม
  6. ...

โปรดอย่าเพิ่ม "ขอบคุณ" เป็นคำตอบ ลงทุนเวลาในไซต์และคุณจะได้รับสิทธิ์ที่เพียงพอในการถอนคำตอบที่คุณชอบซึ่งเป็นวิธีที่ผู้ใช้ระดับสูงในการพูดขอบคุณ
DavidPostill

1
นี่เป็นคำตอบที่ไม่ถูกต้อง - ใน Proxmox Windows 10 มีปัญหาในการเริ่มต้นแม้หลังจากติดตั้งไดรเวอร์ทั้งหมด ฉันต้องสร้างดิสก์ขนาดเล็ก 1 GB เป็นอุปกรณ์ VirtIO block เริ่ม VM ตรวจสอบว่ามันปรากฏอย่างถูกต้องแล้วปิด + เปลี่ยนไดรฟ์หลักเป็น VirtIO Windows 10 ตรวจจับไดรฟ์เวอร์ HDD ไม่ถูกต้องดังนั้นฉันต้องเกลี้ยกล่อมให้โหลดก่อนบูต
อัลเบิร์ต H

3

เป็นไปไม่ได้ที่จะติดตั้งไดรเวอร์อย่างสมบูรณ์และยังจะได้รับ "อุปกรณ์บูตไม่สามารถเข้าถึงได้" เหตุผลก็น่าตกใจเล็กน้อย (ฉันค้นหา): การติดตั้ง Win 10 "จดจำ" ไดรเวอร์ที่จำเป็นเมื่อติดตั้งครั้งแรกและตามค่าเริ่มต้นจะไม่โหลดไดรเวอร์หน่วยเก็บข้อมูลอื่นในเวลาบูต สิ่งนี้เสร็จสิ้นไปแล้วดูเหมือนกับ "การละเมิดลิขสิทธิ์" - ทำให้ยากต่อการเรียกใช้การติดตั้ง "เดียวกัน" บนฮาร์ดแวร์ต่างๆ มีเอกสารที่ดีเกี่ยวกับ "ฟีเจอร์" นี้ในโพสต์นี้จากฟอรัม gentoo สาระสำคัญมีดังนี้:

สามารถกำหนดไดร์เวอร์ที่กำหนดไว้สำหรับการห้ามโหลดขณะบูตได้ดังนี้: ภายในรีจิสทรีคีย์คอมพิวเตอร์ \ HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Services จะมีคีย์ย่อยหนึ่งคีย์สำหรับไดรเวอร์ทุกตัวที่รู้จักในการติดตั้ง ชื่อของคีย์ย่อยนี้เป็นเพียงชื่อของไดรเวอร์ ภายในแต่ละคีย์ย่อยของไดรฟเวอร์จะมีคีย์ย่อย "STARTOVERRIDE" หากจะป้องกันไม่ให้โหลดตอนบู๊ต โดยเฉพาะอย่างยิ่งภายในคีย์ย่อยของ STARTOVERRIDE จะมีพารามิเตอร์ชื่อ "0" หากค่าของพารามิเตอร์นี้คือ "3" มันจะไม่ถูกโหลดในเวลาบูต การตั้งค่านี้เป็น 0 จะเป็นการลบล้างพฤติกรรม

ฉันแค่ไปที่ Computer \ HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Services แล้วค้นหาคำว่า "STARTOVERRIDE" ทุกครั้งที่พบถ้ามีชื่อภายใต้ชื่อ "0" ที่มีค่า "3" ฉันเปลี่ยนเป็น "0" ดูเหมือนจะเกินความจำเป็นคุณจะต้องเปลี่ยนไดรฟ์ที่ต้องการโหลดเท่านั้น ในกรณีของฉันมีหลายคนและฉันไม่เคยจำที่ดังนั้นฉันเพิ่งทำ "F3 ค้นหา" ในส่วน 'บริการ'

และหนึ่งเคล็ดลับสุดท้ายที่ไม่จำเป็นสำหรับการจัดเก็บในปัจจุบันได้รับการลงนาม, virtio แต่อาจจะมีคนอื่นอ่านนี้ถ้าพวกเขาต้องการที่จะใช้โปรแกรมควบคุมการทดลองเพิ่มเติมที่ยังไม่ได้ลงนาม (ยัง): ฉันพบว่า เคล็ดลับฉันยังต้องบูตเข้าสู่หน้าจอตัวเลือกขั้นสูงและเลือก F7 ("ปิดใช้งานการตรวจสอบลายเซ็นไดรเวอร์") น่ารำคาญไม่เพียงพอที่จะตั้งค่าสถานะ bcd เป็นปิดใช้งานการตรวจสอบไดรเวอร์เนื่องจากต้องโหลดไดรเวอร์ก่อนที่เครื่องจะอ่าน BCD และพบว่าไม่จำเป็นต้องตรวจสอบลายเซ็น

โดยรวมแล้วไม่ใช่ชั่วโมงที่ส่องแสงมากที่สุดของ Microsoft คุณต้องเกลียดผู้ใช้ของคุณหากคุณต้องการให้ผู้ใช้ที่ถูกกฎหมายสร้าง Blue-Screen เทียมขึ้นมาแทนที่จะอนุญาตให้ผู้คน (พูด) แทนที่ดิสก์ SATA ด้วยดิสก์ NVMe และให้มัน "ใช้งานได้"


ขอบคุณที่ให้รายละเอียดมากมายนี่เป็นวิธีที่ใช้งานได้ดีที่สุด! regfile หนึ่งไฟล์ที่จะนำเข้าและแก้ไขทั้งหมด
Florian Heigl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.