Другим альтернативным решением, вместо модификации исходников makepasswd, является установка демона haveged
для ускорения процесса генерации ключей. Чтобы установить его:
sudo apt-get install haveged
После его установки makepasswd
работает так, как и должен.
Демон haveged
теперь требуется в виртуальных машинах и iOT (например, raspberry), где энтропия обычно низкая.
Из Debian, man haveged
:
НАЗВАНИЕ
haveged
- Генерирует случайные числа и питает случайное устройство Linux.ОПИСАНИЕ
haveged
генерирует непредсказуемый поток случайных чисел, собранных из косвенных эффектов аппаратных событий на скрытое состояние процессора (кэш, предсказатели ветвлений, таблицы трансляции памяти и т.д.) с использованием технологии HAVEGE (HArdware Volatile Entropy Gathering and Expansion) алгоритма. Алгоритм работает в пространстве пользователя, не требуются специальные привилегии для доступа файловой системы к выходному потоку.Linux накапливает случайность для распределения с помощью
/dev/random
и/dev/urandom
интерфейсами устройств. Стандартные механизмы заполнения/dev/random
могут оказаться недостаточными для удовлетворения спроса в системах с высокими потребностями или ограниченным взаимодействием с пользователем. В таких обстоятельствахhaveged
может быть запущен как привилегированный демон для заполнения пула/dev/random
всякий раз, когда запас случайных битов в/dev/random
падает ниже отметки низкого уровня воды устройства.
Частичный ответ:
Первый (тихий )HID-дескриптор выглядит так, как вы обычно видите для USB-клавиатур :Отчет состоит из 8 бит для левого и правого Ctrl/Shift/Alt/Meta (Win ), за которым следует зарезервированный байт (, ноль )и 6 байтов для скан-кодов для нажатий клавиш. (По этой причине USB-клавиатуры ограничены 6 -одновременными нажатиями клавиш ). Это может быть своего рода устаревший дескриптор.
Второй дескриптор использует несколько типов отчетов. Первые три предназначены для «потребителя» (, что бы это ни было ), управления питанием и одного поставщика -, определенного (, поэтому мы не знаем, что он делает ). Остальные три типа отчетов (с идентификаторами от 4 до 6 )сообщают о каждой отдельной клавише в виде битового поля (, что имеет большой смысл для игровой клавиатуры с n -нажатий клавиш ).
Как видно из дампа hidraw, функциональные клавиши отображаются правильно. :Нажатие Левый Ctrl дает вам
04 01 00 00 00 00 00 00
(идентификатор отчета 4
, первый бит на ), при нажатии левый Alt вы получите
04 04 00 00 00 00 00 00
(идентификатор отчета — 4
, третий бит — )и т. д., и отпускание всех клавиш сбрасывает все биты на ноль.
Отображение устройства в ядре
Keyboard.00e0 ---> Key.LeftControl
Keyboard.00e1 ---> Key.LeftShift
Keyboard.00e2 ---> Key.LeftAlt
Keyboard.00e3 ---> Key.LeftMeta
Keyboard.00e4 ---> Key.RightCtrl
Keyboard.00e5 ---> Key.RightShift
Keyboard.00e6 ---> Key.RightAlt
Keyboard.00e7 ---> Key.RightMeta
на самом деле заявляет, что понимает это, и должен отображать их на разные сканированные коды. Так что, если вы действительно не видите ничего похожего на
type 4 (EV_MSC), code 4 (MSC_SCAN), value 1d
type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 1
-------------- SYN_REPORT ------------
type 4 (EV_MSC), code 4 (MSC_SCAN), value 1d
type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 0
-------------- SYN_REPORT ------------
type 4 (EV_MSC), code 4 (MSC_SCAN), value 38
type 1 (EV_KEY), code 56 (KEY_LEFTALT), value 1
-------------- SYN_REPORT ------------
type 4 (EV_MSC), code 4 (MSC_SCAN), value 38
type 1 (EV_KEY), code 56 (KEY_LEFTALT), value 0
-------------- SYN_REPORT ------------
вevtest
(обратите внимание на разные MSC_SCAN
коды, один раз 1d
, один раз 38
; не обращайте внимания на строку с EV_KEY
), тогда что-то пойдет не так, когда ядро сопоставит отчет HID со скан-кодами.
В таком случае, пожалуйста, сообщите об ошибке разработчикам ядра. (Думаю, для "подсистемы ввода" )включите всю информацию на данный момент и посмотрите, есть ли у них идея отладить это.
Возможное альтернативное решение — как-то активировать устаревшее HID-устройство, так как оно больше похоже на обычную USB-клавиатуру и может работать «из коробки». Есть ли на клавиатуре какие-то клавиши или комбинации клавиш, которые выглядят так, как будто они могут сделать это?