دو روش رایج برای رمز‌نگاری پارتیشن‌ها geli و gdbe هستند. در این قسمت نحوه رمز‌نگاری پارتیشن‌ها با استفاده از geli را فرا خواهیم گرفت.

برای استفاده از geli، باید آن را در هسته فعال کنید. اگر از یک هسته سفارشی استفاده می‌کنید، مطمئن شوید که خطوط زیر در فایل پیکربندی هسته قرار دارد:

options GEOM_ELI
device crypto

لطفا مقاله کامپایل هسته را برای اطلاعات بیشتر ببینید.

اما می‌توانید به جای کامپایل کردن هسته جدید از ماژول‌ها استفاده کنید. این خط را به فایل /boot/loader.conf اضافه کنید:

geom_eli_load="YES"

geli  از یک کلید تحت عنوان Master key برای رمز‌نگاری پارتیشن‌ها استفاده می‌کند. این کلید در داخل پارتیشن ذخیره می‌شود. برای محافظت از این کلید، باید آن را با استفاده از یک کلید دیگر رمز‌نگاری کرد که به آن کلید ثانویه می‌گویند. علاوه بر این کلید ثانویه، Master Key توسط یک passphrase هم محافظت می‌شود.

ابتدا این کلید ثانویه را تولید می‌کنیم:

# dd if=/dev/random of=/root/da2.key bs=64 count=1

دستور بالا یک فایل به اندازه ۶۴ بایت با اطلاعات تصادفی تولید خواهد کرد. ما از همین فایل به عنوان کلید ثانوی استفاده می‌کنیم. با استفاده از این کلید ثانویه می توانیم Master key را رمزنگاری کنیم. ابتدا باید پارتیشن مورد نظر را برای رمزنگاری آماده کنیم:

# geli init -s 4096 -K /root/da2.key /dev/da2
Enter new passphrase: 
Reenter new passphrase:

با اجرای دستور بالا، Master key با استفاده از کلید ثانویه که قبلاً ایجاد کردیم رمز‌نگاری شده و سپس در داخل پارتیشن ذخیره می‌شود. گزینه ‎-s‎ اندازه سکتور‌ها را مشخص می‌کند که برای بدست آوردن کارآیی بیشتر از سکتور‌های ۴ کیلوبایتی استفاده کردیم.

کلید ثانویه را در جای امنی نگه دارید. چون همیشه در هنگام mount کردن پارتیشن به آن احتیاج خواهیم داشت. در مرحله بعد باید پارتیشن را attach کنیم:

geli attach -k /root/da2.key /dev/da2
Enter passphrase:

با اجرای دستور بالا، پارتیشن مورد نظر علاوه بر /dev/da2 در مسیر /dev/da2.eli هم در دسترس خواهد بود. از این به بعد باید تمامی عملیات را بر روی /dev/da2.eli انجام دهیم.

# ls /dev/da2* 
/dev/da2  /dev/da2.eli

حالا باید این پارتیشن را قالب‌بندی کنیم:

# dd if=/dev/random of=/dev/da2.eli bs=1m 
# newfs /dev/da2.eli 
# mount /dev/da2.eli /private

با اجرای دستور df می‌توانید ببینید که این پارتیشن رمز‌نگاری شده بر روی سیستم سوار شده است:

# df -H 
Filesystem     Size   Used  Avail Capacity  Mounted on 
/dev/ad0s1a    248M    89M   139M    38%    / 
/devfs         1.0K   1.0K     0B   100%    /dev 
/dev/ad0s1f    7.7G   2.3G   4.9G    32%    /usr 
/dev/ad0s1d    989M   1.5M   909M     0%    /tmp 
/dev/ad0s1e    3.9G   1.3G   2.3G    35%    /var 
/dev/da2.eli   150G   4.1K   138G     0%    /private

حالا می‌توانید مانند یک فایل‌سیستم معمولی از آن استفاده کنید و اطلاعات مورد نظر خود را در آن کپی کنید. بعد از اینکه کارتان با پارتیشن مورد نظر تمام شد، باید آن را unmount کرده و از دسترس خارج کنیم:

# umount /private 
# geli detach da2.eli

می‌توانید این پارتیشن رمز‌نگاری شده را به صورت خودکار و در هنگام بوت شدن سیستم mount کنید. کافی است این خطوط را به فایل /etc/rc.conf اضافه کنید:

geli_devices="da2" 
geli_da2_flags="-p -k /root/da2.key"

اگر در مرحله geli init از گزینه ‎-P‎ استفاده کرده باشید، geli passphrase را از شما سؤال نخواهد کرد.