ฉันจะบูตจาก liveusb โดยใช้ qemu-kvm ได้อย่างไร


คำตอบ:


23

qemu-kvm -hdb <device>อยู่ที่ไหน<device>USB Stick (เช่น/dev/sdb) ควรทำอย่างไร (ทดสอบกับ Ubuntu 12.04 ที่ USB Stick และใช้งานได้)

คุณจะต้องมีสิทธิ์เขียนไปยังอุปกรณ์ (เช่นเป็นrootหรือเปลี่ยนสิทธิ์)


2
คำตอบที่ดี. BTW หากคุณต้องการอินเทอร์เฟซที่ใช้งานง่ายเพื่อจัดการ VMs ของคุณลองใช้ virt-manager
wazoox

2
ดังคำใบ้: ฉันลองใช้ VirtualBox แทน kvm เพื่อทดสอบยูเอสบีสดของฉันและเร็วกว่ามาก คุณต้องใช้คำสั่งนี้เป็นรูทเพื่อสร้างไฟล์ vmdk ที่จะใช้ใน VirtualBox:VBoxManage internalcommands createrawvmdk -filename .VirtualBox/HardDisks/usbdisk.vmdk -rawdisk /dev/sdb
Marc MAURICE

4
เพียงบันทึกย่อเล็ก ๆ น้อย ๆ เพื่อตนเองที่นี่ - ใช้โหนดดิสก์ / อุปกรณ์ใน-hdb(เช่น/dev/sdb); ไม่ใช่พาร์ติชัน (เหมือนใน/dev/sdb4)
sdaau

เพื่อหลีกเลี่ยงข้อความเตือนคำเตือน: ไม่ได้ระบุรูปแบบรูปภาพสำหรับ '/ dev / sdb' และตรวจสอบว่าเป็นข้อมูลดิบ การตรวจจับรูปแบบโดยอัตโนมัติเป็นสิ่งที่อันตรายสำหรับภาพดิบการเขียนบนบล็อก 0 จะถูก จำกัด ระบุรูปแบบ 'ดิบ' อย่างชัดเจนเพื่อลบข้อ จำกัด คุณสามารถระบุตัวเลือกในรูปแบบนี้: -drive file=/dev/sdb,format=raw,index=0,media=diskดูคำถามนี้
Ashark

26

qemu-kvm ได้หายไป ใช้คำใบ้ในการเริ่ม qemu โดยให้มันเป็นเส้นทางไปยังรากของลินุกซ์แทน หมายความว่า

qemu-system-x86_64 -usb -usbdevice disk:/dev/sdb

โดยที่ / dev / sdb เป็นอุปกรณ์ raw ของคุณ (ไม่ใช่พาร์ติชัน) ของ usb stick ที่คุณต้องการบู๊ต

(อย่างไรก็ตาม ณ วันที่ 12/2014 มันเป็นเรื่องที่ไม่ดีสำหรับฉันการบูท ubuntu-gnome 14.10 ผลลัพธ์ในที่สุดในเคอร์เนลที่ตื่นตระหนกบนแท่งที่ได้รับการยืนยันว่าจะบูตได้ดีบนโลหะ)

/ IAW


ขอบคุณต้องใช้สิ่งนี้เพื่อสร้างบูตอัตโนมัติbin-x86_64-efi/ipxe.usbสำหรับบูต EFI และทำงานได้โดยไม่มีปัญหาจนถึงตอนนี้
NiKiZe

2
คุณช่วยอัพเดทคำตอบของคุณได้ไหม ฉันได้รับต่อไปนี้: qemu-system-x86_64: -usbdevice disk:/dev/sdb: '-usbdevice' is deprecated, please use '-device usb-...' instead
Ashark

8

ฉันไม่รู้ว่าทำไม แต่คำตอบของ Renan ไม่เหมาะกับฉัน KVM บอกกับฉันว่าไม่พบไดรฟ์ที่สามารถบู๊ตได้ (แม้จะมีการทำเครื่องหมายพาร์ติชัน usb ไว้)

อย่างไรก็ตามฉันได้พบวิธีแก้ไขปัญหาอื่นแล้ว รับ VendorID อุปกรณ์ USB: ProductID ด้วย lsusb ตัวอย่าง:

$ lsusb
...
Bus 002 Device 007: ID 0781:5406 SanDisk Corp. Cruzer Micro U3

ส่งผ่านไปยัง KVM และขอเมนูการบู๊ต:

sudo  kvm -m 512 -smp 1 -drive file=/path/to/hardisk/file.img -usb \ 
-usbdevice host:0781:5406 -boot menu=on

กด F12 สำหรับเมนูเลือกอุปกรณ์ usb มันใช้งานได้ อาจมีวิธีสั่งการบู๊ต usb โดยไม่จำเป็นต้องเรียกเมนูบูท แต่ฉันไม่พบ kvm ในคน


สำหรับฉันแล้วการส่งผ่าน usb stick เป็นไดรฟ์ hdd ทำงานอย่างถูกต้องสำหรับฉัน แต่ผ่าน usb stick เป็นอุปกรณ์ usb ที่มี -boot menu = on 1) ในโหมด bios ให้ฉันเลือกมันแสดงเมนู syslinux (ฉันประกาย archlinux iso เพื่อ usb stick กับ dd) และมันเริ่มโหลด แต่ล้มเหลวด้วยการรอ 30 วินาทีสำหรับอุปกรณ์ / dev / ดิสก์ / by-label / ARCH_201903 ... sd 2: 0: 0: 0 [sda] สมมติว่าแคชไดรฟ์: เขียนผ่าน print_req_error: ข้อผิดพลาด I / O, dev sda, เซ็กเตอร์ 0 ข้อผิดพลาดบัฟเฟอร์ I / O บน dev sda, บล็อกโลจิคัล 0, หน้า async อ่านข้อผิดพลาด: อุปกรณ์ '/ dev / disk / by-label / ARCH_201903' ไม่ปรากฏขึ้นหลังจาก 30 วินาที 2) ใน uefi มันล้มเหลว
Ashark

1

หากคุณต้องการใช้ภาพของ liveusb แทนที่จะเป็นอุปกรณ์ USB จริงคุณสามารถทำได้ด้วย

$ kvm -usbdevice disk:/path/to/liveusb.img -boot menu=on ...

หากไม่มี "-boot menu = on" kvm จะต้องการฮาร์ดไดรฟ์ที่คุณตั้งค่าด้วย "-drive" หรือ "-hd [a | b | c | d]" เสมอ

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