Переход к делу
Поддерживает ли функция запоминающего устройства композитного USB-гаджета Linux горячую замену файлов резервного копирования мультимедиа LUN? Если да, то у кого-нибудь заработало?
Фон
Составной USB-гаджет Linux включает функцию Mass Storage, которая может поддерживать несколько логических единиц, каждый из которых сопоставляется с файлом образа диска (например, FAT или ISO). Насколько я могу судить, функция Mass Storage, похоже, унаследовала часть или весь интерфейс конфигурации от предыдущего автономного гаджет g_mass_storage
В документации подразумевается, что вы можете смонтировать образ хранилища как LUN запоминающего устройства, а затем, позже, размонтировать его и заново смонтировать новый образ хранилища, аналогично тому, как работает физический привод CD / DVD. Я пытаюсь получить доступ именно к этой функции.
Что я пробовал
Я использую insmod / modprobe и rmmod для монтирования и размонтирования одного LUN, сопоставленного с образом ISO. Параметры modprobe - это модифицированная версия стандартной конфигурации Edison, которую он использует для предоставления образа диска с «обновлением прошивки».
Ведомым USB-устройством является плата Intel Edison, на которой запущена слегка измененная сборка Yocto, хост - OS X 10.10.2:
# Step 1: mount an ISO
modprobe g_multi file=/home/root/first_image.iso removable=1 ro=1 stall=0 idVendor=0x8087 idProduct=0x0A9E iProduct=Edison iManufacturer=Intel
# at this point, the ISO appears on the host (I'm testing with OS X)
# Step 2, at some later time
rmmod g_multi
# The storage disappears from the OS X desktop.
# It does not seem to complain unless you had files open on the media
# Step 3: mount a different ISO
modprobe g_multi file=/home/root/second_image.iso removable=1 ro=1 stall=0 idVendor=0x8087 idProduct=0x0A9E iProduct=Edison iManufacturer=Intel
# The operation appears to work on the device side,
# but the new media does not appear in OS X.
# You can usually get it to work by unplugging the USB cable,
# which presumably resets the port somehow.
Я попытался найти способ сбросить порт устройства OTG под управлением программного обеспечения. Это может быть окончательным решением.
Я не (пока) пробовал использовать интерфейс configfs для сборки и настройки устройства. Это также может быть вариантом, но я все еще работаю над документацией по этому поводу.
Спасибо!