- x86_64 GNU/Linux с ядром 5.16.9
- g++ (GCC) 11.2.0
- libfuse-fuse-3.12.0
- wxWidgets-3.2.1
Файл Readme в исходном каталоге содержит определенные требования для правильной сборки пакета. Среди прочего «GNU C++ Compiler 4.0» и «wxWidgets 2.8». В нем ничего не говорится о версии libfuse, но я исходю из справочной системы, что libfuse-fuse_2_9_4 должно подойти.
По моему мнению, TrueCrypt — отличное программное обеспечение, и поэтому я хотел бы перенести его в свою систему разработки. Мое видение и задача — сделать его переносимым и продолжать использовать в современной Linux-системе, такой как Debian GNU/Linux. Поэтому я использую версии пакета, перечисленные выше.
Для этого я настроил драйвер Fuse (FuseService.cpp) для работы с интерфейсом libfuse 3.12.0. Грубо говоря, в некоторых местах пришлось подправить вызовы библиотек в TrueCrypt, например, на «struct Fuse_file_info *fi». К сожалению, я не являюсь продвинутым кандидатом libfuse. Поэтому я использовал примеры библиотеки в качестве подсказки.
Основываясь на том, что мне сказал компилятор, я также изменил незначительные вещи, такие как «auto_ptr», на «unique_ptr».
Также я сравнил с исходным кодом VeraCrypt скомпилировать TrueCrypt. Насколько я могу судить, он компилируется правильно.
Однако при выполнении TrueCrypt возникают проблемы.
- Что-то не так с wxWidgets: я пока откладываю решение этой проблемы, так как могу отключить графический интерфейс с помощью опции -t.
Похоже, проблема с предохранителем. Сообщение об ошибке время от времени меняется, но наиболее стабильным из них является сообщение о «неверной точке монтирования», например: «предохранитель: неверная точка монтирования `q\006\325\001': нет такого файла или каталога».
$> Main/truecrypt -t ~/myfile.tc /media/truecrypt1
Я проверял примеры, поставляемые с libfuse. Насколько я понимаю, мои настройки соответствуют примерам. Пример «привет» отлично работает на моем компьютере.
Я понимаю, что обмен интерфейсом и сервером TC осуществляется по конвейеру. Сужая проблему, я оказываюсь в CoreService. При получении ответа на запрос на монтирование тома, т.е. выполнении строки
Core/Unix/CoreService.cpp:293 : ответ auto_ptr (GetResponse());
, исключение неправильной точки монтирования извлекается в
Core/Unix/CoreService.cpp:33 : deserializedException->Throw();
.
Я понятия не имею, как сузить проблему и где в канале выполнения между отправкой запроса на монтирование тома и получением ответа на него фактически создается исключение.< /p>
Есть ли кто-нибудь, кто мог бы подсказать мне, как правильно применять libfuse? Любая помощь будет очень признательна. Большое спасибо!
Подробнее здесь: https://stackoverflow.com/questions/792 ... ount-point
Мобильная версия