Grundinstallation

Die Installation selbst ist nicht schwierig, allerdings sollte man sich vorab Gedanken über die Partitionierung machen, um in Zukunft nicht in Probleme zu laufen.

Da die Maschine im Rack steht, habe ich nur Remote-Zugriff darauf.

Somit habe ich mich entschlossen das Basissystem unverschlüsselt laufen zu lassen, der Bereich für die Jails ist verschlüsselt.

Hintergrund

Es sind 2 mal 3 TB Festplatten verbaut - somit lasse ich alles in einem RAID 1 laufen.

Am Ende soll pro Festplatte folgendes Partitionsschema entstehen:

PartitionenGrößeTyp
boot0 boot1512Kboot2x einzeln
sys0 sys180Gzfszfs mirror
swap0 swap116Gswapgmirror
jail0 jail1Restzfszfs mirror

Starten

Über die Remote Console (oder auf welchen Weg auch immer) den offiziellen FreeBSD Installer starten…

Wie gehabt installieren, bis man zum Schritt “Partitionierung” kommt. Dort Shell Partitioning auswählen.

Wenn man mit der Partitionierung in der Shell fertig ist, sollte unter /mnt das Root Datei System eingebunden sein.

Konfiguration

Unter /tmp/bsd_install_… finden sich Templates, die später als Konfiguration verwendet werden.

Benötigte Kernel-Module in der /tmp/bsd_install_boot/loader.conf:

zfs_load="YES"
geom_mirror_load="YES"
fdescfs_load="YES"
nullfs_load="YES"

geom_eli_load="YES"
crypto_load="YES"
aesni_load="YES"

Dann eine fstab unter /tmp/bsd_install_etc/fstab:

/dev/mirror/swap.eli    none    swap    sw      0 0

Als letztes die /tmp/bsd_install_etc/rc.conf:

zfs_enable="YES"

Später brauchen wir noch ein paar Kernel-Module. Jetzt ist ein guter Zeitpunkt diese zu laden:

kldload zfs
kldload geom_mirror
kldload geom_eli
kldload crypto
kldload aesni

Partitionierung

Die beiden Festplatten wurden als /dev/ada0 und /dev/ada1 erkannt.

Als erstes wird die Partitionstabelle gelöscht:

dd if=/dev/zero of=/dev/ada0 bs=512 count=1
dd if=/dev/zero of=/dev/ada1 bs=512 count=1

Dann eine gpt Partitionstabelle anlegen:

gpart create -s gpt ada0
gpart create -s gpt ada1

Jetzt erstellen wir die Partitionen, wie oben in der Tabelle:

gpart add -s 512K -a 4k -t freebsd-boot -l boot0 ada0
gpart add -s 512K -a 4k -t freebsd-boot -l boot1 ada1

gpart add -s 80G -a 4k -t freebsd-zfs -l sys0 ada0
gpart add -s 80G -a 4k -t freebsd-zfs -l sys1 ada1

gpart add -s 16G -a 4k -t freebsd-swap -l swap0 ada0
gpart add -s 16G -a 4k -t freebsd-swap -l swap1 ada1

gpart add -a 4k -t freebsd-zfs -l jail0 ada0
gpart add -a 4k -t freebsd-zfs -l jail1 ada1

Es sollten unter /dev/gpt nun boot0, boot1, jail0, jail1, swap0, swap1, sys0 und sys1 erscheinen.

Jetzt beide Festplatten parallel als Bootbar markieren - damit, falls eine Platte ausfällt, noch von der anderen gebootet werden kann:

gpart set -a bootme -i 2 ada0
gpart set -a bootme -i 2 ada1

Jetzt den System-Pool anlegen, zur Installation wird dieser unter /mnt gemountet:

zpool create -R /mnt -O mountpoint=none system mirror gpt/sys0 gpt/sys1

zfs set compression=lz4 system
zfs set checksum=fletcher4 system

zfs create -o mountpoint=/ system/root
zfs create system/root/tmp
zfs create system/root/usr
zfs create system/root/usr/home
zfs create system/root/usr/local
zfs create system/root/usr/obj
zfs create system/root/usr/ports
zfs create system/root/usr/src
zfs create system/root/var
zfs create system/root/var/cache
zfs create system/root/var/db
zfs create system/root/var/log

zpool set bootfs=system/root system

Jetzt den Boot-Code installieren:

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1

Swap

Für das Swap kommt ein geom mirror zum Einsatz:

gmirror label swap gpt/swap0 gpt/swap1

(Siehe dazu auch die /tmp/bsd_install_etc/fstab)

Jetzt ist alles fertig, somit können wir mit exit die Shell beenden, und die Installation fertig stellen.

Nach Daumen drücken und einem Neustart geht es weiter mit dem anlegen eines Jail-Pools.