개요

이번 포스팅에서는 운영체제의 한 종류이자 개발자에게 매우 중요한 리눅스(Linux)에 대해 정리해보겠다.
리눅스가 어떤 역사와 배경을 가지고 있는지, 어떤 배포판들이 있고, 커널·파일 시스템·사용자/그룹·쉘 같은 핵심 개념은 무엇인지,
마지막으로 가상환경에 우분투를 설치해 실습 환경을 준비하는 흐름까지 정리해보는걸로!


리눅스 소개

리눅스는 1991년, 리누스 토르발스(Linus Torvalds)가 처음 개발한 오픈소스 운영체제이다.
유닉스(UNIX)를 모방·참고하여 만들어진 운영체제라 유닉스 계열이라는 표현을 자주 사용하며, 맥 OS, 각종 리눅스 배포판 등 많은 운영체제가 유닉스 영향을 받아 개발되었다.

  • 맥북의 macOS와 리눅스는 모두 유닉스 계열이기 때문에 터미널 환경과 명령어 체계가 매우 비슷하다.
  • 반대로 윈도우는 독자적인 방향으로 발전해, CLI 환경과 파일 구조, 권한 개념이 꽤 다르다.
  • 안드로이드는 리눅스 커널을 기반으로 한 모바일 운영체제로, 2000년대 중반에 등장했다.
  • 이후 다양한 운영체제가 무료로 배포되는 리눅스에 영향을 받았고,
    리눅스 커널 위에 여러 프로그램을 조합한 수많은 리눅스 배포판이 탄생했다.

리눅스 배포판

리눅스에는 “수백 개”라고 표현해도 과하지 않을 정도로 다양한 배포판이 존재한다.
배포판이란 공통된 리눅스 커널 위에 각기 다른 응용 프로그램, 패키지 관리 도구, 환경 설정 등을 조합해 만든 운영체제 묶음을 의미한다.

  • 공통점: 모두 리눅스 커널을 사용한다.
  • 차이점: 포함된 프로그램, 기본 설정, 패키지 관리자, 철학 등이 다르다.

대표적으로 두 계열을 많이 사용한다.

  • Debian 계열

    • 대표 배포판: Ubuntu, Debian 등
    • 패키지 형식: .deb
    • 패키지 관리자: apt
    • 일반적인 웹 서비스·개인 개발용 서버에서 가장 많이 쓰이는 계열
  • Red Hat 계열

    • 대표 배포판: Red Hat Enterprise Linux(RHEL), CentOS(과거), Rocky Linux, AlmaLinux 등
    • 패키지 형식: .rpm
    • 패키지 관리자: yum, dnf
    • 상업용/엔터프라이즈 서버 시장에서 강세

그 외에 도커 컨테이너에서 자주 사용하는 Alpine Linux처럼
불필요한 요소를 제거하고 용량을 최소화한 초경량 배포판도 존재한다.

  • 일반적인 웹 서비스나 개발 서버: 우분투(Ubuntu)가 1순위로 많이 쓰인다.
  • 상업용/엔터프라이즈 환경: 레드헷(RHEL)이 여전히 강한 점유율을 가진다.

레드햇이 “오픈소스인데 왜 돈 주고 사는가?”에 대해 블로그에 넣기 좋게 정리하면, 이 정도 톤이면 딱 맞다.


+ 레드햇 엔터프라이즈 리눅스는 왜 유료일까?

리눅스 자체는 오픈소스라 누구나 무료로 소스 코드를 내려받아 사용할 수 있지만,
레드햇은 이 오픈소스 리눅스를 엔터프라이즈(기업용) 제품으로 다듬고, 그 위에 유료 서비스를 얹어서 판매한다.

정리하자면, 레드햇이 파는 것은 “소프트웨어 한 벌”이 아니라 운영 환경 전체에 대한 안정성과 관리·지원 패키지에 가깝다.

  • 검증되고 안정화된 리눅스 배포판(RHEL)을 제공
  • 장기 보안 업데이트와 패치, 커널 및 패키지 버전 관리
  • 장애 발생 시 24/7 기술지원(전화·티켓·컨설팅 등)
  • 기업용 하드웨어/미들웨어/DB 등과의 호환성 및 인증
  • 규제/컴플라이언스 환경에서 쓸 수 있도록 문서와 정책 지원

그래서 흔히 이렇게 이해하면 편하다.

“리눅스 소프트웨어는 무료지만,
그걸 기업 환경에서 안전하게 쓰도록 대신 관리·보증해주는 서비스에 돈을 내는 것.”

기업 입장에서는 직접 오픈소스 리눅스를 가져다가
보안 패치 추적, 커널/패키지 호환성 테스트, 장애 대응 체계를 다 만들기엔
시간과 인력이 너무 많이 들기 때문에,
“돈을 내고라도 안정성과 책임 있는 지원을 사는 것”이 레드햇 모델이라고 보면 된다.


리눅스 주요 개념

커널(Kernel)

커널은 운영체제의 “심장”이자 핵심 부분으로,
하드웨어와 소프트웨어 사이에서 모든 자원 관리를 담당한다.

  • 메모리 관리: RAM 사용, 프로세스별 메모리 공간 할당/회수
  • 프로세스 관리: 실행 중인 프로그램(프로세스)의 생성·종료·스케줄링
  • 입출력(I/O) 관리: 디스크, 네트워크, 키보드, 마우스 등의 장치 제어
  • 장치 드라이버: 다양한 하드웨어 장치를 제어하기 위한 드라이버 코드 포함

