... создать файловую систему ufs на geli-устройстве со включенной аутентификацией:
Создаем sparse-file (Вообще - пофиг, но мне нужен именно он, так что...):
dd if=/dev/zero of=~/enc.img bs=1M count=1 seek 1023 conv=sparse
Смонтируем его в систему:
mdconfig -a -t vnode -f ~/enc.img
Создадим на его основе шифрованный криптопровайдер со включенной (Это важно!) data integrity.
geli init -a HMAC/SHA256 -s 4096 /dev/md0
Подключим его к системе:
geli attach /dev/md0.eli
Разметим для дальнейшего использования (В данном случае можно и обойтись, но с физическим устройством - понадобится. Да и просто - культурней):
gpart add -s GPT /dev/md0.eli
gpart create -t freebsd-ufs /dev/md0.eli
Создадим файловую систему на размеченном носителе:
newfs /dev/md0.elip1
И обломаемся об ошибку:
newfs: can't read old UFS1 superblock: read error from block device: Invalid argument
Упс. Беглый google'инг говорит, что бИда происходит из-за того, что блоки, к которым обращается система еще не подписаны geli и надо бы перед форматированием того-этого инициализировать систему с помощью, например
dd if=/dev/random of=/dev/md0.elip1
но делать это в случае sparse-файла как-то не хочется ибо при этом будут потеряны все его преимущества. Ой?
Не-а. Достаточно инициализировать тот сектор, в который будет записан суперблок (Копии пишутся с рандомным смещением в каждую группу цилиндров) с помощью того же dd указав его размер (Не забыть указать тот же самый в newfs - и да, размер блока не должен быть меньше размера сектора, выбранного для geli-провайдера).
dd if=/dev/random of=/dev/md0.elip1 bs=8192 count=1
И вуаля! Работает, причем именно так, как нужно )