notesalexp.org

мая 19, 2016

Сборка truecrypt в Debian/Ubuntu.

Эта статья написана для тех кто не хочет использовать сторонние сборки с различных репозиториев, или собранные сторонними людьми.

Итак приступим:

Нам необходимо скачать исходные коды TrueCrypt. Так как разработка официально закрыта и их нельзя скачать с http://www.truecrypt.org/. Нам придется их качать с других мест. Для примера приведу несколько:

  1. https://github.com/DrWhax/truecrypt-archive
  2. https://www.grc.com/misc/truecrypt/truecrypt.htm

Скачиваем файл TrueCrypt 7.1a Source.tar.gz прежде чем распаковать его, мы можем проверить цифровую подпись и контрольную сумму файла.

SHA256
=======
e6214e911d0bbededba274a2f8f8d7b3f6f6951e20f1c3a598fc7a23af81c8dc  TrueCrypt 7.1a Source.tar.gz
3de1be6ff4793c5d7269384a5739bb4c985068b15978d17d5bd71403e0f02177  TrueCrypt 7.1a Source.tar.gz.sig

SHA1
=======
d43e0dbe05c04e316447d87413c4f74c68f5de24  TrueCrypt 7.1a Source.tar.gz
caeb2bb1d5605d1fc960e936a06e52611033788c  TrueCrypt 7.1a Source.tar.gz.sig

MD5
=======
102d9652681db11c813610882332ae48  TrueCrypt 7.1a Source.tar.gz
5bca3d15b35d0725ff3317e568062ad8  TrueCrypt 7.1a Source.tar.gz.sig

Так как в Debian GNU/Linux начиная с версии 8 и в Ubuntu начиная с версии 16.04 не предоставляется библиотека wxWidgets версии 2.8 необходимая для сборки TrueCrypt. Заходим на сайт https://www.wxwidgets.org/downloads/ качаем исходники версии 2.8.12:

wget https://github.com/wxWidgets/wxWidgets/releases/download/v2.8.12/wxWidgets-2.8.12.tar.gz

Распакуем архивы в любую директорию например /home/user/build

Так же нам понадобится заголовочный файлы PKCS#11

cd /home/user/build
mkdir pkcs11
cd pkcs11
wget ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20/pkcs11.h
wget ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20/pkcs11f.h
wget ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20/pkcs11t.h

Удовлетворим зависимости для сборки

sudo aptitude install build-essential libgtk2.0-dev libfuse-dev fuse-utils mount dmsetup libsm6  nasm pkg-config libsm-dev

Переходим в папку /home/user/build/truecrypt-7.1a-source

Переносим исходники wxWidgets и заголовочный файлы PKCS#11 в /home/user/build/truecrypt-7.1a-source

mv ../wxWidgets-2.8.12 .
mv ../pkcs11 .

Теперь самое интересное TrueCrypt не может монтировать разделы, если его собрать с помощью gcc-5.x. Связанно с изменением C++ ABI.

Проверяем версию gcc:

gcc --version                                                                                                                       
gcc (Debian 4.9.2-10) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Если у нас в системе версия gcc 5.x. и выше, ставим gcc 4.9 и экспортируем переменные CC и CXX

sudo aptitude install gcc-4.9 g++-4.9
export CC=gcc-4.9
export CXX=g++-4.9

Теперь определим еще две переменные PKCS11_INC и WX_ROOT

export PKCS11_INC=/home/user/build/truecrypt-7.1a-source/pkcs11
export WX_ROOT=/home/user/build/truecrypt-7.1a-source/wxWidgets-2.8.12

Для сборки нам необходимо подправить строку 108 в файле Main/Main.make, что бы линковка завершилась без ошибок, привести к такому виду

    $(CXX) -o $(APPNAME) $(LFLAGS) $(OBJS) $(LIBS) $(FUSE_LIBS) $(WX_LIBS) $(EXTRA_LIBS)

Определим переменную EXTRA_LIBS

export EXTRA_LIBS="-lX11 -ldl"

Собираем библиотеку wxWidgets

make wxbuild

Собираем TrueCrypt

make WXSTATIC=1

Копируем truecrypt в /usr/local/bin

sudo cp Main/truecrypt /usr/local/bin/

Запускаем и пользуемся