제목

리눅스 마스터 2급 대비 정리(1) (리눅스 이해 - 리눅스의 개요, 역사, 라이선스)

   2023년08월13일     16분읽었습니다.

리눅스 마스터 2급 시험 대비를 위해 관련 책을 바탕으로 내용들을 정리하는 포스트입니다. 이번 포스트는 리눅스의 이해 파트로 리눅스의 개요, 역사, 라이선스에 대해 알아보겠습니다.


개요

학교에서 리눅스를 공부한 뒤에 리눅스에 대해 더 공부하고 싶어 리눅스 마스터 2급을 목표로 공부하기로 했습니다. 그냥 공부하면 생각보다 머리에 안들어와 머리로도 정리할 겸 포스트로도 작성해 보겠습니다.
이번 포스트는 리눅스의 개요, 역사, 라이선스에 대한 포스트입니다.
참고한 책은 2023 이기적 리눅스 마스터 2급 기본서 - 권소라 저, 영진닷컴입니다.
실습한 리눅스 버전은 CentOS 7이고, ISO 명은 CentOS-7-x86_64-Minimal-2009.iso입니다.

목차

  1. 리눅스의 개요
  2. 리눅스의 역사
  3. 리눅스 라이선스

리눅스의 개요

리눅스의 특징 및 장단점

  1. 특징
    • 리눅스의 경우 리처드 스톨먼의 주도로 시작된 공개 소프트웨어 프로젝트인 GNU 프로젝트의 일환으로 제작되어 오픈 소스 운영체입니다.
    • 기본적으로 멀티유저, 멀티태스킹 운영체제이다. 실제로 리눅스의 경우 종료 명령어보다 로그아웃 명령어를 통해 접속을 종료하는 것을 알 수 있습니다.
    • 다중 스레드를 지원하는 네트워크 운영체제입니다. 한 프로세스 내에서 여러 네트워크 작업을 동시 처리할 수 있기 때문에 강력한 네트워크 지원이 가능하며 네트워크 서버로 사용이 가능합니다.
    • 여러 파일 시스템을 지원합니다. 기본적인 파일 시스템인 ext2, ext3, ext4를 비롯해 DOS의 FAT16, Windows의 FAT32, NTFS, 네트워크 파일 시스템 SMB, CIFS, NFS 등도 지원합니다.
  2. 장점
    • 유닉스와 완벽하게 호환됩니다.
      • 리눅스는 유닉스 운영체제에 기반을 둔 표준 운영체제 인터페이스인 POSIX(Portable Operating System Interface) 규격을 따르고 있습니다.
      • POSIX 표준화에 기반하기 때문에 유닉스 소스코드를 전혀 사용하지 않고 개발되었습니다.
    • 리눅스는 네트워크 사용을 전제로 설계되어 특별한 사항을 제외하고 항상 켜 놓아도 안정적으로 운영됩니다.
    • 다른 OS보다 적은 양의 메모리를 필요로 하고, SWAP 방식을 통해 램이 부족한 경우 Swap 영역을 늘려 메모리의 효율성을 높일 수 있기 때문에 하드웨어 기능을 효과적으로 사용합니다.
  3. 단점
    • RHEL과 SUSE 같은 몇몇 엔터프라이즈용 리눅스들을 제외하고 공개 운영체제이기 때문에 문제가 발생할 때 기술 지원을 받는 데 한계가 있습니다.
    • 배포판마다 별도의 한글 지원 패키지를 설치한 후 사용해야 합니다.
    • 보안상의 취약점이 쉽게 노출될 가능성이 있습니다.
      • 다만 꾸준한 기술 개발로 비교적 높은 보안성을 지원하며, 보안 문제가 발생했을 경우 신속히 해결될 수 있습니다.

리눅스 디렉터리 종류와 특징

  • 리눅스 디렉터리는 최상위 디렉터리인 “/”를 기준으로 하위 디렉터리들이 존재하는 계층적 트리 구조로 구성되어 있습니다.
