Перейти к содержимому


Фотография

Dune Storage_Manager


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 14

#1 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 28 October 2020 - 22:20

ЗЫ Этот плагин развиваться не будет, так как он нужен паре гиков с флешками. Он даже мне не нужен, после его создания ни разу не отмонтировал не один накопитель через него.  И по прошествии 7-8 лет уверен что это бесполезная штука.

Да собственно он и мне толком не нужен. Я бы через терминал накопители бы отмонтировал, если бы знал, как это сделать в обход storage_manager или через него (либо с его последующим перезапуском после отмонтировпния).

 

После ручного umount'a в консоли он тупо монтируют накопитель взад. Прибьёшь - ручками его уже запустить не получится (у меня не вышло) и монтировать накопители назад придётся тоже ручками. Ну или придётся ребутить дюну, дабы перезапустить storage_manager. Потому и маюсь с плагином. Хотя и он не панацея, как выяснилось ...


Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#2 slondon

slondon

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 532 сообщений
  • Gender:Male

Отправлено 29 October 2020 - 01:07

Думаю, storage_manager работает похоже с network_manager, который мониторит некую директорию на предмет появления в ней файла с описанием запроса, он его читает, выполняет и там же создает новый файл с результатом выполнения команды.
Детали, помнится, я описывал с год назад в теме ютуба или базинги, когда фиксили проблему монтирования сетевых ресурсов для расшаривания data. Ну или можно пострейсить нужный процесс во время подключения/отключения флешки через оболочку - посмотреть, где он ищет файлы-команды, и что в них написано, там простой текстовый формат, легко догадаться о назначении разных полей.

Прямыми командами mount/umount для тех ресурсов, которые управляются этими менеджерами, лучше не лезть.
Dune HD Neo 4K Plus, 240619_0210_r22
Dune HD Max 4K, 240619_0210_r22

#3 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 29 October 2020 - 03:10

Думаю, storage_manager работает похоже с network_manager, который мониторит некую директорию на предмет появления в ней файла с описанием запроса, он его читает, выполняет и там же создает новый файл с результатом выполнения команды.

Ну, в потрохах есть чёткая ссылка на /tmp/run/storage_list.xml. Вот только выхлопной или конфигурационный файл я пока до конца не понял. Вроде как выхлопной. 

Ну или можно пострейсить нужный процесс во время подключения/отключения флешки через оболочку - посмотреть, где он ищет файлы-команды, и что в них написано, там простой текстовый формат, легко догадаться о назначении разных полей.

Хм. А как strac'ить уже запущенный процесс "на горячую" ? Я знаю лишь, как это сделать при собственно запуске процесса. А с этим тут проблемы ...

Прямыми командами mount/umount для тех ресурсов, которые управляются этими менеджерами, лучше не лезть.

ХЗ. В потрохах бинарника обнаружились вот такие строки

storage_remove_storage
storage_add_storage

и рядом

you must enter a number

проверить пока не вышло - там у storage_manager'a свой LD_LIBRARY_PATH

/firmware/bin/storage_manager: error while loading shared libraries: libruahdmi.so: cannot open shared object file: No such file or directory

который у меня не было времени уточнить и перепроверить (в заметках где-то есть, но надо искать).

 

 

p.s. Со sorage_manager'ом есть ещё дополнительная заморочка - он упорно демонтирует всё, что вручную смонтировано в  /tmp/mnt/storage/ (а может и в директорию выше уровнем, не помню), что в частности, мешает банальному биндингу директорй >_>


Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#4 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 29 October 2020 - 10:00

Разобрался с strac'ом. Всё оказалось в итоге доволно банально

strace -p <PID>

век живи, век учись. Даже не задумывался о том, что он так умеет ...

Вот что обнаружилось в отфильтрованном выхлопе :

"/tmp/run/ipc__storage_manager"
"/sys/block/sda/sda1/size"
"/sys/block/sda/sda2/size"
"/sys/block/sda/sda5/size"
"/sys/block/sdb/sdb1/size"
"/sys/block/hda/removable"
"/sys/block/hdb/removable"
"/sys/block/sr0/removable"
"/proc/mounts"
"/storage/MyDrive vfat rw,noat"
"/tmp/mnt/storage"
"/tmp/mnt"
"/tmp/run/storage_list.xml"

