Администрирование Debian: How To по миграции на файловую систему LVM с поддержкой шифрованияЦелью данного документа является описание пути перехода на полностью шифрованную файловую
систему LVM (корневая файловая система и пользовательские данные, кроме загрузочного раздела).
Миграция возможна как с обычной LVM, так и с ext3. Все, что вам понадобится - наличие внешнего хранилища.
Отдельно стоит отметить, что данная операция должна проводиться человеком, имеющим некоторый опыт.
ЧАСТЬ 1. Установка необходимого ПО и сохранение текущей системы.
Есть два способа реализации Full Encrypted LVM (далее - FELVM).
a) Debian way (TM), где LVM размещаетя на зашифрованном виртуальном устройстве (cryptsetup).
b) Другой путь, когда LVM создается на физическом устройстве, а затем шифруются логические разделы.
Конечно, я выбираю debian way, хотя никаких определенных причин для этого нет.
В качестве исходных данных у меня имеется /dev/hda1 типа Windows NTFS и несколько других разделов,
тип которых не важен, так как их скоро не останется.
Перед тем, как мы начнем, рекомендую сделать полную копию ваших данных на внешний носитель с помощью CloneZilla,
чтобы потом не иметь бледный вид.
Для начала установим 'cryptsetup'. Также ядро должно ключать образ initrd для загрузки. Если это не так,
установите пакет initramfs-tools. Затем создайте следующий файл в каталоге /etc/initramfs-tools/conf.d:
filename: cryptroot
contents:
target=lukspace,source=/dev/hda3,key=none,lvm=vg-root
Затем выполните команду:
# update-initramfs -u
Она создаст образ initrd, который будет знать, где находятся шифрованные разделы после создания.
Создадим, и это обязательно, tar архив вашей системы на внешний носитель:
# tar cSjf /my/external/storage/sysbackup.tar.bz2 /bin/ /boot/ \
/etc/ /home/ /lib/ /opt/ /root/ /sbin/ /selinux/ /srv/ /usr/ /var/
Если вы хотите повысить скорость выполнения данной операции, уберите флаг 'j' и расширение bz2.
Это позволит сохранить все права доступа, файлы, владельцев файлов и т.д.
Как вы можете заметить, я пропустил каталоги /dev/, /media, /mnt, /proc, /sys, /tmp,
так как они будут вновь созданы на новой системе (кроме /media).
Я подразумеваю, что никаких действий в системе после сохранения не производится -
не открываются консоли и сессии X window, кроме корневой.
Настало время получить данные с внешних хранилищ. Будем считать, что оно примонтировано
в /media/abyss. Конечно, /media так же содержит cdrom и прочие полезные вещи.
# tar cSjf /my/external/storage/databackup.tar.bz2 /media/cdrom /media/whatever /media/...
Все ЗА ИСКЛЮЧЕНИЕМ точки монтирования внешнего хранилища!
Теперь мы защищены от любых ошибок при конфигурировании.
ЧАСТЬ 2. Переформатирование диска и создание структуры FELVM.
Помните: если дела приняли дурной оборот - вы всегда можете восстановиться с помощью clonezilla.
Я использую clonezilla CD для большинства работ, где мне нужен live CD.
Загружаем Clonezilla, настраиваем сеть. Затем в консоли (sudo su) выполняем команды:
# aptitude update && aptitude dist-upgrade
Возможно перед этим вам понадобится выполнить что-то подобное:
# ifconfig eth0 up
# dhclient eth0
После того, как live CD обновит ПО нужно установить следущее:
# aptitude install cryptsetup joe
Joe - мой любимый редактор, поэтому далее мы будем считать, что и ваш тоже.
Очищаем диск!
# cfdisk /dev/hda
и удаляем все разделы за исключением /dev/hda1 (NTFS).
Создаем раздел, с которого будет осуществляться загрузка: /dev/hda2 размером 200 MB.
Затем создаем другой раздел, занимающий все свободное пространство(/dev/hda3).
Его в последствии будет занимать rootfs и данные.
Записываем таблицу разделов на диск и выходим.
Мы все поломали, но не стоит волноваться, все будет восстановлено с tar архивов.
Окончательно удаляем наши данные, заполняя все случайными последовательностями,
заодно проверяя наличие badblock:
# badblocks -s -w -t random -v /dev/hda2
# badblocks -s -w -t random -v /dev/hda3
На выполнение этих команд требуется время, так что будьте терпеливы.
Создаем файловую систему на загрузочном разделе:
# mkfs.ext3 /dev/hda2
Используя cryptsetup создадим большой раздел как устройство dm-crypt. Это очень просто:
# cryptsetup -y -s 256 -c aes-cbc-essiv:sha256 luksFormat /dev/hda3
Я не буду приводить объяснение всех опций, если хотите - посмотрите сами.
Обязательно выберите хорошее ключевое слово, которое вы сможете запомнить.
Позже вы сможете сменить его или сделать несколько ключевых слов.
Подошло время использовать инициализированное пространство:
# cryptsetup luksOpen /dev/hda3 lukspace
Эта команда спросит у вас ранее введенное ключевое слово и сделает доступным /dev/mapper/lukspace.
Это может быть расценено как устройство, готовое принять любой вид данных.
Вы можете форматировать его в ext3 или построить LVM, чем мы сейчас и займемся.
Создаем LVM:
# pvcreate /dev/mapper/lukspace
# vgcreate vg /dev/mapper/lukspace
# lvcreate -L10G -nroot vg
# lvcreate -l 100%FREE -nmyspace vg
Так мы получим логический том LVM /dev/vg/root для корневой файловой системы и /dev/vg/myspace для наших данных.
Это было несложно, не так ли?
Дальше еще проще:
# mkfs.ext3 /dev/vg/root
# mkfs.ext3 /dev/vg/myspace
ЧАСТЬ 3. Восстановление системных файлов и загрузка новой системы.
После того, как вы создадите место для корневой файловой системы, настанет
пора разархивировать туда наши данные.
Сперва создадим точку монтирования, которую назовем /media/rootfs и затем:
# mount /dev/vg/root /media/rootfs
а теперь:
# cd /media/rootfs
# tar xSjf /external_storage/sysbackup.tar.bz2
После чего ждем завершения процесса.
Создаем каталоги, которые не были сархивированы:
# mkdir proc sys media dev tmp mnt
# chmod 1777 tmp
Теперь создаем точку монтирования bootfs и монтируем к ней будущий загрузочный раздел:
# mkdir bootfs
# mount /dev/hda2 bootfs
Затем перемещаем загрузочные файлы из rootfs/boot в bootfs. Теперь /dev/hda2
содержит все необходимые для загрузки файлы. И последнее - изменим файл fstab в rootfs/etc
таким образом, чтобы указать новое устройство /dev/vg/root.
Перезагружаемся. После загрузки grub нажимаем 'e' для редактирования опций ядра и
указания правильного root=..., чтобы машина могла загрузиться.
Хочется надеяться, что LUKS спросит у вас кодовое слово, и все пойдет хорошо!
После того, как вы наиграетесь с вашей зашифрованной системой, отредактируйте /boot/grub/menu.lst
для указания корректного устройства root=... и запустите update-grub.
Giorgos Pallas
URL: http://www.debian-administration.org/articles/577
Обсуждается: http://www.opennet.dev/tips/info/1730.shtml