---
title: FreeBSD Anleitung für Linux®-Benutzer
authors:
  - author: John Ferrell
copyright: 2008 The FreeBSD Documentation Project
trademarks: ["freebsd", "intel", "redhat", "linux", "unix", "general"]
---

= FreeBSD Anleitung für Linux-Benutzer
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:images-path: articles/linux-users/

ifdef::env-beastie[]
ifdef::backend-html5[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
:imagesdir: ../../../images/{images-path}
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[.abstract-title]
Zusammenfassung

Dieses Dokument soll Linux(R)-Benutzer mit den Grundlagen von FreeBSD vertraut machen.

'''

toc::[]

[[intro]]
== Übersicht

Dieses Dokument beschreibt einige der technischen Unterschiede zwischen FreeBSD und Linux(R), damit sich Linux(R)-Anwender schnell mit den Grundlagen von FreeBSD vertraut machen können.

Dieses Dokument geht davon aus, dass FreeBSD bereits installiert ist. Lesen Sie das Kapitel extref:{handbook}bsdinstall[Installation von FreeBSD, bsdinstall] des FreeBSD-Handbuch für die Hilfe bei der Installation.

[[shells]]
== Standard-Shell

Linux(R)-Benutzer sind oft überrascht, dass Bash nicht die Standard-Shell in FreeBSD ist. Genau genommen ist Bash nicht einmal in der Standardinstallation enthalten. FreeBSD benutzt stattdessen man:tcsh[1] als Standard-Shell für root, sowie die Bourne shell-kompatible man:sh[1] als Standardshell für Benutzer. man:sh[1] ist der Bash sehr ähnlich, besitzt jedoch einen kleineren Funktionsumfang. In der Regel werden Skripte für die man:sh[1] auch mit der Bash laufen. Der umgekehrte Fall trifft jedoch meistens nicht zu.

Bash und weitere Shells können unter FreeBSD mit extref:{handbook}ports/[Paketen und der Ports-Sammlung, ports] installiert werden.

Nachdem Sie eine andere Shell installiert haben, benutzen Sie man:chsh[1] um die Standard-Shell für einen Benutzer zu ändern. Es wird empfohlen, die Standard-Shell des Benutzers `root` unverändert bleibt, da Shells, welche nicht im Basissystem enthalten sind, in [.filename]#/usr/local/bin# installiert werden. Im Falle eines Problems ist vielleicht das Dateisystem, auf dem sich [.filename]#/usr/local/bin# befindet, nicht eingehängt ist. In einem solchen Fall hätte der Benutzer `root` keinen Zugriff auf die Standard-Shell, was ihn daran hindern würde, sich am System anzumelden und das Problem zu beheben.

[[software]]
== Pakete und Ports: Installation von Software in FreeBSD

FreeBSD bietet zwei Methoden zur Installation von Anwendungen: Binärpakete und kompilierte Ports. Jede Methode hat ihre eigenen Vorteile:

.Binärpakete
* Schnellere Installation, insbesondere bei größeren Anwendungen.
* Es wird kein Verständnis darüber benötigt, wie Software kompiliert wird.
* Es muss kein Compiler installiert werden.

.Ports
* Bieten die Möglichkeit, Installationsoptionen anzupassen.
* Eigene Korrekturen können angewendet werden.

Wenn für die Installation der Anwendung keine Änderungen nötig sind, kann auch das Paket installiert werden. Kompilieren Sie den Port, wenn die Anwendung eine Änderung an den voreingestellten Optionen erfordert. In diesem Fall kann ein angepasstes Paket mit make`Paket` erstellt werden.

Eine vollständige Liste aller Ports und Pakete finden Sie http://www.freebsd.org/ports/[hier].

[[packages]]
=== Pakete

Pakete sind vorkompilierte Anwendungen, sozusagen FreeBSD-Äquivalente von [.filename]#.deb#-Dateien unter Debian/Ubuntu basierten Systemen und [.filename]#.rpm#-Dateien von Red Hat/Fedora basierten Systemen. Pakete werden mit `pkg` installiert. Das folgende Kommando installiert beispielsweise Apache 2.4:

[source,shell]
....
# pkg install apache24
....

Weitere Informationen zu Paketen finden Sie im Abschnitt 4.4 des FreeBSD Handbuchs: extref:{handbook}ports/[Benutzen von pkg zur Verwaltung von Binärpaketen, pkgng-intro].

[[ports]]
=== Ports

Die FreeBSD Ports-Sammlung ist ein Gerüst aus [.filename]#Makefiles# und Korrekturen, um Anwendungen aus dem Quellcode unter FreeBSD zu installieren. Wenn Sie einen Port installieren, wird das System den Quellcode herunterladen, die benötigten Korrekturen anwenden, den Quellcode kompilieren und die Anwendung und die erforderlichen Abhängigkeiten installieren.

Die Ports-Sammlung, oder einfach Ports genannt, kann mit man:portsnap[8] nach [.filename]#/usr/ports# installiert werden.

Um einen Port zu kompilieren, wechseln Sie in das Verzeichnis des Ports und starten Sie den Bau-Prozess. Das folgende Beispiel installiert Apache 2.4 aus der Ports-Sammlung:

[source,shell]
....
# cd /usr/ports/www/apache24
# make install clean
....

Ein Vorteil von Ports bei der Installation von Software ist die Möglichkeit, die Installationsoptionen anzupassen. In diesem Beispiel wird spezifiziert, dass zusätzlich das Modul mod_ldap installiert werden soll:

[source,shell]
....
# cd /usr/ports/www/apache24
# make WITH_LDAP="YES" install clean
....

Lesen Sie extref:{handbook}ports/[Benutzen der Ports-Sammlung, ports-using] für weitere Informationen.

[[startup]]
== Systemstart

Viele Linux(R)-Distributionen verwenden das SysV init System, während FreeBSD das traditionelle BSD-man:init[8] benutzt. Unter BSD-man:init[8] gibt es keine Runlevel und [.filename]#/etc/inittab# existiert auch nicht. Stattdessen wird der Systemstart von man:rc[8] Skripten gesteuert. Beim Systemstart liest [.filename]#/etc/rc# [.filename]#/etc/rc.conf# und [.filename]#/etc/rc.conf.local# um herauszufinden welche Dienste gestartet werden müssen. Die jeweiligen Dienste werden dann gestartet, indem die entsprechenden Skripten in [.filename]#/etc/rc.d/# und [.filename]#/usr/local/etc/rc.d/# ausgeführt werden. Diese Skripte sind ähnlich wie die Skripte in [.filename]#/etc/init.d/# unter Linux(R)-Systemen.

Die Skripte in [.filename]#/etc/rc.d/# sind für Anwendungen aus dem "Basissystem", wie beispielsweise man:cron[8], man:sshd[8], und man:syslog[3]. Die Skripte in [.filename]#/usr/local/etc/rc.d/# gehören zu den vom Benutzer installierten Anwendungen, wie zum Beispiel Apache und Squid.

Da FreeBSD als komplettes Betriebssystem entwickelt wird, werden die vom Benutzer installierten Anwendungen nicht als Teil des "Basissystems" angesehen. Diese Anwendungen werden in der Regel als extref:{handbook}ports/[Pakete oder Ports, ports-using] installiert. Um die Anwendungen vom Basissystem zu separieren, werden diese unterhalb von [.filename]#/usr/local/# installiert. Die Binärdateien der installierten Anwendungen werden in [.filename]#/usr/local/bin/# gespeichert, die Konfigurationsdateien in [.filename]#/usr/local/etc/#, und so weiter.

Dienste werden über einen Eintrag in [.filename]#/etc/rc.conf# aktiviert. Die Standardeinstellungen des Systems stehen in [.filename]#/etc/defaults/rc.conf# und werden von den Einstellungen in [.filename]#/etc/rc.conf# überschrieben. Lesen Sie man:rc.conf[5] für weitere Informationen über die verfügbaren Einträge. Wenn Sie zusätzliche Anwendungen installieren, lesen Sie die Nachrichten um zu erfahren, wie Sie alle dazugehörigen Dienste aktivieren.

Die folgenden Einträge in [.filename]#/etc/rc.conf# aktivieren man:sshd[8] sowie Apache 2.4, wobei Apache mit SSL-Unterstützung gestartet werden soll.

[.programlisting]
....
# enable SSHD
sshd_enable="YES"
# enable Apache with SSL
apache24_enable="YES"
apache24_flags="-DSSL"
....

Sobald ein Dienst in [.filename]#/etc/rc.conf# aktiviert ist, kann er ohne einen Neustart des Systems gestartet werden:

[source,shell]
....
# service sshd start
# service apache24 start
....

Wenn ein Dienst nicht aktiviert wurde, kann er auf der Kommandozeile mit `onestart` gestartet werden:

[source,shell]
....
# service sshd onestart
....

[[network]]
== Netzwerkkonfiguration

Anstelle einer allgemeinen __ethX__-Kennzeichnung, die von Linux(R) benutzt wird, um Netzwerkschnittstellen zu identifizieren, verwendet FreeBSD den Treibernamen gefolgt von einer Nummer. Die folgende Ausgabe von man:ifconfig[8] zeigt zwei Intel(R)Pro 1000 Netzwerkschnittstellen ([.filename]#em0# und [.filename]#em1#):

[source,shell]
....

% ifconfig
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=b<RXCSUM,TXCSUM,VLAN_MTU>
        inet 10.10.10.100 netmask 0xffffff00 broadcast 10.10.10.255
        ether 00:50:56:a7:70:b2
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active
em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=b<RXCSUM,TXCSUM,VLAN_MTU>
        inet 192.168.10.222 netmask 0xffffff00 broadcast 192.168.10.255
        ether 00:50:56:a7:03:2b
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active
....

Mit man:ifconfig[8] kann einer Schnittstelle eine IP-Adresse zugeordnet werden. Damit diese nach einem Neustart erhalten bleibt, muss die IP-Konfiguration in [.filename]#/etc/rc.conf# eingetragen werden. Die folgenden Einträge in [.filename]#/etc/rc.conf# konfigurieren den Rechnernamen, die IP-Adresse und das Standard-Gateway:

[.programlisting]
....
hostname="server1.example.com"
ifconfig_em0="inet 10.10.10.100 netmask 255.255.255.0"
defaultrouter="10.10.10.1"
....

Benutzen Sie die folgenden Einträge um die Schnittstelle über DHCP zu konfigurieren:

[.programlisting]
....
hostname="server1.example.com"
ifconfig_em0="DHCP"
....

[[firewall]]
== Firewall

FreeBSD verwendet nicht Linux(R)IPTABLES als Firewall. Stattdessen hat der Benutzer unter FreeBSD die Wahl zwischen drei Firewalls, die auf Kernel-Ebene arbeiten:

* extref:{handbook}firewalls/[PF, firewalls-pf]
* extref:{handbook}firewalls/[IPFILTER, firewalls-ipf]
* extref:{handbook}firewalls/[IPFW, firewalls-ipfw]

PF wurde vom OpenBSD Projekt entwickelt und nach FreeBSD portiert. PF wurde als Ersatz für IPFILTER entwickelt und die Syntax ist der von IPFILTER sehr ähnlich. PF kann zusammen mit man:altq[4] werden um QoS-Funktionen bereitzustellen.

Dieser beispielhafte PF-Eintrag erlaubt eingehende SSH-Verbindungen:

[.programlisting]
....
pass in on $ext_if inet proto tcp from any to ($ext_if) port 22
....

IPFILTER ist eine von Darren Reed entwickelte Firewall. Diese Firewall ist nicht FreeBSD-spezifisch und wurde bereits auf andere Betriebssysteme portiert, einschließlich NetBSD, OpenBSD, SunOS, HP/UX, und Solaris.

Die Syntax für IPFILTER zum Erlauben von eingehenden SSH-Verbindungen lautet:

[.programlisting]
....
pass in on $ext_if proto tcp from any to any port = 22
....

Die Firewall IPFW wird von FreeBSD entwickelt und betreut. Sie kann zusammen mit man:dummynet[4] eingesetzt werden, um Traffic-Shaping zu realisieren und verschiedene Arten von Netzwerkverbindungen zu simulieren.

Die Syntax für IPFW zum Erlauben von eingehenden SSH-Verbindungen ist:

[.programlisting]
....
ipfw add allow tcp from any to me 22 in via $ext_if
....

[[updates]]
== FreeBSD aktualisieren

Es gibt zwei Methoden um ein FreeBSD-System zu aktualisieren: aus den Quellen oder über binäre Updates.

Die Aktualisierung aus den Quellen ist etwas komplexer, bietet aber das höchste Maß an Flexibilität. Dieser Prozess beinhaltet die Synchronisation der Quellen über einen Subversion-Server von FreeBSD. Sobald die lokale Kopie aktualisiert wurde, kann eine neue Version des Kernels und des Userlands kompiliert werden.

Binäre Updates funktionieren in etwa so, als wenn Sie ein Linux(R)-System mit `yum` oder `apt-get` aktualisieren. In FreeBSD können Sie man:freebsd-update[8] benutzen, um binäre Updates herunterzuladen und zu installieren. Diese Updates können mit man:cron[8] zu festgelegten Zeitpunkten durchgeführt werden.

[NOTE]
====
Wenn Sie man:cron[8] verwenden um Updates zu planen, benutzen Sie `freebsd-update cron` in der man:crontab[1], um die Möglichkeit zu verringern, dass alle Maschinen die Updates zur gleichen Zeit laden:

[.programlisting]
....
0 3 * * * root /usr/sbin/freebsd-update cron
....

====

Weitere Informationen über die Aktualisierung aus den Quellen und Binär-Updates finden Sie im Kapitel extref:{handbook}updating-upgrading/[FreeBSD aktualisieren, updating-upgrading] des FreeBSD Handbuchs.

[[procfs]]
== procfs: Verschwunden, aber nicht vergessen

In einigen Linux(R)-Distributionen kann man in [.filename]#/proc/sys/net/ipv4/ip_forward# feststellen, ob IP-Weiterleitung aktiviert ist. In FreeBSD wird stattdessen man:sysctl[8] verwendet, um diese und andere Systemeinstellungen anzuzeigen.

Auf einem FreeBSD-System kann der folgende Befehl benutzt werden, um festzustellen ob IP-Weiterleitung aktiviert ist:

[source,shell]
....
% sysctl net.inet.ip.forwarding
net.inet.ip.forwarding: 0
....

Benutzen Sie `-a` um alle Einstellungen des Systems anzuzeigen:

[source,shell]
....
% sysctl -a | more
....

Wenn eine Anwendung procfs benötigt, fügen Sie den folgenden Eintrag in [.filename]#/etc/fstab# ein:

[source,shell]
....
proc                /proc           procfs  rw,noauto       0       0
....

Die Option `noauto` verhindert, dass [.filename]#/proc# beim Booten automatisch eingehängt wird.

Das Dateisystem kann ohne Neustart eingehängt werden:

[source,shell]
....
# mount /proc
....

[[commands]]
== Häufig verwendete Kommandos

Einige Kommando-Äquivalente sind wie folgt:

[.informaltable]
[cols="1,1,1", frame="none", options="header"]
|===
| Linux-Kommando (Red Hat/Debian)
| FreeBSD Äquivalent
| Aufgabe

|`yum install _Paket_` / `apt-get install _Paket_`
|`pkg install _Paket_`
|Paket aus einem entfernten Repository installieren.

|`rpm -ivh _Paket_` / `dpkg -i _Paket_`
|`pkg add _Paket_`
|Ein lokales Paket installieren

|`rpm -qa` / `dpkg -l`
|`pkg info`
|Installierte Paket anzeigen

|`lspci`
|`pciconf`
|PCI-Geräte anzeigen

|`lsmod`
|`kldstat`
|Geladene Kernelmodule anzeigen

|`modprobe`
|`kldload` / `kldunload`
|Kernelmodule laden/entladen

|`strace`
|`truss`
|Systemaufrufe verfolgen
|===

[[conclusion]]
== Fazit

Dieses Dokument hat einen Überblick über FreeBSD geboten. Lesen Sie das extref:{handbook}[FreeBSD Handbuch] für eine tiefergehender Abdeckung dieses und weiterer Themen, welche nicht in diesem Dokument behandelt sind.
