FreeBSD in-depth Verständnis

vlast

Well-Known Member
Hallo,

bisher habe ich FreeBSD eigentlich immer nur als zweckdienliche Alternative zu Windows gesehen und genutzt. Nachdem ich mir nun die Grundlagen erarbeitet habe und das System nutzen gelernt habe, möchte ich nun gerne so viel wie möglich über FreeBSD und UNIX erfahren, um es optimal nutzen zu können, es zu verstehen und zu optimieren.

Was sind hierbei denn empfehlenswerte Schritte, Websiten, Quellen, Bücher etc?

Im Bezug auf (zum Beispiel):

Geschichte von FreeBSD
Technische Grundlagen
Entwicklung von Software (habe bisher nur einige Grundkenntnisse in Java, denke, Python, Perl, C und C++ sind sicher hilfreich)
Kernelanpassung
etc etc

Ich finde all das wahnsinning interessant, weiss aber nicht genau, wo ich am besten Anfange (abgesehen natürlich vom durcharbeiten des FBSD Handbuchs).

Ausserdem faszieniert mich diese ganze frühe Comouter-Hochschul-Bewegung der achtziger.

Bin für jede Hilfe dankbar!


MfG

Tut mir leid, falls das alles etwas schwammig formuliert ist. Kann es aber nicht besser in Worte fassen.
 
Die mit Abstand beste Zusammenfassung über die Interna ist noch immer das Buch "The Design and Implementation of the FreeBSD Operating System" von Kirk McKusick und George Neville-Neil. Allerdings ist das Buch in aktueller Auflage mittlerweise zehn Jahre alt. Es ist in großen Teilen noch immer korrekt, denn so viel hat sich im globalen Bild nicht geändert, aber gerade in Details weicht es inzwischen deutlich von der Realität ab. Im August erscheint eine neue, komplett aktualisierte Auflage. Ich würde es daher nicht mehr kaufen, stattdessen die vier Monate warten und solange andere Quellen nutzen. Der Vorgänger "The Design and Implementation auf the 4.4BSD Operation System" ist nun 18 Jahre alt, aber dafür frei verfügbar: http://www.freebsd.org/doc/en/books/design-44bsd/ Allerdings kommt er aus der Ära vor großen SMP-Systemen und bildet FreeBSDs Komplettumbau ab ca. 2000 nicht ab, weshalb es nur noch so lala auf FreeBSD passt. Es ist hauptsächlich aus historischen Gründen interessant. All diese Bücher richten sich übrigens explizit an Personen mit Vorbildung in Sachen Betriebssystembau. Das heißt nicht, dass sie für Anfänger ungeeignet sind, aber man sollte sich darauf einstellen viel nachrecherchieren zu müssen.

EDIT: Wenn es um Betriebssystembau allgemein gilt, sind die Bücher von Adrew S. Tanenbaum das Non Plus Ultra. Das Buch hinsichtlich klassischer Betriebssysteme ist "Operating Systems Design and Implementation", wobei auch "Modern Operating Systems" definitiv zu empfehlen ist. Nachdem man das Buch gelesen hat, versteht man u.a. Tanenbaums inzwischen legendär gewordene und bis heute aktuelle Kritik an Linux und damit auch technisch sehr ähnlich aufgebauten Systemen wie FreeBSD. "Distributed Operating Systems" ist das dritte Buch um Bunde, für den Anfang aber definitiv überzogen. Verteilte Betriebssysteme sind auch im Jahr 2014 noch hauptsächlich akademisch zu sehen, verteilte Systeme allgemein sind auch nicht unbedingt wahnsinnig praxisrelevant.
 
Zuletzt bearbeitet:
Zu FreeBSD kann ich Michael Lucas' Absolute FreeBSD empfehlen. Das ist zwar inzwischen auch schon 5 Jahre alt, aber die meisten Sachen passen noch.
 
Welches sind denn so die BSD-nuetzlichsten Programmiersprachen?

Python, Perl und C(++)?

(Zumindest als Start)
 
Für die Systemprogrammierung definitiv C, ansonsten /bin/sh ;)
Perl ist auch einigermaßen weit verbreitet, und dank Puppet & Co auch Ruby.
Auch wenn ich als Fanboy tatsächlich Python vorziehen würde…
 
Eigentlich ist hier schon alles zu den Programmiersprachen gesagt. FreeBSD hat für das Basisystem eine ungeschriebene Regel:
- Scripte nur mit /bin/sh
- Kernel nur in C
- Userland möglichst in C, C++ in Ausnahmefällen
Im tools/ Verzeichnis im Source-Tree wird auch anderer Code akzeptiert. Aber alles was dort drin liegt, wird nicht mitinstalliert. Es muss manuell gebaut und installiert werden. Entsprechend finden sich dort vor allem Tool, die für Entwickler interessant sind.
 
