Также возможно этот способ применим для любых урезанных дистрибьютивов, в т.ч. Live. К Puppy Slacko способ применим до последней (еще не русифицированной) версии, разработчики, раздолбаи, так до сей поры косяк и не поправили
Преамбула
На некоторых дистрибьютивах, при попытке подключения зашифрованного контейнера tcplay/TrueCrypt наблюдается следующая ошибка. tcplay вместо сообщения All ok!
выдает ошибку:device-mapper: reload ioctl on test failed: No such file or directory
При этом в логах, в сообщениях ядра присутствуют следующие записи:Jul 26 23:18:43 puppypc15732 user.err kernel: [ 177.144795] device-mapper: table: 253:0: crypt: Error allocating crypto tfm
Jul 26 23:18:43 puppypc15732 user.warn kernel: [ 177.144798] device-mapper: ioctl: error adding target to table
Это значит, что в системе отсутствуют модули поддержки криптографии, необходимые tcplay либо TrueCrypt (оба используют системные библиотеки поддержки криптоалгоритмов), причем интересно, что в случае с tcplay шифрование проходит нормально, таким образом tcplay работает как настоящий разведчик. :) Шифрует (донесения в Центр), а расшифровать не может.
Если же после установки tcplay при запуске случилась ошибкаtcplay: error while loading shared libraries: libdevmapper.so.2: cannot open shared object file: No such file or directory.
значит, в системе отсутствует поддержка lvm. Как ее установить, читайте здесь.
Попытаемся это починить. Собственно, способов починить есть два:
1. Собрать нужные криптографические модули и загрузить их
2. Пересобрать ядро с поддержкой криптографии (об этом позже).
Рассмотрим первый способ, на примере PuppyRus Slacko 5.5.
Итак, нам понадобятся:
1. Комплект разработчика, поставляемый в виде отдельного sfs-файла. Скачиваем отсюда, отсюда или с зеркал. Необходим файл devx_slacko_5.5.sfs
1.1. Исходники ядра для вашего дистрибьютива. Для Puppy Slacko 5.5. лежат здесь:
1.2. Для версии без PAE: скачать зеркало (mega.nz) зеркало (Google Drive)
Для версии PAE: скачать зеркало (mega.nz) зеркало (Google Drive)
Подключаем скачанные sfs и приступаем:
1. Первым делом запускаем консоль (если не стоит mc, лучше предварительно его установить, и пользоваться им для рутинных операций) и переходим в каталог с исходниками ядра /usr/src/linux
или /lib/modules/XX.XX.XX/source
или /lib/modules/XX.XX.XX/build
. Каталоги source
и build
на самом деле символические ссылки на /usr/src/linux
так что мы все равно придем туда, куда нужно. XX.XX.XX
- это версия ядра дистрибьютива 3.2.33-4g для версии без PAE и 3.4.17 … для PAE-версии.
Внимание! Модули, собранные для одного ядра в большинстве случаев к другому не подойдут, потому исходники для каждого ядра необходимы свои!
Версию ядра можно узнать командой uname -r
2. Далее выполняемmake clean
команда служит для очистки дерева исходников ядра от предыдущих следов экспериментов
3. Копируем конфигурационный файл /etc/modules/DOTconfig-XX.XX-XX-XXXXXXX
в текущий каталог под именем .config
(имя начинается с точки!), заменяем им уже существующий файл.
4. Выполняем команду make menuconfig
На экране должно появиться меню конфигурации ядра.
Поскольку все ядро мы собирать не будем, а соберем только недостающие модули поддержки криптографии, то смело переходим в раздел Cryptographics API
Смотреть картинку.
И выставляем опции, как на нижеприведенных картинках:
Смотреть картинку.
Смотреть картинку.
Смотреть картинку.
[* ] - означает, что модуль будет встроен в ядро (встав на нужный пункт нужно нажать клавишу y)
[M] - что будет собран в виде отдельного модуля ядра *.ko
(клавиша m)
[ ] - модуль при компиляции будет пропущен. (клавиша n)
Поскольку задачи собрать все ядро в данный момент не стоит, то нам достаточно некоторых собранных модулей. Особо следует обратить внимание на то, чтоб были собраны модули поддержки XTS, LRW, CBC, поддержки шифров AES, Serpent и Twofish и поддержки whirlpool, SHA-512 и RIPEMD-160.
Также особое внимание надо обратить на пункты AES cipher algorithms. Первый из них должен быть вкомпилен в ядро [*], а второй (i586) установлен, как модуль [M].
Убрать первый пункт не получается, а для tcplay нужен именно второй модуль, поэтому обойдем это, установив этот модуль как включаемый в ядро.
Если в качестве модуля собрать оба, то при его подключении произойдет конфликт!
5. Выходим из конфигуратора, сохраняем перед выходом файл конфигурации (будет выдан соответствующий запрос) и выполняем следующую последовательность команд:make prepare
make scripts
make modules_prepare
make modules SUBDIRS=crypto
make SUBDIRS=crypto modules_install
6. Копируем все файлы *.ko
из /lib/modules/XX.XX.XX/build
в /lib/modules/XX.XX.XX/kernel/crypto
, существующие заменяем
7. Обновляем зависимости модулей командойdepmod -a
и перезагружаем компьютер (естественно, файл сохранения должен быть создан)
8. Создаем скрипт загрузки модулей и сохраняем его в автозагрузку#!/bin/bash
echo "Loading modules..."
modprobe lrw
modprobe xts
modprobe cbc
modprobe rmd160
modprobe sha256
modprobe wp512
modprobe aes
modprobe serpent
modprobe twofish
modprobe dm-crypt
echo "Complete!"
Скачать с PasteBin
Как вариант, можно указать нужные модули в качестве загружаемых в BootManager (Главное меню --> Система --> BootManager конфигурация загрузки) Добавление нового модуля.
Теперь можно пользоваться tcplay!