Установка FreeBSD 7.0 на шифрованную файловую систему


Идея заключается в том, чтобы установить ОС на ФС, зашифрованную средствами самой ОС.

ВАЖНО: даная статья не претендует на 100% правильность решения поставленной задачи.

Имеется ноут ASUS X50V с 80Гб винтом (ad4), флешка KINGSTON 2Гб, 3 CD FreeBSD 7.0, 1 CD LiveFS FreeBSD 7.0 и Очень большое желание :)

Под рабочей ОС форматирую флешку (UFS без SoftUpdate) и копирую на нее содержимое 3-х дисков. В результате получится такое дерево каталогов

satellite# ls /mnt/flash
7.0-RELEASE
packages

Тем, у кого есть два привода CD/DVD такого делать не нужно. Ето обусловлено тем, что установка будет идти с CD LiveFS FreeBSD 7.0, а нужные пакеты на ходятся на других дисках.

Загружаемся с LiveFS. С помощью sysinstall разбиваем ad4 на два слайса ad4s1(512Mb) и ad4s2( 75Gb), делаем загрузочном ad4s1 (s), сохраняем изменения (w), выходим(q), выбираем Standart(No BootManager).

Выходим в осоновное меню sysinstall, переходим на консоль (Fixit -> CD/DVD)

Замечание: разбивку можна сделать и с помощью fdisk, но у меня не получилось :(

Создаем сим линки:

Fixit# ln -s /dist/lib /lib
Fixit# ln -s /dist/boot/kernel /boot/modules

Загружаем модуль geli:

Fixit# kldload geom_eli

Шифруем ad4s2

Fixit# geli init -b -v -e camellia -l 256 /dev/ad4s2

Подключаем ad4s2:

Fixit# geli attach /dev/ad4s2

Если в /dev появился ad4s2.eli значит все OK

Создаем на ad4s1 раздел

Fixit# bsdlabel -w /dev/ad4s1
Fixit# bsdlabel -e /dev/ad4s1

Фоматируем ad4s1a:

Fixit# newfs -O2 /dev/ad4s1a

Монтируем в /mnt/boot

Fixit# mkdir /mnt/boot
Fixit# mount -t ufs -o rw /dev/ad4s1a /mnt/boot

Разбиваем ad4s2.eli:

Fixit# bsdlabel -w /dev/ad4s2.eli
Fixit# bsdlabel -e /dev/ad4s2.eli

В итоге:

ad4s2.elia /
ad4s2.elib swap
ad4s2.elid /var
ad4s2.elie /tmp
ad4s2.elif /usr
ad4s2.elig /home

Форматируем разделы:

Fixit# newfs -O2 /dev/ad4s2.elia
Fixit# newfs -U -O2 /dev/ad4s2.elid
Fixit# newfs -U -O2 /dev/ad4s2.elie
Fixit# newfs -U -O2 /dev/ad4s2.elif
Fixit# newfs -U -O2 /dev/ad4s2.elig

Далее монтируем ad4s2.elia в /mnt/crypt

Fixit#mount -t ufs -o rw /dev/ad4s2.elia /mnt/crypt

Создаем точки монтирования остальных ФС:

Fixit# mkdir /mnt/crypt/home
Fixit# mkdir /mnt/crypt/usr
Fixit# mkdir /mnt/crypt/var
Fixit# mkdir /mnt/crypt/tmp

Монтируем:

Fixit# mount -t ufs -o rw /dev/ad4s2.elig /mnt/crypt/home
Fixit# mount -t ufs -o rw /dev/ad4s2.elif /mnt/crypt/usr
Fixit# mount -t ufs -o rw /dev/ad4s2.elie /mnt/crypt/tmp
Fixit# mount -t ufs -o rw /dev/ad4s2.elid /mnt/crypt/var

Подключаем флешку в /mnt/flash:

Fixit# mkdir /mnt/flash
Fixit# mount -t ufs -o ro /dev/da0s1a /mnt/flash

Устанавливаем переменную DESTDIR:

Fixit# export DESTDIR=/mnt/crypt

Устанавливаем базовую систему с /mnt/flash/7.0-RELEASE:

Fixit# cd /mnt/flash/7.0-RELEASE/base
Fixit# ./install.sh

Устанавливаем ядро:

Fixit# cd /mnt/flash/7.0-RELEASE/kernels
Fixit# ./install.sh GENERIC

Устанавливаем остальные компоненты: src proflibs ports manpages info games doc dict catpages.

Делаем доступным ядро:

Fixit# rmdir /mnt/crypt/boot/kernel
Fixit# rmv /mnt/crypt/boot/GENERIC /mnt/crypt/boot/kernel
Fixit# cp -Rpv /mnt/crypt/boot /mnt/boot

Вклчаем поддержку geom_eli при загрузке:

Fixit# ee /mnt/boot/boot/loader.conf
geom_eli_load="YES"
Fixit# cp /mnt/boot/boot/loader.conf /mnt/crypt/boot/loader.conf

Делаем fstab:

Fixit# mkdir /mnt/boot/etc
Fixit# mkdir /mnt/crypt/cdrom
Fixit# mkdir /mnt/crypt/boot.1
Fixit# ee /mnt/boot/etc/fstab

/dev/ad4s2.elib none swap sw 0 0
/dev/ad4s2.elia / ufs rw 1 1
/dev/ad4s2.elie /tmp ufs rw 2 2
/dev/ad4s2.elid /var ufs rw 2 2
/dev/ad4s2.elif /usr ufs rw 2 2
/dev/ad4s2.elig /home ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
/dev/ad4s1a /boot.1 ufs rw 2 2

Fixit# cp /mnt/boot/etc/fstab /mnt/crypt/etc/fstab

ВСЕ!!! перезагружаемся

Заключение:
Если есть проблемы с вводом пароля при загрузке, надо добавить в:
/boot/device.hints строчку

hint.kdbmux.0.disabled="1"

а в /boot/loader.conf

kern.geom.eli.visible_passphrase=1

За основу был взят материал с сайта http://www.wanda25.de/geli.html

Обновлено: 12.03.2015