Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Драйвер проприетарного устройства является закрытым исходным кодом драйвера устройства опубликовано только в двоичном коде . В контексте бесплатного программного обеспечения с открытым исходным кодом драйвер устройства с закрытым исходным кодом называется blob или двоичным blob . Этот термин обычно относится к модулю ядра с закрытым исходным кодом, загружаемому в ядро операционной системы с открытым исходным кодом , а иногда также применяется к коду, выполняющемуся вне ядра, например, образы системной прошивки , обновления микрокода или программы пользовательского пространства . [1][2] [3] [4] [5] [6] Термин blob впервые был использован в системах управления базами данных для описания набора двоичных данных, хранящихся как единое целое.

Когда поставщики компьютерного оборудования предоставляют полную техническую документацию для своих продуктов, разработчики операционных систем могут писать драйверы устройств, которые будут включены в ядра операционной системы. Однако некоторые поставщики, такие как Nvidia , не предоставляют полную документацию для некоторых из своих продуктов, а вместо этого предоставляют драйверы только для двоичных файлов. Эта практика наиболее распространена для драйверов ускоренной графики , беспроводных сетевых устройств и аппаратных RAID-контроллеров . [7] В частности, двоичные BLOB-объекты очень редко используются в контроллерах интерфейса , не относящемся к беспроводной сети , которые почти всегда можно настроить с помощью стандартных утилит (например, ifconfig) из коробки; Тео де Раадт из OpenBSD связывает это с работой, проделанной одним разработчиком FreeBSD . [8] [9]

Операционные системы с открытым исходным кодом [ править ]

Некоторые проекты, одобренные FSF, стремятся предоставить бесплатную операционную систему и удаляют все двоичные двоичные объекты, когда отсутствует документация по оборудованию или исходный код для драйверов устройств и всех применимых микропрограмм; такие проекты включают упаковку ядра Linux-libre от FSFLA , Parabola , Devuan , Trisquel и LibreCMC . [10] Тем не менее, в подавляющем большинстве проектов с открытым исходным кодом проводится различие между драйверами устройств, предназначенными только для двоичного кода (BLOB-объекты), и встроенными программами, предназначенными только для двоичных файлов (не считающимися BLOB-объектами [11] : ), что позволяет свободно распространять определенные проприетарные прошивки как часть их ядер и, к несогласию некоторых участников ядра, также поддерживает использование проприетарных драйверов устройств, которые распространяются извне, обеспечивая внутренние интерфейсы совместимости для таких проприетарных драйверов и пользовательского пространства. компоненты для работы со своей системой. [12] [13] Проекты, следующие этой политике, включают само ядро Linux , NetBSD , FreeBSD , DragonFly BSD и большинство дистрибутивов Linux . [14] Некоторые из этих проектов действительно предоставляют возможности для построения системы без проприетарного микропрограммного обеспечения, что исключает использование микрокода без исходного кода по запросу.[15]

У проекта OpenBSD есть примечательная политика, заключающаяся не только в том, чтобы не принимать какие-либо бинарные драйверы устройств в свое дерево исходных текстов, но и официально не поддерживать какие-либо сторонние проприетарные компоненты драйверов устройств на своей платформе; [16] : 38… ссылаясь не только на возможность необнаруживаемых или непоправимых недостатков безопасности, но и на посягательство на открытость и свободу программного обеспечения. [17] Фонд свободного программного обеспечения (FSF) ведет активную кампанию против двоичных блобов. [18] FSF также считает, что политика OpenBSD сформулирована неправильно, поскольку «капли» в сообществе BSD относятся только к тем, что оно считает несвободными драйверами, и не применяется к проприетарным прошивкам и микрокодам без исходного кода.[19] : BSD Впроект Debian входили как бесплатные, так и несвободные бинарные прошивки из ядра Linux , четко помечая и разделяя несвободные пакеты [20] в соответствии с Социальным договором Debian . Начиная с Debian 6.0 эти капли были удалены. [19] : Debian

