Ein paar Fragen zu MINIX-3

schorsch_76

FreeBSD Fanboy
Hallo zusammen,

MINIX ist ja wohl in der Intel ME enthalten. Weis jemand was hier das große Problem war mit dem Exploit und der Übernahme der ME? Wenn man sich die Dokumente zu Minix anschaut und den Self Healing Principles [2] dann sollte ja sowas fast ausgeschlossen sein gewesen.... aber es hat ja trotzdem was gegeben.

MINIX nutzt wohl das Userland von Netbsd [1]. Dann wäre ja MINIX nur noch ein Kernel? :confused:

Hat jemand von euch praktische Erfahrungen mit MINIX und kann davon erzählen?

[1] https://en.wikipedia.org/wiki/MINIX_3
[2]http://www.minix3.org/theses/herder_phd_thesis.pdf
 
MINIX ist ja wohl in der Intel ME enthalten.
In neueren Versionen, ich glaube ab der 14nm Generation. Davor war es ein proprietäres System. Allerdings geht es dabei nur um das Betriebssystem, nicht um die darauf laufende Software. Deshalb waren eine Reihe Exploits auf die alte Version und die Minix-Version anwendbar.

Weis jemand was hier das große Problem war mit dem Exploit und der Übernahme der ME?
Sowas ist immer schwer einschätzbar und hängt auch stark vom Anwendungsfall ab. Rein technisch gesehen ist die ME ein normaler Base Management Controller (BMC), wie er auch in jedem besseren Server steckt. Sie hat Zugriff auf den Systembus und damit so ziemlich alles, bringt (wieder nur in aktuellen Versionen) ihre eigene x86-CPU (einen Intel Quark, das ist ein aufgeborter 486er) mit und kann außerdem Code im System Management Mode (SMM) der Host-CPU ausführen.
Kurz gesagt, wenn jemand das Ding unter seine Kontrolle bringt, kann er so ziemlich alles machen. Beliebigen Code ausführen, Daten absaugen und per Netzwerk zu sich nach Hause schicken, etc. Das Betriebssystem und damit auch Virenscanner-Schlangenöl bekommt davon nichts mit. Das kann man nun beliebig weiter führen, z.B. kann der Linux-Kernel durch Zeit-Accounting herausfinden, ob neben ihm Code im SMM ausgeführt wird. Wenn der BNC aber das System kontrolliert, kann er den laufenden Linux-Kernel so verändern, dass diese Kontrolle nicht mehr funktioniert.

Nun ist die ME aber sehr praktisch, zumindest wenn man sie mit Intel AMT kombiniert. Wenn man größere Mengen Arbeitsplätze verwaltet, ist es schon extrem hilfreich entgegen dem Zustand des Betriebsystems Wartungen durchführen zu können. Die Kiste starten, damit sie sich Updates zieht. Ein neues Image über die SSD schreiben. Gestohlene Laptops löschen. Solche Dinge halt. Die Kritik an der ME ist daher auch nicht unbedingt, dass sie existiert. Sondern, dass sie sich nicht abschalten lässt und zwangsläufig in jedem Intel-System steckt. Auch in jedem Gaming-Mainboard, was die Funktionen weder braucht, noch unterstützt. Dieses in jedem System stecken begründet Intel dann auch nur sehr schwammig, angeblich sei es zur Performancesteigerung notwendig. Das weckt auch nicht gerade Vertrauen.

Jeder Schadcode muss seinen Weg aber erstmal in die ME finden. Braucht man dafür den Intel AMT Krams, wie einige Exploits, ist das ziemlich unkritisch. Genauso, wenn ein USB-Stick eingesteckt werden muss. Oder die irgendwelche Windows Dienste installiert und konfiguriert sein müssen. Ganz anders sieht es aber aus, wenn der Exploit ohne weitere Bedingungen aus dem laufenden Betriebssystem kommen kann. Windows durch den wöchentlichen Zeroday-Exploit hops nehmen, dann die ME infizieren und der Nutzer hat verloren. Ähnliche Szenarien werden übrigens auch für UEFI diskutiert.

Der englische Wikipedia-Artikel gibt einen recht guten Überblick über das ganze Thema. Funktion der ME, Kritik, Exploits und so weiter: https://en.wikipedia.org/wiki/Intel_Management_Engine
 
