Шифрование корневого раздела dm-crypt на Getnoo
Взято: http://wiki.enchtex.info/howto/gentoo/gentoo_dmcrypt_root
Модуль dm-crypt включен в ядро >=2.6.4
Статья рассматривает основные моменты установки и настройки Gentoo, на примере переноса рабочей системы на новый диск с зашифрованным корнем.
С небольшими изменениями, этой статьей, можно так же руководствоваться при установке с нуля.
Дано:
-
/dev/sda - текущей диск на котором установлена Gentoo.
-
/dev/sdb - новый чистый диск, который только что воткнули.
-
Ввод пароля будет осуществятся с клавиатуры при включении компьютера.
Так же к ознакомлению : Шифрование разделов dm-crypt на Getnoo
Подготовка
Диск
Разобьем диск следующим образом:
Имя Флаги Тип раздела Тип ФС [Метка] Размер (МБ) ---------------------------------------------------------------- sdb1 Загрузочный Основной Linux 509,97 # Загрузочный ext2 sdb2 Основной Linux 3997,49 # SWAP sdb3 Основной Linux 100002,96 # Зашифрованный корень sdb4 Основной Linux 395597,46 # Не зашифрованный раздел для файл помойки
Утилиты и модули
Понадобятся cryptsetup
emerge sys-fs/cryptsetup -av
Модуль dm_crypt
modprobe dm_crypt
Если данного модуля у вас нету, то включите его я ядре
Настройки ядра
Device Drivers ---> [*] Block devices ---> [*] Multiple devices driver support (RAID and LVM) ---> Device mapper supportCrypt target support -*- Cryptographic API ---> SHA224 and SHA256 digest algorithm SHA384 and SHA512 digest algorithms
Пересобрать ядро и перезагрузить
reboot
Проверить
modprobe dm_crypt
Форматирование
Создание шифрованного раздела
cryptsetup luksFormat /dev/sdb3
Подключение
cryptsetup luksOpen /dev/sdb3 root
Форматирование
mkfs.ext2 /dev/sdb1 mkswap /dev/sdb2 mkfs.ext3 -j /dev/mapper/root
Перенос системы
Копирование
mkdir /tmp/root mount /dev/mapper/root /tmp/root/ mkdir /tmp/root/boot mount /dev/sdb1 /tmp/root/boot/
Скопировать корень системы на новый диск
rsync -AaHSxv / /tmp/root/
Копирование с ключом x, это значит, содержимое каталогов примантированных в текущей момент к корню не будет скопировано в корень новой системы.
Будьте внимательны если /usr /home и т.п. каталоги у вас примантированны с других разделов.
Папка /tmp/root/dev/ сейчас пуста, необходимо создать устройства
mknod /tmp/root/dev/console -m 0600 c 5 1 mknod /tmp/root/dev/null -m 0666 c 1 5
Ядро новой системы
mount -t proc none /tmp/root/proc/ mount -o bind /dev/ /tmp/root/dev/ chroot /tmp/root/ /bin/bash
env-update && source /etc/profile
Настройки ядра будут немного отличаться:
-
Все модули должны быть включены в само ядро
-
Для возможности загрузиться, необходим образ initramfs, для этого нам и нужна утилита genkernel.
Установить
emerge sys-kernel/genkernel -av
Настроить
/etc/genkernel.conf
... SAVE_CONFIG="yes" LUKS="yes" DISKLABEL="yes"
cd /usr/src/linux cp .config .config_my genkernel --kernel-config=./.config_my --menuconfig all
Настройки ядра
General setup ---> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support Device Drivers ---> Generic Driver Options ---> [*] Maintain a devtmpfs filesystem to mount at /dev [*] Automount devtmpfs at /dev, after the kernel mounted the rootfs [*] Block devices ---> Loopback device support Cryptoloop Support RAM block device support [*] Multiple devices driver support (RAID and LVM) ---> Device mapper supportCrypt target support -*- Cryptographic API ---> -*- CBC support SHA224 and SHA256 digest algorithm SHA384 and SHA512 digest algorithms AES cipher algorithms File systems ---> Second extended fs support
После сборки ядра должны появиться файлы
gentoo linux # ls -la /boot/ итого 7319 drwxr-xr-x 4 root root 1024 Сен 7 13:44 . drwxr-xr-x 21 root root 4096 Сен 7 10:12 .. -rw-r--r-- 1 root root 1676834 Сен 7 16:19 initramfs-genkernel-x86_64-2.6.38-gentoo-r6 -rw-r--r-- 1 root root 3656720 Сен 7 16:19 kernel-genkernel-x86_64-2.6.38-gentoo-r6 -rw-r--r-- 1 root root 2107782 Сен 7 16:19 System.map-genkernel-x86_64-2.6.38-gentoo-r6
/etc/kernels/kernel-config-x86_64-2.6.38-gentoo-r6
и будет использовать его по умолчанию, поэтому в дальнейшем достаточно команды
genkernel --menuconfig all
GRUB
emerge sys-boot/grub -av
Установка загрузчика на sdb (это hd1)
grub >root (hd1,0) >setup (hd1) >quit
Посмотрим UUID
gentoo linux # blkid /dev/sdb1: UUID="3ba6aaa8-c58b-48d7-a8eb-9a3062bf7514" TYPE="ext2" /dev/sdb2: UUID="4bce9506-2067-4642-878a-f13a36077179" TYPE="swap" /dev/sdb3: UUID="66482f3a-d8e4-47a0-8385-6b0a1ca9aefb" TYPE="crypto_LUKS" # crypt_root /dev/mapper/root: UUID="24222a99-f949-4e6c-9c9e-b1c73f1bf794" TYPE="ext3" # real_root
Настройка
/boot/grub/menu.lst
title Gentoo Linux 2.6.38-r6 root (hd1,0) kernel /boot/kernel-genkernel-x86_64-2.6.38-gentoo-r6 crypt_root=UUID="66482f3a-d8e4-47a0-8385-6b0a1ca9aefb" real_root=UUID="24222a99-f949-4e6c-9c9e-b1c73f1bf794" root=/dev/ram0 initrd /boot/initramfs-genkernel-x86_64-2.6.38-gentoo-r6 # Или так #title Gentoo Linux 2.6.38-r6 #root (hd1,0) #kernel /boot/kernel-genkernel-x86_64-2.6.38-gentoo-r6 crypt_root=/dev/sdb3 real_root=/dev/mapper/root root=/dev/ram0 udev #initrd /boot/initramfs-genkernel-x86_64-2.6.38-gentoo-r6
genkernel >=3.4.4
Now, you use crypt_root=/dev/blah instead of real_root=luks:/dev/blah.
FSTAB
/etc/fstab
... # /boot = /dev/sdb1 UUID="3ba6aaa8-c58b-48d7-a8eb-9a3062bf7514" /boot ext2 noauto,noatime 1 2 # / = /dev/mapper/root UUID="24222a99-f949-4e6c-9c9e-b1c73f1bf794" / ext3 noatime 0 1 # swap = /dev/sdb2 UUID="4bce9506-2067-4642-878a-f13a36077179" none swap sw 0 0
Завершение
Выход из виртуального окружения
exit
Размонтирование
cd / umount /tmp/root/dev/ umount /tmp/root/proc/ umount /tmp/root/boot/ umount /tmp/root/
Перезагрузка
reboot
Не забыть в BIOS выбрать загрузку с диска sdb.