эти файлы/директории/etc он интенсивно мониторит. Подозреваю, что вероятный конфиг

"/tmp/run/ipc__storage_manager" (не существует)

ну или

"/tmp/run/storage_list.xml"

который я упоминал ранее.

 

Дальнейшими изысканиями займусь позднее.


Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#5 slondon

slondon

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 532 сообщений
  • Gender:Male

Отправлено 29 October 2020 - 13:06

/tmp/mnt/storage/ - это личная директория менеджера, он за ней следит, видимо, и выгоняет всех чужих. Просто монтируйте куда-нибудь в другое место для своих нужд (если не надо, чтобы ресурс в интерфейсе появился).
В /tmp/run/storage_list.xml просто ведется список активных устройств и точек монтирования, чтобы любой мог его посмотреть, и на основании этих данных сформировать команду.
Еще там рядом лог есть, тоже полезно посмотреть для изучения.

/tmp/run/ipc__storage_manager - это, кажется, как раз директория, куда команды класть, и где результат их выполнения появляется.
Dune HD Neo 4K Plus, 240619_0210_r22
Dune HD Max 4K, 240619_0210_r22

#6 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 30 October 2020 - 14:00

/tmp/mnt/storage/ - это личная директория менеджера, он за ней следит, видимо, и выгоняет всех чужих. Просто монтируйте куда-нибудь в другое место для своих нужд (если не надо, чтобы ресурс в интерфейсе появился).

Задумка изначально была другая - биндить каталоги или монтировать в /tmp/mnt/storage/ дабы через ftp был доступ. Данный вопрос уже решён обходными путями, но он так и повис в воздухе.

Еще там рядом лог есть, тоже полезно посмотреть для изучения.

Видел. Но он пока мало чем помог.

/tmp/run/ipc__storage_manager - это, кажется, как раз директория, куда команды класть, и где результат их выполнения появляется.

Мне показалось, что это файл. Хотя может и директория. Вопрос только в том, что туда класть и в каком формате. Воспроизвести сценарий, при котором туда что-то пишется мне не удалось. Пробовал мониторя strace'ом командой umount демонтировать накопитель, создать директорию в /tmp/mnt/storage.0/, вытащить-воткнуть флешку, демонтировать накопитель через плагин umount.

Интересно, по какому принципу плагин демонтирует накопитель, что storage_manager до него не докапывается ? Хм.

upd:

Алгоритм работы storage_manager примерно следующий :

1) Мониторятся "/sys/block/sd*/sda*/size"
2) Если там что-то появляется, это монтируется в "/tmp/mnt/storage.0", если есть dune_folder.txt с именем диска storage.0 ренеймится в заданное имя, если нет, то по идее используется id-к. Не проверял.
3) Пытается открыть "/etc/blkid.conf", не находит, создаёт "/etc/blkid.tab" и вносит данные в него.
4) Вносит правки в "/etc/samba/smb.conf" и /tmp/run/storage_list.xml

Ещё момент - в потрохах бинарника storage_manager'a было много упоминаний hdmi, да и сам он требует либу libruahdmi.so для инициализии, а "IPC" строки тесно соседствовали с hdmi, так что может статься, что "/tmp/run/ipc__storage_manager" предназначен совершенно для иных целей.
Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#7 slondon

slondon

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 532 сообщений
  • Gender:Male

Отправлено 30 October 2020 - 14:46

Оказывается я не описывал подробно формат запроса, TrippyCat его сам как-то нашел. Вот для затравки пост https://forum.hdtv.r...168#entry446882
Пример реализации можно посмотреть в его плагинах YouTube и Bazinga.
Еще можно включить strace на storage_manager, воткнуть флешку и смотреть какие файлы он открывает, что туда пишет или читает и т.д.
Dune HD Neo 4K Plus, 240619_0210_r22
Dune HD Max 4K, 240619_0210_r22

