I2P на Orange Pi PC2

Очередное средство для доступа к "даркнету" — i2p написано на Java, что "как бы намекает" на большое количество поддерживаемых платформ.

Однако, не всё так просто. Под капотом у проекта есть механизм быстрой обработки математики (для криптографии), который работает корректно только при использовании JNI (Java Native Interface) библиотеки для работы с BigInteger — libjbigi.so.

В случае с armv7 всё просто — процессор определяется автоматически, нужная библиотека тоже подключается. А вот пользователи 64битного ARM остаются "не у дел", ибо библиотеки для armv8 в комплекте нет. И i2p ругается (в логах, если что) на тему плохой производительности.

Решить эту проблему можно двумя способами:

  • Дождаться выпуска версии, где библиотека будет в комплекте
  • Собрать самому

Я пошёл вторым путем — по этой ссылке можно скачать архив с собранным бинарником.

Установить его просто — распаковывем, переименовываем libjbigi-linux-armv8-a.so в libjbigi.so и кладём в папку с I2P (прямо в корень, а не в lib). После чего i2p перезапускаем и наблюдаем в логах бодрый рапорт о том, что мол библиотека найдена и загружена.

Сразу хочу сказать — бинарник я не тестировал глубоко, собирался он как статический. И других 64битных армов у меня под рукой нет, так что проверялось всё только на Orange Pi PC2, причём на той же, где и собиралось. Зависимости можно посмотреть командой:

ldd libjbigi.so

Если чего-то не хватает — поставить из пакетов.

Второй момент — он уже про саму Java. Если вдруг сайт Oracle по каким-то причинам не отдает "java под armv8" (ошибка 404), то нужно поставить Headless JDK из пакетов вашей ОС "руками". Уж не знаю, временная ли это ситуация, или пакет недоступен совсем, но мне лично это помогло. Пакет ищется довольно быстро командой:

apt-cache search jdk | grep headless

Hope, it helps.

На корм коту

Магазин открыт!

ещё