ZFS-Root-Partition unter FreeBSD 9
Mit der folgenden Beschreibung lässt sich FreeBSD 9 komplett inklusive ZFS-Root-Partition normal aber auch als Mirror (Raid-1) installieren.
Zunächst wird natürlich ein Boot-Medium benötigt. Ob via CD/DVD, Memory-Stick, PXE, oder Raritan eRic, die folgenden Schritt sind die gleichen.
1. FreeBSD 9 starten
Es reicht die Boot-only Version. Nach dem erfolgreichen Start wird <Shell> oder <Live CD> gewählt. Bis dem BSD Installer <Install> lässt sich derzeit noch kein ZFS verwalten.
Eine deutsche Tastatur kann man schnell mit dem Befehl
kbdmap
auswählen.
Sollten eine oder alle Festplatten bereits partitioniert sein, müssen diese Informationen gelöscht werden. Diese gelingt für ada0 z.B. mit
dd if=/dev/zero of=/dev/ada0 bs=1024 count=1
Ansonsten meldet gpart bereits nach dem ersten Befehl
gpart: geom 'ada0': File exists
2. Partition und Bootcode
Eine SATA-Platte ada0 wird mit folgenden Schritten vorbereitet:
gpart create -s gpt ada0 gpart add -b 34 -s 94 -t freebsd-boot ada0 gpart add -t freebsd-zfs -l disk0 ada0 gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
Für einen Spiegel (Raid-1) sind diese Schritte auch für die zweite SATA-Festplatte ada1 nötig:
gpart create -s gpt ada1 gpart add -b 34 -s 94 -t freebsd-boot ada1 gpart add -t freebsd-zfs -l disk1 ada1 gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1
ZFS Pool anlegen
Warnungen während des Mountens können ignoriert werden.
Für eine einzelne Festplatte reicht zum Anlegen des ZFS Pools der Befehl
zpool create zroot /dev/gpt/disk0
Einen Mirror (Raid 1) legt man mit
zpool create zroot mirror /dev/gpt/disk0 /dev/gpt/disk1
an. Die Warnung cannot mount 'zroot': failed to create mountpoint kann ignoriert werden. Dies wird manuel im nächsten Schritt erledigt.
4. Einrichten der bootfs Eigenschaften, Prüfsummen und Mountpoints
zpool set bootfs=zroot zroot zfs set checksum=fletcher4 zroot zfs set mountpoint=/mnt zroot
5. Exportieren und Importieren des zroot.cache
zroot.cache wird nach /var/tmp exportiert:
zpool export zroot zpool import -o cachefile=/var/tmp/zpool.cache zroot
Anlegen des Filesystems
Die richtige Wahl bleibe jedem selbst überlassen.
zfs create zroot/usr zfs create zroot/usr/home zfs create zroot/var zfs create -o exec=on -o setuid=off zroot/tmp zfs create -o setuid=off zroot/usr/ports zfs create -o exec=off -o setuid=off zroot/usr/src zfs create -o exec=off -o setuid=off zroot/var/db zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log zfs create -o exec=off -o setuid=off zroot/var/run zfs create -o exec=on -o setuid=off zroot/var/tmp
7. Swap
Für Swap-Space werden Prüfsummen deaktiviert. Die 4GB sollten natürlich auf das System abgestimmt werden.
zfs create -V 4GB zroot/swap zfs set org.freebsd:swap=on zroot/swap zfs set checksum=off zroot/swap
8. Links und Rechte
cd /mnt chmod 1777 tmp ln -s usr/home . chmod 1777 var/tmp
9. FreeBSD 9 installieren
Ein Wechsel zur Standard Shell erleichtert den Schleifen-Syntax.
sh
cd /mnt/var/tmp for f in base.txz lib32.txz kernel.txz doc.txz; do ftp://ftp2.de.freebsd.org/pub/FreeBSD/releases/amd64/9.0-RELEASE/$f done
holen. Natürlich sind auch andere Server vorhanden und an Stelle des FQDN kann auch die IP benutzt werden, wenn die Namensauflösung nicht richtig eingerichtet ist.
Doch nun zur eigentlichen Installation
export DESTDIR=/mnt for f in base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz;do (cat $f | tar --unlink -xvpJf - -C ${DESTDIR:-/}); done
10. Kopieren des Zpool Caches
Unscheinbarer, aber wichtiger Schritt!
cp /var/tmp/zpool.cache /mnt/boot/zfs/
11. Boot Konfiguration
Dem System muss nun noch mitgeteilt werden, dass von ZFS gebootet werden soll:
echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf echo 'zfs_load="YES"' >> /mnt/boot/loader.conf echo 'vfs.root.mountfrom="zfs:zroot"' >> /mnt/boot/loader.conf touch /mnt/etc/fstab
12. Alles Unmounten und Mountpoints reparieren
zfs umount -af zfs set mountpoint=legacy zroot zfs set mountpoint=/tmp zroot/tmp zfs set mountpoint=/usr zroot/usr
13. Ende
Das System kann nun neu gestartet werden. Danach sollten Root-Passwort gesetzt und ein paar Dienste konfiguriert und gestartet/ausgeführt werden (ssh, nfs, csup). Mit portsnap lassen sich dann die Ports auf den neusten Stand bringen und weiterer Installations- und Konfigurationsarbeit steht nichts mehr im Weg.
Außerdem sollte unbedingt kontrolliert werden, ob das System auch von beiden Platten starten kann.
Kommentare
Michael Sommer (nicht überprüft)
5. Oktober 2012 - 20:46
Permanenter Link
Hallo, hat super geklappt!
Hallo, hat super geklappt! Vielen Dank. Jetzt mal sehen was ich mit meiner FreeBSD Installation anfange :)
stefan
1. Januar 2013 - 18:51
Permanenter Link
Nachdem eine Festplatte
Nachdem eine Festplatte komplett ausgefallen ist, wurde eine Platte gleichen Typs eingebaut. Nach der gpart-Prozedur - in diesem Fall für /dev/ada1
Konnte das RAID problemlos mit dem Kommando
wiederhergestellt werden.
aurikus (nicht überprüft)
7. September 2013 - 22:41
Permanenter Link
Könnte man bitte die
Könnte man bitte die Anleitung um Bemerkungen ergänzen welche Schritte notwendig bzw nicht notwendig sind wenn man von einer vollständigen Installations-DVD installiert ? Dann sollte ja der Punkt 9 zum Teil entfallen, oder ?
Ansonsten eine geniale Anleitung, auch für mich als FreeBSD Neuling absolut verständlich und nachvollziehbar.
stefan
8. September 2013 - 13:27
Permanenter Link
Richtig. Das Kopieren der
Richtig. Das Kopieren der Dateien könnte via Sysinstall klappen.
Alternativ sollten die Archive *.tbz auf dem Installations-Medium im Verzeichnis /usr/freebsd-dist vorhanden sein.
Zur Zeit kann ich das leider nicht prüfen