Jak uruchomić z liveusb przy użyciu qemu-kvm?

27

Próbuję uzyskać qemu-kvm do rozruchu z mojego dysku USB na żywo. czy to możliwe?

mikewilliamson
źródło

Odpowiedzi:

23

qemu-kvm -hdb <device>, gdzie <device>jest pamięć USB (np. /dev/sdb), należy to zrobić (testowane z Ubuntu 12.04 na pamięci USB i działa).

Będziesz potrzebował pozwolenia na zapis do urządzenia (tj. Bądź rootlub zmień jego uprawnienia).

Renan
źródło
2
Dobra odpowiedź. BTW, jeśli potrzebujesz łatwego interfejsu do zarządzania maszynami wirtualnymi, wypróbuj virt-manager.
wazoox
2
Tylko jako wskazówka: wypróbowałem VirtualBox zamiast KVM, aby przetestować moją pamięć USB na żywo, i jest O wiele szybszy. Musisz użyć tego polecenia jako root, aby utworzyć plik vmdk do użycia w VirtualBox:VBoxManage internalcommands createrawvmdk -filename .VirtualBox/HardDisks/usbdisk.vmdk -rawdisk /dev/sdb
Marc MAURICE,
4
Tylko mała uwaga do samodzielnego tutaj - użyj węzła dysku / urządzenia w -hdb(np. /dev/sdb); NIE partycja (jak w /dev/sdb4)
sdaau
Aby uniknąć komunikatu ostrzegawczego OSTRZEŻENIE: Format obrazu nie został określony dla '/ dev / sdb' i sondowanie odgadnięcia raw. Automatyczne wykrywanie formatu jest niebezpieczne dla surowych obrazów, operacje zapisu w bloku 0 będą ograniczone. Określ jawnie format „raw”, aby usunąć ograniczenia. możesz określić opcje w tym formacie: -drive file=/dev/sdb,format=raw,index=0,media=diskZobacz to pytanie
Ashark
26

qemu-kvm zniknął. użyj podpowiedzi na początku qemu, podając zamiast tego ścieżkę do katalogu głównego Linux . to znaczy

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

gdzie / dev / sdb to surowe urządzenie (nie partycja) pamięci USB, którą chcesz uruchomić.

(jednak od 12/2014 r. było to dla mnie niestabilne. uruchomienie Ubuntu-gnome 14.10 ostatecznie powoduje panikę jądra na patyku sprawdzoną pod kątem rozruchu na metalu).

/ iaw

ivo Welch
źródło
Dzięki, potrzebowałem tego, aby automatycznie uruchomić kompilację bin-x86_64-efi/ipxe.usbrozruchu EFI, i jak dotąd działało bez problemów.
NiKiZe 27.07.17
2
Czy możesz zaktualizować swoją odpowiedź? Dostałem następujące: qemu-system-x86_64: -usbdevice disk:/dev/sdb: '-usbdevice' is deprecated, please use '-device usb-...' instead
Ashark
8

Nie wiem dlaczego dokładnie, ale odpowiedź Renana nie do końca działała. KVM powiedział mi, że nie może znaleźć dysku rozruchowego (mimo że partycja USB jest oznaczona jako taka).

Znalazłem jednak inne rozwiązanie. Uzyskaj identyfikator USB VendorID: ProductID z lsusb. Przykład:

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

Przekaż to do KVM i poproś o menu startowe:

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

Naciśnij F12 w menu, wybierz urządzenie USB, to działa. Prawdopodobnie istnieje sposób na polecenie bootowania USB bez konieczności wywoływania menu bootowania, ale nie znalazłem żadnego w kvm man.

dgmorales
źródło
Jeśli chodzi o mnie, przekazywanie pamięci USB jako dysku twardego działa dla mnie poprawnie, ale przekazywanie pamięci USB jako urządzenia USB z -boot menu = na 1) w trybie bios pozwala mi to wybrać, pokazuje menu syslinux (sflashowałem archlinux iso, aby pamięć USB z dd) i zaczyna się ładować, ale kończy się niepowodzeniem Oczekiwanie 30 sekund na urządzenie / dev / disk / by-label / ARCH_201903 ... sd 2: 0: 0: 0 [sda] Zakładając pamięć podręczną napędu: napisz przez print_req_error: Błąd we / wy, dev sda, sektor 0 Błąd we / wy bufora na dev sda, blok logiczny 0, odczyt strony asynchronicznej BŁĄD: urządzenie „/ dev / disk / by-label / ARCH_201903” nie pojawiło się po 30 sekundach 2) w uefi zawodzi
Ashark
1

Jeśli chcesz użyć obrazu Liveusb, zamiast fizycznej pamięci USB, możesz to zrobić za pomocą

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

Bez opcji „-boot menu = on” kvm zawsze preferuje dysk twardy ustawiony za pomocą opcji „-drive” lub „-hd [a | b | c | d]”.

kaapstorm
źródło