Linux 강좌 / 리눅스란 무엇인가? 커널, 배포판, 오픈 소스 이해하기

리눅스는 엄밀히 말하면 컴퓨터의 하드웨어와 프로그램 사이에서 자원을 관리하는 커널(kernel)입니다. 우리가 설치해서 사용하는 ‘리눅스 운영체제’는 이 커널에 명령어, 라이브러리, 설치·업데이트 도구 등을 더한 배포판(distribution)입니다. 이 차이를 이해하면 Ubuntu와 Rocky Linux가 왜 둘 다 리눅스이면서도 사용 방법에는 차이가 있는지 알 수 있습니다.

리눅스는 커널인가요, 운영체제인가요?

두 표현 모두 쓰이지만 가리키는 범위가 다릅니다. Linux 커널은 운영체제의 핵심 프로그램이고, 일상적으로 말하는 리눅스 운영체제는 커널을 포함해 실제로 사용할 수 있도록 구성한 전체 시스템을 뜻합니다. 따라서 “Linux 커널을 업데이트한다”와 “리눅스를 설치한다”는 같은 일을 말하지 않습니다.

커널은 실행 중인 프로그램에 CPU 시간과 메모리를 배분하고, 파일 시스템·네트워크·장치 드라이버를 통해 하드웨어를 다룹니다. 프로그램은 저장장치를 직접 제어하는 대신 커널이 제공하는 인터페이스를 이용합니다. Linux 커널 공식 문서도 커널 자체와 사용자 공간 프로그램이 사용하는 인터페이스를 구분해 설명합니다.

반면 파일을 복사하는 명령어, 웹 브라우저, 웹 서버, 그래픽 화면은 커널 그 자체가 아닙니다. 이런 프로그램과 라이브러리는 사용자 공간(user space)에서 동작하며, 필요할 때 커널의 기능을 이용합니다. 많은 리눅스 배포판에 GNU 프로젝트의 도구가 포함되지만, 모든 사용자 공간 프로그램이 GNU 소프트웨어인 것은 아닙니다. GNU와 Linux의 관계는 GNU 프로젝트의 설명에서 자세히 볼 수 있습니다.

리눅스 시스템은 어떤 부분으로 이루어지나요?

처음에는 아래처럼 세 층으로 생각하면 편리합니다. 이는 개념을 이해하기 위한 단순화이며, 실제 시스템에는 부팅 과정과 다양한 중간 구성 요소도 있습니다.

  1. 하드웨어: CPU, 메모리, 저장장치, 네트워크 장치 등 실제 부품입니다.
  2. Linux 커널: 하드웨어 자원을 관리하고 프로그램이 사용할 공통 기능을 제공합니다.
  3. 사용자 공간: 셸, 명령어, 시스템 서비스, 라이브러리, 그래픽 환경과 응용 프로그램이 동작하는 영역입니다.

예를 들어 터미널에서 파일 내용을 읽는 명령어를 실행하면, 명령어 프로그램은 사용자 공간에서 실행되고 파일을 여는 작업은 커널의 기능을 거칩니다. 같은 커널을 사용하더라도 사용자 공간에 어떤 프로그램을 넣느냐에 따라 서버용 시스템과 데스크톱 시스템의 모습이 달라질 수 있습니다.

배포판은 무엇을 더하나요?

리눅스 배포판은 Linux 커널과 여러 소프트웨어를 선택·조합하고, 설치·설정·업데이트할 수 있도록 제공하는 운영체제입니다. 배포판에는 보통 패키지 관리 도구와 소프트웨어 저장소, 기본 시스템 서비스, 보안 업데이트 정책, 문서가 포함됩니다. Debian 프로젝트의 소개도 배포판을 커널만이 아닌 완성된 운영체제로 설명합니다.

Ubuntu와 Rocky Linux를 예로 들면 둘 다 Linux 커널을 기반으로 하지만 패키지 형식, 소프트웨어 관리 도구, 기본 설정과 지원 정책이 다릅니다. 따라서 명령어를 배울 때는 ‘Linux 커널의 기능’인지, ‘대부분의 배포판에서 쓰는 도구’인지, ‘특정 배포판에서만 쓰는 방법’인지를 구분해야 합니다. 어느 배포판을 선택할지는 강좌 02에서 다루므로, 여기서는 커널이 같아도 전체 사용 환경은 같지 않다는 점을 기억하면 충분합니다.

오픈 소스라는 말은 무엇을 뜻하나요?

오픈 소스(open source)는 단순히 소스 코드를 볼 수 있다는 뜻에 그치지 않습니다. 라이선스가 정한 조건 아래 코드를 사용하고, 수정하고, 재배포할 수 있어야 합니다. Open Source Initiative의 오픈 소스 정의에는 소스 코드 제공뿐 아니라 재배포와 파생 저작물 허용 등의 조건이 포함됩니다.

