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

Драйвер проприетарного устройства является закрытым исходным кодом драйвера устройства опубликовано только в двоичном коде . В контексте бесплатного программного обеспечения с открытым исходным кодом драйвер устройства с закрытым исходным кодом называется большим двоичным или двоичным двоичным объектом . Этот термин обычно относится к модулю ядра с закрытым исходным кодом, загружаемому в ядро операционной системы с открытым исходным кодом , а иногда также применяется к коду, выполняющемуся вне ядра, например, образы системной прошивки , обновления микрокода или программы пользовательского пространства . [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
  • Загружаемый модуль ядра
  • Непрозрачный двоичный объект
  • Фирменная прошивка
  • Проприетарное программное обеспечение
  • Каталог АНБ АНТ
  • ScreenOS NSA Бэкдор для двоичных блобов
  • Беспроводная безопасность

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

  1. ^ Майкл Ларабель (2012-08-06). «Coreboot: замена двоичного видео BIOS Blob от Intel» . Фороникс . Проверено 23 июня 2015 .
  2. ^ Chris Hoffmann (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. BLOB-объекты - это скомпилированные производителем двоичные драйверы без какого-либо исходного кода.
  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