Итак, после дополнительных поисков я нашел решение. Возможно, это не самое экзотическое решение, но оно работает. Оказывается, при запуске screen под fbterm цвета работают так, как и должны, прямо в фреймбуфере linux.
Чтобы заставить его работать, я убедился, что у меня есть копия GNU Screen (apt-get install screen
), и скомпилировал копию FBTerm из исходников (https://code.google. com/p/fbterm/), а затем, немного поигравшись, в итоге получил вот это, чтобы добавить в мой .bashrc
файл:
if [[ "`tty`" == /dev/tty* || ${SHLVL} -eq 2 ]]; then
export TERM=fbterm
if [ ${SHLVL} -eq 1 ]; then
((SHLVL+=1)); export SHLVL
exec fbterm
elif [ ${SHLVL} -eq 2 ]; then
((SHLVL+=1)); export SHLVL
exec screen -d -R -q
fi
fi
Если у кого-то есть улучшения, которые он хотел бы добавить, не стесняйтесь комментировать этот ответ или предлагать правку (или что-то еще).
Надеюсь, это поможет кому-то, кроме меня :)
Да, вы можете полагаться на то, что структура в /sys/bus/usb/
будет одинаковой для всех дистрибутивов, потому что она зависит только от ядра, и она достаточно зрелая, поэтому вряд ли она изменится в будущих версиях ядра (, но кто знает.. ).
Однако это неправильный подход к решению вашей проблемы. Правильный подход заключается в том, чтобы включить пользовательское правило udev
в ваше приложение и убедиться, что это правило udev
скопировано в нужное место (, обычно /etc/udev/rules.d
, но это может зависеть от дистрибутива. Если есть сомнения, пусть пользователь настроит его )во время установки. Затем правило udev
может назначить символические ссылки (, аналогичные тем, которые вы видите в /dev/disks
), трем последовательным устройствам, используя любую информацию (, например. идентификатор поставщика/устройства )однозначно идентифицирует вашу плату. Ваши приложения должны использовать символические ссылки.
В крайнем случае,вы также можете использовать древовидную структуру usb -, которую вы планировали использовать для ryle. См. udevadm info --attribute-walk...
для получения списка свойств, доступных для ваших устройств.