В отношении OpenBSD руководитель проекта Тео де Раадт защищает политику запроса прав на распространение только микропрограммного обеспечения. «Как только они распространяются ... по крайней мере, устройство работает». Подразумевая, что альтернативой для участников его небольшого проекта было бы кодирование бесплатных прошивок на языке ассемблера многих наборов микросхем, он умоляет «не загружать нас дополнительными задачами». Несмотря на это, он отдает предпочтение чипсетам, которые работают без прошивки, и тепло отзывается об азиатских дизайнах, которые он описывает как более медленные, но более зрелые. [17]

Проприетарный графический драйвер Linux, libGL-fglrx-glx , будет использовать ту же инфраструктуру DRM с Mesa 3D . Поскольку в ядре нет стабильного ABI , AMD приходилось постоянно адаптировать прежний двоичный blob-объект, используемый Catalyst.

В сообществе разработчиков ядра Linux Линус Торвальдс сделал резкие заявления по вопросу о модулях, предназначенных только для двоичных файлов, заявив: «Я отказываюсь даже думать о том, чтобы связать свои руки с каким-либо модулем, предназначенным только для двоичных файлов», и продолжая: «Я хочу, чтобы люди знали что когда они используют только двоичные модули, это ИХ проблема ». [21] В 2008 году 176 разработчиков ядра Linux подписали Заявление о позиции по модулям ядра Linux, в котором говорилось: «Мы, нижеподписавшиеся разработчики ядра Linux, считаем любой модуль или драйвер ядра Linux с закрытым исходным кодом вредным и нежелательным ... Мы неоднократно обнаружил, что они вредны для пользователей Linux, бизнеса и экосистемы Linux в целом ».[22] Сопровождающий ядра LinuxГрег Кроа-Хартман заявил, что распространение модулей с закрытым исходным кодом для ядра Linux под лицензией GNU General Public License является незаконным . [23]

Однако ядро ​​Linux содержит микропрограмму с закрытым исходным кодом, необходимую для различных драйверов устройств. [24] [19] Александр Олива , разработчик Linux-libre , версии ядра Linux, которая пытается удалить все двоичные двоичные объекты, включая микрокод без исходного кода, писал в 2011 году: «Linux не был бесплатным программным обеспечением с 1996 года, когда Г-н Торвальдс принял первые части несвободного программного обеспечения в дистрибутивах Linux, которые он опубликовал с 1991 года. За эти годы, хотя это ядро ​​выросло в 14 раз, количество несвободных прошивок, необходимых для драйверов Linux, увеличилось на тревожный фактор - 83 ». [25]

Большинство драйверов для мобильных устройств под управлением операционной системы Android поставляются в двоичном формате и связаны с определенной версией ядра Linux. Это очень затрудняет обновление версии ядра, потому что может потребоваться обратное проектирование , повторная реализация проприетарных драйверов устройств в качестве бесплатного программного обеспечения, создание и отладка оболочек, двоичное исправление или комбинация этих шагов, все из которых подразумевает, что устаревшие устройства будут никогда не устанавливайте последнюю версию Android. [ необходима цитата ]

Проблемы [ править ]

Есть ряд причин, по которым двоичные капли могут быть проблематичными. [11]

Во-первых, их точная работа не может быть известна, и ошибки не могут быть обнаружены путем аудита исходного кода; Ошибки часто диагностируются только путем кропотливого исследования, когда система начинает вести себя неожиданно. Такие необнаруженные ошибки также могут незаметно подвергать пользователей и системы угрозам безопасности. Таким образом, соответствие драйвера цели невозможно проверить, и даже если ошибка обнаружена, нет простого способа ее исправить.

Во-вторых, поскольку исходный код недоступен, драйвер не может быть легко улучшен его пользователями, не может быть перенесен на архитектуры, которые изначально не поддерживаются, не может быть адаптирован для работы с небольшими вариантами оборудования или обновлен для работы в новых ядрах, имеющих изменил API и архитектуру.

В-третьих, использование этого программного обеспечения заставит пользователей доверять поставщикам или третьим сторонам, чтобы они не помещали бэкдоры, шпионское ПО или вредоносный код в большой двоичный объект. Кроме того, поставщик оборудования может принять решение не поддерживать данную операционную систему, отказаться от обслуживания драйверов в любое время или, в случае банкротства компании, оставить драйвер полностью неподдерживаемым.