Minix war 'mal mein erstes unixoides OS, verteilt auf ca. einem Dutzend 3,5" Disketten und
lief vor Jahrzehnten auf einem Atari ST - und somit immerhin schon auf einem 32Bit Motorola
Prozessor, während der Rest der Welt auf Amigas spielte oder auf ersten Intel 8/16 Bit PCs
MS-DOS und Basic lernte;-)

Aber es ist interessant im englischen Minix-Wiki zu lesen:
"...Durch den Einsatz in der Intel ME ist das Betriebssystem das am weitesten verbreiteste OS
auf Intel-Prozessoren. Es gibt mehr Installationen als Microsoft Windows, GNU / Linux oder macOS."

Leider werden heutztage Betriebssysteme für Endanwender nur noch auf Dinge reduziert,
die mit dem Betriebssystem gar nichts zu tun haben! Um es überspitzt zu formulieren: Es geht nur noch darum
wie geschmeidig der MausPointer über tausende mal tausende Pixel gleitet - und wie in Millionen Farben
gemalte Comic-Figuren und Symbole selbst dem größten Trottel die Bedienung ermöglichen!
 
Aber es ist interessant im englischen Minix-Wiki zu lesen:
"...Durch den Einsatz in der Intel ME ist das Betriebssystem das am weitesten verbreiteste OS
auf Intel-Prozessoren. Es gibt mehr Installationen als Microsoft Windows, GNU / Linux oder macOS."

Ein Jurist hätte seine Freude an der Formulierung. ;)

Die Aussage mag technisch korrekt sein, ist aber ähnlich sinnbefreit wie der Status von Intel als Hersteller der meisten GPUs (durch die integrierte GPU in den meisten CPUs von Intel).

Abseits der Intel-Welt dürfte Linux durch seinen Einsatz auf Smartphones & Co. die Minix-Installationen weit hinter sich lassen...

Leider werden heutztage Betriebssysteme für Endanwender nur noch auf Dinge reduziert,
die mit dem Betriebssystem gar nichts zu tun haben!

Ein paradisischer Zustand: der Endanwender muss sich immer weniger um die Technik kümmern und kann sich immer mehr dem Einsatz derselbigen widmen, sei es zur Arbeit, Fortbildung oder Zerstreuung.

Um es überspitzt zu formulieren: Es geht nur noch darum wie geschmeidig der MausPointer über tausende mal tausende Pixel gleitet - und wie in Millionen Farben gemalte Comic-Figuren und Symbole selbst dem größten Trottel die Bedienung ermöglichen!

Ein paradisischer Zustand: die Hard- und Software ist gut genug, dass viele einst monumentale technischen Herausforderungen Selbstverständlichkeiten sind und man sich in vollen Zügen auf den Mehrwert für den Anwender konzentrieren kann, inklusive UI- und UX-Aspekten. So können auch technisch unbedarfte Anwender die Vorzüge der IT produktiv einsetzen, was den Wohlstand unserer heutigen Gesellschaft - so ungleich er streckenweise verteilt sein mag - überhaupt erst ermöglicht. :cool:

Der dadurch entstehende Massenmarkt verschafft dem versierten BSDForen.de-Publikum unglaublich leistungsfähige Hardware zu Spottpreisen, die es für Softwareentwicklung, Scientific Computing, Big Data und vieles mehr einsetzen kann. Für den Lohn einer Woche Arbeit steht unterm Schreibtisch monströse Rechenleistung, die früher ganze Rechenzentren ausgefüllt und Millionen gekostet hat. Dank der vielfältig eingesetzten IT vermag der geneigte BSDForen.de-User die Nachfrage nach seinem technischen Wissen auch gleich zum Bestreiten seines Lebensunterhalts mit interessanten und gut bezahlten Tätigkeiten einsetzen. :D

Wer will, kann auch dabei gleich sich in die Untiefen der Embedded Software stürzen, die weit abseits schöner Oberflächen unverzichtbar ihr Werk verrichtet und mit spezialisierten Betriebssystemen wie Minix werkelt. Minix hat sich seine schöne Nische als Embedded OS erarbeitet: klein, robust und mit BSD-Lizenz. :)

Abseits dieser Nische ist mit Minix momentan aber kein Blumentopf zu gewinnen...
 
...Wer will, kann auch dabei gleich sich in die Untiefen der Embedded Software stürzen, die weit abseits schöner Oberflächen unverzichtbar ihr Werk verrichtet und mit spezialisierten Betriebssystemen wie Minix werkelt. Minix hat sich seine schöne Nische als Embedded OS erarbeitet: klein, robust und mit BSD-Lizenz. :)