Aber Tanenbaum ist ja eher auf "anspruchsvollere" Verteilte Systeme aus, wie z.B. sein Amoeba Betriebssystem: http://en.wikipedia.org/wiki/Amoeba_distributed_operating_system

Ja gut, das sind wirklich Spezialfälle :) Bei mir an der Uni versteht man unter "Distributed Operating Systems" eher sowas wie DNS, verteilte Dateisysteme (sehr oft im Einsatz -> NFS z.B.) und allgemein sowas wie "verschiedene unabhängige, fehleranfällige Systeme arbeiten zusammen und bieten einen Dienst an". Also eher weniger der Aspekt "mehrere PCs simulieren einen PC".
 
Hi,

bzgl. Grundlagen des BSD Netzwerkprotokollstapels ist "TCP/IP Illustrated Volume 2 The Implementation" von Gary R. Wright und W. Richard Stevens empfehlenswert zu lesen. Aber dieses Grundlagenwerk diskutiert "nur" Tape 3 des Protokollstapels (also etwas veraltet). Es bietet es einen guten Einstiegspunkt, um sich naeher mit der Implementierung des Protokollstapels analytisch auseinanderzusetzen (hilfreich bzgl. Analyse des derzeitigen). Desweiteren halte ich "FreeBSD Drivers" von Joseph Kong als lesenswert bzgl. Geraetetreiberentwicklung. Ferner, "Embedded FreeBSD Cookbook" von Paul Cevoli ist zu empfehlen (ist via google als pdf ladbar). Dann ist noch "The Basic Kernel Source Code Secrets" von William Frederick Jolitz und Lynne Greer Jolitz eine interessante Informationsquelle (leider ein bisschen veraltet, aber es bietet einen Einstieg).

Frohe Ostern!!!
 
Ja gut, das sind wirklich Spezialfälle :) Bei mir an der Uni versteht man unter "Distributed Operating Systems" eher sowas wie DNS

Das ist aber kein verteiltes Betriebssystem. Das ist einfach ein verteilter Dienst (oder allgemein, aber nichtssagender "System"). Es gibt viele schöne verteilte Systeme. Darunter fällt auch DHT von Torrent (welches ich für genial halte; eigentlich "Kademlia" genannt). Betriebssysteme gibt es nicht so viele, die richtig verteilt sind.

Außerdem verstehen auch Unis den Begriff "verteilt" sehr unterschiedlich. Für mich ist aber "verteilt", das was der Meister der Verteilung versteht, siehe Leslie Lamport. Und das ist im Prinzip nur der Fall, wenn jeder Knoten ausfallen kann und jeder Knoten einen anderen Knoten im System ausgleichen kann (im Prinzip muss also die gleiche Arbeit an jedem Knoten gemacht werden).

NFS ist damit nicht verteilt, denn kein Client-Server-System ist verteilt (Server fällt aus, dann geht nichts mehr).
 
Ja, über Terminologie kann man sich nun streiten wie man will. Aber es werden dort auch echte verteilte Dateisysteme behandelt, so wie GFS oder HDFS.

Unterm Strich passt es. ;)
 
Bietet es sich von der Reihenfolge her an, erst mit Shellscripting anzufangen, dann mit Python und dann mit C und C++ weiter zu machen?
 
Bietet es sich von der Reihenfolge her an, erst mit Shellscripting anzufangen, dann mit Python und dann mit C und C++ weiter zu machen?

Mit Shell-Skripting anzufangen lohnt sich denke ich schon.
Bei C, C++ und Python bin ich mir nicht wirklich sicher,
ich persönlich würde erst zu C und dann zu Python raten.
Es ist zwar etwas schwerer und vor allem umständlicher,
aber meiner Meinung nach lernt man dabei mehr.
Ist aber schlussendlich Geschmackssache, wenn man nur
an „schnell fertig werden“ interessiert ist, dann ist Python
natürlich das Mittel der Wahl.
 
Die mit Abstand beste Zusammenfassung über die Interna ist noch immer das Buch "The Design and Implementation of the FreeBSD Operating System" von Kirk McKusick und George Neville-Neil.

Die neue, 2. Auflage ist jetzt erschienen... und derzeit bei Amazon auf dem ersten Platz der Bücher über "Operating Systems" und "Operating System Theory":

 
Nun bin ich aus dem Urlaub zurück und wollte es kaufen, aber irgendwie ist es schon überall ausverkauft. Kirk und George scheinen für ein Nischenthema respektable Verkaufszahlen zu erreichen. :)
 
Meins ist wesentlich eher als erwartet am Samstag gekommen :)
Freu mich drauf, das letzte was ich in die Richtung las war das Buch zu 4.4 BSD
 
Zurück
Oben