본문 바로가기
리눅스

Linux

by 다움위키 2023. 12. 9.

Linux (/ˈlinʊks/ LEEN-uuks 또는 /ˈlɪnʊks/ LIN-uuks)는 리눅스 커널을 기반으로 하는 오픈-소스 유닉스-계열 운영 시스템의 가족으로, 리눅스 운영 시스템 커널Linus Torvalds에 의해 1991년 9월 17일에 처음 발표되었습니다. 리눅스는 전형적으로 리눅스 배포판패키징됩니다.

배포판은 리눅스 커널과 지원하는 시스템 소프트웨어라이브러리를 포함되며, 이들 중 대부분은 GNU 프로젝트에 의해 제공됩니다. 많은 리눅스 배포판은 이름에 "Linux"라는 단어를 사용하지만, 자유 소프트웨어 재단GNU 소프트웨어의 중요성을 강조하기 위해 "GNU/Linux"라는 이름을 사용하며, 일부 논란을 일으키고 있습니다.

인기 있는 리눅스 배포판은 데비안, 페도라우분투를 포함합니다. 상용 배포판은 레드헷 엔터프라이즈 리눅스수저 리눅스 엔터프라이즈 서버를 포함합니다. 데스크탑 리눅스 배포판은 X11 또는 Wayland와 같은 윈도우 시스템그놈 또는 KDE 플라스마와 같은 데스크탑 환경을 포함합니다. 서버로 의도된 배포판은 그래픽을 완전히 생략하거나, LAMP와 같은 솔루션 스택을 포함할 수 있습니다. 리눅스는 자유롭게 재배포할 수 있으므로, 누구나 어떤 목적으로든 배포판을 만들 수 있습니다.

리눅스는 원래 인텔 x86 아키텍처를 기반으로 하는 개인용 컴퓨터에 대해 개발되었지만, 이후 임의의 다른 운영 시스템보다 더 많은 플랫폼으로 이식되어 왔습니다. 스마트폰에서 리눅스-기반 안드로이드의 지배력 때문에, 리눅스는 역시 모든 범용 운영 시스템 중 가장 큰 설치된 기반을 가지고 있습니다. 비록 리눅스가 데스크톱 컴퓨터의 오직 약 2.3%에서 사용되지만, 리눅스 커널-기반 Chrome OS를 실행하는 Chromebook은 미국 초중고교 교육 시장을 장악하고 미국에서 판매하는 300달러 미만 노트북의 거의 20%를 차지합니다. 리눅스는 서버의 주요 운영 시스템이며 (상위 100만 웹 서버의 운영 시스템 중 96.4% 이상이 리눅스임), 메인프레임 컴퓨터와 같은 다른 대형 시스템을 주도하고 있고, TOP500 슈퍼컴퓨터에서 사용되는 유일한 OS입니다 (2017년 11월이래로, 점진적으로 모든 경쟁자를 제거해 왔습니다).

리눅스는 역시 임베디드 시스템, 즉 운영 시스템이 전형적으로 펌웨어에 내장되어 있고 시스템에 고도로 맞춤화된 장치에서 실행됩니다. 여기에는 라우터, 자동화 제어, 스마트 홈 기술, 텔레비전 (삼성 및 LG 스마트 TV는 각각 TizenWebOS를 사용), 자동차 (예를 들어 Tesla, Audi, Mercedes-Benz, Hyundai, 및 Toyota는 모두 리눅스를 사용), 디지털 비디오 레코더, 비디오 게임 콘솔스마트워치를 포함합니다. Falcon 9Dragon 2항공 전자 장치는 맞춤형 버전의 리눅스를 사용합니다.

리눅스는 자유와 오픈-소스 소프트웨어 협업의 가장 두드러진 예제 중 하나입니다. 그것의 소스 코드GNU 일반 공중 사용 허가서와 같은 각각의 허가서의 조건에 따라 누구나 상업적 또는 비상업적으로 사용, 수정 및 배포될 수 있습니다.

History

Precursors

유닉스 운영 시스템은 1969년 미국 AT&T 벨 연구소에서 Ken Thompson, Dennis Ritchie, Douglas McIlroy, 및 Joe Ossanna에 의해 고안되고 구현되었습니다. 1971년에 처음 출시된, 유닉스는 당시 공통적인 관행과 마찬가지로 완전히 어셈블리 언어로 작성되었습니다. 1973년에 핵심적이고 선구적인 접근 방식으로, 그것은 Dennis Ritchie에 의해 C 프로그래밍 언어로 다시 작성되었습니다 (일부 하드웨어와 I/O 루틴 제외). 유닉스의 고급 언어 구현의 가용성은 다른 컴퓨터 플랫폼으로의 이식을 더 쉽게 만들었습니다.

컴퓨터 사업에 진입하는 것을 금지한 이전의 독점 금지 사건으로 인해, AT&T는 요청한 사람 누구나에게 운영 시스템의 소스 코드를 라이선스해야 했습니다. 결과적으로, 유닉스는 빠르게 성장했고 학계와 기업에서 널리 채택되었습니다. 1984년에, AT&T는 벨 연구소를 매각했습니다; 무료 라이선스를 요구하는 법적 의무에서 해방된, 벨 연구소는 사용자가 유닉스를 수정하는 것이 법적으로 허용되지 않는 독점 제품으로 유닉스를 판매하기 시작했습니다.

Richard Stallman에 의해 1983년에 시작된 GNU 프로젝트는 완전히 자유 소프트웨어로 구성된 "완벽한 유닉스-호환 소프트웨어 시스템"을 만드는 것을 목표로 했습니다. 작업은 1984년에 시작되었습니다. 나중에, 1985년에, Stallman은 자유 소프트웨어 재단을 시작했고 1989년에 GNU 일반 공중 사용 허가서 (GNU GPL)을 작성했습니다. 1990년대 초까지, 운영 시스템에서 요구된 많은 프로그램 (예를 들어, 라이브러리, 컴파일러, 텍스트 편집기, 명령줄 쉘윈도우 시스템)이 완료되었지만, 장치 드라이버, 데몬과 같은 저-수준 요소와 GNU Hurd라고 하는 커널은 지연되고 불완전했습니다.

