바이너리 블롭

Binary blob

자유오픈 소스 소프트웨어에서는 바이너리 실행 파일로만 사용할 수 있는 독점 소프트웨어블럽 또는 바이너리 블럽이라고 합니다.이 용어는 일반적으로 오픈 소스 운영 체제의 커널에 로드된 장치 드라이버 모듈을 가리키며, 시스템 펌웨어 이미지, 마이크로 코드 업데이트 또는 사용자 랜드 프로그램 [1][2][3][4][5][6]등 커널 외부에서 실행되는 코드에도 적용됩니다.blob이라는 용어는 데이터베이스 관리 시스템에서 단일 엔티티로 저장된 바이너리 데이터 컬렉션을 설명하기 위해 처음 사용되었습니다.

컴퓨터 하드웨어 벤더가 제품에 대한 완전한 기술 문서를 제공하는 경우 운영 체제 개발자는 운영 체제 커널에 포함할 하드웨어 장치 드라이버를 작성할 수 있습니다.단, Nvidia 의 일부 벤더는 일부 제품에 대해 완전한 설명서를 제공하지 않고 바이너리 전용 드라이버를 제공합니다. 방법은 고속 그래픽스 드라이버, 무선 네트워크 디바이스 및 하드웨어 RAID [7]컨트롤러에서 가장 일반적입니다.특히 바이너리 블럽은 무선 이외의 네트워크 인터페이스 컨트롤러에서는 매우 드물기 때문에 표준 유틸리티(ifconfig 등)를 통해 즉시 구성할 수 있습니다.OpenBSDTheo de Raadt는 이를 1개의 FreeBSD에 의한 작업에 기인합니다.SD [8][9]개발자

프로젝트별 정책

일부 FSF 승인 프로젝트에서는 무료 운영체제를 제공하기 위해 노력하고 있으며 디바이스 드라이버의 하드웨어 또는 소스 코드 매뉴얼이 없는 경우 모든 바이너리 블럽을 제거합니다.이러한 프로젝트에는 FSFLA, Parabola, Devuan, TrisquelLibreCMC[10]Linux-libre 커널 패키징이 포함됩니다.하지만, 오픈 소스 프로젝트의 대다수에 대한 독점적 펌웨어 자유롭게 그들의 알맹이들의 일부로, 몇몇 핵심 기부자들의 의견 차이도 proprieta의 사용을 지원하는 분산할 수 있는binary-only 장치 드라이버 및 binary-only 펌웨어(blobs[11]:고려하지 않...)(덩어리들)을 구분 짓는다..ry 장치이러한 전용 드라이버와 사용자 공간 컴포넌트가 시스템과 [12][13]함께 작동하기 위한 내부 호환성 인터페이스를 제공하는 외부 배포 드라이버입니다.이 정책을 따르는 프로젝트에는 Linux 커널 자체, NetBSD, FreeBSD, DragonFly BSD대부분의 Linux [14]배포가 포함됩니다.이러한 프로젝트 중에는 독자적인 펌웨어를 사용하지 않고 시스템을 구축하기 위한 옵션을 제공하는 것도 있습니다.따라서 온디맨드 [15]소스리스 마이크로코드는 제외됩니다.

그 OpenBSD 프로젝트 뿐만 아니라 그 뿌리를 나무로,라 공식적으로 플랫폼에 여타 제삼자의 독점적 장치 드라이버 구성 요소 지원하지 않는 바이너리 디바이스 운전자들을 받아들이지 않거나;[16]:38의 주목할 만한...또는 회복할 수 없는 감지할 수 없는 보안 결점을,라 개방성에 잠식을 이유로.소프트웨어를 [17]자유롭게 사용할 수 있습니다.Free Software Foundation(FSF)은 바이너리 블럽에 [18]대한 캠페인을 활발히 벌이고 있습니다.FSF는 OpenB도 고려하고 있습니다.SD의 정책은 BSD 커뮤니티의 「블러브」라고 하는 것은, 프리 드라이버가 아닌 것을 가리킬 뿐, 독자 사양의 펌웨어나 [19]: BSD 소스리스 마이크로 코드에는 적용되지 않기 때문에, 혼란스러운 표현을 하고 있습니다.Debian 프로젝트에는 Linux 커널의 무료 바이너리 펌웨어와 비자유 바이너리 펌웨어가 모두 포함되어 있으며, Debian Social Contract에 따라 비자유[20] 패키지를 명확하게 표시하고 분리하였다.Debian 6.0에서는 이러한 블러브는 [19]: Debian 제거되었습니다.