#8 slondon

slondon

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 532 сообщений
  • Gender:Male

Отправлено 30 October 2020 - 15:07

Хотя, storage_manager скорее всего не использует IPC для штатных действий с флешкой, как network_manager с шарами.
Тогда strace не поможет, но можно подкладывать в /tmp/run/ipc__storage_manager файлы, начиная с пустого, и смотреть в логах, каких опций ему не хватает, и постепенно их дописывать.
Или посмотреть формат запросов network_manager, и сделать по аналогии для storage_manager. Если есть сетевые шары, то можно стрейсить network_manager во время подключения/отключения шары через интерфейс руками.
Dune HD Neo 4K Plus, 240619_0210_r22
Dune HD Max 4K, 240619_0210_r22

#9 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 31 October 2020 - 01:05

Оказывается я не описывал подробно формат запроса, TrippyCat его сам как-то нашел. Вот для затравки пост https://forum.hdtv.r...168#entry446882
Пример реализации можно посмотреть в его плагинах YouTube и Bazinga.

Спасибо. Посмотрю. Авось пригодится.

Еще можно включить strace на storage_manager, воткнуть флешку и смотреть какие файлы он открывает, что туда пишет или читает и т.д.

Собственно, весь процесс в общих чертах я описал выше. Чего-то специфического он не создавал, лишь упорно мониторил size-файлы, каталог монтирования и некоторую другую мелочёвку. При появлении накопителя он его монтирует а на попытки что-то создать/замонтировать рядом шлёт лесом отмонтируя и удаляя как "повисшие" "dangling" точки монтирования.

Хотя, storage_manager скорее всего не использует IPC для штатных действий с флешкой, как network_manager с шарами.
Тогда strace не поможет, но можно подкладывать в /tmp/run/ipc__storage_manager файлы, начиная с пустого, и смотреть в логах, каких опций ему не хватает, и постепенно их дописывать.

Единственное, что обнаружилось в /tmp/run/ipc__storage_manager/ это файл resume_update.1489-1.res, созданный при старте дюны, где 1489 - это pid процесса "shell"

Или посмотреть формат запросов network_manager, и сделать по аналогии для storage_manager. Если есть сетевые шары, то можно стрейсить network_manager во время подключения/отключения шары через интерфейс руками.

Попробую разобраться на досуге. Хотя у меня сложилось впечатление, что storage_manager куда более примитивный и малофункциональный инструмент, нежели network_manager
Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#10 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 05 November 2020 - 08:16

Итак, с манипуляциями в "/tmp/run/ipc__storage_manager" пока не удалось разобраться. Тем не менее удалось выяснить, как перезапустить storage_manager после его "убийства" (а это уже тот минимум, на который я рассчитывал). Для начала объявляем LD_LIBRARY_PATH необходимый для запуска storage_manager'а
LD_LIBRARY_PATH=/firmware_ext/opera/lib/:/firmware_ext/ekioh/lib/:/firmware_ext/flashlite/lib/:/firmware/lib:/tango/mrua/lib:/tango3//dcchd/lib:/tango3/mrua/MRUA_src/lib:/firmware/lib::/firmware_ext/qtbrowser//lib:/firmware_ext/qtbrowser//plugins/bearer:/firmware_ext/qtbrowser//plugins/gfxdrivers:/firmware_ext/qtbrowser//plugins/iconengines:/firmware_ext/qtbrowser//plugins/imageformats:/firmware_ext/qtbrowser//plugins/sqldrivers
его можно в частности подсмотреть в
/tmp/run/start_firmware.log
, далее переходим в корень (cd /) и стартуем менеджер командой
firmware/bin/storage_manager
без первого слеша (это критично, иначе не запуститься) и он стартует в качестве демона в терминале. Если нужно запусить в фоне, достаточно на конец добавить "&" т.е.
firmware/bin/storage_manager &
как это собственно организовано bdstart.sh

После того, как storage_manager был прибит, я воткнул флешку и после снова инициализировал процесс с включённым трейсингом, но ничего особо нового по манипуляциями в "/tmp/run/ipc__storage_manager" выяснить не удалось. При этом удалось обнаружить обращение к ряду файлов, среди которых в частности были с неясным назначением (ибо таковых у меня тупо не существовало, под светил жирным)

