Hello, Guest the thread was viewed3.7k times and contains 16 replies

last post from Zirias/Excess at the

Unterschied zwischen Linux und BSD?

  • Ich habe mir gestern mal aus Interesse GhostBSD 20.01 in einer virtuellen Maschine installiert.


    Irgendwie kann ich da keinen Unterschied zu Linux (z.B. Xubuntu) feststellen. Es sind die gleichen Programme zu installieren und je nach Windowsmanager schaut es auch gleich aus. Auch die Bedienung ist für mich als Nutzer gleich.


    Was ist denn so der grundlegende technische Unterschied zwischen BSD und Linux, der auch für einen "normalen" Nutzer von Relevanz ist? Oder ist es einfach eine "Philosophiefrage", ob man sich BSD oder Linux installiert?

  • Wie du schon festgestellt hast besteht ein typisches Userland aus genau der gleichen Software* -- was auch wenig überraschend ist, es gibt eben z.B. Opensource Desktops, und natürlich werden die für beide Systeme compiliert :)


    Die Unterschiede sind weiter "unten", dort allerdings sehr deutlich. Eine umfassende Antwort dürfte kaum möglich sein, hier mal ein paar Punkte, die mir so einfallen:


    • BSD Systeme stammen direkt von 4.4BSD ab, was seinerseits von AT&T Unix abstammt. Linux war eine komplette Neuentwicklung (nur ein Kernel, aber die grundlegenden Userland-Tools waren ebenfalls neu entwickelt, allerdings von GNU). Praktische Relevanz: nahezu keine ;)
    • BSD legt typischerweise sehr viel mehr Wert auf stabile Schnittstellen als GNU/Linux. Das hat IMHO praktische Relevanz: So existiert z.B. auf BSD unverändert das OSS interface für Sound (über /dev/dsp), allerdings deutlich verbessert gegenüber dem letzten Stand auf Linux bevor dort ALSA kam -- und trotzdem 100% rückwärtskompatibel. Selbst innerhalb vom Kernel wird keine Schnittstelle geändert ohne wirklich guten Grund.
    • GNU/Linux ist ohne Frage viel weiter verbreitet und daher auch eher "auf dem Schirm" diverser Firmen -- für manche Dinge wie z.B. brandaktuelle Hardware daher gelegentlich besser geeignet.
    • BSD ist ein komplettes Betriebssystem**, Linux ist nur ein Kernel. Konsequenz: Auf BSD-systemen installierst du nur Software aus Paketen (oder alternativ Ports), die NICHT zu diesem Basissystem gehört -- auf einer typischen Linux-Distribution ist alles ein Paket. IMHO hat das bei BSD einen großen Vorteil: Das Basis-System folgt meistens einem konservativen Release-Schema, mit "long term support" und Security fixes, du hast also eine stabile Basis wie beispielsweise mit Debian stable. Die "Ports" (aus denen auf BSD-Systemen Pakete gebaut werden) gibt es in der Regel als "rolling release", man kann sie sich direkt über git oder svn aktuell halten wenn man mag -- und das lässt sich wunderbar kombinieren, ich kann ohne Probleme die aktuellste Software aus den Ports auf meinem stabilen Basissystem installieren (was bei Linux in der Regel nur Distributionen bieten, die komplett "rolling release" sind, was da also den Kernel und ganz grundlegende Tools einschließt).
    • Für manche durchaus relevant: die Lizenz. Linux steht unter GPL, eine Lizenz, die Freiheit erzwingen will (meiner Meinung nach ein Oxymoron), indem vorgeschrieben wird, dass "abgeleitete Werke" (also eigentlich alles was man neu baut, was diese GPL Software braucht), ebenfalls unter GPL lizenziert werden müssen. Gerade im kommerziellen Umfeld ist das gefährliches Terrain und durchaus problematisch. In den typischen BSD-Lizenzen (es gibt kleinere Variationen) ist frei wirklich absolut frei -- da wird eigentlich nur jede Gewährleistung ausgeschlossen und z.B. verlangt, dass eine Verwendung der Software in "abgeleiteten Werken" das Original in der Doku erwähnt :)

    ----


    * damit ist "höherwertige" Anwendungssoftware gemeint. Die grundlegenden Systemtools sind andere, da sie bei BSD zum System gehören. Sie heißen oft gleich und sind prinzipiell kompatibel, Details sind aber anders als bei Linux.


    ** da gehören so Dinge dazu wie ein "init" was alle Prozesse verwaltet, ein "login" um sich an der Konsole einloggen zu können, eine shell um an der Konsole Befehle eingeben zu können, eine Implementierung der Standard C library, auch ein C-Compiler, usw -- all das ist kein Bestandteil von Linux, wohl aber von BSD Systemen.

  • Sollte vielleicht als "Disclaimer" dazusagen

    Nein, das war nicht wirklich nötig. ;):P

    "Where all think alike, no one thinks very much." - "Wo alle dasselbe denken, denkt keiner viel."

    (Walter Lippmann, "The Stakes of Diplomacy", 1915)


    "Steve Jobs hat User hervorgebracht, Jack Tramiel Experten." - Quelle unbekannt.

    "Mein Herr, ich teile Ihre Meinung nicht, aber ich würde mein Leben dafür einsetzen, dass Sie sie äußern dürfen." - Voltaire.

    "Diskutiere nie mit einem Idioten - er zieht dich auf sein Niveau hinunter und schlägt dich dort mit seiner Erfahrung!" - Volksweisheit.


  • Sollte vielleicht als "Disclaimer" dazusagen

    Nein, das war nicht wirklich nötig. ;):P

    Stimmt ;-) konnte man zwischen den Zeilen lesen. :-D


    Vielleicht sollte man noch erwähnen das BSD für => Berkeley Software Distribution steht.

    BSD-Unix entstand in Zeiten wo der Quellcode von Unix noch frei war. Es wurde frei zwischen den IT-Abteilungen etliche Universitäten geteilt. Jede Uni hat dann mehr oder weniger eigene 'verbesserungen' vorgenommen, wobei die von Berkeley wohl einen größeren Vertrieb erfuhr.

    Man sollte vielleicht auch erwähnen daß 'Unix' sich in folge sehr stark fragmentierte in mehr als 20 inkompatibele Versionen zerfiel (Sinix, Xenix, SunOS, AT&T Unix, SCO/Santa Cruz Operation... und, und, und...).

    Irgendwann setzten sich einige zusammen und 'vereinigten' einiges. Dabei kam unter Anderem der POSIX-Standard heraus.

    'Rest ist Geschichte'.

    Im großen und ganzen kann man sagen daß der Hauptunterschied jenem ist: BSD stammt direkt vom 'original' (AT&T) Unix ab, Linux ist ein Klon der 'from Scratch' neu Programmiert wurde und zwar ursprünglich für i80386er.

    Andere Unices liefen (außer dem MS-Xenix und SCO-Unix) normalerweise auf andere CPUs. Die ersten Suns z.B. liefen auf Motorola 68000er Systeme, bis Sun seine eigene Sparc-Architektur schuf.

    Aber auch das ist 'Geschichte'.

  • Ja, die Geschichte habe ich kaum angerissen, schließlich ist die für den Benutzer nicht so direkt relevant :) Allerdings kann man da auch noch erwähnen, dass Linux 1992 unter GPL gestellt und mit GNU zu einem vollständigen freien Betriebssystem integriert wurde -- damit hatte es einen Startvorteil auf der x86 Architektur, weil genau zu der Zeit die BSDs (386BSD, auch dann FreeBSD 1.0) durch einen schönen Urheberrechtsstreit lahmgelegt waren -- und danach erstmal "aufholen" mussten :)

  • Sollte vielleicht als "Disclaimer" dazusagen

    Ich habe in der Vergangenheit beides benutzt, fand anfaenglich BSD aufgeraeumter und mehr aus einer Hand, nutze es inzwischen aber nicht mehr, daher gebe ich hier mal eine Konstrastaussage Pro Linux, zur Ausgewogenheit:


    Linux (und ich meine hier nicht nur den Kernel, sondern das gesamte Oekosystem) wird von der IT Industrie insgesamt wesentlich besser unterstuetzt, sowohl was Hardware als auch was Software angeht. Wenn Du somit zukunftssicherer arbeiten willst, willst Du Linux nehmen. An Linux und Oekosystem arbeiten 10.000e mit, waehrend bei BSD alles von einer relativ kleinen Gruppe gestemmt wird. Grosse Firmen feuern Millionen in den Ausbau von Linux, welcher dann, dank der GPL, auch wieder der Community zugute kommt.


    Bei Linux und BSD ist es anders als mit Windows mit Treibern: Die Treiber sind sozusagen Teil des Kernels. Du kannst also nicht einfach "Treiber installieren" wie man das unter Windows so macht, sondern die Treiber kommen mit Linux oder BSD mit. Und Linux hat da einfach aufgrund seiner Durchsetzung um Groessenordnungen mehr Unterstuetzung fuer Hardware. Wenn Du nie Peripherie benutzt, bzw. nur absolute Standardsachen wie Tastatur, Maus und Drucker, solltest Du auch mit BSD klarkommen. Aber wenn speziellere Sachen hinzukommen hast Du mit Linux einfach bessere Karten dass es klappt. Ich sage nicht dass es mit BSD nie klappt, oder dass es mit Linux immer klappt, Deine Chancen sind halt einfach besser. Das betrifft uebrigens nicht nur die Treiberseite, sondern auch die Unterstuetzungsseite. Als Beispiel: Sagen wir mal, Du wolltest den TL866 Eprom Flasher unter BSD oder Linux betreiben. De facto wirst Du einfach ungleich bessere Chancen haben, eine Anleitung dazu fuer Linux zu finden als fuer ein BSD. Genauso ist es auch mit fast jeder anderen Software. WENN es etwas fuer Freie Betriebssysteme gibt, dann wird es das fuer Linux, normalerweise Ubuntu LTS geben. Natuerlich gibt es auch einiges fuer BSD, aber die koennen halt einfach nicht mit dem Oekosystem, das auf Linux angeboten wird, mithalten. Dann musst Du es halt im Zweifel selbst kompilieren. Also um heutzutage BSD auf dem Desktop benutzen zu wollen, muss man es um des BSD Benutzens willen benutzen wollen. BSD ist zwangslaeufig auf dem Desktop oft der Zweck, Linux ist mehr Mittel zum Zweck. Nicht dass ich das schlecht reden will, im Prinzip machen wir hier das ja alle ausgiebigst mit Retrokram, die Frage ist da halt, ob man genug Bezug zu BSD mitbringt, dass es sich als Selbstzweck rechtfertigt. Wenn man komplett unbelastet ist, ist Linux zwischen den beiden fuer den Desktop einfach ein no-brainer.

  • Ich habe ein älteres Thinkpad T43, auf dem FreeBSD läuft. Das benutze ich hauptsächlich, um ein bisschen mit FreeBSD und C/C++ herumzuexperimentieren und ab und zu für E-Mail/Web. Das funktioniert sehr gut, die komplette Laptop-Hardware wird unterstützt. Einzige Ausnahme ist ein Fingerabdrucksensor, der funktioniert nicht. Mir gefällt FreeBSD sehr gut, ich habe den Eindruck, dass es etwas sparsamer mit Resourcen, wie Prozessorleistung oder Speicher umgeht, als Linux. Beim Administrationaufwand ist wohl kein großer Unterschied zu einem Linux-System.Informationen und Hilfe findet man auch zu FreeBSD genug im Internet.

    Dann habe ich noch einen kleinen Server auf dem FreeNAS läuft. FreeNAS basiert auf FreeBSD (mit ZFS als Filesystem) und ist extra für NAS (Network Attached Storage) zugeschnitten. Administriert wird das Ganze über ein Webinterface. Allerdings kriegt man da kaum etwas vom Betriebsystem "unter der Haube" mit.

  • Du hast irgendwie vergessen, dass man Kernelmodule nachladen kann, also auch Treiber nachladen.Tipp mal lsmod in der Konsole.

    was ich meinte ist dass man die Treiber normal nicht beim Hersteller auf der Webseite bekommt, sondern mit dem System mitgeliefert werden. Also man kann auf Linux/BSD nicht blind davon ausgehen, dass man Treiber hat, nur weil man unter Windows Treiber hat.


    Dass die auch mit Modulen nachgeladen werden koennen ist mir klar, diese sind aber normal gegen die Kernelquellen kompiliert, es sei denn es sind DKMS Module, aber das alles nur nebenbei, ist fuer das Argument eigentlich nicht von Belang.

  • daher gebe ich hier mal eine Konstrastaussage Pro Linux

    Also ich wollte mit meinem ersten Posting nicht "Werbung" für BSD machen, sondern tatsächlich die meiner Meinung nach wichtigsten Unterschiede beschreiben -- aber natürlich kann man am Text erkennen, was ich besser finde :) Vieles was du schreibst ist richtig, einiges kann ich so aber auch nicht stehen lassen:

    Linux (und ich meine hier nicht nur den Kernel, sondern das gesamte Oekosystem) wird von der IT Industrie insgesamt wesentlich besser unterstuetzt, sowohl was Hardware als auch was Software angeht. Wenn Du somit zukunftssicherer arbeiten willst, willst Du Linux nehmen.

    Hier würde ich sagen: Prämisse korrekt, Folgerung aber nicht unbedingt. Die BSD-Systeme werden nicht verschwinden, erst recht nicht solange einige "big player" darauf setzen. Zumindest die traditionell verbreiteten (sagen wir mal FreeBSD und OpenBSD, in zweiter Reihe eventuell noch NetBSD und DragonflyBSD) sind definitiv zukunftssicher. Bei "Derivaten" wie GhostBSD wage ich das weniger zu behaupten -- aber wie zukunftssicher ist irgendeine kleine Linux-Distribution?

    An Linux und Oekosystem arbeiten 10.000e mit, waehrend bei BSD alles von einer relativ kleinen Gruppe gestemmt wird.

    Naja, so halb richtig, denn "alles" wäre zu definieren: Die BSDs konzentrieren sich auf ihr jeweiliges Basis-System, das wird wie schon erwähnt "aus einem Guss" geliefert und funktioniert in der Regel einfach. Anwendungssoftware (dazu zähle ich jetzt selbst Xorg als Implementierung von X11 für die grafische Oberfläche) kommt ohnehin von anderer Seite, in der Regel sind da die nötigen Anpassungen für BSD überschaubar -- der POSIX Standard hilft ja schon, zum Beispiel -- und größere Projekte achten in der Regel auch darauf, dass ihr Code nicht "Linux-spezifisch" wird. So hat z.B. KDE ein eigenes Subprojekt, das sich darum kümmert, dass die Software immer auch problemlos auf FreeBSD compiliert und läuft.


    Trotzdem ist es richtig, dass selbst beim Kernel deutlich mehr Entwickler bei Linux unterwegs sind als bei den jeweiligen BSDs. Das hat der Qualität dieser Kernels allerdings bisher keinen Abbruch getan :)

    Grosse Firmen feuern Millionen in den Ausbau von Linux, welcher dann, dank der GPL, auch wieder der Community zugute kommt.

    Solche Dinge gibt es auch bei den BSDs -- so steckt in FreeBSD durchaus Code, der beispielsweise von Netflix beigesteuert wurde, oder von iXsystems, usw. -- allerdings in der Tat in geringerem Umfang. Was ich an deiner Aussage anzweifle ist die Relevanz der GPL. Klar, die zwingt dazu, Erweiterungen selbst unter GPL zu stellen (und damit Opensource zu machen), eine BSD-Lizenz tut das nicht. Trotzdem passiert das auch ohne Zwang, eben da, wo es sinnvoll ist. Ich denke der Unterschied hier ist nicht durch die Lizenz bedingt, sondern einfach durch die viel größere Verbreitung von Linux. Ich glaube aber, dass gerade die GPL diese Verbreitung eher noch hemmt -- stünde Linux unter BSD-Lizenz wäre die Verbreitung vermutlich noch viel höher.

    Bei Linux und BSD ist es anders als mit Windows mit Treibern: Die Treiber sind sozusagen Teil des Kernels. Du kannst also nicht einfach "Treiber installieren" wie man das unter Windows so macht, sondern die Treiber kommen mit Linux oder BSD mit.

    Das stimmt so definitiv nicht. Erstens gehört lange nicht jeder Treiber überhaupt in den Kernel, z.B. Druckertreiber. Zweitens, bei den Dingen, die in den Kernel gehören (denn eine echte Microkernel-Architektur gibt es ja leider nirgens), kennen sowohl Linux als auch BSD ladbare Kernelmodule. Bei BSD werden in der Regel auch APIs im Kernel möglichst stabil gehalten, es ist explizit erwünscht, dass Treiber außerhalb des Kernels gepflegt und separat als Module gebaut werden -- so ist z.B. bei FreeBSD vor einiger Zeit alles an DRM Grafiktreibern aus dem Kernel geflogen, dafür gibt es ein separates Projekt. Bei Linux sind in-Kernel APIs ein "moving target", und das gehört so zur Philosophie -- alle Treiber sollen Bestandteil des riesigen Kernel source tree sein und mit diesem gepflegt werden, out-of-tree Treiber sind eher ungern gesehen, besonders wenn sie nicht Opensource sind. Das hat Nvidia damals zu spüren bekommen, böse Zungen behaupten, in Linux wurden bewusst "breaking changes" eingeführt, nur um Nvidia zu ärgern.


    Womit du nichtsdestotrotz völlig recht hast: Es existieren sehr viel mehr Treiber für Linux als für BSD. Auch das liegt hauptsächlich an der Verbreitung. Wer eher "exotische" Hardware nutzen will könnte mit BSD in der Tat Pech haben und zumindest plötzlich eine Linux VM brauchen. Auch Hardwarehersteller bieten eher mal einen Linux-Treiber an (trotz der Stöcke, die einem da zwischen die Beine geschmissen werden) als einen BSD-Treiber, auch das weil einfach die Verbreitung sehr viel höher ist, damit "lohnt" es sich eher.


    Allerdings betrifft das nur sehr wenig "Standardhardware". Du wirst auch auf BSD nie Schwierigkeiten mit Festplatten (SATA, SAS, NVMe, ...), USB HID devices (Tastaturen, Mäuse, Joysticks, ...), Storage devices, seriellen Konvertern, Webcams, Scannern, .... haben. Bei Grafikkarten hast du vielleicht mal Probleme mit brandaktuellen Modellen -- FreeBSD geht hier den Weg, weil solche Treiber sehr komplex sind, die entsprechenden Linux-Treiber nur geringfügig anzupassen, so dass sie mit einer Adapterschicht im Kernel (LinuxKPI) laufen.


    Eines ist natürlich klar: Wer Hardware nutzen will, für die es keine BSD Treiber gibt, der wird kein BSD nehmen -- wäre ja sinnlos :)

    De facto wirst Du einfach ungleich bessere Chancen haben, eine Anleitung dazu fuer Linux zu finden als fuer ein BSD.

    Schwierige Aussage. Zumindest FreeBSD ist wesentlich besser dokumentiert als jede Linux-Distribution. Es gibt ein umfangreiches Handbuch und wirklich vollständige man-pages, die sogar jeden einzelnen Treiber dokumentieren, der bei FreeBSD bereits dabei ist. Was man tatsächlich viel häufiger für Linux findet sind Anleitungen im Sinn von "Howtos", die über das Basissystem hinausgehen. Der geübte BSD-User kann die aber oft genug auf sein System adaptieren, wenn er die Unterschiede gut genug kennt.

    Also um heutzutage BSD auf dem Desktop benutzen zu wollen, muss man es um des BSD Benutzens willen benutzen wollen. BSD ist zwangslaeufig auf dem Desktop oft der Zweck, Linux ist mehr Mittel zum Zweck.

    Dem widerspreche ich entschieden. Es kommt darauf an, welche Features einem wichtig sind. Ich möchte auch auf meinem Desktop zum Beispiel ZFS haben (ja, geht auch mit Linux, wird aber nie Bestandteil von Linux werden wegen Lizenz) -- oder jails. Sound funktioniert auf FreeBSD besser (klarerer Klang auf gleicher Hardware und weniger Latenz) als auf Linux, sofern die Anwendung OSS direkt verwenden kann. Gibt da für mich persönlich noch ein paar andere Punkte .... Also, wenn nicht durch gewisse Dinge wie Treiber, oder die Anwendung die man unbedingt braucht, das Betriebssystem ohnehin "vorgegeben" ist (was dann durchaus auch Windows sein könnte) -- dann darf schon jeder selbst mal vergleichen, was ihm wichtig ist :)

    Wenn man komplett unbelastet ist, ist Linux zwischen den beiden fuer den Desktop einfach ein no-brainer.

    Wenn du mit "unbelastet" meinst, nichts über Unix zu wissen und einfach nur einen fertigen Desktop ohne (größeren) Konfigurationsaufwand zu wollen, dann vermutlich ja. Dann verbietet sich aber auch die Verwendung gewisser Linux-Distributionen :)


    Zwar zielen Derivate wie "GhostBSD" genau darauf, einen fertig konfigurierten und problemlos einsetzbaren BSD Desktop zu haben, und ich vermute das funktioniert auch ganz gut -- aber wer nur von der Oberfläche her schaut wird da zunächst mal sowieso keinen Unterschied zu einer entsprechenden Linux-Distribution sehen. Die Chance, dass man dann irgendwas damit tun will (exotische Hardware, irgendne spezielle Anwendung) was auf Linux gehen würde, auf dem BSD-System aber nicht, existiert durchaus.

  • was ich meinte ist dass man die Treiber normal nicht beim Hersteller auf der Webseite bekommt, sondern mit dem System mitgeliefert werden.

    Bei vielen Herstellern inzwischen schon. Wobei leider meist nur für Linux und nicht für BSD.


    Hier mal ein Besipiel:


    Weitere Beispiele sind AMD, Nvidia, Realtek...


    Klar, noch nicht so wie bei Windows, aber doch deutlich mehr als früher. Es ist sogar eher so, dass
    bei vielen Linux Distros erst mal ein edietieren der Quellpaket Konfiguration nötig ist, da die Software proprietär ist, damit man die Treiber bekommt.

  • Passt in der Tat, ist aber (wie leider so oft) auch sehr dünn ... da dürfte man ruhig n bisschen mehr dazu schreiben :)


    BSD hat sowieso eine mäßige Verbreitung, auf Servern ist es aber eine feste Größe. BSD auf dem Desktop ist ein absoluter Exot (wenn man vom von außen kaum mehr als BSD erkennbaren MacOS absieht) -- und dafür gibt's keinen wirklich zwingenden Grund. Klar, wer sich mit FreeBSD einen Desktop einrichten will, braucht einige BSD Systemkenntnisse bzw die Zeit und Geduld, sich diese anzueignen. Aber genau für diejenigen, die daran kein Interesse haben, sind dann solche Derivate wie GhostBSD gemacht ... da dürfte ruhig auch mal etwas ausführlicher getestet und berichtet werden :o