Binärer Blob
Im Zusammenhang mit Kostenlose und Open-Source-Software, proprietäre Software nur als als erhältlich binäre ausführbare Datei wird als als bezeichnet Klecks oder binärer Blob. Der Begriff bezieht sich normalerweise auf a Gerätetreiber Modul geladen in die Kernel einer Open-Source Betriebssystemund wird manchmal auch auf Code angewendet, das außerhalb des Kernels läuft, wie z. B. das System Firmware Bilder, Mikrocode Updates, oder Userland Programme.[1][2][3][4][5][6] Der Begriff Klecks wurde zuerst in verwendet in Datenbankmanagementsystem eine Sammlung von zu beschreiben Binärdaten als einzelne Einheit gespeichert.
Wann Computerhardware Anbieter bieten vollständige technische Dokumentation für ihre Produkte. Entwickler von Betriebssystemen können Hardware -Geräte -Treiber schreiben, die in die Kernel des Betriebssystems aufgenommen werden. Einige Anbieter, wie z. NvidiaStellen Sie keine vollständige Dokumentation für einige ihrer Produkte an und geben Sie stattdessen nur binäre Treiber an. Diese Praxis ist am häufigsten für Beschleunigte Grafiken Treiber, drahtlose Netzwerkgeräteund Hardware RAID -Controller.[7] Vor allem sind binäre Blobs für nicht-drahtlose sehr ungewöhnlich Netzwerkschnittstellencontroller, was fast immer über Standard -Dienstprogramme konfiguriert werden kann (wie wie Ifconfig) aus der Schachtel; Theo de Raadt von OpenBSD führt dies der Arbeit von einer einzigen zu Freebsd Entwickler.[8][9]
Richtlinie nach Projekt
Etwas FSF-Genehmigte Projekte bemühen sich um eine Bereitstellung eines frei Betriebssystem und entfernen alle binären Blobs, wenn keine Dokumentation für Hardware oder Quellcode Für Gerätetreiber und alle anwendbaren Firmware sind verfügbar. Solche Projekte umfassen Linux-Libre Kernelverpackung von FSFLA, Parabel, Devuan, Härte, und Librecmc.[10] Die überwiegende Mehrheit der Open-Source-Projekte unterscheidet jedoch zwischen nur binären Gerätetreibern (Blobs) und Binärfirmware (nicht als Blobs als Blobs berücksichtigt[11]:... ), damit bestimmte proprietäre Firmware im Rahmen ihrer Kerne frei verteilt werden und unter der Meinungsverschiedenheit einiger zentraler Mitwirkender auch die Verwendung proprietärer Geräte -Treiber, die extern verteilt sind Komponenten für die Arbeit mit ihrem System.[12][13] Projekte, die dieser Richtlinie folgen, umfassen die Linux Kernel selbst, Netbsd, Freebsd, Libelle BSDund die meisten Linux -Verteilungen.[14] Einige dieser Projekte bieten Optionen für den Aufbau des Systems ohne proprietäre Firmware, wodurch der Sourcess -Mikrocode bei Bedarf ausgeschlossen ist.[15]
Das OpenBSD Das Projekt hat eine bemerkenswerte Richtlinie, nicht nur keine binären Geräte-Treiber in seinen Quellbaum zu akzeptieren, sondern auch offiziell keine proprietären Geräte-Treiberkomponenten von Drittanbietern auf seiner Plattform zu unterstützen.[16]:38 ... Zitiert nicht nur das Potenzial für nicht nachweisbare oder irreparable Sicherheitsfehler, sondern auch den Eingriff in die Offenheit und Freiheit seiner Software.[17] Das Kostenlose Software -Stiftung (FSF) kämpft aktiv gegen binäre Blobs.[18] FSF betrachtet auch die Richtlinien von OpenBSD verwirrend formuliert, da "Blobs" in der BSD-Community nur auf das bezeichnet, was sie als nicht freie Treiber betrachtet, und nicht für proprietäre Firmware und saure Mikrocode gilt.[19]: BSD Das Debian Das Projekt umfasste sowohl kostenlose als auch nicht freie binäre Firmware aus dem Linux Kernelklar markieren und trennen die nicht freien Pakete[20] laut dem Debian Social Contract. Ab Debian 6.0 wurden diese Blobs entfernt.[19]: Debian
Für OpenBSD, Projektleiter Theo de Raadt verteidigt die Richtlinie, die Verteilungsrechte nur für Microcode -Firmware zu bitten. "Sobald sie verteilt sind ... funktioniert das Gerät zumindest." Er impliziert, dass die Alternative für die Mitglieder seines kleinen Projekts sein würde, die kostenlose Firmware in der Montagesprache vieler Chipsätze zu codieren, und lädt uns nicht mit mehr Aufgaben auf. Trotzdem bevorzugt er Chipsätze, die ohne Firmware laufen, und spricht herzlich von asiatischen Designs, die er als langsamer für den Markt beschreibt, aber reifer.[17]