/etc/localtime
/firmware/translations/languages.properties
/fconfig/power_button_behaviour_choice_disabled
/fconfig/rct.txt

/config/settings.properties
/firmware/config/upgrade_settings.properties
/config/upgrade_settings_applyed.properties
/config/rs/dxe.txt
/config/rs/st.txt
/fconfig/rs/st.txt

/D/dune_folder.txt
/etc/blkid.conf
/tmp/mnt/storage/MyDrive/dune_folder.txt
/etc/samba/smb.conf
/tmp/run/storage_list.xml

помимо этого удалось обнаружить утилиту
/firmware/bin/sg_start
которая вроде как занимается извлечением дисков из приводов или остановкой hdd. Или тем и другим вместе
/firmware/bin/sg_start --help
Unrecognized option: help
Usage:  sg_start [0|--stop|1|--start] [--eject] [--fl=<n>] [-i] [--imm=0|1]
                 [--load] [--loej] [--pc=<n>] [-v] [-V] <device>
 where: 0         stop unit (e.g. spin down a disk or a cd/dvd)
        1         start unit (e.g. spin up a disk or a cd/dvd)
        --eject   stop then eject the medium
        --fl=<n>  format layer number (mmc5)
        -i        return immediately (same as '--imm=1')
        --imm=0|1   0->await completion(def), 1->return immediately
        --load    load then start the medium
        --loej    load the medium if '-start' option is also given
                  or stop unit and eject
        --pc=<n>  power conditions (in hex, default 0 -> no power condition)
                  1 -> active, 2 -> idle, 3 -> standby, 5 -> sleep (MMC)
        --start   start unit (same as '1'), default action
        --stop    stop unit (same as '0')
        -v        verbose (print out SCSI commands)
        -V        print version string then exit

    Example: 'sg_start --stop /dev/sdb'    stops unit
             'sg_start --eject /dev/scd0'  stops unit and ejects medium

Performs a START STOP UNIT SCSI command
ну идо кучи в storage_manager за светилась утилитка eject, которая тоже занимается открытием/закрытием лотка привода
/usr/bin/eject --help
BusyBox v1.15.3 (2014-12-19 12:09:12 MSK) multi-call binary

Usage: eject [-t] [-T] [DEVICE]

Eject specified DEVICE (or default /dev/cdrom)

Options:
        -s      SCSI device
        -t      Close tray
        -T      Open/close tray (toggle)
p.s. Что до сих пор не удалось понять, так что это за "simple_ipc_server" с которым "общается" storage_manager давая в выхлоп строки с "stormgr_ipc" ?
p.p.s. Ещё момент который не даёт покоя - по каккому принципу storage_manager занимается монтированием /D и как избежаться монтирования как "/D" не того раздела не того накопителя, либо заставить storage_manager перебиндить /D ?
Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#11 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 12 November 2020 - 16:34

В общем, саппорт по данному вопросу озвучил мои подозрения

В программной оболочке Dune и подсистеме storage_manager на данный момент нет функций принудительного отмонтирования накопителей и назначения заданного накопителя в качестве основного (/D). (В качестве основного используется первый накопитель, обнаруженный ОС). Возможно, такие функции будут добавлены в будущем.

так что "раскопки" по данному вопросу можно сворачивать. Разве что ещё попробовать воспроизвести через терминал отмонтирование накопителя по тому же принципу, что реализует плагин umount. TrippyCat, это возможно ? Или там используются какие-то специфические внутренние вызовы (исходники пока не смотрел) ?
Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#12 TrippyCat

TrippyCat

    Пользователь

  • Пользователи
  • PipPipPipPipPipPipPip
  • 27062 сообщений
  • Gender:Male

Отправлено 30 November 2020 - 00:16

Ну там сложного нет, там же обычный umount в плагине. 


Dune Store Extension (Дюнастор расширенный)
Faq По Плеерам Dune - в процессе заполнения.