MINIX컴퓨터 과학 교수, Andrew S. Tanenbaum에 의해 만들어졌고, 운영 시스템 원리를 배우고자 하는 학생과 기타 사용자를 대상으로 하는 최소 유닉스-계열 운영 시스템으로 1987년에 출시되었습니다. 비록 MINIX의 완전한 소스 코드는 무료로 사용 가능했지만, 라이선스 조건으로 인해 2000년 4월 라이선스가 변경될 때까지 자유 소프트웨어가 되지 못했습니다.

비록 1992년까지 출시되지는 않았지만, 법적 문제로 인해, NetBSD, OpenBSDFreeBSD가 파생된 386BSD의 개발은 리눅스의 개발보다 먼저였습니다.

Linus Torvalds는 GNU 커널이나 386BSD가 1991년 당시에 사용 가능했다면, 그는 아마도 리눅스를 만들지 않았을 것이라고 별도의 경우에 말해 왔습니다.

Creation

1991년, 헬싱키 대학에 다니는 동안, Torvalds는 운영 시스템에 관심을 갖게 되었습니다. 당시 교육용으로만 제한되었던 MINIX의 라이선스에 좌절했던, 그는 결국 리눅스 커널이 된 자신의 운영 시스템 커널 작업을 시작했습니다.

Torvalds는 MINIX에서 리눅스 커널 개발을 시작했었고 MINIX에 대해 작성된 응용 프로그램은 리눅스에서도 사용되었습니다. 나중에, 리눅스가 성숙해지고 리눅스 시스템에서 추가 리눅스 커널 개발이 이루어졌습니다. GNU 응용 프로그램은 역시 모든 MINIX 구성 요소를 대체했는데, 왜냐하면 GNU 프로젝트에서 무료로 사용할 수 있는 코드를 신생 운영 시스템과 함께 사용하는 것이 유리했기 때문입니다; GNU GPL에 따라 라이선스가 부여된 코드는 동일하거나 호환 가능한 라이선스로 배포되는 한 다른 컴퓨터 프로그램에서 재사용될 수 있습니다. Torvalds는 상업적 재배포를 금지하는 원래 라이선스에서 GNU GPL로의 전환을 시작했습니다. 개발자들은 GNU 구성 요소를 리눅스 커널과 통합하여 완전한 기능을 갖춘 무료 운영 시스템을 만들기 위해 노력했습니다.

Naming

Linus Torvalds는 그의 발명품을 "Free", "freak", 및 "x" (유닉스에 대한 암시)의 합성어, "Freax"라고 부르고 싶었습니다. 시스템에 대한 그의 작업을 시작하는 동안, 프로젝트의 일부 makefile은 약 반년 동안 "Freax"라는 이름을 포함했습니다. Torvalds는 이미 "Linux"라는 이름을 고려했지만, 처음에는 너무 이기적이라고 일축했습니다.

개발을 용이하게 하기 위해, 그 파일들은 1991년 9월 FUNETFTP 서버 (ftp.funet.fi)에 업로드되었습니다. Helsinki University of Technology (HUT)에 있던 Torvalds의 동료이자 당시 FTP 서버의 자원 봉사 관리자 중 한 명이었던 Ari Lemmke는 "Freax"가 좋은 이름이라고 생각하지 않았으므로, Torvalds와 상의하지 않고 그 서버에서 프로젝트 이름을 "Linux"로 지었습니다. 어쨌든, 나중에 Torvalds는 "Linux"에 동의했습니다.