디렉터리저장 내용
/최상위 디렉터리로 모든 디렉터리의 출발점인 동시에 다른 시스템과의 연결점이 됩니다
/boot부트 디렉터리로 부팅 시 커널 이미지와 부팅 정보 파일을 저장합니다
/proc시스템 정보 디렉터리로 커널 기능을 제어하는 역할입니다. 현재 실행되는 프로세스와 실제 사용되는 장치, 하드웨어 정보를 저장합니다. 가상 파일 시스템으로 디렉터리에서 보는 것은 실제 드라이브가 아닌 메모리상에 저장되어 있습니다
/lib공유 라이브러리 디렉터리로 커널 모듈 파일들과 프로그램 실행을 지원해 주는 라이브러리 저장 디렉터리입니다. 동적 공유 라이브러리를 저장하고 있어 메모리 효율성이 높습니다. 이외에도 정적 라이브러리도 공유 방법 중 하나입니다
/bin기본적인 명령어가 저장된 디렉터리로 root 사용자와 일반 사용자가 함께 사용할 수 있는 명령어들이 저장되어 있습니다
/dev시스템 디바이스 파일들을 저장하는 디렉터리로 하드디스크 장치 파일, CD-ROM 장치파일 같은 파일을 저장합니다
/etc시스템 환경 설정 파일 저장 디렉터리입니다. /group(그룹 정보가 있음), /passwd(자원을 사용할 수 있는 사용자 목록 저장), /shadow(패스워드 부분을 암호화해 관리하는 파일)
/root시스템 관리자용 홈 디렉터리입니다
/sbin관리자용 시스템 표준 명령 및 시스템 관리와 관련된 실행 명령어를 저장합니다
/usr사용자 디렉터리로 사용자 데이터나 애플리케이션을 저장합니다. 해당 디렉터리는 읽기 전용으로 마운트 되어야 하며, 가변 자료들은 /var 디렉터리로 Symbolic Link로 사용하게 됩니다.
/home사용자 계정 디렉터리로 계정들의 홈 디렉터리가 위치합니다
/var가변 자료 저장 디렉터리로 로그 파일이나 메일 데이터가 저장됩니다
/tmp각종 프로그램이나 프로세스 작업을 할 때 임시로 생성되는 파일을 저장합니다. 스티키 비트(sticky bit) 설정으로 파일의 소유자만이 자신의 소유 파일을 삭제할 수 있습니다.
/mnt파일 시스템을 일시적으로 마운트할 때 사용합니다
/lost+found결함이 있는 파일에 대한 정보가 저장됩니다. 이는 파일 시스템의 이상 유무를 진단하고 복구하는 fsck에 의해 사용되는 디렉터리입니다
  • 리눅스의 표준 입력은 키보드이며, 표준 출력장치는 모니터입니다.

리눅스 배포판

  1. 특징
    • 리눅스 커널, GNU 소프트웨어 및 여러 자유 소프트웨어로 구성된 웅영체제입니다.
    • 대표적 배포판은 슬랙웨어, 데비안, 레드햇이 있습니다.
  2. 종류
    • 슬랙웨어 리눅스(Slackware Linux)
      • 배포판 가운데 가장 먼저 대중화된 배포판입니다. 구조가 간결하고 파악하기 쉽기 때문에 유닉스 학습을 원하는 사용자들에게 적합합니다.
    • 데비안(Debian)
      • GNU의 공식적인 후원을 받고 있는 유일한 배포판입니다.
      • 패키지 설치 및 업그레이드의 과정이 단순합니다. apt 등의 패키지 매니저를 이용하면 SW 설치, 업데이터에서 의존성 확인, 보안 관련 업데이트 등을 자동으로 해줍니다.
    • 우분투(Ubuntu)
      • 데비안 GNU/리눅스에 기초한 운영체제입니다.
      • 고유한 데스크탑 환경인 유니티를 사용하는 리눅스 배포판으로 사용자 편의성에 초점을 맞추고 있습니다.
    • 레드햇(redhat)
      • 현재는 레드햇사가 유로로 기술지원을 하는 기업용 레드햇 엔터프라이즈 리눅스(RHEL)와 페도라 프로젝트에서 개발하고 있는 페도라로 나뉘어 있습니다.
    • RHEL(Red Hat Enterprise Linux)
      • 구독 형태로 요금을 지불하는 방식으로 기술 지원은 버전의 출시 시점으로 부터 7년 동안 제공합니다.
    • 패도라(fedora)
      • 일반적인 목적을 가진 RPM 기반의 SW가 결합된 운영체제입니다.
      • SW 개발이 안정적으로 이루어지기 위해서는 새 버전으로 계속 교체되어야 한다는 문제점이 있습니다.
    • CentOS
      • RHEL과 완벽히 호환되는 무료 기업용 컴퓨팅 운영체제입니다.
      • 과거 RHEL와 동일한 무료 배포판을 제공하는 것을 목적으로 만들어진 배포판이지만 CentOS 7 버전 이후 Stream 버전만 만들어져 이제는 RHEL 배포 이전에 만들어진 것으로 RHEL과 차이가 상당히 납니다.
    • 수세(SUSE)
      • 풍부한 기능과 안정성, 보안 기능을 포함하고 있습니다.
      • 정기적 배포판이 아닌 언제든 새로운 버전이 출시되면 업데이트가 가능한 롤링 릴리즈 방식을 사용합니다.