Das ist dann aber eher die Generation „Arduino", die beim Verlassen der heimeligen Arduino Welt auf einem mProzessor mal mindestens Minix - wenn nicht sogar WinCE brauchen.

Andere programmieren die „ bare metal " - als Betriebssystem reicht immer ein for( ; ; ) also eine Endlosschleife + ein wenig zusätzlicher Code ;-)
 
Ein paradisischer Zustand: der Endanwender muss sich immer weniger um die Technik kümmern und kann sich immer mehr dem Einsatz derselbigen widmen, sei es zur Arbeit, Fortbildung oder Zerstreuung.
Wenns mal so wäre. Ja. Der Normalanwender kann tatsächlich mehr machen als ohne diesen Komfort. Aber es ist keineswegs so, das das problemfrei ist.
Die Situation kennt fast jeder der als jemand gilt, der sich mit dem Computer auskennt. Nämlich das man regelmäßig im Familien- und Bekanntenkreis bei Problemen zu Rate gezogen wird. Weils halt irgendwelche Probleme gibt. Weil sich derjenige mal wieder ein Virus eingefangen hat. Was auch immer.
Und natürlich hilft man dann.

Das ist alles aufgewandte Zeit&Kosten die aber nirgendwo auftreten.
Wenn irgendwas kaputt geht muss halt was Neues gekauft werden oder bei wertigeren Gegenständen wir Autos gehts dann eben in die Werkstatt.

Die Zustände wären weit weniger paradisdisch wenn der Normalanwender für die Kosten aufkommen müsste.
Zum Großteil tut er das sogar schon. In dem er mit seinen Daten bezahlt. Daher merkt er die Kosten nicht. Zumindest nicht direkt.

Der dadurch entstehende Massenmarkt verschafft dem versierten BSDForen.de-Publikum unglaublich leistungsfähige Hardware zu Spottpreisen
Das stimmt. Wie immer profitiert genau derjenige überdurchschnittlich, der sich auskennt.

Abseits dieser Nische ist mit Minix momentan aber kein Blumentopf zu gewinnen...
Abgesehen davon wäre es natürlich wünschenswert, wenn mal ein paar neue Ideen (wobei die Ideen ja zeitlich gesehen nicht wirklich neu sind) in den Massenmarkt Einzug halten würden.
Was wir vorfinden ist nämlich eher eine Softwaremüllhalde, die schon an allen Ecken und Enden knarzt und droht uns jederzeit um die Ohren zu fliegen.

Mal ehrlich: Monolitische Kernel und die Architektur von heutigen Systemen und Programmen wird den Anforderungen nicht mehr wirklich gerecht. Alles leidet unter zu hoher Komplexität und zu hoher Fehleranfälligkeit.

Einige sehen das auch und es gibt auch sozusagen Gegenströmungen. Allerdings ist der Problemkomplex nur langfristig zu lösen. Und langfristig ist leider nicht etwas, wo gerne Kapital investiert wird. Solange die Frickellösungen noch irgendwie Profit abwerfen wird man sie auch weiter führen. Hauptsache die aktuellen Quartalszahlen stimmen. Was nächstes Quartal ist gucken wir dann. Ggf. sind da die Verantwortlichen schon gar nicht mehr im Amt. An Nachhaltigkeit besteht daher nur wenig Interesse. Und das darf man ja überall bestaunen.
 
Abgesehen davon wäre es natürlich wünschenswert, wenn mal ein paar neue Ideen (wobei die Ideen ja zeitlich gesehen nicht wirklich neu sind) in den Massenmarkt Einzug halten würden.

Was vermisst du konkret? Von mir aus dürfte der Fortschritt natürlich auch schneller gehen, aber wir haben in den letzten Jahren die 60 Jahre alte funktionale Programmierung in Mainstream-Sprachen wie C++ und Java begrüßen dürfen, in 40 Jahren aus einem simplen chroot zur Isolation produktionsreife Containerplattformen geschaffen und noch viel mehr in der Pipeline.

Was wir vorfinden ist nämlich eher eine Softwaremüllhalde, die schon an allen Ecken und Enden knarzt und droht uns jederzeit um die Ohren zu fliegen.

Zumindest in Teilbereichen hat die Softwarequalität sehr zugenommen. Man bedenke, dass man heute weitestgehend bedenkenlos eine Rolling Release Linux-Distro einsetzen kann, was vor einigen Jahren noch völliger Wahnsinn gewesen wäre.