OpenBSD의 경우 프로젝트 리더 Theo de Raadt는 마이크로코드 펌웨어에 대해서만 배포 권한을 요구하는 정책을 옹호합니다."그것들이 배포되면...적어도 디바이스는 동작합니다.그는 자신의 작은 프로젝트 구성원이 많은 칩셋의 어셈블리 언어로 펌웨어를 코드 해제하는 것이 대안이 될 수 있음을 시사하며 "더 이상의 작업을 우리에게 부담스럽게 하지 말라"고 호소합니다.그럼에도 불구하고 그는 펌웨어 없이 작동하는 칩셋을 선호하며, 시장화 속도는 느리지만 성숙도가 [17]높은 아시아 디자인에 대해 호의적으로 말합니다.

Linux 전용 그래픽 드라이버,libGL-fglrx-glx는 Mesa 3D와 동일DRM 인프라스트럭처를 공유합니다.안정적인 커널 내 ABI가 없기 때문에 AMD는 Catalyst에서 사용하던 이전 바이너리 블롭을 지속적으로 조정해야 했습니다.

Linux 커널 개발 커뮤니티에서 Linus Torvalds는 바이너리 전용 모듈의 문제에 대해 "나는 일부 바이너리 전용 모듈을 다루는 것을 고려조차 하지 않는다"며 "나는 사람들이 바이너리 전용 모듈을 사용할 때 그것이 그들의 [21]문제라는 것을 알았으면 한다"고 주장해 왔다.2008년 176명의 Linux 커널 개발자가 Linux 커널 모듈에 대한 포지션 스테이트먼트에 서명하여 다음과 같이 기술하였습니다. "저희, 서명된 Linux 커널 개발자는 모든 클로즈드 소스 Linux 커널 모듈 또는 드라이버를 유해하고 바람직하지 않은 것으로 간주합니다.Linux 사용자, 기업 및 Linux [22]생태계에 악영향을 미친다는 사실을 여러 번 알게 되었습니다."Linux 커널 유지 관리자인 Greg Kroah-HartmanGNU General Public License Linux [23]커널용 클로즈드 소스 모듈을 재배포하는 것은 불법이라고 밝혔습니다.

그러나 Linux 커널에는 다양한 장치 [24][19]드라이버에 필요한 클로즈드 소스 펌웨어가 포함되어 있습니다.소스리스 마이크로코드를 포함한 모든 바이너리 블럽을 제거하는 Linux 커널 버전인 Linux-libre의 관리자인 Alexandre Oliva는 2011년에 다음과 같이 썼다.「Linux는 1996년 이후 프리 소프트웨어가 아닙니다.Torvalds씨는 1991년 이후 최초로 프리 소프트웨어가 아닌 소프트웨어를 발표했습니다.이 커널이 14배 증가했지만 Linux 드라이버에 필요한 프리 이외의 펌웨어의 [25]양은 83배 증가했습니다.

Android 운영 체제를 실행하는 모바일 장치용 드라이버는 대부분 바이너리로 제공되며 Linux 커널의 특정 버전에 링크되어 있습니다.커널 버전 업그레이드는 리버스 엔지니어링, 프리 소프트웨어로서의 독자 디바이스 드라이버의 재실장, 래퍼 작성 및 디버깅, 바이너리 패치 적용 또는 이들 절차의 조합이 필요할 수 있기 때문에 매우 어렵습니다.이 모든 것은 레거시 디바이스가 최신 Android [citation needed]버전을 취득할 수 없음을 의미합니다.

문제

바이너리 블럽이 문제가 [11]될 수 있는 이유는 여러 가지가 있습니다.