리눅스의 역사

  • UNIX는 어셈블리 언어로 되어 있었지만 1971년 C언어가 개발됨에 따라 유닉스도 C언어로 재작성됨에 따라 이식성과 호환성 있는 시스템이 됩니다.
  • 이후 리처드 스톨먼이 소스를 공개하지 못하도록 하느 분위기와 기술 상업화의 조류에 대한 반감으로 GNU 프로젝트를 시작합니다. 그는 FSF 라는 단체를 설립합니다.
  • 1990년대 초중반 리누스 토발즈가 Minix의 커널 소스를 고쳐 GNU 시스템에 적합한 커널을 개발하고, 스톨먼과 FSF는 유닉스 ㅓ널과 호환 가능한 커널인 리눅스를 GNU 시스템의 커널로 채택합니다.

리눅스 라이선스

  1. GNU GPL(General Public License)
    • FSF에서 만든 라이선스로 어떤 프로그램을 개발할 때, GPL 코드를 일부라도 사용하게 되면 해당 프로그램은 GPL이 되고, GPL을 가진 프로그램을 유로로 판매하는 것은 가능하지만, 반드시 전체 소스 코드는 무료로 공개해야 합니다.
    • 해당 프로그램을 내부적인 용도로만 쓸때는 소스 코드를 공개할 필요가 없지만 배포할 때는 GPL을 따라야 합니다.
  2. GNU LGPL(Lesser General Public License)
    • GPL보다 완화된 조건의 공개 소프트웨어 라이선스입니다.
    • 해당 라이선스가 적용된 라이브러리를 이용해 개발했을 경우 소스코드는 공개하지 않아도 되고, LGPL 코드를 사용했음을 명시만 하면 됩니다.
    • 하지만 해당 코드를 단순 이용하는 것이 아닌 이를 수정하거나 파생된 라이브러리를 개발해 배포하는 경우 전체 코드를 공개해야 합니다.
  3. BSD(Berkeley Software Distribution) 라이선스
    • 소스코드 공개 의무가 없으며 상용 소프트웨어에서도 무제한 사용이 가능한 라이선스입니다.
  4. 아파치 라이선스
    • 아파치 2.0은 누구나 해당 소프트웨어에서 파생된 프로그램을 제작할 수 있으며 저작권을 양도, 전송할 수 있는 자이선스 규정입니다.
    • 누구든 자유롭게 아파치 SW를 다운받아 부분 또는 전체를 개인적 혹은 상업적 목적으로 이용할 수 있습니다.
    • 재배포 시 원본 소스코드 또는 수정한 소스코드를 반드시 포함시켜야 하는 것은 아니지만 아파치 라이선스 버전 2.0을 포함시켜야 하며, 아파치 소프트웨어 재단에서 개발된 소프트웨어라느 것을 명확히 밝혀야 합니다.
  5. MIT 라이선스
    • BSD 라이선스를 기초로 작성되었습니다.
    • 해당 소프트웨어는 누구나 개작할 수 있고, 수정본의 재배포 시에 소스코드 비공개가 가능합니다.
  6. MPL(Mosilla Public License)
    • 변형 BSD 사용 라이선스와 GNU 일반 공중 사용 라이선스의 혼합적 성격을 띄고 있습니다.
    • 소스코드와 실행파일의 저작권을 분리한 것이 특징으로 수정한 소스코드는 MPL로 공개하고 원저작자에게 수정한 부분에 대해 알려야 하지만, 실행 파일은 독점 라이선스로 배포할 수 있습니다.
    • 사용한 MPL SW와 수정한 MPL SW에 ㅐ한 공개 의무만 가지며, 별도의 소스코드와 실행 파일은 독점 라이선스를 가질 수 있습니다.

참고

