Der aktuelle 9.0 Release von FreeBSD unterstützt im mitgelieferten curses-Installer (bsdinstall) leider immer noch nicht die Auswahl des Dateisystems zfs als root-Dateisystem. Das Prozedere der manuellen Installation ist in einigen Punkten durch die neue Installer-/Live-CD um Einiges einfacher geworden. Dabei bin ich nach diesem Howto vorgegangen, welches ich hier quasi nur für den deutschsprachigen Raum und zur eigenen Referenz wiedergebe:
1. Vom FreeBSD9 Installationmedium von CD oder USB-Stick booten und „LIVE-CD“ auswählen
2. Erstellen der notwendigen Partitionen auf den HDDs und Hinzufügen des ZFS Bootcodes
Diese Schritte für jede weitere Festplatte wiederholen (ada0, ada1, ada2 …)
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
3. Den ZFS pool erstellen
(Warnungen zum Mounten können ignoriert werden)
Installation auf einer HDD (wie in meinem Fall z. B. mit einem LVM-Volume auf dem Linux RAID1 des KVM Hypervisors):
zpool create zroot /dev/gpt/disk0 #-f falls gemeckert wird, wegen etwaiger vorhandener Daten, forcieren
Installation auf einem Mirror-Setup mit 2 HDDs:
zpool create zroot mirror /dev/gpt/disk0 /dev/gpt/disk1
Installation auf einem raidz Setup (ähnlich Raid5) mit mind. 3 HDDs:
zpool create zroot raidz /dev/gpt/disk0 /dev/gpt/disk1 /dev/gpt/disk2
Installation auf einem raidz2 Setup (ähnlich Raid6) mit mind. 3 HDDs:
zpool create zroot raidz2 /dev/gpt/disk0 /dev/gpt/disk1 /dev/gpt/disk2 /dev/gpt/disk3
4. Einstellen der bootfs Eigenschaften, Prüfsummen und Mountpoints
zpool set bootfs=zroot zroot zfs set checksum=fletcher4 zroot zfs set mountpoint=/mnt zroot
5. An diesem Punkt den Pool ex- und wieder importieren unter Beibehaltung des zroot.cache in /var/tmp
zpool export zroot zpool import -o cachefile=/var/tmp/zpool.cache zroot
6. Erstellen der Dateisysteme
(Hier kann man natürlich improvisieren)
zfs create zroot/usr zfs create zroot/home zfs create zroot/var zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp zfs create -o compression=lzjb -o setuid=off zroot/usr/ports zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash zfs create -o exec=off -o setuid=off zroot/var/db zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg zfs create -o exec=off -o setuid=off zroot/var/empty zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail zfs create -o exec=off -o setuid=off zroot/var/run zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp
7. Swap Speicher anlegen und Prüfsummen deaktivieren
(hier werden 4GB Swap erstellt, je nach eigenen Bedürfnissen anpassen)
zfs create -V 4G zroot/swap zfs set org.freebsd:swap=on zroot/swap zfs set checksum=off zroot/swap
8. Symbolische Links nach /home und Berechtigungen korrigieren
chmod 1777 /mnt/tmp cd /mnt ; ln -s usr/home home chmod 1777 /mnt/var/tmp
9. Die eigentliche FreeBSD Installation
sh cd /usr/freebsd−dist export DESTDIR=/mnt for file in base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz; do (cat $file | tar −−unlink −xpJf − −C ${DESTDIR:−/}); done
10. Den zpool.cache kopieren
(sehr wichtig!)
cp /var/tmp/zpool.cache /mnt/boot/zfs/zpool.cache
11. Erstellen von rc.conf, loader.conf und einer leeren fstab
(sonst meckert das System)
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 aushängen und Mountpoints für den ersten Boot vorbereiten
zfs set readonly=on zroot/var/empty zfs umount -af zfs set mountpoint=legacy zroot zfs set mountpoint=/tmp zroot/tmp zfs set mountpoint=/usr zroot/usr zfs set mountpoint=/var zroot/var
Jetzt kann das System neu gestartet werden, nach dem Anpassen der Zeitzone, dem Setzen eines Passworts für den root user kann man sein System genießen, oder direkt im Falle einer Virtualisierung unter KVM mit den Einrichten von virtio fortfahren.
Das tar −−unlink −xpJf − −C ${DESTDIR:−/}); done bringt bei mir jede Menge „Could not unlink“. Hoffe mal, dass das dennoch ok ist.
Hab schon lange nicht mehr ne Neuinstallation gemacht, wenns am Ende funktioniert, dürfts ok sein, sonst .. eher nicht
Irgendwann hat er es akzeptiert. Im Übrigen gab es die lib32.txz bei mir im freebsd-dist Folder nicht mehr.
Hast du noch nen Tipp, wie ich der Hardware sage, dass er die ada0 als bootmedium nehmen soll? Von alleine macht es das scheinbar nicht.
Wenn der boot record erstellt wurde (gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0), reicht es aus, die Festplatte im BIOS als erste in der Bootreihenfolge einzustellen.
Das müsstest Du vermutlich im (uEFI)BIOS des Rechners einstellen
Bei Punkt 9 fehlt am Anfang das sh für die Shell, sonst funktioniert der export DESTDIR nicht.
Danke für den Hinweis, das fehlte allerdings. habe ich gerade korrigiert.