                    FreeBSD Anleitung fu:r Linux(R)-Benutzer

  John Ferrell

   Version: 679e5dc7fa

   Copyright (c) 2008 The FreeBSD Documentation Project

   FreeBSD ist ein eingetragenes Warenzeichen der FreeBSD Foundation.

   Linux ist ein eingetragenes Warenzeichen von Linus Torvalds.

   Intel, Celeron, Centrino, Core, EtherExpress, i386, i486, Itanium,
   Pentium, und Xeon sind eingetragene Warenzeichen der Intel Corporation
   oder ihrer Gesellschaften in den Vereinigten Staaten und in anderen
   La:ndern.

   Red Hat, RPM, sind Warenzeichen oder eingetragene Warenzeichen von Red
   Hat, Inc. in den Vereinigten Staaten und in anderen La:ndern.

   UNIX ist ein eingetragenes Warenzeichen der The Open Group in den
   Vereinigten Staaten und in anderen La:ndern.

   Viele Produktbezeichnungen von Herstellern und Verka:ufern sind
   Warenzeichen. Soweit dem FreeBSD Project das Warenzeichen bekannt ist,
   werden die in diesem Dokument vorkommenden Bezeichnungen mit dem Symbol
   "(TM)" oder dem Symbol "(R)" gekennzeichnet.

   Zuletzt bearbeitet am 2016-09-30 17:21:23 +0000 von Bjoern Heidotting.
   Zusammenfassung

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

   [ einzelne Abschnitte / komplettes Dokument ]

     ----------------------------------------------------------------------

   Inhaltsverzeichnis

   1. U:bersicht

   2. Standard-Shell

   3. Pakete und Ports: Installation von Software in FreeBSD

   4. Systemstart

   5. Netzwerkkonfiguration

   6. Firewall

   7. FreeBSD aktualisieren

   8. procfs: Verschwunden, aber nicht vergessen

   9. Ha:ufig verwendete Kommandos

   10. Fazit

1. U: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 ko:nnen.

   Dieses Dokument geht davon aus, dass FreeBSD bereits installiert ist.
   Lesen Sie das Kapitel Installation von FreeBSD des FreeBSD-Handbuch fu:r
   die Hilfe bei der Installation.

2. Standard-Shell

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

   Bash und weitere Shells ko:nnen unter FreeBSD mit Paketen und der
   Ports-Sammlung installiert werden.

   Nachdem Sie eine andere Shell installiert haben, benutzen Sie chsh(1) um
   die Standard-Shell fu:r einen Benutzer zu a:ndern. Es wird empfohlen, die
   Standard-Shell des Benutzers root unvera:ndert bleibt, da Shells, welche
   nicht im Basissystem enthalten sind, in /usr/local/bin installiert werden.
   Im Falle eines Problems ist vielleicht das Dateisystem, auf dem sich
   /usr/local/bin befindet, nicht eingeha:ngt ist. In einem solchen Fall
   ha:tte der Benutzer root keinen Zugriff auf die Standard-Shell, was ihn
   daran hindern wu:rde, sich am System anzumelden und das Problem zu
   beheben.