프로세스(Process)는 “실행 중인 프로그램”을 의미하며,
리눅스 커널은 여러 프로세스를 동시에 잘 돌릴 수 있도록 CPU 시간을 적절히 분배한다.


파일 시스템 구조

리눅스의 파일 시스템은 계층적 구조를 가지며,
가장 최상단에는 루트 디렉토리 / 가 있다.
모든 파일과 디렉토리는 / 아래에 트리 구조로 배치된다.

주요 디렉토리는 다음과 같다.

  • /bin
    • 시스템을 부팅하거나 유지 관리하는 데 필요한 기본 실행 파일들이 위치
    • 예: ls, cp, mv, cat 등 핵심 명령어
  • /etc
    • 시스템 전역 설정 파일 저장
    • 예: 사용자 계정 정보, 네트워크 설정, 서비스 설정 등
  • /home
    • 일반 사용자들의 홈 디렉토리가 위치
    • 예: /home/사용자명 안에 해당 사용자의 문서, 설정, 프로젝트 파일 등이 저장
  • /var
    • 내용이 “자주 변경되는 데이터”를 저장
    • 예: 로그 파일(/var/log), 큐 데이터, 캐시 등

이 구조에 익숙해지면 서버 관리나 배포 시에 필요한 파일을 빠르게 찾을 수 있다.


사용자와 그룹

리눅스는 다중 사용자 OS로 설계되어, 여러 사용자가 하나의 시스템을 공유할 수 있다.
이를 위해 사용자(User)와 그룹(Group) 개념을 사용한다.

  • 각 사용자는 하나 이상의 그룹에 속할 수 있다.
  • 파일과 디렉토리는 “소유자 / 소유 그룹 / 기타 사용자” 단위로 권한을 가진다.
  • 권한은 주로 읽기(r), 쓰기(w), 실행(x)로 구성된다.

권한 관리를 통해 특정 사용자나 그룹만 특정 파일·디렉토리에 접근할 수 있도록 제한할 수 있다.
서버 보안과 운영 관점에서 매우 중요한 개념이다.


쉘(Shell) 프로그램

쉘은 사용자와 운영체제(커널) 사이의 인터페이스 역할을 하는 프로그램이다.
사용자가 터미널에서 명령을 입력하면, 쉘이 이를 해석해서 커널에 전달하고 결과를 다시 사용자에게 보여준다.

대표적인 쉘 프로그램은 다음과 같다.

  • bash : 가장 널리 쓰이는 기본 쉘 (많은 리눅스 배포판의 디폴트)
  • zsh : 풍부한 기능과 플러그인으로 개발자에게 인기
  • sh : 전통적인 POSIX 쉘

현재 사용 중인 쉘은 다음 명령으로 확인할 수 있다.

echo $0

쉘 스크립트를 활용하면 반복 작업(배포, 로그 정리, 백업 등)을 자동화할 수 있다.


리눅스 실습 환경 준비

실제 리눅스를 사용해보려면, 직접 설치하거나 가상환경을 활용하는 방법이 있다.
개발용/연습용으로는 가상머신 위에 우분투(Ubuntu)를 설치하는 방법이 가장 일반적이다.

1. 가상화 프로그램 설치

  • VMware Workstation, VMware Player, VirtualBox 등의 가상화 프로그램을 설치한다.
  • 나는 VMware Workstation을 설치!
  • 설치 과정은 대부분 “다음, 다음, 완료” 수준으로 기본값(default) 설정만 따라가도 무방하다.

2. 우분투(Ubuntu) 이미지 다운로드

3. 가상머신 생성 및 우분투 설치

  1. 가상화 프로그램에서 “새 가상 머신 생성” 선택
  2. 설치 소스로 다운로드한 우분투 ISO 파일을 지정
  3. CPU/메모리/디스크 용량을 적절히 설정
  4. 가이드에 따라 우분투 설치를 진행
    • 언어, 키보드 설정
    • 디스크 파티션(대부분 자동 설정 추천)
    • 사용자 계정/비밀번호 생성

설치가 끝나면 가상머신을 실행해, 실제 리눅스 데스크톱 또는 터미널 환경에서
명령어를 실행해보고, 패키지를 설치하고, 쉘 환경을 직접 경험할 수 있다.


마치며

이전에 사이드 프로젝트를 진행하면서 Docker로 컨테이너 환경에서 Ubuntu를 사용해본 적이 있었는데, 이번에 VMware 같은 하이퍼바이저 기반 가상화 프로그램을 직접 사용해보니 훨씬 진짜 가상 PC를 다루는 느낌이라 신기했다!
다만 내 PC에서 너무나 많이 다운되었기때문에 Docker가 매우 그리웠음...ㅋㅋㅋ
그리고 막연히 알고 있던 리눅스 운영체제의 개념과 특징들을 다시 살펴보니 더 흥미가 생겼다

profile
Eazy하게

2개의 댓글

comment-user-thumbnail
2025년 12월 11일

Debian? 이름이 뭔가 호감이네요 잘생겼을거같고

답글 달기
comment-user-thumbnail
2025년 12월 11일

와우 근데 커널이라는단어가 리눅스에서나왔는지 첨알았네요 ㄹㅇ 개유익한시간이었네요
님은 개발도개발이지만 꼭 에디터라는직무도 생각해보시길바랍니다 진심으로드리는말씀입니다
감사합니다

답글 달기