리눅스 개요

리눅스의 특징

  • 오픈소스 소프트웨어
  • 멀티유저, 멀티태스킹 지원
  • 다중 스레드 지원
  • 다양한 파일 시스템 지원

 

장단점

  • 장점
    • POSIX(Portable Operation System Interface) 표준 기반으로 유닉스와 호환 가능
    • 안정적인 동작
    • swap 방식을 통한 효율적인 하드웨어 활용
  • 단점(최근에는 많이 보완됨)
    • 오픈소스로 기술 지원의 한계 존재
    • 보안 상 취약점 노출 가능성
    • 한글 지원 미흡

 

배포판의 종류와 특징

💡 리눅스 배포판이란?
리눅스 커널, GNU 소프트웨어, 응용 프로그램 등을 함께 묶어서 구성한 리눅스 OS. 목적에 따라 다양한 배포판이 존재함
  • 슬랙웨어 리눅스: 1992년에 등장하여 가장 먼저 대중화
  • 데비안: GNU의 공식 후원을 받는 유일한 배포판
  • 우분투: 데비안 GNU/리눅스에 기초. 사용자 편의성에 초점을 맞춤
  • 레드햇
    • RHEL(기업용): subscript 형태로 요금을 지불
    • 페도라: 레드햇과 커뮤니티의 지원으로 개발
  • CentOS: RHEL과 완벽하게 호환, 무료 기업용 OS
  • 수세(Suse): 독일에서 출시된 배포판으로 유럽에서 인기

 

리눅스의 역사

  1. 켄 톰슨: 유닉스 개발(어셈블리 언어 기반, 호환성 이슈 존재)
  2. 데니스 리치: UNIX를 C언어로 재개발. 이후 BSD 계열과 시스템 V 계열로 분리
  3. 리처드 스톨먼: 시스템 V측의 소스 코드 비공개 및 상업적 이용 제한에 반발하여 GNU 프로젝트 시작
  4. 앤드류 타넨바움: 미닉스 개발(오픈소스)
  5. 리눅스 토발즈: 미닉스의 커널 소스를 수정하여 GNU 시스템에 적합한 커널을 제작(+유닉스와 호환)

 

디렉터리 종류와 특징

💡/bin vs /usr/bin
- /bin: 시스템 부팅 및 복구에 필요한 최소한의 필수 명령어 저장 (ex: ls, cp, mv, cat, sh, mkdir)
- /usr/bin: 부팅 후 일반 작업에 필요한 다양한 명령어 저장 (ex: vim, python, gcc, tar, curl)

 

 


리눅스 설치

리눅스 설치 개요

  • 리눅스의 종류가 다양하고, 배포판마다 설치 환경 및 과정이 다름
  • 설치 유형은 데스크탑형, 서버형, 사용자 정의형(취향에 따라 설치)으로 구분됨
  • 하드디스크 재구성이 진행되기 때문에 백업 필수
  • 부팅 드라이브를 다시 파티션하는 경우라면 os의 부트 로더를 다시 설치해야 할 수 있음

 

파티션

💡 파티션이란?
- 하나의 물리적 디스크를 여러 개의 논리적인 디스크로 분할하는 것
- 각 파티션마다 독립적인 파일 시스템을 만들 수 있음 → 관리 효율성 증가(부팅 시간, 오류 점검, 백업/복구 시간 단축)
- 시스템 손상 시 영향 최소화

 

디스크와 장치명

  • 파티션 이름: 디스크의 장치 파일명 + 숫자
  • /dev/hda3 → /dev + /hd + 3
    • /dev: 시스템 디바이스 파일들이 저장되는 디렉터리
    • /hd: IDE 혹은 ATA 방식 /sd: SCSI 혹은 USB 방식
    • a: 하나의 케이블에 연결된 디스크의 우선순위
    • 3: 파티션 번호
  • 마운트 시 지정된 장치명을 사용(ex: /dev/hda)

 

파일 시스템

  • 파일 시스템은 디스크의 파티션에 파일을 사용할 수 있도록 구성해놓은 것 또는 구성 방식
  • 리눅스는 고유 파일 시스템 뿐 아니라 다양한 파일 시스템을 지원하고 있음
  • 파일 시스템의 종류
    • 리눅스 전용(ext1~4)
    • 저널링 파일 시스템(JFS, XFS): 파일 시스템에 오류가 생기더라도 복구가 가능하도록 만든 것
    • 네트워크 파일 시스템(SMB, NFS): 다른 pc에 있는 파일 시스템을 내 것처럼 쓸 수 있도록 함
    • 클러스터링 파일 시스템(GFS)
    • 장치 파일 시스템(IS9660, UDF)
    • OS별 파일 시스템(윈도우: FAT32, NFTS/NET OS: HPFS)

 

LVM(Logical Volume Manager)

 

  • 작은 용량의 하드디스크 여러 개를 큰 용량의 하나의 하드디스크처럼 사용
  • 다수 개의 디스크를 묶어 사용함으로써 파티션의 크기를 유연하게 조절할 수 있음
  • LVM 구성 볼륨의 종류
    • 물리 볼륨: 개별 물리적인 디스크
    • 볼륨 그룹: 여러 개의 물리 볼륨을 하나의 그룹으로 구성
    • 논리 볼륨: 볼륨 그룹의 일부를 논리 그룹으로 나누어 사용

 