3. Pakete und Ports: Installation von Software in FreeBSD

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

   Bina:rpakete
     * Schnellere Installation, insbesondere bei gro:sseren Anwendungen.
     * Es wird kein Versta:ndnis daru:ber beno:tigt, wie Software kompiliert
       wird.
     * Es muss kein Compiler installiert werden.
   Ports
     * Bieten die Mo:glichkeit, Installationsoptionen anzupassen.
     * Eigene Korrekturen ko:nnen angewendet werden.

   Wenn fu:r die Installation der Anwendung keine A:nderungen no:tig sind,
   kann auch das Paket installiert werden. Kompilieren Sie den Port, wenn die
   Anwendung eine A:nderung an den voreingestellten Optionen erfordert. In
   diesem Fall kann ein angepasstes Paket mit make Paket erstellt werden.

   Eine vollsta:ndige Liste aller Ports und Pakete finden Sie hier.

  3.1. Pakete

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

 # pkg install apache24

   Weitere Informationen zu Paketen finden Sie im Abschnitt 4.4 des FreeBSD
   Handbuchs: Benutzen von pkg zur Verwaltung von Bina:rpaketen.

  3.2. Ports

   Die FreeBSD Ports-Sammlung ist ein Geru:st aus Makefiles und Korrekturen,
   um Anwendungen aus dem Quellcode unter FreeBSD zu installieren. Wenn Sie
   einen Port installieren, wird das System den Quellcode herunterladen, die
   beno:tigten Korrekturen anwenden, den Quellcode kompilieren und die
   Anwendung und die erforderlichen Abha:ngigkeiten installieren.

   Die Ports-Sammlung, oder einfach Ports genannt, kann mit portsnap(8) nach
   /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:

 # cd /usr/ports/www/apache24
 # make install clean

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

 # cd /usr/ports/www/apache24
 # make WITH_LDAP="YES" install clean

   Lesen Sie Benutzen der Ports-Sammlung fu:r weitere Informationen.

4. Systemstart

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

   Die Skripte in /etc/rc.d/ sind fu:r Anwendungen aus dem "Basissystem", wie
   beispielsweise cron(8), sshd(8), und syslog(3). Die Skripte in
   /usr/local/etc/rc.d/ geho: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 Pakete oder Ports
   installiert. Um die Anwendungen vom Basissystem zu separieren, werden
   diese unterhalb von /usr/local/ installiert. Die Bina:rdateien der
   installierten Anwendungen werden in /usr/local/bin/ gespeichert, die
   Konfigurationsdateien in /usr/local/etc/, und so weiter.

   Dienste werden u:ber einen Eintrag in /etc/rc.conf aktiviert. Die
   Standardeinstellungen des Systems stehen in /etc/defaults/rc.conf und
   werden von den Einstellungen in /etc/rc.conf u:berschrieben. Lesen Sie
   rc.conf(5) fu:r weitere Informationen u:ber die verfu:gbaren Eintra:ge.
   Wenn Sie zusa:tzliche Anwendungen installieren, lesen Sie die Nachrichten
   um zu erfahren, wie Sie alle dazugeho:rigen Dienste aktivieren.

   Die folgenden Eintra:ge in /etc/rc.conf aktivieren sshd(8) sowie Apache
   2.4, wobei Apache mit SSL-Unterstu:tzung gestartet werden soll.

 # enable SSHD
 sshd_enable="YES"
 # enable Apache with SSL
 apache24_enable="YES"
 apache24_flags="-DSSL"

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

 # service sshd start
 # service apache24 start

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

 # service sshd onestart

5. 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
   ifconfig(8) zeigt zwei Intel(R)Pro 1000 Netzwerkschnittstellen (em0 und
   em1):

 % 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 ifconfig(8) kann einer Schnittstelle eine IP-Adresse zugeordnet
   werden. Damit diese nach einem Neustart erhalten bleibt, muss die
   IP-Konfiguration in /etc/rc.conf eingetragen werden. Die folgenden
   Eintra:ge in /etc/rc.conf konfigurieren den Rechnernamen, die IP-Adresse
   und das Standard-Gateway:

 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 Eintra:ge um die Schnittstelle u:ber DHCP zu
   konfigurieren:

 hostname="server1.example.com"
 ifconfig_em0="DHCP"