Im Gegenzug bauen wir immer komplexere Systeme (man schaue sich einen zeitgenössischen Software-Stack für Single Page Applications an), die ebenso unausgereift wie mächtig sind.

Mal ehrlich: Monolitische Kernel und die Architektur von heutigen Systemen und Programmen wird den Anforderungen nicht mehr wirklich gerecht. Alles leidet unter zu hoher Komplexität und zu hoher Fehleranfälligkeit.

Dies und die allgemeine Fehleranfälligkeit aller Komponenten berücksichtigt man deswegen heutzutage schon im Design, Stichwort Resilient Software Design.

Einige sehen das auch und es gibt auch sozusagen Gegenströmungen. Allerdings ist der Problemkomplex nur langfristig zu lösen.

Siehe oben: Geduld. :)
 
Was vermisst du konkret?
Na wenns jetzt im Betriebssysteme und speziell Minix geht denke ich da z.B. an Microkernel.

Von mir aus dürfte der Fortschritt natürlich auch schneller gehen, aber wir haben in den letzten Jahren die 60 Jahre alte funktionale Programmierung in Mainstream-Sprachen wie C++ und Java begrüßen dürfen, in 40 Jahren
Du beschreibst es ja selbst sehr schön. Es braucht Jahrzehnte bis irgendwelche Sachen und dann meist auchz nur halbgar in den Mainstream wandern.
Auf der anderen Seite haben wir eine ungleich schneller wachsenen Umfang und Komplexität von Software. Die auftretenden Problemfelder können gar nicht so schnell beackert werden wie neue Problemfelder auftreten.
Das Schlimme ist, das in der Basis schon so viel kaputt ist. Vieles was früher vielleicht mal praktikabel und/oder aufgrund der Umstände gar nicht anders lösbar war schleppen wir heute noch herum.
Du hast also eine wackelige Basis, die Du mit ein paar Stützpfeilern provisorisch stabilisiert hast und da packst Du dann noch alles andere oben drauf.

Solide ist das Ganze natürlich nicht.

Zumindest in Teilbereichen hat die Softwarequalität sehr zugenommen. Man bedenke, dass man heute weitestgehend bedenkenlos eine Rolling Release Linux-Distro einsetzen kann, was vor einigen Jahren noch völliger Wahnsinn gewesen wäre.
Gut. Die Einschätzung kann ich jetzt so selbst nicht bestätigen.
Ich will ja auch nicht sagen, das sich überhaupt nix gebessert hat. Die Frage ist ja eher, ob das ausreicht. Und ob die Verbesserungen mit den steigenden Anforderungen schritthalten können. Und das sehe ich eben nicht.

Im Gegenzug bauen wir immer komplexere Systeme
Oftmals auch mit unnötiger Komplexität. Die Intel ME ist ja das beste Beispiel dafür. Als ob CPUs nicht ohnehin schon komplex genug wären (Meltdown und Spectre lassen grüßen). Schon das hat man nicht im Griff. Und dann macht man noch solche Schoten.

Dies und die allgemeine Fehleranfälligkeit aller Komponenten berücksichtigt man deswegen heutzutage schon im Design
Das Problem ist ja weniger, das das Know-How nicht da ist. Es ist halt nur zu wenig verbreitet. Plus dem schon angesprochenen Aspekt des time-to-market der kaum zulässt, das man ausgereifte und ausgeteste Software ausliefert.
Man versucht das dadurch zu umgehen, in dem man halt darauf achtet, das man schnell updaten kann. Im Internetzeitalter ist das ja kein großes Problem mehr. Aber im Grunde ist das eine Bankrotterklärung der Softwareindustrie.
 
Solide ist das Ganze natürlich nicht.
Worse is Better. ;)

Und ob die Verbesserungen mit den steigenden Anforderungen schritthalten können. Und das sehe ich eben nicht.
Dafür funktioniert die Chose erstaunlich gut. Ich kann mich nicht entsinnen, wann ich das letzte Mal - oder überhaupt - das Gefühl hatte: Mensch, der Linux/BSD-Kernel ist aber schlecht, ich brauche jetzt unbedingt Minix! :)

Das Problem ist ja weniger, das das Know-How nicht da ist. Es ist halt nur zu wenig verbreitet. Plus dem schon angesprochenen Aspekt des time-to-market der kaum zulässt, das man ausgereifte und ausgeteste Software ausliefert.
In diesem Fall helfen nur zwei Dinge:
  • Jeden Tag einen kleinen Beitrag zur Verbesserung leisten, sei es durch Mentoring, Meetups, Talks, Beiträge zu Open Source etc.
  • Seinen eigenen Laden aufmachen, mit dem man es besser macht und die Überlegenheit der Technik demonstriert

