J'essaie d'obtenir qemu-kvm pour démarrer à partir de ma clé USB en direct. Est-ce possible?
qemu-kvm -hdb <device>
, où <device>
est la clé USB (par exemple /dev/sdb
), devrait le faire (testé avec Ubuntu 12.04 sur une clé USB et ça marche).
Vous aurez besoin d'une autorisation d'écriture sur l'appareil (c'est-à-dire être root
ou modifier ses autorisations).
qemu-kvm a disparu. utilisez l'indication dans démarrez qemu en lui donnant un chemin vers une racine linux à la place. ça signifie
qemu-system-x86_64 -usb -usbdevice disk:/dev/sdb
où/dev/sdb est votre périphérique brut (pas la partition) de la clé USB que vous souhaitez démarrer.
(Cependant, à partir de 12/2014, cela a été floconneux pour moi. démarrer ubuntu-gnome 14.10 entraîne finalement une panique du noyau sur un bâton vérifié pour démarrer très bien sur le métal.)
/ iaw
Je ne sais pas exactement pourquoi, mais la réponse de Renan n'a pas vraiment fonctionné pour moi. KVM m'a dit qu'il ne pouvait pas trouver de lecteur de démarrage (malgré la partition USB marquée comme telle).
Cependant, j'ai trouvé une autre solution. Obtenez le périphérique USB VendorID: ProductID avec lsusb. Exemple:
$ lsusb
...
Bus 002 Device 007: ID 0781:5406 SanDisk Corp. Cruzer Micro U3
Passez cela à KVM et demandez le menu de démarrage:
Sudo kvm -m 512 -smp 1 -drive file=/path/to/hardisk/file.img -usb \
-usbdevice Host:0781:5406 -boot menu=on
Appuyez sur F12 pour le menu, choisissez le périphérique USB, cela fonctionne. Il y a probablement un moyen de commander le démarrage USB sans avoir besoin d'appeler le menu de démarrage, mais je n'en ai trouvé aucun dans man kvm.
Si vous souhaitez utiliser un image d'un liveusb, au lieu d'une clé USB physique, vous pouvez le faire avec
$ kvm -usbdevice disk:/path/to/liveusb.img -boot menu=on ...
Sans "-boot menu = on", kvm préférera toujours le disque dur que vous définissez avec "-drive" ou "-hd [a | b | c | d]".
J'ai fait cela en créant d'abord un invité en utilisant par exemple virt-manager, puis éditez le fichier de configuration virsh pour démarrer à partir de l'USB:
Editez le fichier de configuration pour le vm:
# virsh edit TAILS
Supprimez le <boot>
élément de <os>
élément. (Laissez le reste du <os>
élément intact.) Vous ne pouvez pas utiliser <boot>
ici, car l'ordre de démarrage sera spécifié à l'étape 4.
Obtenez l'ID du fournisseur et du produit pour le périphérique USB qui contient le système en direct:
# lsusb -v | grep -E '\<(Bus|iProduct|bDeviceClass|bDeviceProtocol)' 2>/dev/null
Cela produit une sortie comme:
Bus 002 Device 007: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash Drive
bDeviceClass 0
bDeviceProtocol 0
iProduct 2
L'ID du fournisseur correspond aux quatre premiers chiffres hexadécimaux après "ID" sur la première ligne, 090c
dans cet exemple. L'identifiant du produit correspond aux quatre derniers chiffres hexadécimaux après les deux-points, ici 1000
.
<hostdev>
élément pour votre périphérique USB, à l'intérieur du <devices>
élément (qui devrait déjà exister). Des instructions/exemples détaillés pour cet élément se trouvent à https://libvirt.org/formatdomain.html#elementsHostDev . lsusb
donne les valeurs en hexadécimal, donc utilisez le 0x
préfixe sauf si vous souhaitez convertir les valeurs pour une raison quelconque.<devices>
<hostdev mode='subsystem' type='usb'>
<source startupPolicy='mandatory'>
<vendor id='0x090c'/>
<product id='0x1000'/>
</source>
<boot order='1'/>
</hostdev>
</devices>