첫째, 정확한 동작을 알 수 없고 소스 코드를 감사하여 버그를 검출할 수 없습니다. 버그는 시스템이 예기치 않게 동작하기 시작할 때 정밀 조사를 통해서만 진단되는 경우가 많습니다.이러한 검출되지 않은 버그로 인해 사용자와 시스템이 보안 위험에 노출될 수도 있습니다.따라서 운전자의 목적에 대한 적합성을 확인할 수 없고, 버그가 발견되어도 쉽게 고칠 수 있는 방법이 없습니다.

둘째, 소스 코드를 사용할 수 없기 때문에 드라이버를 사용자가 쉽게 개선할 수 없고, 원래 지원되지 않는 아키텍처로 이식할 수도 없으며, 하드웨어의 약간의 변형에 맞게 작동하도록 조정하거나 변경된 API 및 아키텍처를 가진 새로운 커널에서 작동하도록 업데이트할 수도 없습니다.

셋째, 이 소프트웨어를 사용하면 사용자는 벤더나 서드파티를 신뢰하여 백도어, 스파이웨어 또는 악성코드를 BLOB에 넣지 않도록 할 수 있습니다.또, 하드웨어 벤더는, 특정의 operating system을 서포트하지 않거나, 드라이버의 유지보수를 언제라도 포기하거나, 또는 폐업하는 경우, 드라이버를 전혀 서포트하지 않는 상태로 둘 수도 있습니다.

마지막으로, 바이너리 블럽은 커뮤니티에서 자유 소프트웨어 이상을 믿고 독점 소프트웨어를 거부하는 부분과 순수 기술적 이유로 오픈 소스가 바람직하다고 생각하는 부분 사이에 선을 긋는 것으로 볼 수 있으며, 종종 바이너리 블럽에 대한 강한 반대는 없다.이러한 단편화 및 Linux에 대한 독점 컴포넌트의 수용은 제조업체가 바이너리에 대한 문서 제공을 점점 더 거부하는 경향에 저항하는 커뮤니티의 능력을 약화시키는 것으로 간주됩니다.

포장지 사용

래퍼는 한 운영 체제가 다른 운영 체제용으로 작성된 이진 전용 장치 드라이버를 사용할 수 있도록 하는 소프트웨어입니다.래퍼의 예로는 Linux경우 NdisWrapper, FreeBSDNetBSD의 경우 Project Evil 등이 있습니다.이러한 래퍼를 사용하면, 이러한 operating system은 Microsoft 의 NDIS API 를 실장하고, Microsoft Windows 용으로 작성된 네트워크 드라이버를 사용할 수 있습니다.

또 다른 예로는 하드웨어 서비스에 외부 유틸리티를 사용할 수 있도록 호환성 계층을 제공하는 것입니다.예를 들어 FreeBSD의 일부 RAID 컨트롤러 드라이버시스템 관리자가 FreeBSD에서 Linux 호환성 계층을 활성화하고 [12][13][26]하드웨어의 감시와 서비스를 위해 하드웨어 제조원으로부터 Linux 고유의 바이너리 블롭을 직접 조달해야 합니다.2005년경, 이러한 상황이 OpenB를 촉진했습니다.SD, RAID [27][16]감시의 대체 솔루션으로서 바이오(4), 바이오·ctl, 센서·드라이브의 컨셉을 작성해 보급하고 있습니다.이 두 컨셉 모두, NetBSD에도 채용되고 있습니다.

디바이스 펌웨어

펌웨어는 일부 하드웨어에 부속된 온보드 마이크로 컨트롤러에 필요한 소프트웨어이며 일반적으로 바이너리 [28][19]: BSD [11]: ... 블롭으로 간주되지 않습니다.많은 디바이스에서 펌웨어는 비휘발성 온보드 플래시 메모리에 저장되지만 비용을 절감하고 업그레이드를 용이하게 하기 위해 일부 디바이스에는 정적 RAM만 탑재되어 있으며 연결할 때마다 호스트 운영 체제(특히 USB 디바이스)가 펌웨어를 업로드해야 합니다.따라서 펌웨어는 운영체제 드라이버에 존재하지만 디바이스에 복사될 뿐 CPU에 의해 실행되지 않습니다.따라서 펌웨어가 항상 디바이스 내에 이미 저장되어 있어도 DMA 공격에 의해 발생할 수 있는 것과 비교하여 추가적인 보안상의 결함이 우려되지 않습니다.그 OpenBSD 프로젝트고 면허 허가한 사진들을 재분배하며,고 무조건적인 자유 재분배, 제조 업체에서 허용되지 않습니다[28][29], 이 그림들 페치에 기계 명령어들(어떤 안을 무선 장치(예:인텔 와이에 배제하는 포트들 나무에 규정될 수 있이진firmware/microcode 이미지를 사용합니다.reless)사용할 수 없게 [30]됩니다).

