it-swarm-eu.dev

Jak mohu bootovat z liveusb pomocí qemu-kvm?

Snažím se přimět qemu-kvm k zavedení z mého živého usb sticku. Je to možné?

29
mikewilliamson

qemu-kvm -hdb <device>, kde <device> je USB flash disk (např. /dev/sdb), měli byste to udělat (testováno s Ubuntu 12.04 na USB flash disku a funguje to).

Budete potřebovat oprávnění k zápisu do zařízení (tj. Být root nebo změnit jeho oprávnění).

25
Renan

qemu-kvm zmizel. místo toho použijte nápovědu začněte qemu tím, že mu dáte cestu ke kořenovému adresáři Linux . to znamená

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

kde/dev/sdb je vaše nezpracované zařízení (nikoli oddíl) jednotky USB, kterou chcete zavést.

(nicméně, od 12/2014, pro mě to bylo šupinaté. Bootování systému Ubuntu-gnome 14.10 má nakonec za následek paniku v jádře na hůlku, která byla ověřena tak, aby na kov dopadla dobře.)

/ iaw

26
ivo Welch

Nevím proč přesně, ale Renanova odpověď pro mě nefungovala. KVM mi řekl, že nemohl najít spouštěcí disk (přestože je oddíl USB označen jako takový).

Našel jsem však jiné řešení. Získejte zařízení USB VendorID: ProductID s lsusb. Příklad:

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

Předejte to KVM a požádejte o zaváděcí nabídku:

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

Stiskněte F12 pro menu, vyberte USB zařízení, funguje to. Pravděpodobně existuje způsob, jak ovládat zavádění systému USB, aniž by bylo nutné zavádět zaváděcí nabídku, ale nenašel jsem v člověku kvm.

8
dgmorales

Pokud chcete použít obrázek živého disku, místo fyzického USB disku, můžete to provést pomocí

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

Bez "-boot menu = on" bude kvm vždy preferovat pevný disk, který nastavíte pomocí "-drive" nebo "-hd [a | b | c | d]".

1
kaapstorm

Udělal jsem to tak, že jsem nejprve vytvořil hosta pomocí např. virt-manager, poté upravte konfigurační soubor virsh tak, aby se spouštěl z USB:

  1. Upravit konfigurační soubor pro vm:

    # virsh edit TAILS
    
  2. Odstranit <boot> element z <os> element. (Nechte zbytek <os> prvek je neporušený.) Nelze použít <boot> zde, protože pořadí spouštění bude specifikováno v kroku 4.

  3. Získejte prodejce a ID produktu pro zařízení USB, které obsahuje živý systém:

    # lsusb -v | grep -E '\<(Bus|iProduct|bDeviceClass|bDeviceProtocol)' 2>/dev/null
    

    Výsledkem je výstup jako:

Bus 002 Device 007: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash Drive
  bDeviceClass            0 
  bDeviceProtocol         0 
  iProduct                2 

ID dodavatele je první čtyři hexadecimální číslo za 'ID' na prvním řádku, 090c v tomto příkladu. ID produktu je poslední čtyři hexadecimální číslo za dvojtečkou, zde 1000.

  1. V editoru virsh přidejte <hostdev> element pro vaše USB zařízení, uvnitř <devices> element (který by již měl existovat). Podrobné pokyny/příklady tohoto prvku jsou na https://libvirt.org/formatdomain.html#elementsHostDev . lsusb dává hodnoty v šestnáctkové soustavě, takže použijte 0x předpona, pokud z nějakého důvodu nechcete převádět hodnoty.
<devices>
  <hostdev mode='subsystem' type='usb'>
    <source startupPolicy='mandatory'>
      <vendor id='0x090c'/>
      <product id='0x1000'/>
    </source>
    <boot order='1'/>
  </hostdev>
</devices>
  1. Uložte a ukončete editor virsh a obvyklým způsobem spusťte VM (používám virt-manager, ale spouštěcí příkazový řádek používá stejný konfigurační soubor).)
0
r1bb1t