6. 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:

     * PF
     * IPFILTER
     * IPFW

   PF wurde vom OpenBSD Projekt entwickelt und nach FreeBSD portiert. PF
   wurde als Ersatz fu:r IPFILTER entwickelt und die Syntax ist der von
   IPFILTER sehr a:hnlich. PF kann zusammen mit altq(4) werden um
   QoS-Funktionen bereitzustellen.

   Dieser beispielhafte PF-Eintrag erlaubt eingehende SSH-Verbindungen:

 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, einschliesslich NetBSD, OpenBSD, SunOS, HP/UX, und Solaris.

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

 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 dummynet(4) eingesetzt werden, um Traffic-Shaping zu
   realisieren und verschiedene Arten von Netzwerkverbindungen zu simulieren.

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

 ipfw add allow tcp from any to me 22 in via $ext_if

7. FreeBSD aktualisieren

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

   Die Aktualisierung aus den Quellen ist etwas komplexer, bietet aber das
   ho:chste Mass an Flexibilita:t. Dieser Prozess beinhaltet die
   Synchronisation der Quellen u:ber einen Subversion-Server von FreeBSD.
   Sobald die lokale Kopie aktualisiert wurde, kann eine neue Version des
   Kernels und des Userlands kompiliert werden.

   Bina:re Updates funktionieren in etwa so, als wenn Sie ein Linux(R)-System
   mit yum oder apt-get aktualisieren. In FreeBSD ko:nnen Sie
   freebsd-update(8) benutzen, um bina:re Updates herunterzuladen und zu
   installieren. Diese Updates ko:nnen mit cron(8) zu festgelegten
   Zeitpunkten durchgefu:hrt werden.

  Anmerkung:

   Wenn Sie cron(8) verwenden um Updates zu planen, benutzen Sie
   freebsd-update cron in der crontab(1), um die Mo:glichkeit zu verringern,
   dass alle Maschinen die Updates zur gleichen Zeit laden:

 0 3 * * * root /usr/sbin/freebsd-update cron

   Weitere Informationen u:ber die Aktualisierung aus den Quellen und
   Bina:r-Updates finden Sie im Kapitel FreeBSD aktualisieren des FreeBSD
   Handbuchs.

8. procfs: Verschwunden, aber nicht vergessen

   In einigen Linux(R)-Distributionen kann man in
   /proc/sys/net/ipv4/ip_forward feststellen, ob IP-Weiterleitung aktiviert
   ist. In FreeBSD wird stattdessen 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:

 % sysctl net.inet.ip.forwarding
 net.inet.ip.forwarding: 0

   Benutzen Sie -a um alle Einstellungen des Systems anzuzeigen:

 % sysctl -a | more

   Wenn eine Anwendung procfs beno:tigt, fu:gen Sie den folgenden Eintrag in
   /etc/fstab ein:

 proc                /proc           procfs  rw,noauto       0       0

   Die Option noauto verhindert, dass /proc beim Booten automatisch
   eingeha:ngt wird.

   Das Dateisystem kann ohne Neustart eingeha:ngt werden:

 # mount /proc

9. Ha:ufig verwendete Kommandos

   Einige Kommando-A:quivalente sind wie folgt:

     Linux(R)-Kommando (Red         FreeBSD                Aufgabe            
           Hat/Debian)            A:quivalent    
   yum install Paket / apt-get pkg install Paket Paket aus einem entfernten   
   install Paket                                 Repository installieren.     
   rpm -ivh Paket / dpkg -i    pkg add Paket     Ein lokales Paket            
   Paket                                         installieren                 
   rpm -qa / dpkg -l           pkg info          Installierte Paket anzeigen  
   lspci                       pciconf           PCI-Gera:te anzeigen         
   lsmod                       kldstat           Geladene Kernelmodule        
                                                 anzeigen                     
   modprobe                    kldload /         Kernelmodule laden/entladen  
                               kldunload         
   strace                      truss             Systemaufrufe verfolgen      

10. Fazit

   Dieses Dokument hat einen U:berblick u:ber FreeBSD geboten. Lesen Sie das
   FreeBSD Handbuch fu:r eine tiefergehender Abdeckung dieses und weiterer
   Themen, welche nicht in diesem Dokument behandelt sind.