Чтобы получить log-файл плагинов, нужно создать на первом носителе, доступном дюне (обычно внутренний диск) папку "dune_plugin_logs". После чего начните пользоваться плагином, и в папке dune_plugin_logs появится файл лога. (папку создавать с нижними подчеркиваниями). К файлу лога добавляйте расширение txt иначе на форум не загрузить или упакуйте файл лога в zip архив.

Хотел бы настойчиво попросить всех изменить свои подписи до такого вида (указание модели и прошивки, это сэкономит время вам и авторам плагинов) Faq По Плеерам Dune - п.12 - Как сделать подпись на форуме :
Dune Pro 4K(tv292a) - всегда последняя
Dune Neo 4K T2 Plus Version - всегда последняя
Dune Solo 4K (всегда последняя) Сист.флешка присутствует

Обновите парсеры это означает кнопка попап пункт "обновить" на иконке плагина или перегрузите плеер или в настройках плагина Bazinga.

#13 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 30 November 2020 - 09:14

Ну там сложного нет, там же обычный umount в плагине.

При обычном umount'e через терминал storage_manager монтирует накопитель/раздел взад :/ Если он отмонтируется через плагин, то назад уже не возвращается пока не переткнёшь драйв. По крайней мере у меня так.
Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует

#14 TrippyCat

TrippyCat

    Пользователь

  • Пользователи
  • PipPipPipPipPipPipPip
  • 27062 сообщений
  • Gender:Male

Отправлено 30 November 2020 - 17:01

Там был ньюанс с sd картами, в теме или даже в плагине описан типа вынять до чегото а то смонтирует назад, а вот винты помоему даже с  командной строки отмонтируются и уже больше не цепляются.


Dune Store Extension (Дюнастор расширенный)
Faq По Плеерам Dune - в процессе заполнения.

Чтобы получить log-файл плагинов, нужно создать на первом носителе, доступном дюне (обычно внутренний диск) папку "dune_plugin_logs". После чего начните пользоваться плагином, и в папке dune_plugin_logs появится файл лога. (папку создавать с нижними подчеркиваниями). К файлу лога добавляйте расширение txt иначе на форум не загрузить или упакуйте файл лога в zip архив.

Хотел бы настойчиво попросить всех изменить свои подписи до такого вида (указание модели и прошивки, это сэкономит время вам и авторам плагинов) Faq По Плеерам Dune - п.12 - Как сделать подпись на форуме :
Dune Pro 4K(tv292a) - всегда последняя
Dune Neo 4K T2 Plus Version - всегда последняя
Dune Solo 4K (всегда последняя) Сист.флешка присутствует

Обновите парсеры это означает кнопка попап пункт "обновить" на иконке плагина или перегрузите плеер или в настройках плагина Bazinga.

#15 LordGenom

LordGenom

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 2322 сообщений
  • Gender:Male

Отправлено 30 November 2020 - 17:27

Там был ньюанс с sd картами, в теме или даже в плагине описан типа вынять до чегото а то смонтирует назад, а вот винты помоему даже с командной строки отмонтируются и уже больше не цепляются.

Ну, флешки отмонтированные обычным umount'ом определённо монтируются взад. storage_manager подхватывает отмонтированный драйв и монтирует назад. Вот выдержка из /tmp/run/storage_manager.log
[1487] [t717123584] [2020-11-30 05:19:27.641928] Trying to mount '/dev/sdb1'...
[1487] [t717123584] [2020-11-30 05:19:27.701617] Mounted '/dev/sdb1' to '/tmp/mnt/storage.0'
[1487] [t717123584] [2020-11-30 05:19:27.702881] Moving '/dev/sdb1' from '/tmp/mnt/storage.0' to '/tmp/mnt/storage/MyDrive_2'
[1487] [t717123584] [2020-11-30 05:19:27.733223] Deleting dangling mount point '/tmp/mnt/storage.0'...
[1487] [t717123584] [2020-11-30 05:19:27.733580] Mount point deleted OK

Dune HD TV-102 (tv102_150721_0135_b9) Сист.флешка присутствует