Двоичный объект
В контексте бесплатного программного обеспечения и программного обеспечения с открытым исходным кодом , проприетарное программное обеспечение доступное только в виде двоичного исполняемого файла , называется большим двоичным объектом или двоичным большим двоичным объектом . Этот термин обычно относится к драйвера устройства модулю , загружаемому в ядро с открытым исходным кодом операционной системы , а иногда также применяется к коду, работающему вне ядра, например, к образам встроенного ПО системы , обновлениям микрокода или пользовательским программам. [1] [2] [3] [4] [5] [6] Термин «блоб» впервые был использован в системах управления базами данных для описания набора двоичных данных, хранящихся как единый объект.
Когда поставщики компьютерного оборудования предоставляют полную техническую документацию для своих продуктов, разработчики операционных систем могут писать драйверы аппаратных устройств для включения в ядра операционной системы. Однако некоторые поставщики, такие как Nvidia , не предоставляют полную документацию для некоторых своих продуктов и вместо этого предоставляют только двоичные драйверы. Такая практика наиболее распространена для драйверов ускоренной графики , беспроводных сетевых устройств и аппаратных RAID-контроллеров . [7] В частности, двоичные объекты очень редко встречаются для контроллеров беспроводных сетевых интерфейсов , которые почти всегда можно настроить с помощью стандартных утилит (например, 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] : БСД Проект Debian включал как бесплатные, так и несвободные бинарные прошивки из ядра Linux , четко обозначая и разделяя несвободные пакеты. [20] в соответствии с Социальным договором Debian . Начиная с Debian 6.0 эти капли были удалены. [19] : Дебиан
Руководитель проекта OpenBSD Тео де Раадт защищает политику запроса прав на распространение только микропрограммного обеспечения. «Как только они будут распространены… по крайней мере, устройство заработает». Подразумевая, что альтернативой членам его небольшого проекта было бы самостоятельно написать бесплатную прошивку на языке ассемблера многих чипсетов, он умоляет «не нагружать нас дополнительными задачами». Несмотря на это, он отдает предпочтение чипсетам, работающим без прошивки, и тепло отзывается об азиатских разработках, которые, по его словам, медленнее выходят на рынок, но более зрелы. [17]
В ядра 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. [ нужна ссылка ]
Проблемы
[ редактировать ]Этот раздел написан как личное размышление, личное эссе или аргументативное эссе , в котором излагаются личные чувства редактора Википедии или представлены оригинальные аргументы по определенной теме. ( Март 2021 г. ) |
Существует ряд причин, по которым двоичные объекты могут быть проблематичными. [11]
Во-первых, их точная работа не может быть известна, а ошибки не могут быть обнаружены путем аудита исходного кода; ошибки часто диагностируются только путем тщательного исследования, когда система начинает вести себя неожиданно. Такие необнаруженные ошибки могут также незаметно подвергать пользователей и системы угрозам безопасности. Таким образом, пригодность драйвера к назначению проверить невозможно, и даже если обнаружена ошибка, нет простого способа ее исправить.
Во-вторых, поскольку исходный код недоступен, драйвер не может быть легко улучшен пользователями, не может быть портирован на архитектуры, которые изначально не поддерживались, не может быть адаптирован для работы с небольшими вариантами оборудования или обновлен для работы в новых ядрах, имеющих изменен API и архитектура.
В-третьих, использование этого программного обеспечения заставит пользователей доверять поставщикам или третьим лицам, которые не будут размещать в blob бэкдоры, шпионское ПО или вредоносный код. Кроме того, поставщик оборудования может в любой момент принять решение не поддерживать данную операционную систему, прекратить обслуживание драйверов или, в случае прекращения деятельности компании, оставить драйвер полностью без поддержки.
Наконец, двоичные объекты можно рассматривать как проведение границы между частью сообщества, которая верит в идеалы свободного программного обеспечения и отвергает несвободное программное обеспечение, и частью, которая считает открытый исходный код желательным по чисто техническим причинам, часто не имея сильной оппозиции к двоичным объектам. «пока они работают». Эта фрагментация и принятие растущего числа проприетарных компонентов в Linux рассматривается как ослабление способности сообщества противостоять тенденции производителей все чаще отказываться предоставлять документацию для своих двоичных файлов.
Использовать через обертки
[ редактировать ]Оболочка — это программное обеспечение, которое позволяет одной операционной системе использовать собственный двоичный драйвер устройства, написанный для другой операционной системы. Примерами оболочек являются NDISwrapper для Linux и Project Evil для FreeBSD и NetBSD . Эти оболочки позволяют этим операционным системам использовать сетевые драйверы, написанные для Microsoft Windows, реализации Microsoft API NDIS путем .
Другой пример — обеспечение уровней совместимости, чтобы можно было использовать сторонние утилиты для обслуживания оборудования. Примеры включают некоторые RAID-контроллера драйверы во FreeBSD , где системному администратору придется включить уровень совместимости с Linux во FreeBSD и самостоятельно приобретать двоичные объекты, специфичные для Linux, непосредственно у производителя оборудования, чтобы контролировать и обслуживать оборудование. [12] [13] [26] Примерно в 2005 году такое положение дел побудило OpenBSD создать и популяризировать концепции bio(4) , bioctl и сенсорных приводов в качестве альтернативного решения для мониторинга RAID . [27] [16] обе эти концепции впоследствии нашли свое применение в NetBSD и .
Прошивка устройства
[ редактировать ]Прошивка — это программное обеспечение, необходимое для встроенных микроконтроллеров , которое сопровождает некоторое оборудование, и обычно не считается двоичным объектом. [28] [19] : БСД [11] : ... Во многих устройствах прошивка хранится в энергонезависимой встроенной флэш-памяти , но для снижения затрат и упрощения обновлений некоторые устройства содержат только статическую оперативную память и требуют, чтобы операционная система хоста загружала прошивку каждый раз при их подключении (особенно USB- устройства). Хотя прошивка, таким образом, присутствует в драйвере операционной системы, она просто копируется на устройство, а не выполняется ЦП, что устраняет опасения по поводу дополнительных недостатков безопасности по сравнению с тем, что уже возможно при атаке DMA, даже если прошивка уже хранилась в устройство всегда. Проект OpenBSD принимает двоичные образы встроенного ПО/ микрокода и будет распространять эти образы, если это разрешено лицензией; [28] [29] Если бесплатное и безусловное распространение не разрешено поставщиком, машинные инструкции по получению этих образов могут быть предоставлены в дереве портов (что исключает доступность некоторых обремененных беспроводных устройств (например, Intel Wireless) во время первоначальной установки). [30] В реализациях Microsoft Windows двоичный файл микрокода может быть встроен непосредственно в драйвер устройства SYS/DLL/VXD, а не в отдельный файл микрокода.
БИОС и UEFI
[ редактировать ]BIOS , является , который функционирует как загрузчик и поддерживает устаревшие приложения реального режима важнейшим компонентом многих IBM-совместимых компьютеров. В конце 1990-х началась работа над EFI (расширяемым интерфейсом прошивки) с целью перевести устаревший BIOS на современный интерфейс с модульной моделью драйверов. EFI имеет закрытый исходный код и в конечном итоге был принят многими ведущими производителями оборудования как UEFI (унифицированный расширяемый интерфейс прошивки). EDK (EFI Development Kit) был разработан для помощи в проектах разработки встроенного ПО EFI. [31]
Также в конце 1990-х годов был начат проект coreboot с целью создания с нуля альтернативы устаревшему BIOS с открытым исходным кодом. [31] Сообщество разработчиков coreboot организовано вокруг Штефана Рейнауэра и возглавляется разработчиками прошивок с правами на коммит. [32] Несмотря на то, что двоичная прошивка с закрытым исходным кодом лежит в основе архитектуры x86 , coreboot включает в себя только несколько проприетарных двоичных файлов, которые необходимы для предоставления пользователям аппаратной поддержки базового уровня. [33] Полностью открытой альтернативой BIOS и UEFI является libreboot , продвигаемая Фондом свободного программного обеспечения (FSF). [34]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Майкл Ларабель (6 августа 2012 г.). «Coreboot: замена двоичного видео-блока BIOS от Intel» . Фороникс . Проверено 23 июня 2015 г.
- ^ Крис Хоффманн (13 февраля 2015 г.). «Как Intel и производители ПК не позволяют вам модифицировать прошивку вашего ноутбука» . pcworld.com . Проверено 23 июня 2015 г.
- ^ «Статус свободы BIOS» . puri.sm . 12.11.2014 . Проверено 23 июня 2015 г.
- ^ Майкл Ларабель (24 октября 2012 г.). «Драйвер графического процессора Raspberry Pi оказался чушью» . Фороникс . Проверено 23 июня 2015 г.
- ^ Джейк Эдж (17 июня 2015 г.). «Chromium внезапно начинает загружать двоичный объект» . LWN.net . Проверено 23 июня 2015 г.
- ^ «3.9: «Капля!» » . Песни релиза OpenBSD . OpenBSD . 01 мая 2006 г.
Большие двоичные объекты — это бинарные драйверы, скомпилированные поставщиком, без какого-либо исходного кода.
- ^ «Пакеты Debian, собранные из исходного пакета 'firmware-nonfree' — двоичные прошивки для различных драйверов в ядре Linux» . 2010 . Проверено 25 марта 2010 г.
- ^ Constantine A. Murenin (2006-12-10). "Почему так важно иметь документацию по программированию железа" . Linux.org.ru (in Russian).
- ^ Тео де Раадт (3 декабря 2016 г.). «Страница 11: Аппаратное обеспечение: Ethernet» . Откройте документацию по оборудованию . OpenCON 2006, 2–3 декабря 2006 г. Кортъярд Аэропорт Венеции, Венеция/Тессера, Италия.
Лишь несколько непокорных продавцов остаются закрытыми. / Ethernet 95% задокументирован, 99% работает / Открытая документация во многом благодаря усилиям одного человека: Билла Пола
- ^ «Список бесплатных дистрибутивов GNU/Linux» . Проект ГНУ . Фонд свободного программного обеспечения .
- ^ Перейти обратно: а б с Эндрюс, Джереми (19 апреля 2006 г.). «Интервью с Джонатаном Греем и Дэмиеном Бергамини» . kerneltrap.org. Архивировано из оригинала 11 декабря 2007 г. Проверено 6 января 2008 г.
- ^ Перейти обратно: а б Скотт Лонг; Адаптек, Инк (2000). «aac(4) — драйвер контроллера Adaptec AdvancedRAID» . Перекрестная ссылка BSD . FreeBSD .
Если ядро скомпилировано с опцией COMPAT_LINUX или загружены модули aac_linux.ko и linux.ko...
- «aac — драйвер контроллера Adaptec AdvancedRAID». Страницы руководства FreeBSD .
- ^ Перейти обратно: а б Ахим Лойбнер (2013). «aacraid(4) — драйвер контроллера Adaptec AACRAID» . Перекрестная ссылка BSD . FreeBSD .
Если ядро скомпилировано с опцией COMPAT_LINUX или загружены модули aacraid_linux.ko и linux.ko...
- «aacraid — драйвер контроллера Adaptec AACRAID». Страницы руководства FreeBSD .
- ^ Мацан, Джем (15 июня 2005 г.). «Знатоки BSD в Linux» . НовостиФордж. Архивировано из оригинала 23 марта 2006 года . Проверено 7 июля 2006 г. См. ответ Кристоса Зуласа на вопрос: «Является ли совместное использование Free/Open/NetBSD и ядром Linux обычным явлением? И если да, то происходит ли это в обе стороны?»
- ^ "build/options/WITHOUT_SOURCELESS_UCODE" . Перекрестная ссылка BSD . FreeBSD . 04.02.2012.
- ^ Перейти обратно: а б «3.8: «Хакеры затерянного рейда» » . Песни релиза OpenBSD . OpenBSD . 01.11.2005.
- ^ Перейти обратно: а б Эндрюс, Джереми (2 мая 2006 г.), «Интервью: Тео де Раадт» , KernelTrap , Джереми Эндрюс, заархивировано из оригинала 3 июня 2006 г.
- ^ «Протест против АТИ едва не привел к аресту РМС» . Фонд свободного программного обеспечения. 27 апреля 2006 года . Проверено 10 октября 2006 г.
- ^ Перейти обратно: а б с д «Объясняем, почему мы не поддерживаем другие системы» . Проект ГНУ . Фонд свободного программного обеспечения .
- ^ «Пакеты прошивок Debian-Linux» . 2010 . Проверено 25 марта 2010 г.
- ^ "a/lt-двоичный" . lwn.net .
- ^ Грег Кроа-Хартман (июнь 2008 г.). «Заявление о позиции по модулям ядра Linux» . Фонд Linux .
- ^ Грег Кроа-Хартман (2006). «Мифы, ложь и правда о ядре Linux» . Симпозиум по Linux .
- ^ «Несвободная прошивка» . Проект GNU § Рекомендации по распространению свободных систем (GNU FSDG) . Фонд свободного программного обеспечения .
- ^ "::[FSFLA]:: Верните себе свободу с Linux-2.6.33-libre" . fsfla.org .
- ^ Джонатан Грей (2 декабря 2006 г.). «Страница 26: Открыта только для бизнеса: FreeBSD» . Архитектура и реализация драйверов в OpenBSD . OpenCON 2006, 2–3 декабря 2006 г. Courtyard Venice Airport, Венеция/Тессера, Италия . Проверено 27 марта 2019 г.
драйверы, предназначенные только для двоичных инструментов управления RAID Linux
- ^ Тео де Раадт (9 сентября 2005 г.). «Поддержка управления RAID появится в OpenBSD 3.8» . misc@ (список рассылки). OpenBSD .
- ^ Перейти обратно: а б «OpenBSD работает над открытием беспроводных наборов микросхем» . Ядерная ловушка. 2 ноября 2004 г. Архивировано из оригинала 20 июня 2006 г. Проверено 23 июня 2006 г.
- ^ "/sys/dev/микрокод/" . OpenBSD .
- ^ «sysutils/прошивка» . Порты OpenBSD .
- ^ Перейти обратно: а б Винсент Циммер; Цзиминь Сунь; Марк Джонс; Стефан Рейнауэр (2015). Решения для встроенного ПО: лучшие практики разработки для Интернета вещей . Апресс. п. 121. ИСБН 9781484200704 .
- ^ Винсент Циммер; Цзиминь Сунь; Марк Джонс; Стефан Рейнауэр (2015). Решения для встроенного ПО: лучшие практики разработки для Интернета вещей . Апресс. п. 61. ИСБН 9781484200704 .
- ^ Винсент Циммер; Цзиминь Сунь; Марк Джонс; Стефан Рейнауэр (2015). Решения для встроенного ПО: лучшие практики разработки для Интернета вещей . Апресс. п. 65. ИСБН 9781484200704 .
- ^ «Кампания за бесплатный BIOS» . Фонд свободного программного обеспечения. 29 ноября 2006 г. Проверено 2 января 2007 г.
Внешние ссылки
[ редактировать ]- Макмиллан, Роберт (21 июня 2006 г.). «Исследователи взломали драйвер Wi-Fi, чтобы взломать ноутбук» . ИнфоМир. Архивировано из оригинала 2 июля 2006 года . Проверено 23 июня 2006 г.
- Статья KernelTrap о драйвере wpi(4) Дэмиена Бергамини, бескапельной альтернативе ipw3945 для OpenBSD
- Интервью KernelTrap с Джонатаном Греем и Дэмьеном Бергамини о двоичных объектах
- Интервью Black Hat Wireless Exploit, стенограмма Брайана Кребса на веб-сайте Washington Post, заархивировано 5 мая 2012 г.
- Творческий пример ценности бесплатных водителей , LWN.net