Regulär legt man einen neuen Distributionsdatenträger über die Quellen an. Bei FreeBSD 8 und 9 ist das nicht nötig. Man kann auch aus der originalen CD oder DVD eine angepasste anlegen, was sehr viel schneller geht. Dazu muss zuerst die Original-Installations-CD eingebunden werden. Das geschieht nach dem Einlegen des Datenträgers oder dem Anbinden der CD oder des ISO-Images in einer Virtualisierungslösung mit dem Aufruf
mkdir /cdrom mount -t cd9660 /dev/cd0 /cdrom
Das Schreiben eines neuen ISO-Images erfordert ein Mastering-Verzeichnis, das nach dem Abschluss der Arbeiten wieder komplett entfernt werden kann. Weiterhin bietet es sich an, die Dateien aus Gründen der Bequemlichkeit mit dem Midnight Commander (»mc
«
) anstatt mit »cp
«
zu kopieren. Für das Schreiben des ISO-Images ist weiterhin »mkisofs
«
aus den CDR-Tools nötig; um Platz im ISO-Image zu sparen, das Programm »dupmerge
«
[6], das sich ebenfalls in den Ports befindet. Es lohnt sich nicht, diese Programme aus den Quelltexten zu installieren, das Einspielen aller benötigten Daten direkt vom FreeBSD-FTP-Server übernimmt:
pkg_add -r mc dupmerge cdrtools virtio-kmod
Ist das eine oder andere Programm bereits installiert, stört das nicht weiter, seine Installation wird dann einfach übergangen. Können die Treiber nicht auf dem Server gefunden werden, muss man sie selbst kompilieren. Danach kann mit dem Mastern der neuen Installations-CD oder -DVD begonnen werden.
Der Parameter »-p
«
von »mkdir
«
legt den gesamten Pfad in einem Rutsch an, das »-Rvp
«
von »cp
«
bedeutet, dass alle Daten rekursiv kopiert werden, dabei das Programm gesprächig ist und alle aktuellen Rechte beibehält. Wer es bequemer will, kopiert die Daten mit dem Midnight Commander, übergeht dabei aber das Verzeichnis ».rr_moved
«
.
Im nächsten Schritt müssen die zuvor installierten VirtIO-Treiber ebenfalls in das Mastering-Verzeichnis übertragen werden. Sie befinden sich in »/boot/modules
«
:
cp /boot/modules/virt*ko /usr/tree/boot/modules cp /boot/modules/if_vtnet*ko /usr/tree/boot/modules cd /usr/tree/boot/modules kldxref
Nun muss die Datei »/usr/tree/boot/loader.conf
«
angepasst werden. Sie legt fest, welche externen Gerätetreiber der Kernel zusätzlich lädt. In der FreeBSD-Version 9 gibt es diese Datei noch nicht. Sie muss nach dem Editieren, zum Beispiel mit dem Befehl »ee /usr/tree/boot/loader.conf
«
, die folgenden Konfigurationszeilen enthalten:
virtio_load="YES" virtio_pci_load="YES" virtio_blk_load="YES" if_vtnet_load="YES" virtio_balloon_load="YES"
Ohne diese Daten ist die Installation zwar auch möglich, aber extrem umständlich. Der Installationsdatenträger von FreeBSD 8 und 9 unterscheidet sich an dieser Stelle übrigens drastisch. Bis inklusive FreeBSD 8 wird nämlich in eine RAM-Disk gebootet, die von einer Zeile in »loader.conf
«
eingeschaltet wird, sodass die Datei am Schluss so aussehen sollte:
mfsroot_load="YES" mfsroot_type="mfs_root" mfsroot_name="/boot/mfsroot" virtio_load="YES" virtio_pci_load="YES" virtio_balloon_load="YES" virtio_blk_load="YES" if_vtnet_load="YES"
Von dem so vorbereiteten Datenträger kann das FreeBSD-System bereits erfolgreich installiert werden. Besser ist es, außerdem den Virtio-Port auf dem Datenträger abzulegen. Falls man ihn kompiliert hat, ist das kein Problem, er befindet sich entweder in »/usr/ports/packages/All
«
oder, falls »/usr/ports/packages
«
nicht vorhanden ist, im Verzeichnis »/usr/ports/emulators/virtio-kmod
«
als Archiv mit der Endung ».tbz
«
. Diese Datei sollte man in ein Verzeichnis »packages/All
«
auf den Master kopieren.
Im vorletzten Arbeitsschritt muss jetzt der Master von Dateiduplikaten befreit werden. Der Grund ist, dass beim ursprünglichen Kopieren der ISO-Datei Links aufgelöst und durch Einzeldateien im Verzeichnis »tree
«
ersetzt wurden. Brennt man einen neuen Master ohne dies zu berücksichtigen, wird er erheblich größer als sein Original. Wieder zu Links werden die jetzigen Dateien durch einen Aufruf von des Filters »dupmerge
«
. Die Syntax des Aufrufs erfährt man mit »dupmerge -h
«
. Sie lautet hier
cd /usr/cd/tree find ./ -type f -print0 | dupmerge
Dies spart etwa 200 000 Blöcke zu je 512 Byte auf dem Datenträger und damit nicht ganz 100 MByte. Im letzten Arbeitsschritt wird das ISO-Image gebrannt:
cd /usr/cd mkisofs -R -J -no-emul-boot -c boot/.catalog -hide-rr-moved -b boot/cdboot -V "FREEBSD_INSTALL" -o fbsd91-foss.iso tree/ chmod 666 fbsd91-foss.iso
Die Angaben »-R
«
und »-J
«
legen lange Dateinamen nach der Unix- (Rockridge) und Windows-Konvention (Joliet) fest, die weiteren Parameter werden für das Bootsystem gebraucht. Sehr wichtig ist ab FreeBSD 9.0 die Bezeichnung »-V "FREEBSD_INSTALL"
«
, über die das Installationssystem den Datenträger identifiziert.