오픈 소스와 ‘비용 없이 제공한다’는 말도 구분해야 합니다. 소프트웨어를 무료로 받을 수 있어도 수정·재배포 권한이 없다면 그것만으로 오픈 소스는 아닙니다. 반대로 오픈 소스 소프트웨어를 유료로 배포하거나 기술 지원 서비스를 판매할 수도 있습니다. 또한 배포판에 들어 있는 모든 구성 요소가 반드시 동일한 라이선스를 쓰거나 모두 오픈 소스인 것은 아니므로, 특정 프로그램의 사용·수정·배포 조건은 해당 라이선스로 확인해야 합니다.

지금 사용하는 시스템에서 무엇을 확인할 수 있나요?

리눅스가 설치된 컴퓨터나 가상 머신이 있다면 다음 명령어로 실행 중인 커널 버전을 확인할 수 있습니다.

uname -r

배포판 이름과 버전은 보통 다음 파일에서 확인합니다.

cat /etc/os-release

출력에서 PRETTY_NAME은 사람이 읽기 쉬운 배포판 이름, ID와 VERSION_ID는 배포판 식별 정보입니다. uname -r의 결과와 배포판 버전은 서로 다른 대상의 버전이므로 숫자가 일치할 필요가 없습니다. 일부 최소화된 환경이나 특수 시스템에는 /etc/os-release가 없거나 표시 내용이 다를 수 있습니다.

핵심 개념 정리

  • 커널: 하드웨어 자원을 관리하고 프로그램에 공통 기능을 제공하는 운영체제의 핵심입니다.
  • 사용자 공간: 셸, 명령어, 서비스와 응용 프로그램이 실행되는 영역입니다.
  • 배포판: Linux 커널과 여러 소프트웨어를 묶어 설치하고 관리할 수 있게 만든 전체 시스템입니다.
  • 오픈 소스: 라이선스에 따라 소스 코드의 사용·수정·재배포가 허용되는 개발·배포 방식입니다.

리눅스가 어떻게 시작되고 발전했는지가 궁금하다면 리눅스 역사: 1991년 취미 프로젝트가 세계 인프라가 되기까지에서 연대기와 주요 전환점을 확인할 수 있습니다. 이 글은 역사보다 오늘날 리눅스 시스템의 구성과 용어를 이해하는 데 초점을 맞췄습니다.

같은 카테고리의 다른 글
Linux / 명령어 / su - 사용자 계정 전환

Linux / 명령어 / su - 사용자 계정 전환

Linux su 명령어로 다른 사용자 권한의 셸과 단일 명령을 실행하는 방법을 설명합니다. su와 su --login 차이, 환경 변수, PAM 인증, sudo·runuser 선택 기준과 보안 주의사항을 정리합니다.

Linux / 명령어 / ln - 하드 링크와 심볼릭 링크 생성

Linux / 명령어 / ln - 하드 링크와 심볼릭 링크 생성

Linux ln 명령어로 하드 링크와 심볼릭 링크를 만드는 방법을 설명합니다. 두 링크의 차이, 상대 경로, 깨진 링크와 기존 링크 교체 시 주의점도 정리합니다.

Linux / 명령어 / file - 파일 종류와 형식 확인

Linux / 명령어 / file - 파일 종류와 형식 확인

Linux file 명령어로 확장자와 관계없이 실제 파일 형식, MIME 유형과 문자 인코딩을 확인하는 방법을 설명합니다. 심볼릭 링크, 압축 파일, 여러 파일 검사와 스크립트 활용법도 정리합니다.

Linux / 명령어 / ping - 호스트 응답과 왕복 시간 확인

Linux / 명령어 / ping - 호스트 응답과 왕복 시간 확인

Linux ping 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / xz - 파일을 xz 형식으로 압축하기

Linux / 명령어 / xz - 파일을 xz 형식으로 압축하기

Linux xz 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux / 명령어 / type - 명령어 유형과 실행 대상 확인

Linux / 명령어 / type - 명령어 유형과 실행 대상 확인

Bash type 명령어로 별칭, 예약어, 함수, 내장 명령과 실행 파일을 구분하는 방법을 설명합니다. 모든 후보와 경로 확인, command -v·which와의 차이 및 스크립트 활용법을 다룹니다.

Linux / 명령어 / killall - 이름이 같은 프로세스에 시그널 보내기

Linux / 명령어 / killall - 이름이 같은 프로세스에 시그널 보내기

Linux killall 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux 강좌 / PID와 PPID 이해하기 - 프로세스 확인과 관리

Linux 강좌 / PID와 PPID 이해하기 - 프로세스 확인과 관리

PID와 PPID의 의미와 부모·자식 프로세스의 관계를 설명합니다. ps와 pgrep으로 확인하고, 직접 만든 실습 프로세스를 안전하게 종료하는 방법을 익힙니다.

Linux / 명령어 / dpkg - 로컬 DEB 패키지 설치와 설치 정보 조회

Linux / 명령어 / dpkg - 로컬 DEB 패키지 설치와 설치 정보 조회

Linux dpkg 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux / 명령어 / resolvectl - systemd DNS 설정과 이름 조회 상태 확인

Linux / 명령어 / resolvectl - systemd DNS 설정과 이름 조회 상태 확인

Linux resolvectl 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.