Torvalds에 의한 뉴스 그룹 게시물에 따르면, "Linux"라는 단어는 'print'에서와 같이 짧은 'i'와 'put'에서와 같이 'u'로 짧은 발음 (/ˈlɪnʊks/ LIN-uuks)으로 발음되어야 합니다. "Linux"라는 단어가 어떻게 발음되어야 하는지 추가로 보여주기 위해, 그는 커널 소스 코드와 함께 오디오 가이드를 포함했습니다. 어쨌든, 이 녹음에서, 그는 'Linux' (/ˈlinʊks/ (LEEN-uuks를 짧지만 둥글지 않은 앞 모음으로 발음합니다.

Commercial and popular uptake

오직 애호가들에 의해 사용되는 것이 아니라, 생산 환경에서 리눅스의 채택은 1990년대 중반 슈퍼컴퓨팅 커뮤니티에서 처음 시작되었으며, 여기서 NASA와 같은 조직은 점점 더 비싸지는 기계를 리눅스를 실행하는 저렴한 범용 컴퓨터 클러스터로 교체하기 시작했습니다. 상업적 사용은 DellIBM, 그 뒤를 이어 Hewlett-Packard가 데스크톱 운영 시스템 시장에서 마이크로소프트의 독점을 피하기 위해 리눅스 지원을 제공하기 시작하면서 시작되었습니다.

오늘날, 리눅스 시스템은 임베디드 시스템에서 거의 모든 슈퍼컴퓨터에 이르기까지 컴퓨팅 전반에 걸쳐 사용되고, 널리 사용되는 LAMP 응용 프로그램 스택과 같은 서버 설치에서 위치를 확보했습니다. 가정과 기업 데스크탑에서 리눅스 배포판의 사용이 증가해 왔습니다. 리눅스 배포판은 역시 넷북 시장에서도 인기를 얻어 왔는데, 많은 장치가 맞춤형 리눅스 배포판과 함께 배송되고 Google은 넷북용으로 설계된 자체 Chrome OS를 출시했습니다.

소비자 시장에서 리눅스의 가장 큰 성공은 아마도 모바일 장치 시장일 것인데, 안드로이드스마트폰에서 지배적인 운영 시스템이고 태블릿, 및 최근에는 웨어러블에서 매우 인기가 있습니다. Valve가 리눅스에 대한 지원을 표시하고 자체의 게임-지향 리눅스 배포판, SteamOS를 출시하면서 리눅스 게임도 증가하고 있습니다. 리눅스 배포판은 브라질 연방 정부와 같은 다양한 지방과 국가 정부에서도 인기를 얻었습니다.

Current development

Greg Kroah-Hartman은 리눅스 커널에 대해 수석 유지 관리자이고 개발을 인도합니다. William John Sullivan은 GNU 구성 요소를 지원하는 자유 소프트웨어 재단의 실행 감독관입니다. 마지막으로, 개인과 기업은 타사의 비-GNU 구성 요소를 개발합니다. 이들 타사 구성 요소는 방대한 작업을 구성하고 커널 모듈과 사용자 응용 프로그램 및 라이브러리를 모두 포함할 수 있습니다.

리눅스 공급업체와 커뮤니티는 리눅스 배포판의 형식에서 추가 패키지 관리 소프트웨어와 함께 커널, GNU 구성 요소 및 비-GNU 구성 요소를 결합하고 배포합니다.

Design

많은 오픈 소스 개발자는 리눅스 커널이 설계된 것이 아니라 자연스러운 선택을 통해 진화했다는 것에 동의합니다. Torvalds는 유닉스의 설계가 스캐폴딩 역할을 했지만, "Linux는 많은 돌연변이와 함께 성장했고 – 돌연변이가 무작위보다 적기 때문에, 그것들은 DNA에서 알파-입자보다 빠르고 지시적이었습니다"라고 생각합니다. Eric S. Raymond는 리눅스의 혁신적인 측면을 기술적인 것이 아니라 사회적인 것으로 생각합니다: 리눅스 이전에는, 복잡한 소프트웨어는 소규모 그룹에 의해 신중하게 설계되었지만, "리눅스는 완전히 다른 방식으로 진화했습니다. 거의 처음부터, 그것은 인터넷을 통해서만 조정하는 수많은 자원 봉사자들에 의해 다소 무심코 해킹당했습니다. 엄격한 표준이나 독재적이 아니라 매주 릴리스하고 며칠 내에 수백 명의 사용자로부터 피드백을 받는 순진하게 단순한 전략에 의해 품질이 유지되어, 개발자에 의해 도입된 돌연변이에 대해 일종의 신속한 다윈주의적 선택을 만들었습니다." 경쟁 OS의 엔지니어, Bryan Cantrill은 "리눅스는 설계된 것이 아니라, 진화한 것"이라는 데 동의하지만, 이것이 한계라고 생각하여, 일부 기능, 특히 보안과 관련된 기능은, "이것은 결국 생물학적 시스템이 아니라 소프트웨어 시스템"으로 결코 진화할 수 없다고 제안합니다. 리눅스-기반 시스템은 모듈식 유닉스-계열 운영 시스템이며, 1970년대와 1980년대에 유닉스에서 확립된 원칙에서 많은 기본 설계를 파생시킨 시스템입니다. 그러한 시스템은 프로세스 제어, 네트워킹, 주변 장치에 대한 접근, 및 파일 시스템을 처리하는 모놀리식 커널, 리눅스 커널을 사용합니다. 장치 드라이버는 커널과 직접 통합되거나, 시스템이 실행되는 동안 로드되는 모듈로 추가됩니다.

GNU 사용자 영역은 리눅스 커널을 기반으로 하는 대부분의 시스템의 핵심 부분이며, 안드로이드는 예외입니다. 프로젝트의 C 라이브러리 구현은 커널-사용자공간 인터페이스에 필요한 리눅스 커널의 시스템 호출을 위한 래퍼로 작동하고, 도구-체인은 리눅스 개발에 필수적인 광범위한 프로그래밍 도구 모음이고 (리눅스 커널 자체를 빌드하기 위해 사용되는 컴파일러 포함), coreutils는 많은 기본 유닉스 도구를 구현합니다. 이 프로젝트는 역시 인기 있는 CLI , Bash도 개발합니다. 대부분의 리눅스 시스템에 의해 사용되는 그래픽 사용자 인터페이스 (또는 GUI)는 X Window System의 구현 위에 구축됩니다. 보다 최근에, 리눅스 커뮤니티는 X11을 대체하는 새로운 디스플레이 서버 프로토콜로 Wayland로의 발전을 모색하고 있습니다. 다른 많은 오픈-소스 소프트웨어 프로젝트가 리눅스 시스템에 기여합니다.

리눅스 시스템의 설치된 구성 요소는 다음을 포함합니다:

  • 부트로더, 예를 들어 GNU GRUB, LILO, SYSLINUX, 또는 Gummiboot. 이것은 리눅스 커널을 컴퓨터의 전원을 켰을 때와 펌웨어 초기화를 수행한 후에 컴퓨터에 의해 수행됨으로써 컴퓨터의 주기억장치에 로드하는 프로그램입니다.
  • init 프로그램, 예를 들어 전통적인 sysvinit와 더 새로운 systemd, OpenRCUpstart. 이것은 리눅스 커널에 의해 시작되는 첫 번째 프로세스이고, 프로세스 트리의 뿌리에 있습니다; 다시 말해서, 모든 프로세스는 init를 통해 시작됩니다. 그것은 시스템 서비스와 로그인 프롬프트 (그래픽 모드 또는 터미널 모드)와 같은 프로세스를 시작합니다.
  • 소프트웨어 라이브러리, 이것은 프로세스를 실행함으로써 사용될 수 있는 코드를 포함합니다. ELF-형식 실행 파일을 사용하는 리눅스 시스템에서, 동적 라이브러리 사용을 관리하는 동적 링커ld-linux.so로 알려져 있습니다. 만약 시스템이 사용자에게 소프트웨어를 직접 컴파일하도록 설정되면, 헤더 파일이 역시 설치된 라이브러리의 인터페이스를 설명하기 위해 포함됩니다. 리눅스 시스템에서 가장 공통적으로 사용되는 소프트웨어 라이브러리, GNU C 라이브러리 (glibc) 외에도, SDLMesa와 같은 수많은 다른 라이브러리가 있습니다.
    • C 표준 라이브러리는 GNU C 라이브러리가 표준인 컴퓨터 시스템에서 C 프로그램을 실행하기 위해 요구되는 라이브러리입니다. 임베디드 시스템에 대해, musl, EGLIBC (한 때 데비안에서 사용했던 glibc 포크) 및 uClibc (uClinux에 대해 설계됨)와 같은 대안이 개발되어 왔지만, 마지막 두 가지는 더 이상 유지되지 않습니다. 안드로이드는 자체 C 라이브러리, Bionic을 사용합니다.
  • GNU coreutils가 표준 구현인 기본 유닉스 명령. 카피레프트 BusyBox와 BSD-라이선스 Toybox와 같은 임베디드 시스템에 대한 대안이 존재합니다.
  • 위젯 툴킷은 소프트웨어 응용 프로그램에 대해 그래픽 사용자 인터페이스 (GUI)를 구축하기 위해 사용되는 라이브러리입니다. 그놈 프로젝트에 의해 개발된 GTKClutter, Qt 프로젝트에 의해 개발된고 The Qt Company에 의해 주도되는 Qt, 및 주로 Enlightenment 팀에 의해 개발된 Enlightenment Foundation Libraries (EFL)을 비롯한 수많은 위젯 툴킷을 사용할 수 있습니다.
  • dpkgRPM과 같은 패키지 관리 시스템. 대안적으로 패키지는 바이너리 또는 소스 타르볼에서 컴파일될 수 있습니다.
  • 명령 쉘 또는 윈도우 환경과 같은 사용자 인터페이스 프로그램.

User interface

사용자 인터페이스는, 역시 이라고 알려져 있으며, 명령-줄 인터페이스 (CLI), 그래픽 사용자 인터페이스 (GUI) 또는 임베디드 시스템에 공통적인 관련 하드웨어에 연결된 컨트롤입니다. 데스크탑 시스템에 대해, 기본 사용자 인터페이스는 보통 그래픽이지만, CLI는 공통적으로 터미널 에뮬레이터 윈도우 또는 별도의 가상 콘솔에서 사용할 수 있습니다.

CLI 쉘은 입력과 출력 모두에 텍스트를 사용하는 텍스트-기반 사용자 인터페이스입니다. 리눅스에서 사용되는 지배적인 쉘은 원래 GNU 프로젝트를 위해 개발된 Bourne-Again Shell (bash)입니다. 사용자-영역의 다양한 부분을 포함하여 대부분의 저-수준 리눅스 구성 요소는 CLI를 독점적으로 사용합니다. CLI는 특히 반복적이거나 지연된 작업의 자동화에 적합하고 매우 간단한 프로세스-사이 통신을 제공합니다.

데스크탑 시스템에서, 가장 널리 사용되는 사용자 인터페이스는, 비록 다양한 추가적인 사용자 인터페이스가 존재할지라도, KDE Plasma, GNOME, MATE, Cinnamon, LXDE, Pantheon, 및 Xfce와 같은 광범위한 데스크탑 환경과 함께 패키지된 GUI 쉘입니다. 가장 널리 사용되는 사용자 인터페이스는 종종 간단히 "X"라고 하는 X 윈도우 시스템을 기반으로 합니다. 그것은 네트워크 투명성을 제공하고 한 시스템에서 실행되는 그래픽 응용 프로그램을 사용자가 응용 프로그램과 상호 작용할 수 있는 또 다른 시스템에 표시되도록 허용합니다; 어쨌든 X 윈도우 시스템의 특정 확장은 네트워크를 넘어 작동할 수 없습니다. 여러 X 디스플레이 서버가 존재하며, 참조 구현, X.Org Server가 가장 널리 사용됩니다.

서버 배포판은 개발자와 관리자를 위한 명령-줄 인터페이스를 제공할 수 있지만, 시스템의 사용-사례에 맞게 설계된 최종 사용자를 위한 사용자-정의 인터페이스를 제공할 수 있습니다. 이 사용자-정의 인터페이스는 필연적으로 리눅스 기반이 아닌 또 다른 시스템에 있는 클라이언트를 통해 접근됩니다.

타일링, 동적, 스태킹, 및 합성을 포함하여 X11에 대한 여러 유형의 윈도우 관리자가 있습니다. 윈도우 관리자는 개별적인 응용 프로그램 창의 배치와 모양을 제어하고, X 윈도우 시스템과 상호 작용하는 수단을 제공합니다. dwm, ratpoison, i3wm, 또는 herbstluftwm과 같은 더 간단한 X 윈도우 관리자는 최소한의 기능을 제공하지만, FVWM, Enlightenment 또는 Window Maker와 같은 보다 정교한 윈도우 관리자는 내장된 작업-표시줄테마와 같은 더 많은 기능을 제공하지만, 여전히 데스크탑 환경과 비교될 때 가볍습니다. 데스크탑 환경은 Mutter (GNOME), KWin (KDE) 또는 Xfwm (xfce)과 같은 표준 설치의 일부로 윈도우 관리자를 포함하지만, 사용자는 선호되는 다른 윈도우 관리자를 사용하기 위해 선택할 수 있습니다.

Wayland는 X11 프로토콜을 대체하기 위한 디스플레이 서버 프로토콜입니다; 2014년 당시, 그것은 더 널리 채택되지 않았습니다. X11고 달리, Wayland는 외부 창 관리자와 합성 관리자를 필요로 하지 않습니다. 따라서 Wayland 합성기는 디스플레이 서버, 윈도우 관리자와 합성 관리자의 역할을 합니다. Weston은 Wayland의 참조 구현이지만, GNOME의 Mutter와 KDE의 KWin은 독립형 디스플레이 서버로 Wayland에 이식되고 있습니다. Enlightenment는 버전 19 이후로 이미 성공적으로 이식되어 왔습니다.

Video input infrastructure

리눅스는 현재 비디오 입력 장치를 처리하기 위한 두 가지 최신 커널 사용자 공간 API를 가집니다: 비디오 스트림과 라디오를 위한 V4L2와 디지털 TV 수신을 위한 DVB API가 그것입니다.

다양한 장치의 복잡성과 다양성, 및 그들 API에 의해 처리되는 많은 형식과 표준으로 인해, 이 인프라는 다른 장치에 더 잘 맞도록 발전할 필요가 있습니다. 역시, 좋은 사용자-공간 장치 라이브러리는 사용자-공간 응용 프로그램에 의해 해당 장치에서 지원되는 모든 형식으로 작업될 수 있도록 하는 성공의 열쇠입니다.

Development

리눅스와 다른 많은 인기 있는 최신 운영 시스템 사이의 주요 차이점은 리눅스 커널과 다른 구성 요소가 자유오픈-소스 소프트웨어라는 것입니다. 가장 널리 사용되는 운영 시스템은 리눅스가 아닙니다. 일부 자유오픈-소스 소프트웨어 라이선스는 일종의 상호주의, 카피레프트 원칙을 기반으로 합니다: 카피레프트 소프트웨어에서 파생된 임의의 작업은 그 자체로도 카피레프트여야 합니다. 가장 공통적인 자유 소프트웨어 라이선스, GNU General Public License (GPL)은 카피레프트의 형식이고, 리눅스 커널과 GNU 프로젝트에서 많은 구성 요소에 사용됩니다.

리눅스-기반 배포판은 개발자에 의해 다른 운영 시스템과 확립된 컴퓨팅 표준과의 상호-운용성을 위해 고안되었습니다. 리눅스 시스템은 가능한 한 POSIX, SUS, LSB, ISO, 및 ANSI 표준을 준수하지만 현재까지 Linux-FT라는 POSIX.1 인증을 받은 리눅스 배포판은 단 하나뿐입니다.

자유 소프트웨어 프로젝트는, 비록 협업을 통해 개발되었지만, 종종 서로 독립적으로 생성됩니다. 소프트웨어 라이선스가 재배포를 명시적으로 허용한다는 사실은 어쨌든 독립형 프로젝트에서 생성된 소프트웨어를 수집하고 리눅스 배포판의 형태로 한 번에 사용할 수 있도록 하는 대규모 프로젝트의 기반을 제공합니다.

많은 리눅스 배포판은 네트워크 연결을 통해 다운로드 및 설치할 수 있는 시스템 소프트웨어와 응용 프로그램 소프트웨어 패키지의 원격 모음을 관리합니다. 이것은 사용자에게 특정 요구 사항에 맞게 운영 시스템을 조정하는 것을 허용합니다. 배포판은 개인, 느슨한 팀, 자원 봉사 조직과 상업 단체에 의해 유지-관리됩니다. 배포판은 설치된 리눅스 커널의 기본 구성, 일반 시스템 보안, 및 보다 일반적으로 서로 다른 소프트웨어 패키지를 일관된 전체로 통합하는 역할을 합니다. 배포판은 전형적으로 apt, yum, zypper, pacman 또는 portage와 같은 패키지 관리자를 사용하여 하나의 중앙 위치에서 모든 시스템 소프트웨어를 설치, 제거 및 업데이트합니다.

Community

배포판은 주로 개발자와 사용자 커뮤니티에 의해 주도됩니다. 일부 공급업체는 자원 봉사 기반으로 배포판을 개발하고 자금을 지원하는데, 데비안이 잘 알려진 예입니다. Red HatFedora를 그렇게 하고, SUSEopenSUSE를 그렇게 하는 것처럼, 다른 사람들은 상용 배포판의 커뮤니티 버전을 유지 관리합니다.

많은 도시와 지역에서, 리눅스 사용자 그룹 (LUG)로 알려진 지역 협회는 선호하는 배포판과 더 나아가 자유 소프트웨어를 홍보하려고 합니다. 그들은 회의를 열고 새로운 사용자에게 무료 데모, 교육, 기술 지원 및 운영 시스템 설치를 제공합니다. 많은 인터넷 커뮤니티는 역시 리눅스 사용자와 개발자를 지원합니다. 대부분의 배포판과 자유 소프트웨어 / 오픈-소스 프로젝트는 IRC 채팅방 또는 뉴스그룹을 가집니다. 온라인 포럼은 LinuxQuestions.orgUbuntu, Fedora, 및 Gentoo와 같은 다양한 배포판별 지원과 커뮤니티 포럼과 같은 지원을 위한 또 다른 수단입니다. 리눅스 배포판은 메일링 리스트를 호스팅합니다; 공통적으로 주어진 목록에 대한 사용 또는 개발과 같은 특정 주제가 있을 것입니다.

리눅스에 중점을 둔 여러 기술 웹 사이트가 있습니다. 리눅스에 대한 인쇄 잡지는 종종 소프트웨어 또는 전체 리눅스 배포판을 포함하는 표지 디스크를 번들로 제공합니다.

비록 리눅스 배포판이 일반적으로 무료로 제공될지라도, 여러 대기업에서 시스템 구성 요소와 자유 소프트웨어 개발을 판매, 지원 및 기여합니다. 2017년 리눅스 커널에 대한 분석은 프로그래머가 개발한 코드의 85% 이상이 작업 대가를 받고 있고, 약 8.2%는 무급 개발자에게, 4.1%는 분류되지 않은 것으로 나타났습니다. 기여를 제공하는 주요 기업은 Intel, Samsung, Google, AMD, OracleFacebook을 포함합니다. 많은 기업, 특히 Red Hat, Canonical, 및 SUSE는 리눅스 배포판을 중심으로 중요한 비즈니스를 구축했습니다.

리눅스 커널에 구축된 배포판의 다양한 소프트웨어 패키지의 기반이 되는 자유 소프트웨어 라이선스는 명시적으로 상업화를 수용하고 장려합니다; 리눅스 배포판 전체와 개별 공급업체 사이의 관계는 공생 관계로 보일 수 있습니다. 상업적 공급업체의 공통적인 비즈니스 모델 중 하나는 특히 비즈니스 사용자에게 지원을 청구하는 것입니다. 많은 회사는 더 많은 수의 설치를 관리하거나 관리 작업을 단순화하기 위해 독점 지원 패키지와 도구를 추가하는 전문 비즈니스 버전의 배포판도 제공합니다.

또 다른 비즈니스 모델은 하드웨어를 판매하기 위해 소프트웨어를 제공하는 것입니다. 이것은 CP/M, Apple DOS, 및 Mac OS 7.6 이전 버전과 같은 운영 시스템에서 자유롭게 복사할 수 있지만 수정할 수는 없는 컴퓨터 산업의 표준이었습니다. 1980년대에 걸쳐 컴퓨터 하드웨어가 표준화됨에 따라 같은 아키텍처를 공유하는 모든 제조업체의 컴퓨터에서 OS가 실행되기 때문에 하드웨어 제조업체가 이 전술로 이익을 얻는 것이 더 어려워졌습니다.

Programming on Linux

대부분의 프로그래밍 언어는 직접 또는 타사 커뮤니티 기반 이식을 통해 리눅스를 지원합니다. 리눅스 응용 프로그램과 운영 시스템 프로그램을 빌드하는 데 사용되는 원래 개발 도구는 GNU Compiler Collection (GCC) 및 GNU 빌드 시스템을 포함하는 GNU 도구-체인에서 구해질 수 있습니다. 다른 것들 사이에서, GCC는 Ada, C, C++, Go, 및 Fortran에 대한 컴파일러를 제공합니다. 많은 프로그래밍 언어가 리눅스를 지원하는 교차 플랫폼 참조 구현, 예를 들어 PHP, Perl, Ruby, Python, Java, Go, Rust, 및 Haskell을 가집니다. 2003년에 처음 출시된, LLVM 프로젝트는 여러 언어에 대한 대안적인 크로스 플랫폼 오픈-소스 컴파일러를 제공합니다. 리눅스에 대한 독점 컴파일러는 인텔 C++ 컴파일러, Sun Studio, 및 IBM XL C/C++ 컴파일러를 포함합니다. Visual Basic 형태에서 BASICGambas, FreeBASIC, 및 XBasic의 형태로 지원되고, 터미널 프로그래밍 측면에서는 QB64 형태에서 QuickBASIC 또는 Turbo BASIC 프로그래밍이 지원됩니다.

유닉스-계열 시스템의 공통 기능, 리눅스는 일반적으로 스크립팅, 텍스트 처리, 및 시스템 구성과 관리를 대상으로 하는 기존의 특정-목적 프로그래밍 언어를 포함하고 있습니다. 리눅스 배포판은 쉘 스크립트, awk, sed, 및 make를 지원합니다. 많은 프로그램은 자체 구성 또는 프로그래밍을 지원하는 내장된 프로그래밍 언어를 가지고 있습니다. 예를 들어, 정규 표현식greplocate와 같은 프로그램에서 지원되고, 기존 유닉스 MTA Sendmail은 자체 Turing complete 스크립팅 시스템을 포함하고 있고, 고급 텍스트 편집기 GNU Emacs는 범용 Lisp 인터프리터를 기반으로 구축되었습니다.

대부분의 배포판은 역시 PHP, Perl, Ruby, Python 및 기타 동적 언어에 대한 지원을 포함합니다. 반면에 공통적이지는 않지만, 리눅스는 역시 C# (Mono를 통해), Vala, 및 Scheme을 지원합니다. Guile SchemeGNU 시스템 유틸리티를 대상으로 하는 확장 언어 역할을 하며, 우아하고 기능적인 고급 스크립팅 시스템을 통해 유닉스 설계의 기존의 작고 정적이고 컴파일된 C 프로그램을 빠르고 동적으로 확장할 수 있도록 합니다; 많은 GNU 프로그램은 이를 위해 선택적 Guile 바인딩으로 컴파일될 수 있습니다. 원래 Sun Microsystems JVM (HotSpot), 및 IBM의 J2SE RE, 마찬가지로 KaffeJikesRVM과 같은 많은 오픈-소스 프로젝트를 포함하여 많은 Java Virtual Machines과 개발 키트가 리눅스에서 실행됩니다.

GNOMEKDE는 널리 사용되는 데스크탑 환경이고 응용 프로그램 개발을 위한 프레임워크를 제공합니다. 이들 프로젝트는 각각 GTKQt 위젯 툴킷을 기반으로 하며, 더 큰 프레임워크와 독립적으로 사용할 수도 있습니다. 둘 다는 다양한 언어를 지원합니다. Anjuta, Code::Blocks, CodeLite, Eclipse, Geany, ActiveState Komodo, KDevelop, Lazarus, MonoDevelop, NetBeans, 및 Qt Creator를 비롯한 여러 통합 개발 환경을 사용할 수 있지만, 오래된 편집기 Vim, nano, 및 Emacs는 여전히 인기가 있습니다.

Hardware support

리눅스 커널은 휴대 전화에서 슈퍼컴퓨터에 이르는 다양한 장치에서 사용할 수 있는 널리 이식된 운영 시스템 커널입니다; 그것은 이식가능 ARM-기반 iPAQIBM 메인프레임 System z9 또는 System z10을 포함하여 매우 다양한 컴퓨터 아키텍처에서 실행됩니다. 덜 주류 아키텍처를 위해 전문화된 배포판과 커널 포크가 존재합니다; 예를 들어 ELKS 커널 분기Intel 8086 또는 Intel 80286 16-비트 마이크로프로세서에서 실행할 수 있지만, µClinux 커널 분기는 메모리 관리 장치 없이 시스템에서 실행할 수 있습니다. 커널은 역시 매킨토시 컴퓨터 (PowerPCIntel 프로세서 모두 포함), PDAs, 비디오 게임 콘솔, 휴대용 음악 플레이어, 및 휴대 전화와 같은, 오직 제조업체에서 만든 운영 시스템을 사용하도록 의도된 아키텍처에서 실행됩니다.

FreedomHEC와 같이 리눅스에서 다양한 하드웨어에 대한 지원을 유지하고 개선하는 데 전념하는 여러 산업 협회와 하드웨어 회의가 있습니다. 시간이 지남에 따라, 리눅스에서 다양한 하드웨어에 대한 지원이 향상되어 호환되는 "좋은 기회"가 있는 기성품 구매가 가능해졌습니다.

2014년에서, 테스트된 모든 하드웨어 구성의 데이터베이스를 자동으로 수집하는 새로운 계획이 시작되었습니다.

Market share and uptake

자유와 오픈-소스 소프트웨어에 대한 많은 양적 연구는, 특히 리눅스를 조사하는 수많은 연구와 함께 시장 점유율과 안정성을 포함한 주제에 중점을 두고 있습니다. 리눅스 시장은 성장하고 있고, 리눅스 운영 시스템 시장 규모는 2019년 38억 9000만 달러에서 2027년 19.2% 성장하여 156억 4000만 달러에 이를 것으로 예상됩니다. 분석가와 지지자들은 리눅스의 상대적인 성공을 보안, 안정성, 저렴한 비용, 및 공급업체 종속으로부터의 자유로 돌립니다.

데스크탑과 랩탑 : 웹 서버 통계 (즉, 클라이언트 장치의 웹 사이트 방문에서 기록된 숫자를 기반으로 함)에 따르면, 2018년 11월 기준으로, 데스크톱 컴퓨터에서 예상되는 리눅스 시장 점유율은 약 2.1%입니다. 이에 비해, 마이크로소프트 윈도우는 약 87%의 시장 점유율을 갖고 있고, 반면에 macOS는 약 9.7%를 차지합니다.

웹 서버 : W3Cook은 상위 1,000,000개의 Alexa 도메인을 사용하는 통계를 게시했는데, 2015년 5월 기준으로 웹 서버의 96.55%가 리눅스를 실행하고, 1.73%가 윈도우를 실행하고, 1.72%가 FreeBSD를 실행하는 것으로 추정합니다. W3Techs는 매월 업데이트되는 상위 10,000,000개의 Alexa 도메인과 상위 1,000,000개의 Tranco 도메인을 사용하는 통계를 게시하는데, 2020년 11월 기준으로 웹 서버의 39%에서 리눅스를 사용하는 것으로 추정하고, 상대적으로 마이크로소프트 윈도우에 의해 21.9%가 사용됩니다. 40.1%는 다른 유형의 유닉스를 사용했습니다. IDC의 2007년 1분기 보고서에 따르면 리눅스는 당시 전체 서버 시장의 12.7%를 차지했습니다; 이 추정치는 여러 회사에서 판매된 리눅스 서버의 대수를 기반으로 했었고, 서버 하드웨어를 별도로 구매한 후 나중에 그것에 리눅스를 설치했던 것은 포함하지 않았습니다.

모바일 장치 : 리눅스 커널을 기반으로 하는 안드로이드는 스마트폰에 대해 지배적인 운영 시스템이 되었습니다. 2013년 2분기 동안, 전 세계적으로 판매된 스마트폰의 79.3%가 안드로이드를 사용했습니다. 안드로이드는 역시 2013년 기준 태블릿 판매의 60% 이상을 차지하는 인기 있는 태블릿에 대한 운영 시스템입니다. 웹 서버 통계에 따르면, 2021년 10월 기준으로 안드로이드는 약 71%의 시장 점유율을 가지고 있으고, 반면에 iOS는 28%, 나머지 1%는 다양한 틈새 플랫폼에 기인합니다.

영화 제작 : 수년 동안 리눅스는 영화 산업에서 선택한 플랫폼이 되어 왔습니다. 리눅스 서버에서 제작된 최초의 주요 영화는 1997년의 Titanic이었습니다. 그 이후로 DreamWorks Animation, Weta Digital, 및 Industrial Light & Magic을 비롯한 주요 스튜디오가 리눅스로 이동했습니다. 리눅스 영화 그룹에 따르면, 대규모 애니메이션 및 시각 효과 회사의 서버와 데스크톱 중 95% 이상이 리눅스를 사용합니다.

정부에서 사용 : 리눅스 배포판은 다양한 지방과 국가 정부에서도 인기를 얻어 왔습니다. 러시아 군대가 자체적으로 리눅스 배포판을 만들고 있다는 소식도 떠올랐고, G.H.ost 프로젝트로 결실을 맺었습니다. 인도 케랄라 주는 모든 주립 고등학교가 컴퓨터에서 리눅스를 실행하도록 의무화하는 수준까지 이르렀습니다. 중국은 기술 독립을 달성하기 위해 Loongson 프로세서 제품군의 운영 시스템으로 리눅스를 독점적으로 사용합니다. 스페인에서, 일부 지역은 Extremadura의 gnuLinEx 및 안달루시아의 Guadalinex와 같이 교육 및 공식 기관에서 널리 사용되는 자체 리눅스 배포판을 개발했습니다. 프랑스독일도 리눅스 채택을 위한 조치를 취했습니다. 2002년부터 개발된 북한의 붉은 별 OS페도라 리눅스 버전을 기반으로 합니다.

Copyright, trademark, and naming

리눅스 커널은 GNU 일반 공중 라이선스 (GPL), 버전 2 아래에서 라이선스가 부여됩니다. GPL은 이 라이선스에 따라 소스 코드를 기반으로 하는 소프트웨어를 배포하는 모든 사람이 원본 소스 코드 (및 임의의 수정 사항)를 같은 조건 아래에서 수신자에게 제공해야 한다고 요구합니다. 전형적인 리눅스 배포판의 다른 주요 구성 요소는 역시 주로 GPL에 따라 라이선스가 부여되지만, 그것들은 다른 라이선스를 사용할 수도 있습니다; 많은 라이브러리가 GPL의 보다 관대한 변형, GNU Lesser General Public License (LGPL)을 사용하고, X 윈도우 시스템X.Org 구현은 MIT 라이선스를 사용합니다.

Torvalds는 리눅스 커널이 GPL 버전 2에서 버전 3으로 이동하지 않을 것이라고 말합니다. 그는 구체적으로 특히 디지털 권한 관리에서 소프트웨어 사용을 금지하는 새 라이선스의 일부 조항을 싫어합니다. 그것은 역시 수천에 달하는 모든 저작권 소유자로부터 허가를 받는 것도 비현실적입니다.

Red Hat Linux 7.1에 대한 2001년 연구는 이 배포판이 3천만 개의 소스 코드 줄을 포함하고 있다고 찾아냈습니다. 건설 비용 모델을 사용하여, 그 연구는 이 분배판에 약 8000 사람-년의 개발 시간이 필요한 것으로 추정했습니다. 그 연구에 따르면, 만약 이 모든 소프트웨어가 기존의 독점 수단으로 개발되었다면, 미국에서 2019년에 개발하기 위해 약 15억 5천만 달러의 비용이 들었을 것입니다. 대부분의 소스 코드 (71%)는 C 프로그래밍 언어로 작성되었지만, C++, Lisp, assembly language, Perl, Python, Fortran 및 다양한 쉘 스크립팅 언어를 비롯한 많은 다른 언어가 사용되었습니다. 모든 코드 줄의 절반 약간 넘는 부분이 GPL에 따라 라이선스가 부여되었습니다. 리눅스 커널 자체는 코드의 240만 줄, 또는 전체의 8%였습니다.

나중의 연구에서, 같은 분석이 데비안 버전 4.0 (2007년에 출시된 etch)에 대해 수행되었습니다. 이 배포판은 거의 2억 8,300만 줄의 코드가 포함되어 있고, 그 연구는 기존 방식으로 개발하는 데 약 7만 3,000 사람-년과 87억 1,000만 달러 (2019년 달러 기준)의 비용이 필요할 것으로 추정했습니다.

미국에서 Linux라는 이름은 Linus Torvalds에 등록된 상표입니다. 초기에는, 아무도 그것을 등록하지 않았지만, 1994년 8월 15일 William R. Della Croce, Jr.는 상표 Linux를 신청하고, 그런-다음 리눅스 배포자에게 로열티를 요구했습니다. 1996년에, Torvalds와 일부 영향을 받은 조직은 Torvalds에 상표를 할당하기 위해 그를 고소했고, 1997년에 사건이 해결되었습니다. 상표의 라이선스는 이후 Linux Mark Institute (LMI)에서 처리되었습니다. Torvalds는 다른 사람이 그 이름을 사용하는 것을 방지하기 위해서만 그 이름을 상표로 등록했다고 밝혔습니다. LMI는 원래 상표의 일부로 Linux 이름을 사용하는 데 대해 명목상의 하위 라이선스 비용을 청구했지만, 나중에 무료로 영구적인 전 세계 하위 라이선스를 제공하도록 변경했습니다.

자유 소프트웨어 재단 (FSF)은 운영 시스템 전체를 언급할 때 이름으로 GNU/Linux를 선호하는데, 왜냐하면 그것은 리눅스 배포판을 FSF 회장, Richard Stallman에 의해 1983년에 시작된 GNU 운영 시스템의 변종으로 여기기 때문입니다. 그들은 GNU가 그것의 일부가 아니기 때문에 리눅스 커널을 기반으로 하는 운영 시스템이기도 한 안드로이드 OS에 대해 Android라는 이름에 대해 명시적으로 문제를 제기하지 않습니다.

Stallman과 FSF를 제외한 소수의 공인과 소프트웨어 프로젝트, 특히 데비안 (1996년까지 FSF의 후원을 받음)는 역시 운영 시스템을 전체적으로 언급할 때 GNU/Linux를 사용합니다. 대부분의 미디어와 공통적인 사용법은, 어쨌든, 이 운영 시스템의 가족을 단순히 Linux라고 지칭하고, 많은 대규모 리눅스 배포판 (예를 들어, SUSE LinuxRed Hat Enterprise Linux)도 마찬가지입니다. 대조적으로, 자유 소프트웨어만 포함하는 리눅스 배포판은 Trisquel GNU/Linux, Parabola GNU/Linux-libre, BLAG Linux and GNU, 및 gNewSense와 같이 "GNU/Linux" 또는 단순히 "GNU"를 사용합니다.

2011년 5월 당시, 현대 리눅스 배포판의 약 8%에서 13%가 Ubuntu의 "Natty" 릴리스를 구성하는 소스 코드 줄의 수를 계산하여 결정되는 GNU 구성 요소로 구성됩니다 (GNOME이 GNU의 일부로 여겨지는지 여부에 따른 범위입니다); 다른 한편으로, 리눅스 커널은 6%를 차지하고, 직접적인 종속성을 포함할 때 9%로 증가합니다.

External links