FreeBSD/QuickStart

Aus UUGRN
< FreeBSD
Version vom 13. April 2009, 20:04 Uhr von Rabe (Diskussion | Beiträge) (Basissystem neu bauen)

Dieser Artikel beschreibt eine mögliche Standardmethode zur Installation eines FreeBSD-Systems.

Vorbereitung

Ziel der Vorbereitung ist, ein passendes Installationsmedium für FreeBSD zu bekommen.

Da dieser Artikel einen Weg beschreibt, wie man von einer Minimal-Installation von CD ausgehend sich ein System an den Start bringt, mit dem man dann alles selbst einrichten kann, reicht das erste Installationsmedium, insbesondere ein DVD Image wird nicht benötigt!

Für i386 (Intel 32 Bit) reicht 7.1-RELEASE-i386-disc1.iso vollkommen aus, weitere gibt es unter FreeBSD/FTP.

Das passende ISO-Image auf CD brennen und prüfen, dass das Zielsystem bootfähig ist.

Grundsystem installieren

Ziel der Installation des Grundsystems ist es, ein minimalistisches FreeBSD zu haben, welches eine Anbindung zum Internet hat. Hier wird keine Software installiert.

  • Vom Installationsmedium booten
  • Im Installationsmenü die Distributionsauswahl "[x] Minimal" verwenden.
  • Keine Systemsourcen und keine Ports installieren, da diese im Zweifel ohnehin veraltet sind.
  • Alle anderen Einstellungen wie gewohnt vornehmen.
  • Nach der Installation und vor dem Reboot noch alle erforderlichen Grundeinstellungen durchführen (Console, Zeitzone, Netzwerk, ...)
  • Reboot ins neue System.

Post-Install

Ziel der Nachinstallation ist es, die Grundlagen für sie Softwareinstallation zu bekommen. Hierfür werden zum einen die System-Sourcen als auch die FreeBSD/Ports so eingerichtet, dass sie einfach aktualisiert werden können. Außerdem soll hier die gesamte Hilfssoftware installiert werden, die einem das spätere Softwaremanagement erleichtert.


Ein paar nützliche Packages installieren

# pkg_add -r -v portupgrade
# pkg_add -r -v bash
# pkg_add -r -v vim-lite

Rootshell ändern

Dieser Schritt ist Geschmacksache und kann ausgelassen werden. Wichtig ist allerdings, dass die Standard-Rootshell /bin/csh kein Environment /usr/local/sbin/ Akennt, hier liegen allerdings die Tools aus dem portuprgade-Paket.

# vipw
(Ändern von /bin/csh nach /usr/local/bin/bash)
(Neu einloggen)

Sourcen und Ports

Die hier bevorzugte Methode für das Update von /usr/src und /usr/ports ist csup (ehem. cvsup). Dieser Artikel geht davon aus, dass eine breitbandige Anbindung (mind 2MBit) zum Internet möglich ist.

  • supfiles kopieren
# mkdir /root/update/
# cp /usr/share/examples/cvsup/ports-supfile /root/update/
# cp /usr/share/examples/cvsup/stable-supfile /root/update/
# chmod +w /root/update/*
  • Anpassen: In beiden Dateien die Zeile
*default host=CHANGE_THIS.FreeBSD.org

ersetzen durch einen cvsup-mirror

*default host=cvsup.de.freebsd.org
  • /usr/src updaten
# csup -L 2 /root/update/stable-supfile
  • /usr/ports updaten
# csup -L 2 /root/update/ports-supfile

Das Update kann regelmäßig, z.B. täglich erfolgen.

Initialisieren von portupgrade

Aktuelle /usr/ports/INDEX* vom Master-Server herunterladen und anlegen:

# portsdb -Fu 

Alternativ kann man sich den INDEX auch selbst generieren, das kann aber je nach Rechner sehr lange dauern.

# portsdb -u

Package-DB anhand von /var/db/pkg/ initialisieren:

# pkgdb -fu

Basissystem neu bauen

Je nachdem, welches Release in /root/update/standard-supfile angegeben wird, existieren auf dem System die aktuellen Sourcen unter /usr/src/

# The following line is for 7-stable.  If you want 6-stable, 5-stable,
# 4-stable, 3-stable, or 2.2-stable, change to "RELENG_6", "RELENG_5",
# "RELENG_4", "RELENG_3", or "RELENG_2_2" respectively.
*default release=cvs tag=RELENG_7
  • RELENG_7 entspricht zum Beispiel 7-STABLE oder 7.1-STABLE oder 7.2-PRERELEASE
  • RELENG_7_1 entspricht 7.1-RELEASE

Exkurs: Kernel Config

Normalerweise braucht man nichts anderes als den GENERIC-Kernel. Die allermeisten Dinge lassen sich als Modul laden und zwar anders als bei Linux nicht per initrd oder sysimage (?), sondern direkt vom Bootloader. Das Beispiel soll exemplarisch eine minimale Anpassung des GENERIC-Kernels zeigen

# cd /usr/src/sys/i386/conf/
# vi FOO

... mit folgendem Inhalt:

# Meine Foo-Config
include GENERIC
ident   FOO
nodevice plip

Dieses Setup unterdrückt den Build des "printer port Internet Protocol driver" (grob gesagt: Ethernet-Layer für die Parallele Schnittstelle). Das braucht heute eigentlich niemand mehr und man bekommt es anders nicht aus dem System heraus.


buildworld, buildkernel

Jetzt alles erstmal nur bauen. Das ist selbst auf schnellen Rechnern relativ zeitintensiv!

# cd /usr/src
# time make -j8 buildworld buildkernel KERNCONF=FOO 

Der Zahlenwert hinter "-j" gibt die maximale Anzahl der Parallelen Buildprozesse an, soweit sie sich parallelisieren lassen. Ein gutes Ergebnis bekommt man bei "2*Anzahl Prozessorkerne", -j8 also für einen Quadcore oder 2x DualCore System.

Erfahrungswerte für die Dauer
  • ein derzeit aktueller "Intel Core[tm]2 Quad" mit 4x2.82GHz und insgesamt 12MB L2-Cache, 4GB DDR2, schafft mit halbwegs schnellen SATA-Platten das "buildworld buildkernel" in knapp über 20min.
  • ein etwas in die Tage gekommener Laptop mit 1.8GHz AMD CPU, 1GB RAM und einer 7200er Platte benötigt für den gleichen Build mit -j2 210min oder 3,5 Stunden

installkernel

Als erstes will der Kernel installiert werden:

# time make installkernel KERNCONF=FOO

Anschließend reboot

# reboot

installworld

Nach dem reboot

# cd /usr/src
# mergemaster -p (ergänzt etwaig erforderliche Systemuser, bei 7.1 -> 7.2-PRERELESE allerdings nicht erforderlich)
# time make installworld (kann ein paar Minuten dauern)
# mergemaster -U (das -U geht allerdings nicht nach einer Neuinstallation)
(alle Änderungen übernehmen, aufpassen bei /etc/passwd /etc/group /etc/master.passwd!)
# reboot


Fremdsoftware (Ports) installieren

Ziel dieses Tasks ist es, den Rechner für den späteren Einsatzzweck vorzubereiten. Je nachdem, ob es ein Server oder ein Desktopsystem werden soll, unterscheidet sich die Auswahl der Pakete doch erheblich.