Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스와 GNU/리눅스의 차이점 완벽 정리

리눅스를 조금씩 다뤄본 사람들조차 리눅스(Linux), GNU/리눅스(GNU/Linux), 그리고 GNU 툴체인(toolchain) 사이의 정확한 차이를 이해하지 못하는 경우가 많습니다. 하지만 특정 소프트웨어 의존성을 검토할 때는 이러한 차이가 실질적으로 중요한 의미를 갖습니다.

리눅스와 GNU

리눅스는 유닉스(Unix)에서 시작된 개발 계보를 잇고 있습니다. 그렇기 때문에 리눅스의 상당 부분은 유닉스와 유사하게 설계되었으며, 경우에 따라 유닉스 코드가 그대로 포함되어 있기도 합니다.

반면 GNU는 창시자 리처드 스톨먼(Richard Stallman)이 유닉스나 리눅스와는 전혀 다른 코드베이스와 라이선스 방식을 기반으로 하는, 완전히 자유롭고 독립적인 운영체제를 만들기 위해 시작한 프로젝트입니다. 즉, 두 프로젝트는 서로 별개입니다. 물론 '어느 정도'는요.

GNU/리눅스

GNU 프로젝트의 가장 큰 과제는 바로 커널이었습니다. 커널은 하드웨어와 직접 상호작용하며 모든 응용 프로그램을 조율하는 핵심 소프트웨어인데, GNU의 자체 커널은 아직 실무 환경에서 사용할 수 있는 수준에 도달하지 못했습니다. 2015년 사전 출시(pre-production) 상태로 공개된 GNU Hurd 커널 역시 오늘날까지도 안정화 단계에 이르지 못하고 있습니다.

그 해결책으로 등장한 것이 바로 리눅스입니다. 리눅스-리브레(Linux-Libre) 형태의 리눅스 커널이 GNU 프로젝트의 일부로 편입되었고, 이를 통해 리눅스 커널 위에서 동작하는 GNU, 즉 GNU/리눅스가 탄생했습니다.

GNU 툴체인

GNU 배포판은 일반적으로 리눅스 커널을 사용하지만, GNU Hurd도 중요성이 낮은 테스트 용도로는 여전히 활용 가능합니다. GNU 배포판을 다른 리눅스 배포판과 구분 짓는 핵심 요소는 바로 GNU 툴체인의 통합입니다. GNU 툴체인은 수백 개의 자유·오픈소스 프로그램으로 구성되어 있으며, 새로운 자유 소프트웨어 개발을 지원합니다.

GNU 툴체인의 대표적인 구성 요소로는 GNU Make, GNU C 라이브러리(glibc), GNU 디버거(GDB), GNU 빌드 시스템 등이 있습니다.

그 밖의 GNU 패키지

응용 프로그램 역시 스톨먼이 제시한 철학적 기준을 따른다면 GNU 계열에 속할 수 있습니다. 최종 사용자와 상호작용하는 그래픽 애플리케이션도 예외가 아닙니다. 대표적인 GNU 계열 애플리케이션은 다음과 같습니다.

  • TexInfo: 기술 문서를 표시하기 위한 언어 및 프로그램
  • GNU Emacs: 문서 처리 시스템
  • GNOME: 그래픽 사용자 인터페이스의 핵심 룩앤필(look-and-feel)을 제공하는 데스크톱 환경
  • GNU Octave: 매트랩(MATLAB)을 본떠 만든 통계 분석 환경
  • GNU Health: 의사와 병원을 위한 전자 건강 기록 시스템
  • GnuCash: 개인 재정 관리 시스템