Эмулировать USB-накопитель с переключателем только для чтения в qemuLinux

Ответить
Anonymous
 Эмулировать USB-накопитель с переключателем только для чтения в qemu

Сообщение Anonymous »

Мне нужно эмулировать1 USB-накопитель с переключателем только для чтения2 на виртуальной машине qemu Linux3.
Важная часть заключается в том, что во время эмуляции мне нужно имитировать действие на этом переключателе (переход от чтения/записи к режиму только для чтения и наоборот).
Мне также нужно будет прочитать то, что на нем написано, из хозяин, после виртуальная машина останавливается.
Вот что я нашел:
Я запускаю виртуальную машину с чем-то вроде

Код: Выделить всё

qemu-system-x86_64 -drive if=none,id=usbstick,format=raw,file=/path/to/file.raw\
-device nec-usb-xhci,id=xhci\
-device usb-storage,bus=xhci.0,drive=usbstick,removable=on\
-monitor unix:/tmp/qemu-socket,server,nowait\
...other options elided as irrelevant for the question...
Это работает хорошо, и если я добавлю к диску параметр read-only=on, то он действительно будет доступен только для чтения.
Теперь я могу подключиться к монитору qemu с помощью

Код: Выделить всё

socat -,echo=0,icanon=0 unix-connect:/tmp/qemu-socket
И введите

Код: Выделить всё

change usbstick /path/to/file.raw raw read-only
Это дает ошибку «Ошибка: блок-узел доступен только для чтения», и виртуальная машина по-прежнему видит USB-накопитель как для чтения/записи.
Я проверяю это, просматривая содержимое /sys/block/sda/ro, которое никогда не меняется.
Противоположный сценарий, который загружается в режиме только для чтения, а затем переключается на чтение-запись, не выдает ошибку, но ОС в виртуальной машине по-прежнему видит его только для чтения.
Есть идеи, чего мне не хватает?
Спасибо
1проект нуждается в эмуляции для тестирования
2ключ, который нужно эмулировать
3Это виртуальная машина nixos, запущенная nix, которая использует qemu под капотом

Подробнее здесь: https://stackoverflow.com/questions/797 ... ch-on-qemu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»