파일 시스템의 간단한 설명

  1. ext2
    • ext를 대체하기 위해 고안된 시스템으로 ext3으로 대신할 때까지 데비안, 레드햇 리눅스를 포함한 몇몇 리눅스 배포판의 기본이었습니다.
    • 여전히 플래시 기반의 저장 매체(SD카드, USB 플래시 드라이브)에서 선택하는 파일 시스템입니다. 이유는 저널이 쓰기 횟수를 최소화하는 능력이 부족하고 플래시 장치는 쓰기 횟수 주기가 제한되었기 때문입니다.
  2. ext3
    • 장점으로는 ext2를 완벽 호환해 ext2에서 자료 삭제 및 손실 없이 ext3으로 변경할 수 있습니다.
    • ext3은 Journal, Ordered, Writeback이라는 3가지 저널링을 사용할 수 있는데 이는 주 파일 시스템에 변경사항을 반영하기 전에 저널안에 생성되는 변경사항을 추적하는 파일 시스템입니다. 각 단계에 따라 리스크가 나뉩니다.
    • 이외에도 온라인 파일 시스템 증대, 큰 규모의 디렉터리를 위한 Htree(트리의 깊이가 일정해 검색속도가 일정한 트리)가 장점입니다.
    • 단점으로는 JFS, ReiserFs, XFS 등에 비해 처리 속력이 낮고, extents 기능을 지원하지 않는 등 ext2와의 호환을 목표로 했기에 지원하지 않는 기능이 있습니다.
    • 이외에도 오라인 ext3 조각 모음 기능이 없고, 개별 파일 및 전체 파일 시스템 상의 최대 크기에 제한을 두고 있습니다.
  3. ext4
    • 현재 사용중인 시스템으로써 64비트 기억 공간 제한을 없애고, ext3의 성능을 향상시켰습니다.
    • 특징으로 최대 1엑사바이트의 볼륨과 최대 16TBits의 파일을 지원합니다.
    • ext2, ext3에서 사용되던 블록 매핑 방식을 대체하기 위해 extent를 도입했습니다. 이는 인접한 물리적 블록을 묶어 대용량 파일 접근 성능을 향상시키고 단편화를 줄이는 기능을 합니다.
    • ext3와 ext2 파일 시스템을 ext4로 마운트하는 것이 가능합니다. 또한 디스크에 쓰여지기 전까지 블록 할당을 지연시키는 지연된 할당을 지원함으로써 하나의 파일에 대한 블록이 여러 곳으로 분산되는 현상을 막아 이를 통해 디스크 이동을 최소화 시킴으로써 성능을 향상 시킵니다.
    • 32,000개의 하위 디렉터리 제한이 64,000개로 증가하였습니다. “dir_nlink” 기능은 더 큰 개수도 혀용합니다.
    • 단점으로는 지연된 할당으로 데이터 유실 가능성이 있기 때문에 2.6.30 이상의 커널에서는 자동으로 이런 경우를 알아차리고 이전의 동작으로 되돌립니다.
  4. FAT(FAT16, FAT32)
    • 파일할당 테이블(File Allocation Table)은 디지털 카메라 등에 장착되는 대부분의 메모리 카드와 수많은 컴퓨터 시스템에 널리 쓰이는 컴퓨터 파일 시스템 구조입니다.
    • FAT16은 32메가바이트 이상의 하드 디스크를 지원하기 위해 나왔으며 최대 2GBits 파티션을 지원합니다.
    • FAT32는 2GBits 이상의 하드디스크를 지원합니다. 하나의 파일은 최대 4GBits-1Byte의 용량을 가질 수 있습니다.
  5. NTFS
    • New Technology File System는 MS-DOS와 이전 버전의 윈도우에서 쓰였던 MS의 이전 FAT 파일 시스템을 대체하였습니다.
    • 메타데이터의 지원, 고급 데이터 구조의 사용으로 인한 성능 개선, 신뢰성, 추가 확장 기능을 더한 디스크 공간 활용 등의 개선이 있었습니다.
  6. SMB, CIFS
    • Server Message Block는 도스나 윈도우에서 파일이나 디렉터리 및 주변 장치들을 공유하는데 사용되는 메시지 형식입니다.
  7. NFS
    • Network File System은 클라이언트 컴퓨터의 사용자가 네트워크 상의 파일을 직접 연결된 스토리지에 접근하는 방식과 비슷한 방식으로 접근하도록 도와줍니다.

참고 자료

  1. 2023 이기적 리눅스 마스터 2급 기본서 - 권소라 저, 영진닷컴
  2. ext2 - 위키백과
  3. ext3 - 위키백과
  4. ext4 - 위키백과
  5. 파일 할당 테이블 - 위키백과
  6. 서버 메시지 블록 - 위키백과
  7. 네트워크 파일 시스템 - 위키백과