BIOS 및 UEFI

Lenovo ThinkPad X60에서 코어 부트 페이로드로 동작하는 BIOS의 오픈 소스 구현인 SeaBIOS

BIOS는 부트 로더로 기능하며 레거시 리얼 모드 응용 프로그램을 지원하는 많은 IBM 호환 컴퓨터의 중요한 구성 요소입니다.BIOS는 보안 [31][32][failed verification]백도어일 수 있습니다.1990년대 후반, 레거시 BIOS를 모듈러형 드라이버 모델에 의한 최신 인터페이스로 이행하는 것을 목적으로 EFI(Extensible Firmware Interface)에 관한 작업이 시작되었습니다.EFI는 클로즈드 소스이며, 결국 UEFI(Unified Extensible Firmware Interface)로 많은 업계를 선도하는 하드웨어 제조업체에서 채택되었습니다.EDK(EFI Development Kit)는 EFI 펌웨어 개발 [33]프로젝트를 지원하기 위해 개발되었습니다.

또,[33] 1990년대 후반에는, 레거시 BIOS 대신에 오픈 소스를 처음부터 작성하는 코어 부트 프로젝트가 개시되었습니다.코어부트 개발자 커뮤니티는 Stefan Reinauer를 중심으로 구성되어 있으며 커밋 권한을 [34]가진 펌웨어 개발자가 주도하고 있습니다.클로즈드 소스 바이너리 펌웨어는 x86 아키텍처의 핵심이지만 코어 부트에는 사용자에게 기본 수준의 하드웨어 [35]지원을 제공하기 위해 필요한 몇 개의 전용 바이너리만 포함되어 있습니다.BIOS 및 UEFI를 대체하는 완전 오픈 소스로는 Free Software Foundation(FSF)[36]이 추진한 libreboot가 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Michael Larabel (2012-08-06). "Coreboot: Replacing Intel's Binary Video BIOS Blob". Phoronix. Retrieved 2015-06-23.
  2. ^ Chris Hoffmann (2015-02-13). "How Intel and PC makers prevent you from modifying your laptop's firmware". pcworld.com. Retrieved 2015-06-23.
  3. ^ "BIOS Freedom Status". puri.sm. 2014-11-12. Retrieved 2015-06-23.
  4. ^ Michael Larabel (2012-10-24). "Raspberry Pi GPU Driver Turns Out To Be Crap". Phoronix. Retrieved 2015-06-23.
  5. ^ Jake Edge (2015-06-17). "Chromium suddenly starts downloading a binary blob". LWN.net. Retrieved 2015-06-23.
  6. ^ "3.9: "Blob!"". OpenBSD Release Songs. OpenBSD. 2006-05-01. Blobs are vendor-compiled binary drivers without any source code.
  7. ^ "Debian packages built from the source package 'firmware-nonfree' - Binary firmware for various drivers in the Linux kernel". 2010. Retrieved 2010-03-25.
  8. ^ Constantine A. Murenin (2006-12-10). "Почему так важно иметь документацию по программированию железа". Linux.org.ru (in Russian).
  9. ^ Theo de Raadt (2016-12-03). "Page 11: The hardware: ethernet". Open Documentation for Hardware. OpenCON 2006, 2–3 December 2006. Courtyard Venice Airport, Venice/Tessera, Italy. Only a few recalcitrant vendors remain closed. / ethernet 95% documented 99% working / Open documentation largely due to the effort of one man: Bill Paul
  10. ^ "List of Free GNU/Linux Distributions". GNU Project. Free Software Foundation.
  11. ^ a b c Andrews, Jeremy (2006-04-19). "Interview with Jonathan Gray and Damien Bergamini". kerneltrap.org. Archived from the original on 2007-12-11. Retrieved 2008-01-06.
  12. ^ a b Scott Long; Adaptec, Inc (2000). "aac(4) — Adaptec AdvancedRAID Controller driver". BSD Cross Reference. FreeBSD. If the kernel is compiled with the COMPAT_LINUX option, or the aac_linux.ko and linux.ko modules are loaded...
  13. ^ a b Achim Leubner (2013). "aacraid(4) — Adaptec AACRAID Controller driver". BSD Cross Reference. FreeBSD. If the kernel is compiled with the COMPAT_LINUX option, or the aacraid_linux.ko and linux.ko modules are loaded...
  14. ^ Matzan, Jem (15 June 2005). "BSD cognoscenti on Linux". NewsForge. Archived from the original on 23 March 2006. Retrieved 2006-07-07. Christos Zoulas의 "Free/Open/NetBSD와 Linux 커널 간의 공유는 흔한 일입니까?"에 대한 답변을 참조하십시오.만약 그렇다면, 그것은 양쪽 다입니까?"
  15. ^ "build/options/WITHOUT_SOURCELESS_UCODE". BSD Cross Reference. FreeBSD. 2012-02-04.
  16. ^ a b "3.8: "Hackers of the Lost RAID"". OpenBSD Release Songs. OpenBSD. 2005-11-01.
  17. ^ a b Andrews, Jeremy (2006-05-02), "Interview: Theo de Raadt", KernelTrap, Jeremy Andrews, archived from the original on 2006-06-03
  18. ^ "Protest against ATI nearly led to the arrest of RMS". Free Software Foundation. 27 April 2006. Retrieved 2006-10-10.
  19. ^ a b c d "Explaining Why We Don't Endorse Other Systems". GNU Project. Free Software Foundation.
  20. ^ "Debian firmware-linux packages". 2010. Retrieved 2010-03-25.
  21. ^ "a/lt-binary". lwn.net.
  22. ^ Greg Kroah-Hartman (June 2008). "A position statement on Linux Kernel Modules". The Linux Foundation.
  23. ^ Greg Kroah-Hartman (2006). "Myths, Lies, and Truths about the Linux kernel". Linux Symposium.
  24. ^ "Nonfree Firmware". GNU Project § Free System Distribution Guidelines (GNU FSDG). Free Software Foundation.
  25. ^ "::[FSFLA]:: Take your freedom back, with Linux-2.6.33-libre". fsfla.org.
  26. ^ Jonathan Gray (2006-12-02). "Page 26: Only open for business: FreeBSD". Driver Architecture and Implementation in OpenBSD. OpenCON 2006, 2–3 December 2006. Courtyard Venice Airport, Venice/Tessera, Italy. Retrieved 2019-03-27. drivers designed for binary only Linux RAID management tools
  27. ^ Theo de Raadt (2005-09-09). "RAID management support coming in OpenBSD 3.8". misc@ (Mailing list). OpenBSD.
  28. ^ a b "OpenBSD Works To Open Wireless Chipsets". KernelTrap. November 2, 2004. Archived from the original on 2006-06-20. Retrieved 2006-06-23.
  29. ^ "/sys/dev/microcode/". OpenBSD.
  30. ^ "sysutils/firmware". OpenBSD ports.
  31. ^ "Intel vPro Technology". Intel.com. 2012-05-14. Retrieved 2014-04-10.
  32. ^ "BIOS & Firmware Compatibility". Absolute.com. Retrieved 2014-04-10.
  33. ^ a b Vincent Zimmer; Jiming Sun; Marc Jones; Stefan Reinauer (2015). Embedded Firmware Solutions: Development Best Practices for the Internet of Things. Apress. p. 121. ISBN 9781484200704.
  34. ^ Vincent Zimmer; Jiming Sun; Marc Jones; Stefan Reinauer (2015). Embedded Firmware Solutions: Development Best Practices for the Internet of Things. Apress. p. 61. ISBN 9781484200704.
  35. ^ Vincent Zimmer; Jiming Sun; Marc Jones; Stefan Reinauer (2015). Embedded Firmware Solutions: Development Best Practices for the Internet of Things. Apress. p. 65. ISBN 9781484200704.
  36. ^ "Campaign for Free BIOS". Free Software Foundation. 2006-11-29. Retrieved 2007-01-02.

외부 링크