Наконец, двоичные капли можно рассматривать как проводящую грань между той частью сообщества, которая верит в идеалы свободного программного обеспечения, отвергая несвободное программное обеспечение, и частью, которая считает открытый исходный код желательным по чисто техническим причинам, часто не имея сильного противодействия двоичным каплям. «пока они работают». Эта фрагментация и принятие растущего числа проприетарных компонентов в Linux рассматривается как ослабление способности сообщества противостоять тенденции производителей все чаще отказываться от предоставления документации для своих двоичных файлов.

Использовать через оболочки [ править ]

Обертка это программа , которая позволяет операционная системе использовать бинарный драйвер запатентованного устройства , написанный для другой операционной системы. Примерами оболочек являются NdisWrapper для Linux и Project Evil для FreeBSD и NetBSD . Такие упаковщики позволяют эти операционные системы используют сетевые драйверы , написанные для Microsoft Windows за счет внедрения Microsoft «s NDIS API .

Другой пример - обеспечение уровней совместимости, чтобы можно было использовать сторонние утилиты для обслуживания оборудования. Примеры включают некоторые драйверы RAID-контроллера в FreeBSD , где системный администратор должен будет включить уровень совместимости с Linux в FreeBSD и самостоятельно закупить двоичные двоичные объекты для Linux непосредственно у производителя оборудования, чтобы контролировать и обслуживать оборудование. [12] [13] [26] Примерно в 2005 году такое положение дел побудило OpenBSD создать и популяризировать свои концепции устройств bio (4) , bioctl и сенсорных дисков в качестве альтернативного решения для RAID.мониторинг [27] [16], обе концепции впоследствии нашли свое отражение и в NetBSD .

Прошивка устройства [ править ]

Прошивка - это программное обеспечение, необходимое для встроенных микроконтроллеров, которые идут в комплекте с некоторым оборудованием, и обычно не рассматривается как двоичный объект. [28] [19] : BSD [11] : Во многих устройствах встроенное ПО хранится в энергонезависимой встроенной флэш-памяти , но для снижения затрат и упрощения обновлений некоторые устройства содержат только статическое ОЗУ и требуют загрузки операционной системы хоста прошивки каждый раз при их подключении (особенно USBустройств). Хотя микропрограмма, таким образом, присутствует в драйвере операционной системы, она просто копируется на устройство и не выполняется процессором, что устраняет опасения по поводу дополнительных недостатков безопасности по сравнению с тем, что уже возможно при DMA-атаке, даже если микропрограмма уже была сохранена в устройство в любое время. Проект OpenBSD принимает бинарные образы микропрограмм / микрокодов и будет распространять эти образы, если это разрешено лицензией; [28] [29] если бесплатное и безусловное распространение не разрешено поставщиком, машинные инструкции по получению этих изображений могут быть предоставлены в дереве портов (что исключает доступность некоторых загруженных беспроводных устройств (например, Intel Wireless) в течение первоначальная установка).[30]

BIOS и UEFI [ править ]

SeaBIOS , реализация BIOS с открытым исходным кодом, работающая как загрузка ядра на Lenovo ThinkPad X60

BIOS , который функционирует в качестве загрузчика и поддерживает наследство режима реального времени приложений, является важным компонентом многих IBM-совместимых компьютеров. BIOS всегда 16-битный, может быть лазейкой в безопасности . [31] [32] [ неудачная проверка ] В конце 1990-х началась работа над EFI (Extensible Firmware Interface) с целью перенести устаревшую BIOS на современный интерфейс с модульной моделью драйвера. EFI является закрытым исходным кодом и в конечном итоге был принят многими ведущими производителями оборудования как UEFI.(Унифицированный расширяемый интерфейс встроенных микропрограмм). EDK (EFI Development Kit) был разработан для поддержки проектов разработки прошивки EFI. [33]

Также в конце 1990-х был начат проект coreboot, чтобы с нуля создать альтернативу унаследованному BIOS с открытым исходным кодом. [33] Сообщество разработчиков coreboot организовано вокруг Стефана Рейнауэра и возглавляется разработчиками прошивок с правами на коммит. [34] Несмотря на то, что двоичная прошивка с закрытым исходным кодом была в основе архитектуры x86, coreboot включает только несколько проприетарных двоичных файлов, которые необходимы для предоставления пользователям аппаратной поддержки базового уровня. [35] Альтернативой BIOS и UEFI с полностью открытым исходным кодом является libreboot , продвигаемая Free Software Foundation (FSF). [36]