RAID(Redundant Array of Independent Disks: 복수 배열 독립 디스크)

 💡 LVM vs RAID
- LVM은 단순히 용량을 늘리는 것이 목적
- RAID는 시스템 에러 발생 시 가용성을 보장하는 것이 목적(안정성)
  • 여러 개의 물리적 디스크를 하나의 논리적 디스크로 인식하여 작동하게 하는 기술
  • 특징: 데이터 분할 저장, 데이터 중복 저장, 오류 관리 → 고용량, 신뢰성, 성능 향상
  • RAID의 종류
    • 하드웨어 RAID: 하드웨어 제작 업체에서 장비 자체를 여러 디스크를 꽂을 수 있도록 구성. 안정적
    • 소프트웨어 RAID: 하드웨어보다 저렴하지만 안정성은 떨어짐
  • 구성(데이터 저장) 방식에 따라 레벨을 붙임. 숫자가 클수록 신뢰성이 높거나 성능이 향상됐음을 의미
    • RAID 0(스트라이핑 방식): 여러 디스크에 데이터를 나눠 저장 → 고용량, 빠른 I/O but 고장에 취약
    • RAID 1(미러링 방식): 디스크에 중복 데이터 저장 → 결함 허용 but 저장 공간 2배 필요
    • RAID 0 + 1: 스트라이핑 후 미러링 → 빠른 I/O but 느린 복구 시간
    • RAID 1 + 0: 미러링 후 스트라이핑 → 손실된 데이터의 빠른 복원

 

fdisk

  • fdisk란 파티션 테이블을 관리하는 명령어
  • 리눅스의 디스크 파티션을 생성, 수정, 삭제할 수 있는 일종의 유틸리티
  • fdisk [장치명] 입력 후 명령어 입력

 

 

부트 로더(Bootstrap Loader) = 부트 매니저

  • 컴퓨터를 사용자가 사용할 수 있도록 디스크에 저장된 OS를 주기억장치로 적재해주는 프로그램
  • 필요한 초기 작업, OS(멀티부팅)을 주 메모리로 복사, 운영체제 실행 등의 기능을 수행
  • 부트 로더의 저장 위치
    • MBR(Master Boot Record): 하드디스크의 첫 번째 섹터로, 디스크 전체에 1개만 존재함. 512Byte의 크기로, 파티션 테이블 정보를 저장함. 어느 파티션을 부팅할지 설정하고 해당 섹터로 점프하는 역할
    • 각 주 파티션의 부트 섹터: 해당 파티션의 첫 번째 섹터(부트 섹터). os 커널을 메모리에 로드하는 역할
  • 임베디드 시스템 부트로더: PC BIOS와 OS Loader 기능을 수행하는 프로그램으로, 시스템 부팅 시 가장 먼저 수행됨

 

부트로더의 종류

  • LILO(Linux Loader): 리눅스 전용
  • GRUB2(Grand Unified Bootloader version2)
    • 리눅스 뿐 아니라 다른 os에서도 사용 가능
    • 편리한 설정 및 사용, 대화형 UI 가능
    • 부팅 시 부트 정보 수정. 멀티 부팅 지원
    • 파일 시스템과 커널 실행 형식 인식 후 부팅

 

런레벨

  • 리눅스 시스템 부팅 시 어떤 서비스를 자동으로 시작할지 결정하는 단계
  • 0~6개까지 7개의 단계가 존재하며, /etc/inittab 파일에서 설정 가능([런레벨]:[행동]:[명령어] 형식)
  • 주로 3, 5레벨이 많이 사용됨

 

 

로그인과 로그아웃

  • 로그인
    • 리눅스는 X윈도우 상에서 로그인/로그아웃과 콘솔상에서의 로그인/로그아웃이 있음
    • 로그인 과정
      1. 패스워드 확인 → 입력한 패스워드와 /etc/passwd 필드 비교
      2. 쉘 설정 파일 실행 → PATH 경로, 터미널 설정, 환경변수, 로그인 시 실행 명령, 로그인 메세지 출력
      3. 로그인 쉘 실행: /etc/passwd의 마지막 필드에 지정되어 있음
    • 로그인 메세지 설정 파일
      • /etc/issue: 로그인 전 콘솔 접속 시
      • /etc/issue.net: 로그인 전 원격 접속 시
      • /etc/motd: 로그인 후
    • 쉘 종류의 프롬프트
      • sh, csh, ksh, bash
      • shell 프로그램 저장 위치: /bin/bash, /bin/sh..
  • 로그아웃
    • logout, exit, Ctrl+D 사용
    • 전체 사용자 로그아웃 타임아웃: /etc/profile의 TMOUT 설정(초)
    • 특정 사용자 로그아웃 타임아웃: ~/.bashrc의 TMOUT 설정(초)

 


References

+ Recent posts