Man versucht das dadurch zu umgehen, in dem man halt darauf achtet, das man schnell updaten kann. Im Internetzeitalter ist das ja kein großes Problem mehr. Aber im Grunde ist das eine Bankrotterklärung der Softwareindustrie.
Die kurzen Feedback-Zyklen - egal wie sauber man arbeitet - eine der wichtigsten Errungenschaften der vergangenen Jahre. Egal wie sauber man arbeitet, kein Plan überlebt den Nutzerkontakt.
 
Na wenns jetzt im Betriebssysteme und speziell Minix geht denke ich da z.B. an Microkernel.

Das interessiert mich auch. Deshalb lese ich gerade viel über Minix.

....
Du hast also eine wackelige Basis, die Du mit ein paar Stützpfeilern provisorisch stabilisiert hast und da packst Du dann noch alles andere oben drauf.

Solide ist das Ganze natürlich nicht.

Meiner Meinung nach ist das [1] hier ein gutes Beispiel wie fragil das ganze ist. Es wurden ein paar bisher immer "0" Bits auf 1 gesetzt und jede Menge "gute" Router haben die Grätsche gemacht, BGP ist ja bloß ein "grundlegendes Protokol", :zitter:

Oftmals auch mit unnötiger Komplexität. Die Intel ME ist ja das beste Beispiel dafür. Als ob CPUs nicht ohnehin schon komplex genug wären (Meltdown und Spectre lassen grüßen). Schon das hat man nicht im Griff. Und dann macht man noch solche Schoten.

Das Problem ist ja weniger, das das Know-How nicht da ist. Es ist halt nur zu wenig verbreitet. Plus dem schon angesprochenen Aspekt des time-to-market der kaum zulässt, das man ausgereifte und ausgeteste Software ausliefert.
Man versucht das dadurch zu umgehen, in dem man halt darauf achtet, das man schnell updaten kann. Im Internetzeitalter ist das ja kein großes Problem mehr. Aber im Grunde ist das eine Bankrotterklärung der Softwareindustrie.

Dem kann ich nur zustimmen.

[1] https://blog.fefe.de/?ts=a2a422b0
 
Die Frage ist immer welches Problem man mit einem entsprechenden Ansatz lösen will. Microkernel haben ihren Platz im Embedded Bereich und sind dort auch sehr weit verbreitet (z.B. jedes Modem in einem Handy). Dies kommt hauptsächlich daher, dass sie wenig Anforderungen an das System selbst haben, leicht anpassbar sind und es auch hier keinerlei "Legacy" zu beachten gibt.

MINIX ist so ein bisschen dazwischen. Mit einem Bein steht es im Microkernel-Lager, mit dem anderen Bein steht es im POSIX-Lager. Beides schließt sich offensichtlich nicht aus, aber das Grunddesign von POSIX ist für Microkernel nicht ideal, was wiederum zu viel Overhead und damit geringe Performance steht. Aber ohne POSIX ist deine Software-Kompatibilität wiederum so gut wie nicht vorhanden.

Treibertechnisch sieht es halt auch eher mau aus. Mehr als ein Framebuffer Treiber für die GUI ist oft nicht drin. Dito für alle andere Hardware da draußen.

Dann kommt man wieder zu der Frage welches Problem man lösen will und ob es überhaupt ein Problem ist. Auf einem Standard-Desktop bzw. Server löst MINIX nicht viele Probleme, sondern bringt aufgrund der oben genannten Punkte eher viele Nachteile. Windows und Linux können z.B: bestimmte Treiber-Fehler/Crashes ebenso abfedern, wobei Windows das hier im Detail besser hinbekommt. Natürlich nicht alle Fehler, aber hier ist die Frage wie oft das überhaupt auftritt. Ein gewisses Self-Healing ist hier also durchaus auch gegeben.

Sind natürlich keine unlösbaren Probleme für z.B. MINIX, aber es findet sich halt einfach niemand, der damit für den Sektor einsteigt. Auch die meisten L4-Leute haben keine Lust auf Treiber-Entwicklung und starten einfach einen Linux-Kernel im Userspace (L4Linux) und kümmern sich lieber um das L4 Ökosystem an sich, wenn man es denn so nennen will.
 
Zurück
Oben