См. Также [ править ]

  • Большой объект персонажа
  • Прошивка
  • Графическое оборудование и СОПО
  • LinuxBoot
  • Загружаемый модуль ядра
  • Непрозрачный двоичный blob
  • Фирменная прошивка
  • Проприетарное программное обеспечение
  • Каталог АНБ АНТ
  • Бэкдор для двоичных двоичных объектов ScreenOS NSA
  • Беспроводная безопасность

Ссылки [ править ]

  1. ^ Майкл Ларабель (2012-08-06). «Coreboot: замена двоичного видео BIOS Blob от Intel» . Фороникс . Проверено 23 июня 2015 .
  2. ^ Крис Хоффманн (2015-02-13). «Как Intel и производители ПК не дают вам изменять прошивку вашего ноутбука» . pcworld.com . Проверено 23 июня 2015 .
  3. ^ «Состояние свободы BIOS» . puri.sm . 2014-11-12 . Проверено 23 июня 2015 .
  4. ^ Майкл Ларабель (2012-10-24). «Драйвер Raspberry Pi GPU оказался чушью» . Фороникс . Проверено 23 июня 2015 .
  5. ^ Jake Край (2015-06-17). «Chromium внезапно начинает загрузку двоичного двоичного объекта» . LWN.net . Проверено 23 июня 2015 .
  6. ^ "3.9:" Клякса! " " . Песни выпуска OpenBSD . OpenBSD . 2006-05-01. Большие двоичные объекты - это скомпилированные поставщиком двоичные драйверы без исходного кода.
  7. ^ «Пакеты Debian, созданные из исходного пакета 'firmware-nonfree' - Двоичная прошивка для различных драйверов в ядре Linux» . 2010 . Проверено 25 марта 2010 .
  8. ^ Константин А. Муренин (2006-12-10). «Почему так важно иметь документацию по программированию железа» . Linux.org.ru (на русском языке).
  9. ^ Тео де Раадт (2016-12-03). «Страница 11: Оборудование: Ethernet» . Открытая документация по оборудованию . OpenCON 2006, 2-3 декабря 2006 . Courtyard Venice Airport, Венеция / Тессера, Италия. Лишь несколько непокорных поставщиков остаются закрытыми. / ethernet 95% задокументировано, 99% работает / Открытая документация во многом благодаря усилиям одного человека: Билла Пола
  10. ^ «Список бесплатных дистрибутивов GNU / Linux» . Проект GNU . Фонд свободного программного обеспечения .
  11. ^ a b c Эндрюс, Джереми (2006-04-19). «Интервью с Джонатаном Греем и Дэмиеном Бергамини» . kerneltrap.org. Архивировано из оригинала на 2007-12-11 . Проверено 6 января 2008 .
  12. ^ a b Скотт Лонг; Adaptec, Inc (2000). «aac (4) - драйвер контроллера Adaptec AdvancedRAID» . Перекрестная ссылка BSD . FreeBSD . Выложите резюме . Если ядро ​​скомпилировано с опцией COMPAT_LINUX или загружены модули aac_linux.ko и linux.ko,…
  13. ^ a b Ахим Лейбнер (2013). «aacraid (4) - драйвер контроллера Adaptec AACRAID» . Перекрестная ссылка BSD . FreeBSD . Выложите резюме . Если ядро ​​скомпилировано с опцией COMPAT_LINUX или загружены модули aacraid_linux.ko и linux.ko,…
  14. ^ Matzan, Джем (15 июня 2005). "Знатоки BSD в Linux" . NewsForge. Архивировано из оригинала 23 марта 2006 года . Проверено 7 июля 2006 . См. Ответ Христоса Зуласа на вопрос «Является ли совместное использование Free / Open / NetBSD и ядра Linux обычным явлением? И если да, то идет ли это обоюдно?»
  15. ^ "build / options / WITHOUT_SOURCELESS_UCODE" . Перекрестная ссылка BSD . FreeBSD . 2012-02-04.
  16. ^ a b "3.8:" Хакеры утерянного рейда " " . Песни выпуска OpenBSD . OpenBSD . 2005-11-01.
  17. ^ а б Эндрюс, Джереми (2006-05-02), "Интервью: Тео де Раадт" , KernelTrap , Джереми Эндрюс, заархивировано из оригинала на 2006-06-03
  18. ^ «Протест против ATI чуть не привел к аресту RMS» . Фонд свободного программного обеспечения. 27 апреля 2006 . Проверено 10 октября 2006 .
  19. ^ a b c d «Объяснение, почему мы не поддерживаем другие системы» . Проект GNU . Фонд свободного программного обеспечения .
  20. ^ «Пакеты Debian firmware-linux» . 2010 . Проверено 25 марта 2010 .
  21. ^ "a / lt-binary" . lwn.net .
  22. ^ Greg Kroah-Хартман (июнь 2008). «Изложение позиции по модулям ядра Linux» . Фонд Linux .
  23. ^ Greg Kroah-Хартман (2006). «Мифы, ложь и правда о ядре Linux» . Симпозиум по Linux .
  24. ^ "Несвободные прошивки" . Проект GNU § Рекомендации по бесплатному распространению системы (GNU FSDG) . Фонд свободного программного обеспечения .
  25. ^ ":: [FSFLA] :: Верните себе свободу с Linux-2.6.33-libre" . fsfla.org .
  26. Джонатан Грей (2 декабря 2006 г.). «Стр. 26: Открыто только для бизнеса: FreeBSD» . Архитектура и реализация драйвера в OpenBSD . OpenCON 2006, 2-3 декабря 2006 . Courtyard Venice Airport, Венеция / Тессера, Италия . Проверено 27 марта 2019 . драйверы, предназначенные только для двоичных средств управления Linux RAID
  27. Тео де Раадт (9 сентября 2005 г.). «Поддержка управления RAID появится в OpenBSD 3.8» . misc @ (Список рассылки). OpenBSD .
  28. ^ a b «OpenBSD работает для открытия беспроводных чипсетов» . KernelTrap. 2 ноября 2004 года в архив с оригинала на 2006-06-20 . Проверено 23 июня 2006 .
  29. ^ "/ sys / dev / microcode /" . OpenBSD .
  30. ^ "sysutils / прошивка" . Порты OpenBSD .
  31. ^ «Технология Intel vPro» . Intel.com. 2012-05-14 . Проверено 10 апреля 2014 .
  32. ^ «Совместимость BIOS и прошивки» . Absolute.com . Проверено 10 апреля 2014 .
  33. ^ a b Винсент Циммер, Джиминг Сан, Марк Джонс и Стефан Рейнауэр (2015). Встроенные микропрограммы: передовые методы разработки для Интернета вещей . Апресс. п. 121. ISBN. 9781484200704.CS1 maint: использует параметр авторов ( ссылка )
  34. ^ Винсент Циммер, Джиминг Сан, Марк Джонс и Стефан Рейнауэр (2015). Встроенные микропрограммы: передовые методы разработки для Интернета вещей . Апресс. п. 61. ISBN 9781484200704.CS1 maint: использует параметр авторов ( ссылка )
  35. ^ Винсент Циммер, Джиминг Сан, Марк Джонс и Стефан Рейнауэр (2015). Решения для встроенного микропрограммного обеспечения: передовые методы разработки для Интернета вещей . Апресс. п. 65. ISBN 9781484200704.CS1 maint: использует параметр авторов ( ссылка )
  36. ^ «Кампания за бесплатный BIOS» . Фонд свободного программного обеспечения. 2006-11-29 . Проверено 2 января 2007 .

Внешние ссылки [ править ]

  • Макмиллан, Роберт (21 июня 2006 г.). «Исследователи взломали драйвер Wi-Fi, чтобы взломать ноутбук» . InfoWorld. Архивировано из оригинала 2 июля 2006 года . Проверено 23 июня 2006 .
  • Статья в KernelTrap о драйвере wpi (4) Дэмиена Бергамини, альтернативе ipw3945 для OpenBSD без помарок
  • KernelTrap интервью с Джонатаном Греем и Дэмиеном Бергамини о двоичных объектах
  • Интервью Black Hat Wireless Exploit, дословно Брайан Кребс на веб-сайте Washington Post, заархивировано 5 мая 2012 г.
  • Творческий пример ценности бесплатных драйверов , LWN.net