GNU's Not Unix!

GNU's Not Unix!(약칭 GNU, 그누)는 UNIX와 호환되는 완전한 자유 소프트웨어 운영체제를 개발하려는 목표에서 출발한 운영체제와 그 소프트웨어 집합이다. 이름은 첫 글자 GNU가 다시 GNU 자신을 가리키는 재귀 약자이며, UNIX와 기술적으로 호환되도록 설계하지만 UNI...

통칭GNU
명칭의 의미GNU's Not Unix!
분류자유 소프트웨어 운영체제, UNIX 호환 운영체제
시작1983년 9월 27일 발표, 1984년 1월 개발 시작
창시자Richard Stallman
개발GNU 프로젝트와 참여 개발자
핵심 구성 요소GNU C Compiler, GNU C Library, GNU Coreutils, Bash, GNU Emacs, GNU Hurd
대표 커널 조합Linux 커널, GNU Hurd
공식 웹사이트gnu.org

GNU's Not Unix!(약칭 GNU, 그누)는 UNIX와 호환되는 완전한 자유 소프트웨어 운영체제를 개발하려는 목표에서 출발한 운영체제와 그 소프트웨어 집합이다. 이름은 첫 글자 GNU가 다시 GNU 자신을 가리키는 재귀 약자이며, UNIX와 기술적으로 호환되도록 설계하지만 UNIX 자체는 아니라는 뜻을 담고 있다. 1983년 Richard Stallman이 개발 계획을 발표했고, 1984년부터 본격적으로 개발되었다.[1]

GNU는 단일 응용 프로그램이나 Linux 커널의 다른 이름이 아니다. 명령줄 도구와 셸, 컴파일러, 시스템 라이브러리, 편집기 등 운영체제를 이루는 다양한 프로그램을 포함하며, 여러 구성 요소는 독립적으로 다른 운영체제에서도 사용된다. GNU 구성 요소와 Linux 커널을 결합한 시스템은 GNU/Linux라고도 부른다.[2]

역사

GNU 프로젝트의 발표

1983년 9월 27일 리처드 스톨먼은 자유롭게 사용하고 수정하며 공유할 수 있는 UNIX 호환 운영체제 GNU를 만들겠다고 발표했다. 초기 계획에는 커널뿐 아니라 C 컴파일러, 편집기, 셸, 링커, 어셈블러와 각종 유틸리티가 포함되었다.[3]

개발의 시작과 자유 소프트웨어 재단

GNU 개발은 1984년 1월 시작되었다. 1985년에는 GNU 선언문이 발표되었고, 같은 해 10월 개발을 지원하기 위해 자유 소프트웨어 재단이 설립되었다.[4]

GNU 시스템과 Linux

1990년 무렵 GNU 시스템의 주요 구성 요소 대부분은 개발되었으나, 커널은 완성되지 않았다. 1991년 처음 개발된 Linux 커널이 자유 소프트웨어가 된 후 GNU 프로그램들과 결합되면서 실용적인 완전한 시스템을 구성할 수 있게 되었다. 이것이 GNU/Linux 계열 운영체제의 중요한 기반이 되었다.[5]

GNU Hurd 개발

GNU는 별도의 커널 구성도 추진했다. GNU Mach 마이크로커널 위에서 여러 서버가 운영체제 기능을 제공하도록 설계한 GNU Hurd가 대표적이다. GNU 시스템은 Linux 커널과의 결합만으로 정의되지 않으며, GNU/Hurd와 같은 형태로도 개발되어 왔다.[6]

설계 목표와 철학

UNIX 호환성

GNU는 UNIX의 인터페이스와 사용 방식을 따르면서도 자유 소프트웨어로 독립 구현하는 것을 목표로 했다. 이름의 'Not Unix'는 UNIX와의 호환성을 부정하는 표현이 아니라 GNU가 UNIX 자체의 복제물이 아닌 별개의 시스템임을 강조한다.[7]

자유 소프트웨어

GNU에서 '자유'는 단순히 무상 배포를 뜻하지 않는다. 프로그램을 실행하고, 작동 원리를 연구하고 변경하며, 복제본 및 수정한 버전을 재배포할 수 있는 사용자의 자유를 핵심 가치로 삼는다.[8]

시스템 구성

컴파일러와 개발 도구

GCC, GNU Binutils, GDB 등은 소프트웨어를 컴파일하고 연결하고 디버깅하는 데 사용된다.

시스템 라이브러리

glibc는 많은 GNU/Linux 환경에서 C 표준 라이브러리와 운영체제 인터페이스를 제공한다.

셸과 기본 유틸리티

Bash와 GNU Coreutils를 비롯한 프로그램은 명령줄 작업, 파일 관리, 텍스트 처리와 시스템 운영에 널리 사용된다.

편집기와 응용 프로그램

GNU Emacs와 같은 응용 프로그램도 GNU 개발의 중요한 부분을 차지한다. GNU 시스템에는 GNU 프로젝트가 직접 제작한 패키지 외에도 다른 개발자가 만든 자유 소프트웨어가 포함될 수 있다.[9]

커널과 운영체제 조합

GNU 구성 요소는 Linux 커널이나 GNU Hurd 등과 결합해 운영체제를 구성할 수 있다. 실제 배포판의 패키지 구성과 선택은 배포자에 따라 다르다.

GNU 프로젝트

GNU 프로젝트는 GNU 운영체제의 개발과 유지를 담당하고 소프트웨어 자유를 옹호하는 프로젝트다. 개별 패키지를 유지하는 개발자들과 프로젝트 차원의 조직 및 운영 체계를 통해 활동한다.[10]

영향

GNU가 만든 컴파일러, 라이브러리, 개발 도구와 사용자 공간 프로그램은 자유 소프트웨어 생태계와 여러 UNIX 계열 시스템에 큰 영향을 미쳤다. 특히 GNU 도구와 Linux 커널의 결합은 다수의 Linux 배포판에서 사용되는 소프트웨어 기반을 형성했다.

  1. GNU Project: Overview of the GNU System ↩
  2. GNU Project: GNU in a Nutshell ↩
  3. GNU Project: Initial Announcement ↩
  4. GNU Project: Overview of the GNU System ↩
  5. GNU Project: Overview of the GNU System ↩
  6. GNU Project: The GNU Project ↩
  7. GNU Project: GNU/Linux FAQ ↩
  8. GNU Project: Overview of the GNU System ↩
  9. GNU Project: GNU Software ↩
  10. GNU Project: The Structure and Administration of the GNU Project ↩