[РЕШЕНО] Виртуальная флешка

Bill_Williamson
Собрал ядро пока на arch в виртуальной машине по этой инструкций в вики, предварительно отредактировав через menuconfig как требовалось тут.
Решил попробовать, но make menuconfig раскоментировал в PKGBUILD, т. е. предварительно ничего не готовил ……. и был удивлен, когда открылась картинка, выглядело немного по другому ……. а когда скомпилировал и установил, то модуля g_mass_storage в системе не оказалось, но появился модуль libcomposite — хотел перекомпилить по-новой, отдельно заготовив config, но отказался (ноут пахал 1,5 часа и темпереатура держалась в пределах 80-83 градуса).
Стал разбираться с установленным — все оказалось не так то просто, посмотри, например, это. В итоге плюнул и забросил — всеравно не вижу для себя причин для использования.
PS ... а вот почему не оказалось модуля g_mass_storage, так и не понял, то ли сам при настройке дал маху, то ли нужно config готовить отдельно и подсовывать вместо скаченного, но, для повторения операций, как писал, жалко ноут (пашут 4 потока и 1,5 часа + высокая температура - все таки для таких задач нужна машинка помощнее)
Ошибки не исчезают с опытом - они просто умнеют
Bill_Williamson
Т.е. qemu умеет распознавать файл флешкой?
Если судить по тому что написано в man
       -usb
           Enable the USB driver (will be the default soon)

       -usbdevice devname
           Add the USB device devname.

...

           disk:[format=format]:file
               Mass storage device based on file. The optional format argument will be used rather than detecting the format. Can be used to specify "format=raw" to avoid interpreting an untrusted format header.
Lupus pilum mutat, non mentem.
Любопытство пересилило и все-таки решился разобраться с этой виртуальной флешкой (пришлось еще раз помучать ноутбук).
Создал отдельно свой config и заменил им config.x86_64 — подключил следующие модули
CONFIG_USB_GADGET=m
CONFIG_USB_GADGETFS=m
CONFIG_USB_DUMMY_HCD=m
Модуль dummy_hcd обязателен
This host controller driver emulates USB, looping all data transfer requests back to a USB "gadget driver" in the same host. The host side is the master; the gadget side is the slave. Gadget drivers can be high, full, or low speed; and they have access to endpoints like those from NET2280, PXA2xx, or SA1100 hardware.
This may help in some stages of creating a driver to embed in a Linux device, since it lets you debug several parts of the gadget driver without its hardware or drivers being involved.
Since such a gadget side driver needs to interoperate with a host side Linux-USB device driver, this may help to debug both sides of a USB protocol stack.
Say "y" to link the driver statically, or "m" to build a dynamically linked module called "dummy_hcd" and force all gadget drivers to also be dynamically linked.
После загрузки модуля dummy_hcd в выводе lsusb -t появилась новая строчка
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=dummy_hcd/1p, 480M
Все, дальше можно эмулировать как готовый образ флэшки, так и создать новый файл (но его нужно отформатировать и создать разделы, вообщем все как с обычной флешкой).
Был образ загрузочной флешки 1G (спецсофт для экстренных нужд), после его эмуляции получилась обычная флешка — видна в файл-менеджере, lsblk и fdisk
Вывод # fdisk -l /dev/sdb
Устр-во    Загрузочный начало   Конец Секторы Размер Идентификатор Тип
/dev/sdb1  *               63 2019999 2019937 986,3M             7 HPFS/NTFS/exFAT

PS ... доступны следующие модули (для эмуляции)
Gadget Zero (DEVELOPMENT)
 Audio Gadget
 Ethernet Gadget (with CDC Ethernet support)
 Network Control Model (NCM) support
 Gadget Filesystem
 Function Filesystem
 Mass Storage Gadget
 Serial Gadget (with CDC ACM and CDC OBEX support)
 MIDI Gadget
 Printer Gadget
 CDC Composite Device (Ethernet and ACM)
 CDC Composite Device (ACM and mass storage)
 Multifunction Composite Gadget
 HID Gadget
 EHCI Debug Device Gadget
 USB Webcam Gadget
Ошибки не исчезают с опытом - они просто умнеют
Bill_Williamson
И как добиться добавления этого модуля при каждом обновлений ядра, через dkms?
Мы с nafanja ответили, что DKMS будет трудновато.
Хочу уточнить - собрать и установить нужные модули можно и без пересборки ядра - займет времени не больше часа, а , главное, эти модули при обновлении ядра можно опять подсунуть и это частенько срабатывает, правда не всегда. Ну а если не сработает, то опять можно пересобрать, а для облегчения можно написать и скрипт сборки модулей.

EDIT1 .... не прав, данные модули зависят от версии ядра. Собрал все модули на имеющихся исходниках linux-4.11.2 - modinfo понимает нормально, конечно, vermagik не совпадает и модуль не загружается.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.