Как мне загрузиться с liveusb используя qemu-kvm?

27

Я пытаюсь получить QEMU-KVM для загрузки с моей живой USB-флешки. Это возможно?

mikewilliamson
источник

Ответы:

23

qemu-kvm -hdb <device>где <device>находится флешка (например /dev/sdb), должна это сделать (протестирована с Ubuntu 12.04 на флешке и она работает).

Вам потребуется разрешение на запись на устройство (т. Е. Быть rootили изменить его разрешения).

Ренан
источник
2
Хороший ответ. Кстати, если вам нужен простой интерфейс для управления виртуальными машинами, попробуйте virt-manager.
wazoox
2
Просто подсказка: я попробовал VirtualBox вместо kvm, чтобы протестировать мою живую USB-флешку, и это НАМНОГО быстрее. Вы должны использовать эту команду как root для создания файла 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 будут ограничены. Укажите формат «raw» явно, чтобы снять ограничения. Вы можете указать параметры в этом формате: -drive file=/dev/sdb,format=raw,index=0,media=diskСмотрите этот вопрос
Ашарк
26

QEMU-KVM исчез. используйте подсказку в запуске qemu, указав вместо этого путь к корню linux . это означает

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

где / dev / sdb - ваше сырое устройство (не раздел) флешки, которую вы хотите загрузить.

(Тем не менее, по состоянию на 12/2014, для меня это было ненадежно. Загрузка ubuntu-gnome 14.10 в итоге приводит к панике ядра на флешке, которая, как проверено, прекрасно загружается на металле.)

/ IAW

Ivo Welch
источник
Спасибо, это нужно для автоматической загрузки сборки 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
Ашарк
8

Я не знаю почему, но ответ Ренана мне не помог. KVM сказал мне, что не может найти загрузочный диск (несмотря на то, что раздел usb помечен как таковой).

Однако я нашел другое решение. Получите USB-устройство VendorID: 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 без необходимости вызывать меню загрузки, но я не нашел ни одного в man kvm.

dgmorales
источник
Что касается меня, передача usb-флешки как жесткого диска работает правильно, но передача usb-флешки как usb-устройства с -boot menu = on 1) в режиме BIOS позволяет мне выбрать его, показывает меню syslinux (я прошил archlinux iso, чтобы usb придерживается dd), и он начинает загрузку, но завершается неудачно с ожиданием 30 секунд для устройства / dev / disk / by-label / ARCH_201903 ... sd 2: 0: 0: 0 [sda] Предполагается, что кэш диска: запись через print_req_error: Ошибка ввода / вывода, dev sda, сектор 0 Ошибка буфера ввода / вывода на dev sda, логический блок 0, ошибка чтения асинхронной страницы: устройство / dev / disk / by-label / ARCH_201903 'не показывалось через 30 секунд 2) в UEFI это не удается
Ашарк
1

Если вы хотите использовать образ liveusb вместо физического USB-накопителя, вы можете сделать это с

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

Без «-boot menu = on» kvm всегда будет предпочитать жесткий диск, который вы установили с помощью «-drive» или «-hd [a | b | c | d]».

kaapstorm
источник