In dem Linux Kernel Entwicklungsgemeinschaft, Linus Torvalds hat starke Aussagen zum Thema Binärmodule gemacht und behauptet: "i sich weigern Um sogar in Betracht zu ziehen, meine Hände über ein nur binäres Modul zu binden "und fortzusetzen:" Ich möchte, dass die Leute wissen, dass es ihr Problem ist, wenn sie nur binäre Module verwenden. "[21] Im Jahr 2008 unterschrieben 176 Linux -Kernel -Entwickler a Positionserklärung zu Linux -Kernel -Modulen Das heißt, "wir, das untergezeichnete Linux-Kernel-Entwickler, betrachten jedes Linux-Kernel-Modul oder den Treiber für geschlossene Quellen als schädlich und unerwünscht ... wir haben wiederholt festgestellt, dass sie für Linux-Benutzer, Unternehmen und das Greater Linux-Ökosystem schädlich sind."[22] Der Linux -Kernel -Betreuer Greg Kroah-Hartman hat angegeben, dass es illegal ist, geschlossene Quellmodule für die neu zu verteilen GNU Allgemeine öffentliche lizenzlizenzierte Linux Kernel.[23]
Der Linux-Kernel enthält jedoch geschlossene Firmware, die von verschiedenen Gerätetreibern erforderlich sind.[24][19] Alexandre Oliva, der Betreuer von Linux-Libre, Eine Version des Linux-Kernels, der versucht, alle binären Blobs, einschließlich Sourceless Microcode, zu entfernen, schrieb 2011: "Linux ist seit 1996 keine kostenlose Software, als Herr Torvalds die ersten nicht freien Software in den Verteilungen von akzeptierte Linux er hat seit 1991 veröffentlicht. In diesen Jahren wuchs dieser Kernel um den Faktor 14, die Menge an nicht freier Firmware, die von Linux-Treibern erforderlich war, um einen alarmierenden Faktor von 83. "[25]
Die meisten Treiber für mobile Geräte Ausführen der Android -Betriebssystem werden in binär versendet und mit einer bestimmten Version des Linux -Kernels verknüpft. Dies macht es sehr schwierig, eine Kernelversion zu aktualisieren, da dies möglicherweise erforderlich ist Reverse-Engineering, neu auf die proprietären Gerätetreiber als kostenlose Software, Erstellen und Debuggen von Wrappern, neu implementieren. Binäres Patching, oder eine Kombination dieser Schritte, die alle impliziert, dass Legacy -Geräte niemals die neueste Android -Version erhalten.
Probleme
Es gibt eine Reihe von Gründen, warum binäre Blobs problematisch sein können.[11]
Erstens kann ihr präziser Vorgang nicht bekannt sein und Fehler kann nicht durch Prüfungsquellencode erkannt werden. Fehler werden häufig nur durch sorgfältige Untersuchung diagnostiziert, wenn sich ein System unerwartet zu verhalten beginnt. Solche unentdeckten Fehler können Benutzer und Systeme auch stillschweigend Sicherheitsrisiken aussetzen. Die Fitness für den Zweck des Fahrers kann daher nicht überprüft werden, und selbst wenn ein Fehler festgestellt wird, gibt es keine einfache Möglichkeit, ihn zu beheben.
Zweitens wie das Quellcode Es ist nicht verfügbar, der Fahrer kann von seinen Benutzern nicht ohne weiteres verbessert werden, kann nicht auf Architekturen portiert werden, die nicht ursprünglich unterstützt werden oder nicht für geringfügige Varianten der Hardware geeignet sind, oder es wird aktualisiert, um in neuen Kerneln mit der geänderten API und Architektur geeignet zu sein.
Drittens würde die Verwendung dieser Software Benutzer dazu zwingen, Anbietern oder Dritten zu vertrauen, um keine Rückstände, Spyware oder böswilligen Code in den Blob zu bringen. Außerdem kann der Hardware -Anbieter beschließen, ein bestimmtes Betriebssystem nicht zu unterstützen, die Wartung der Fahrer jederzeit aufzugeben, oder falls das Unternehmen das Geschäft ausgeht, den Fahrer vollständig nicht unterstützt werden.
Schließlich können binäre Blobs als Zeichnen einer Grenze zwischen dem Teil der Community angesehen werden, der an freie Software -Ideale glaubt, die proprietäre Software ablehnt, und dem Teil, der Open Source aus rein technischen Gründen als wünschenswert ansieht und häufig eine starke Opposition gegen binäre Blobs fehlt "Solange sie arbeiten". Diese Fragmentierung und die Akzeptanz einer wachsenden Anzahl proprietärer Komponenten in Linux werden als schwächer die Fähigkeit der Gemeinschaft angesehen, dem Trend der Hersteller zu widerstehen, sich zunehmend zu weigern, Dokumentation für ihre Binärdateien bereitzustellen.
Verwenden Sie über Wrapper
A Verpackung IS Software, mit der ein Betriebssystem einen Binary Proprietary Device -Treiber für ein anderes Betriebssystem verwenden kann. Beispiele für Wrapper sind Ndiswrapper zum Linux, und Projekt böse zum Freebsd und Netbsd. Diese Wrapper ermöglichen es diesen Betriebssystemen, für die geschriebenen Netzwerktreiber zu verwenden Microsoft Windows durch Implementierung Microsoft's Ndis API.
Ein weiteres Beispiel ist die Bereitstellung von Kompatibilitätsebenen, damit ausländische Versorgungsunternehmen zur Dienstleistung der Hardware verwendet werden können. Beispiele sind einige RAID -Controller Treiber in Freebsd, bei dem die Systemadministrator müsste aktivieren Linux -Kompatibilitätsebene in FreeBSD und unabhängig voneinander Linux-spezifische binäre Blobs direkt vom Hardwarehersteller beschaffen, um die Hardware zu überwachen und zu bedienen.[12][13][26] Circa 2005 hat dieser Sachverhalt angefordert OpenBSD Um seine zu kreieren und populär zu machen Biografie (4), Bioctl und Sensorantrieb Konzepte als alternative Lösung für ÜBERFALLEN Überwachung,[27][16] Beide Konzepte haben anschließend ihren Weg in den Weg gefunden Netbsd auch.
Gerätefirmware
Firmware Ist die Software, die von der Onboard erforderlich ist Mikrocontroller Das begleitet einige Hardware, wird im Allgemeinen nicht als binärer Blob angesehen.[28][19]: BSD[11]:... In vielen Geräten wird die Firmware in gespeichert nicht flüchtig am Bord Flash-SpeicherUm die Kosten zu senken und Upgrades zu erleichtern, enthalten einige Geräte nur statischer Widder und erfordern das Betriebssystem des Hosts, Firmware jedes Mal hochzuladen, wenn sie angeschlossen sind (insbesondere Firmware USB Geräte). Obwohl die Firmware im Betriebssystemtreiber vorhanden ist, wird sie lediglich auf das Gerät kopiert und von der CPU nicht ausgeführt, wobei Bedenken hinsichtlich zusätzlicher Sicherheitsfehler im Vergleich zu dem, was bereits mit einem bereits möglich ist DMA -Angriff Auch wenn die Firmware bereits immer im Gerät gespeichert wurde. Das OpenBSD -Projekt akzeptiert binäre Firmware/Mikrocode Bilder und verteilt diese Bilder, wenn die Lizenz zulässt.[28][29] Wenn der Anbieter freie und bedingungslose Umverteilung nicht zulässig ist, können die maschinellen Anweisungen zum Abrufen dieser Bilder in der Bereitstellung vorgelegt werden. Häfen Baum (der einige belastete drahtlose Geräte (z. B. drahtlose Intel drahtlos) während der ersten Installation erhältlich).[30]
BIOS und UEFI
Das BIOS, welches wie a funktioniert Bootloader und unterstützt das Erbe Realer Modus Anwendungen sind eine entscheidende Komponente vieler IBM-kompatibel Computers. Das BIOS kann eine Sicherheit sein Hintertür.[31][32][Fehlgeschlagene Überprüfung] In den späten neunziger Jahren begann die Arbeiten an der EFI (Extensible Firmware -Schnittstelle) mit dem Ziel, Legacy -BIOs mit einem modularen Treibermodell an eine moderne Schnittstelle zu verschieben. EFI ist geschlossen und wurde schließlich von vielen branchenführenden Hardwareherstellern als übernommen Uefi (Unified Extensible Firmware -Schnittstelle). Das EDK (EFI Development Kit) wurde entwickelt, um EFI -Firmware -Entwicklungsprojekte zu unterstützen.[33]
Auch Ende der 1990er Jahre die CORBOOT Das Projekt wurde begonnen, eine Open -Source -Alternative zu Legacy BIOS von Grund auf neu zu erstellen.[33] Die Corboot Developer Community organisiert Stefan Reinauer und wird von Firmware -Entwicklern mit Bekanntheitsrechten geleitet.[34] Trotz der Binärfirmware für geschlossene Quelle stand das Herzstück der x86 Der Architektur -Corboot enthält nur die wenigen proprietären Binärdateien, die erforderlich sind, um den Benutzern einen Basis -Hardware -Support zu bieten.[35] Eine völlig Open -Source -Alternative zu BIOS und UEFI ist Libreboot, was von der gefördert wurde Kostenlose Software -Stiftung (FSF).[36]
Siehe auch
Verweise
- ^ Michael Larabel (2012-08-06). "CORBOOT: Ersetzen von Intels binärer Video -Bios -Blob". Phoronix. Abgerufen 2015-06-23.
- ^ Chris Hoffmann (2015-02-13). "Wie Intel und PC -Hersteller Sie daran hindern, die Firmware Ihres Laptops zu ändern". pcworld.com. Abgerufen 2015-06-23.
- ^ "BIOS Freiheitsstatus". Purismus. 2014-11-12. Abgerufen 2015-06-23.
- ^ Michael Larabel (2012-10-24). "Raspberry Pi GPU -Treiber ist als Mist". Phoronix. Abgerufen 2015-06-23.
- ^ Jake Edge (2015-06-17). "Chromium beginnt plötzlich einen binären Blob herunterzuladen". Lwn.net. Abgerufen 2015-06-23.
- ^ "3.9:" Blob! "". OpenBSD Release -Songs. OpenBSD. 2006-05-01.
Blobs sind mit Anbietern zusammengestellte binäre Treiber ohne Quellcode.
- ^ "Debian -Pakete, die aus dem Quellpaket 'Firmware -nonfree' erstellt wurden - Binärfirmware für verschiedene Treiber im Linux -Kernel". 2010. Abgerufen 2010-03-25.
- ^ Konstantin A. Murenin (2006-12-10). "Поччч т т в важно име докумм & цию п п прарite ванию железа". Linux.org.ru (auf Russisch).
- ^ Theo de Raadt (2016-12-03). "Seite 11: Die Hardware: Ethernet". Offene Dokumentation für Hardware. OpenCon 2006, 2. bis 3. Dezember 2006. Innenhof Venedig Flughafen, Venedig/Tessera, Italien.
Nur wenige widerspenstige Anbieter bleiben geschlossen. / Ethernet 95% dokumentiert 99% Arbeits- / offene Dokumentation vor allem aufgrund der Bemühungen eines Mannes: Bill Paul
- ^ "Liste der kostenlosen GNU/Linux -Verteilungen". GNU -Projekt. Kostenlose Software -Stiftung.
- ^ a b c Andrews, Jeremy (2006-04-19). "Interview mit Jonathan Gray und Damien Bergamini". kerneltrap.org. Archiviert von das Original Am 2007-12-11. Abgerufen 2008-01-06.
- ^ a b Scott lang; Adaptec, Inc (2000). "AAC (4) - Adaptec Advancedraid Controller -Treiber". BSD Cross Referenz. Freebsd.
Wenn der Kernel mit der Option compat_linux kompiliert wird oder die Module von AAC_LINUX.KO und Linux.ko geladen werden ...
- "AAC - Adaptec Advancedraid Controller -Treiber". FreeBSD -Handbuchseiten.
- ^ a b Achim Leubner (2013). "AACRAID (4) - APADEC AACRAID -Controller -Treiber". BSD Cross Referenz. Freebsd.
Wenn der Kernel mit der Option compat_linux kompiliert wird oder die Module von AACraid_linux.ko und Linux.ko geladen werden ...
- "Aacraid - adaptec aacraid Controller -Treiber". FreeBSD -Handbuchseiten.
- ^ Matzan, Jem (15. Juni 2005). "BSD Cognoscenti unter Linux". Newsforge. Archiviert von das Original am 23. März 2006. Abgerufen 2006-07-07. Siehe Christos Zoulas 'Antwort auf "Ist die Freigabe zwischen frei/offen/netbsd und dem Linux -Kernel ein gemeinsames Ereignis? Und wenn ja, geht es in beide Richtungen?"
- ^ "bauen/optionen/ohne_sourceless_ucode". BSD Cross Referenz. Freebsd. 2012-02-04.
- ^ a b "3.8:" Hacker des verlorenen Überfalls "". OpenBSD Release -Songs. OpenBSD. 2005-11-01.
- ^ a b Andrews, Jeremy (2006-05-02), "Interview: Theo de Raadt", Kerneltrap, Jeremy Andrews, archiviert von das Original Am 2006-06-03
- ^ "Protest gegen ATI führte fast zur Verhaftung der RMS". Kostenlose Software -Stiftung. 27. April 2006. Abgerufen 2006-10-10.
- ^ a b c d "Erklären Sie, warum wir andere Systeme nicht unterstützen". GNU -Projekt. Kostenlose Software -Stiftung.
- ^ "Debian Firmware-Linux-Pakete". 2010. Abgerufen 2010-03-25.
- ^ "a/lt-binär". lwn.net.
- ^ Greg Kroah-Hartman (Juni 2008). "Eine Positionserklärung zu Linux -Kernel -Modulen". Die Linux Foundation.
- ^ Greg Kroah-Hartman (2006). "Mythen, Lügen und Wahrheiten über den Linux -Kernel". Linux -Symposium.
- ^ "Nichtfreie Firmware". GNU -Projekt § Richtlinien für freie Systemverteilung (GNU FSDG). Kostenlose Software -Stiftung.
- ^ ":: [fsfla] :: Nimm deine Freiheit mit Linux-2.6.33-Libre zurück". fsfla.org.
- ^ Jonathan Gray (2006-12-02). "Seite 26: Nur für Geschäft geöffnet: FreeBSD". Fahrerarchitektur und Implementierung in OpenBSD. OpenCon 2006, 2. bis 3. Dezember 2006. Innenhof Venedig Flughafen, Venedig/Tessera, Italien. Abgerufen 2019-03-27.
Treiber, die für binäre Tools nur für Linux RAID -Management ausgelegt sind
- ^ Theo de Raadt (2005-09-09). "RAID -Management -Unterstützung in OpenBSD 3.8". MISC@ (Mailingliste). OpenBSD.
- ^ a b "OpenBSD arbeitet daran, drahtlose Chipsets zu öffnen". Kerneltrap. 2. November 2004. archiviert von das Original Am 2006-06-20. Abgerufen 2006-06-23.
- ^ "/sys/dev/microcode/". OpenBSD.
- ^ "Systeme/Firmware". OpenBSD -Ports.
- ^ "Intel VPRO -Technologie". Intel.com. 2012-05-14. Abgerufen 2014-04-10.
- ^ "BIOS & Firmware -Kompatibilität". Absolute.com. Abgerufen 2014-04-10.
- ^ a b Vincent Zimmer; Jiming Sun; Marc Jones; Stefan Reinauer (2015). Embedded Firmware -Lösungen: Best Practices für das Internet der Dinge. Apress. p. 121. ISBN 9781484200704.
- ^ Vincent Zimmer; Jiming Sun; Marc Jones; Stefan Reinauer (2015). Embedded Firmware -Lösungen: Best Practices für das Internet der Dinge. Apress. p. 61. ISBN 9781484200704.
- ^ Vincent Zimmer; Jiming Sun; Marc Jones; Stefan Reinauer (2015). Embedded Firmware -Lösungen: Best Practices für das Internet der Dinge. Apress. p. 65. ISBN 9781484200704.
- ^ "Kampagne für freies BIOS". Kostenlose Software -Stiftung. 2006-11-29. Abgerufen 2007-01-02.
Externe Links
- McMillan, Robert (21. Juni 2006). "Forscher hacken Wi-Fi-Fahrer, um den Laptop zu durchbrechen". InfoWorld. Archiviert von das Original am 2. Juli 2006. Abgerufen 2006-06-23.
- Kerneltrap -Artikel Auf Damien Bergaminis WPI (4) -Treiber, eine blöde IPW3945 -Alternative für OpenBSD
- Kerneltrap -Interview mit Jonathan Gray und Damien Bergamini bezüglich binärer Blobs
- Das Black Hat Funk Exploit Interview, wörtlich von Brian Krebs auf der Website der Washington Post, archiviert am 5. Mai 2012
- Ein kreatives Beispiel für den Wert freier Treiber, Lwn.net