Как подключить запоминающее устройство USB с пользовательскими идентификаторами pid и vid?

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

file -b --mime-type <file>

является заменой

xdg-mime query filetype <file>

, и его изменение должно быть безболезненным, особенно если ваше предпочтительное поведение является выходом file -i.

Команды xdg-* зависят от среды рабочего стола, в которой вы работаете (помните, что префикс расшифровывается как X Desktop Group) и, в принципе, их вообще не следует использовать в скриптах, не предназначенных для взаимодействия с пользователем.

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

Если вам нужно «наиболее разумное» поведение для каждой системы, используйте команды-оболочки, такие как xdg-mime, и будьте готовы адаптироваться к их представлению о «наиболее разумном» в каждой системе.

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

1
18.03.2016, 20:41
1 ответ

Получил работу второй части.

«Затем я хотел бы, чтобы он подключался каждый раз, когда я подключаю его».

Создал правило udev по адресу:

sudo vi /etc/udev/rules.d/80-mp3_a011.rules

Добавил эту информацию, которая просто модифицирует usb-storage и добавляет мой pid: vid в usb- хранилище new_id.

ACTION=="add", ATTRS{idVendor}=="a010", ATTRS{idProduct}=="a010", RUN+="/sbin/modprobe usb-storage" RUN+="/bin/sh -c 'echo a011 a011 > /sys/bus/usb/drivers/usb-storage/new_id'"

перезапуск udev

sudo /etc/init.d/udev restart

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

Первая часть работает:

«Я хотел бы сначала подключиться один раз через командную строку».

sudo echo a011 a011 > /sys/bus/usb/drivers/usb-storage/new_id

Сработало ли НЕ , потому что к команде echo было применено sudo, а не к new_id или что-то в этом роде.

Сначала был изменен на корневую оболочку, а затем добавлен PID: VID к new_id.

sudo su

echo a011 a011 > /sys/bus/usb/drivers/usb-storage/new_id
1
27.01.2020, 23:48

Теги

Похожие вопросы