코딩 기록 저장소

[PART1] 리눅스 일반 - Ch.02 리눅스의 설치 본문

개인 공부/[자격증] 리눅스 마스터 2급

[PART1] 리눅스 일반 - Ch.02 리눅스의 설치

KimNang 2024. 11. 8. 23:46

01. 리눅스 설치 및 유형

리눅스 설치 유형

- 배포판마다 다르지만 데스크톱, 서버, 사용자 정의 유형 등으로 구분

최소 (Minimal) - 필수 패키지만 설치
데스크톱 (Desktop) - 개인용 컴퓨터에 적합한 패키지 설치
- 문서 작성, 멀티미디어, 그래픽 도구 등 설치
서버 (Server) - Basic 서버 : 서버 운영 관련 필수 패키지 설치
- Web 서버 : 아파치 서버 관련 패키지 설치
- FTP 서버 : 파일 전송 서버 관련 패키지 설치
- DB 서버 : 데이터베이스 서버 관련 패키지 설치
랩톱 (Laptop) - 노트북  PC 관련 패키지 설치
가상 호스트 (Virtual Host) - 가상화 시스템 관련 패키지 설치
- 하이퍼바이저 소프트웨어(KVM, Xen) 설치
Software Development Workstation - 소프트웨어 관리 도구를 포함한 패키지 설치
- 소스 컴파일 도구를 포함한 패키지 설치
사용자 지정 (Custom) 사용자에게 필요한 패키지 직접 선택하여 설치

 

배포판 설치

- 사용자 지정 설치를 제외한 다른 설치 유형을 선택시 설치과정에서 자동으로 하드디스크를 재구성함

- 기존 자료는 모두 삭제됨

- 중요한 자료는 리눅스를 설치 전에 모두 백업해야 함

 

  1. 하드웨어 정보 파악
    • 최근 리눅스 배포판들을 하드웨어 호환성 뛰어남
    • 플러그 앤 플레이 (Plug and Play) 기능을 이용해 자동으로 하드웨어 검색
    • 하드웨어 문제 발생시 오류처리 가능
      1. 하드웨어 (H/W)
        중앙처리장치 (CPU) -  제조사 및 모델명 확인
        - 중앙처리장치 종류 확인 (32/64 비트)
        주기억장치 (RAM) -  주기억장치 용량 확인
        -  Swap 파티션 생성 시 사용
        하드디스크 드라이브 (HDD) -  하드디스크 장치 종류 확인
        -  하드디스크 장치 파일명 확인
        -  IDE, E-IDE 인터페이스 장치명 : /dev/hda
        -  SCSI, S-ATA, SSD, USB 인터페이스 장치명 : /dev/sda
        네트워크 인터페이스 카드 (NIC) -  제조사, 모델명, 유/무선 여부
        -  네트워크 인터페이스 정보 확인
        -  NIC 장치 파일명 : /etc/sysconfig/network-scripts/eth0
        비디오 카드 (Video Card) -  제조사 및 모델명 확인
        -  비디오 램(RAM)크기, 해상도와 색상 확인
        기타 장치 -  모니터, 키보드, 마우스, 프린터 등의 제조사 및 모델명 확인
      2. 시스템 정보
        • ROM-BIOS : 시스템 전원 켜고, F2 또는 Delete 키 누르면 BIOS 화면 확인 가능
        • 장치 관리자 : 시스템 부팅 후 [제어판] -> [시스템  및 보안] -> [장치관리자]를 선택함
        • 네트워크 : 호스트 이름, TCP/IP 정보 (IP주소, Subnetmask주소, Gateway주소, DNS주소)

 

02. 리눅스 부트

부트 매니저 (Boot Manager)

- 부팅시 사용자 PC에 설치되어 있는 운영체제 중 필요로 하는 운영체제를 선택하여 부팅하는 기능

 

리눅스 부팅 과정
단계 진행 과정 설명
1단계 ROM-BIOS 실행 -  'POST(Power On Self Test)' 과정 수행
-  하드웨어 이상 유무 검사
-  에러 발생시 알림
- 부트 로더 로딩
2단계 부트 로더 실행 -  부트로더 실행해 커널 로딩
-  스와퍼 프로세스 호출
-  'LILO'와 'GRUB'가 있음
3단계 스와퍼 프로세스 실행 -  장치들의 드라이버 초기화
-  'init' 프로세스 실행
4단계 'init' 프로세스 실행 -  'init'프로세스 실행해 'etc/inittab' 파일 읽음
5단계 부트 레벨 결정 -  부트 레벨을 결정
6단계 'rc.sysinit' 스크립트 실행 -  'etc/rc.d/rc.sysinit' 스크립트를 실행해 시스템 초기화 작업 수행
7단계 'rcx.d' 스크립트 실행 -  '/etc/rcx.d'스크립트를 실행해 해당 부트 레벨 스크립트를 순차적으로 실행
8단계 X 윈도 실행 -  부트 레벨이 '5'일 경우 X윈도 환경으로 부팅

 

부트 로더 (Boot Loader)

- '부트스트랩 로더(Bootstrap Loader)'의 약어

- 하드디스크에 저장된 운영체제를 주기억장치에 적재

- 운영체제가 실행되기 전 미리 실행, 커널이 안정적으로 실행되기 위한 모든 관련 작업 수행

- 하나의 시스템에 여러 개의 운영체제가 설치되어 있을때, 선택하여 부팅 가능(멀티 부팅)

  1. 부트 로더 종류 및 특징
    • LILO (Linux Loader)
      • 리눅스 운영체제에서만 사용 가능
    • GRUB (Grand Unified Bootloader)
      • 리눅스 운영체제 외에도 사용 가능
      • 'LILO'의 단점을 보완
      • 대화형이므로 커널의 경로와 파일 이름만 알면 부팅 가능
      • 메뉴 설정 환경을 지원, 대화형 모드로 부트 정보를 설정 가능
  2. GRUB
    1. 환경설정 파일 내용
      default -  초기 부팅화면에서 메뉴를 선택하지 않았을 경우, 기본 부팅 메뉴 선택
      -   각 메뉴의 번호는 '0'번부터 시작
      timeout -  초기 부팅 화면에서 대기 시간을 초 단위로 설정
      -  이 시간 동안 메뉴 선택하지 않으면 기본 부팅메뉴(default 항목)로 부팅
      splashimage -  초기 부팅화면의 배경 이미지 설정
      password -  부팅 시 GRUB 모드로 들어가기 위한 암호화된 패스워드
      -  'password'항목이 존재하지 않는다면 패스워드 없이 GRUB 모드로 들어갈 수 있음
      title -  초기 부팅화면의 메뉴에 나타나는 제목
      -  간단한 설명문(comment)을 적어도 됨
      root -  해당 메뉴로 부팅 시 사용할 루트 장치를 지정
      -  루트 장치를 설정하는 형식 : root (하드디스크 장치명, 부트 파티션명) ex:root (hd0.0)
      kernel -  커널 이미지 파일의 경로 지정
      initrd -  SCSI 하드디스크를 사용하는 경우 반드시 지정해야 하는 항목
      -  해당 메뉴로 부팅 시 사용할 'Initrd' 이미지를 지정
      -  SCSI 하드디스크로 부팅 시 'initrd' 항목이 설정되어 있지 않으면 'kernel panic' 오류 발생
    2. GRUB 편집 모드
      • 초기화면에서  'c'키 입력
    3. 편집 모드에서 사용하는 키(Key)
      위로 이동
      아래로 이동
      a 커널과 관련된 매개변수 추가
      b 선택된 부트 메뉴로 시스템 부팅
      c 대화식으로 직접 입력할 수 있는 모드
      d 선택된 행 삭제
      e 선택된 부트 메뉴 편집
      o 새로운 행을 커서 다음 행에 삽입
      O 새로운 행을 커서 앞 행에 삽입
      Ese GRUB 이전 메뉴로 이동

 

런 레벨 (Run Level)

- 리눅스 부팅의 마지막 단계에서 모든 프로세스의 부모 프로세스인 'init'이 생성됨

- 부팅 시 'init' 프로세스가 참조하는 것이 런 레벨

- 런 레벨은 0에서부터 6까지 있음

  1. 런 레벨 실행 스크립트 파일
    • init.d : 여러 가지 서비스 데몬들을 시작하고 종료, 재시작하는 스크립트 파일들이 저장됨
    • rc.local : 부팅 시 자동으로 명령어 스크립트 수행
    • rc0.d~rc6.d :  각 런 레벨별로 실행해야 하는 서비스들의 디렉터리
  2. 런 레벨 운영 모드
    런 레벨 운영모드 설명
    0 Halt 시스템 종료
    1 Single User Mode 단일 사용자 모드 (CLI)
    2 Multi User Mode (Without Networking) 다중 사용자 모드 (CLI) (네트워크 사용 불가)
    3 Multi User Mode (Only Console Login) 다중 사용자 모드 (CLI)
    4 Not Used 사용하지 않음
    5 Multi User Mode With Display Manager 다중 사용자 모드 (GUI, X 윈도)
    6 Reboot 재시작
로그인 및 로그아웃
  1. 로그인 및 로그아웃 환경
    • 'GUI (X 윈도)' 환경에서 로그인/로그아웃
    • 'CLI (Command Line Interface)' 환경에서 로그인/로그아웃
  2. 로그인
    • 로그인 과정
      • 로그인 프롬프트에서 아이디(ID) / 패스워드(Password)를 입력
      • 'etc/passwd' 파일 비교 후 일치하면 로그인 허용
    • 프롬프트 종류
      • 'root' 사용자 로그인 프롬프트
        [root@localhost ~]#
      • 일반 사용자(seed) 로그인 프롬프트
        [seed@localhost ~]$
  3. 로그아웃
    • 명령어 종류
      • 로그아웃을 실행하기 위한 명령어 : logout, exit
      • Ctrl + D
    • 자동 로그아웃 설정 (일정 시간 지난 후)
      • 300초 후에 자동 로그아웃
        export TMOUT=300
시스템 종료 명령어
  1. shutdown
    • 시스템을 종료하거나 재시작하는 명령어
    • 현재 실행 중인 프로세스나 저장되지 않은 데이터를 안전하게 디스크에 저장
    • 모든 파일 시스템 'umount' 시킨 후 시스템을 종료함
      • 기본 형식
        [root@localhost ~]# shutdown [옵션] [시간] [경고 메시지]
      • 옵션
        • -c : 예약된 종료 명령을 취소
        • -h : 시스템을 안전하게 종료
        • -k : 종료 명령을 수행하지 않고 메시지만 전달
        • +m : 'm'분 후에 시스템 종료
        • -P : 시스템 강제 종료
        • -r 시스템 재시작
        • -t : 지정 시간에 시스템을 종료하거나 재시작
  2. init
    • 시스템을 종료하거나 재시작하는 명령어
      • 기본 형식
        [root@localhost ~]# init [런 레벨]
        - 런 레벨 0으로 지정 시 시스템 종료, 6으로 지정 시 시스템 재시작
  3. halt
    • 시스템을 종료하는 명령어
      • 기본 형식
        [root@localhost ~]# halt [옵션]
      • 옵션
        • -f : 시스템 강제 종료 (power off)
  4. poweroff
    • 시스템을 종료하는 명령어
      • 기본 형식
        [root@localhost ~]# poweroff

 

시스템 재시작 명령어
  1. reboot
    • 시스템을 재시작하는 명령어
      • 기본 형식
        [root@localhost ~]# reboot [옵션]
      • 옵션
        • -f : 시스템 강제 재시작

 

 

03. 파일 시스템과 파티션

파일 시스템

- 파일을 어디에 위치시킬 것인지를 나타내는 모든 조직체계

  1. 파일 시스템 기능
    • 다양한 종류의 접근 제어 방법 제공
    • 파일 생성·수정 ·삭제 등 관리
    • 무결성 유지, 보안 유지 기능 제공
    • 데이터 백업 및 복구 기능 제공
    • 데이터 효율적 저장과 관리를 위한 방법 제공
  2. 파일 시스템 종류
    • 리눅스 : ext, ext2, ext3, ext4
    • 저널링 : JFS, XFS, ReiserFS
    • 네트워크 : SMB, CIFS, NFS
    • 윈도 : FAT, FAT32, VFAT, NTFS
    • CD-ROM : iso9660
    • 유닉스 : HPFS, SysV
    • 클러스터링 : RedHat GFS, IBM GPFS, IBM SanFS, Compaq CFS, Oracle OCFS2
파티션

- 하나의 물리적인 디스크를 여러 개의 논리적인 디스크로 분할

- 파티션 확인 파일 : /proc/partitions

  1. 종류
    • 기본 파티션 (Primary Partition)
      • 하나의 하드디스크에 기본 파티션과 확장 파티션 모두 4개의 파티션까지 분할 가능
      • 4개 이상의 파티션이 필요한 경우 확장 파티션 내에 논리 파티션 만듦
    • 확장 파티션 (Extended Partition)
      • 여러 개의 파티션으로 나누고자 할 때 만듦
      • 디스크당 하나만 만들기 가능
    • 논리 파티션 (Logical Partition)
      • 4개 이상의 파티션 사용시 확장 파티션 내에 생성
      • 하나의 하드디스크에서 논리 파티션 수는 12개까지
    • 스왑 파티션 (Swap Partition)
      • 하드디스크 일부를 주기억장치처럼 사용
      • 리눅스 설치 시 반드시 필요한 영역
      • 기본 파티션 또는 논리 파티션에 생성
      • 스왑 영역 크기는 일반적으로 주기억장치의 2배로 설정
  2. 파티션 분할
    • 하나의 하드디스크 기억 공간을 별도의 데이터 영역으로 만듦
    • fdisk 명령어로 디스크 파티션을 생성, 수정, 삭제 등 관리 가능
      • 기본 형식
        [root@localhost ~]# fdisk [옵션] [장치명]
      • 옵션
        • -a : 부팅 가능한 플래그로 지정
        • -l : 알려진 파티션 유형 목록 출력
        • -m : 이 목록 출력
        • -n : 새로운 파티션 생성
        • -t : 파티션 유형 변경
        • -w : 파티션 정보를 디스크 테이블에 기록
        • -p : 파티션 정보 확인
        • -q : 작업 종료 후 빠져나감
  3. 디스크 유형 및 장치명
    • 플로피 디스크
      • 첫 번째 플로피 디스크 : /dev/fd0
      • 두 번째 플로피 디스크 : /dev/fd1
    • IDE-유형 디스크
      • Primary Master : /dev/hda
      • Primary Slave : /dev/hdb
      • Secondary Master : /dev/hdc
      • Secondary Slave : /dev/hdd
    • SCSI 유형 디스크
      • 첫 번째 드라이브 : /dev/sda
      • 두 번째 드라이브 : /dev/sdb
    • CD-ROM
      • SCSI CD-ROM : /dev/scd0 또는 /dev/sr0
  4. 장치명 및 파티션 번호
    • 첫 번째 SCSI 유형 디스크의 두 번째 파티션인 경우 (/dev/sda2)
      ① : SCSI 유형 하드디스크
      ② : 첫 번째 물리적인 하드디스크
      ③ : 두 번째 파티션
      /dev/sd a 2
            ① ② ③


  5. 장점
    • 부팅시간 단축
    • 안정성 높임
    • 백업과 업그레이드 편리

 

디렉터리

- 최상위 디렉터리(/) 아래로 계층적인 트리 구조로 이루어져 있음

/ 최상위 디렉터리로 루트(/) 디렉터리라고 함
/bin 'System Binary'의 약어로 이진 파일이며, 리눅스에서 기본 명령어가 저장된 디렉터리
/usr 시스템에 사용되는 각종 프로그램이 설치되는 디렉터리
/etc 리눅스 시스템의 각종 환경설정 파일과 디렉터리가 저장된 디렉터리
/sbin 시스템 관리를 위한 명령어가 저장된 디렉터리
/lib 프로그램의 각종 라이브러리 파일이 저장된 디렉터리로 유틸리티(Utility), 패키지(Package) 등의 파일 포함
/var - 시스템에서 사용되는 동적인 파일을 저장하는 디렉터리
- 각종 시스템 로그파일, 사용자 로그인에 대한 로그 기록
- 메일서버를 운영한다면 사용자에게 전송된 메일을 임시 저장함
/tmp 임시 디렉터리로 스티키 비트가 설정되어 있음
/root 시스템 관리자(root)의 홈 디렉터리
/proc - 시스템의 각종 프로세서, 프로그램 정보 그리고 하드웨어 정보가 저장된 디렉터리
- 가상 파일 시스템으로 하드디스크에 물리적인 용량을 가지지 않는 디렉터리
/dev 시스템의 각종 장치에 접근하기 위한 장치 드라이버가 저장된 디렉터리
/home 일반 사용자의 홈 디렉터리

 

LVM (Logical Volume Manager)

- 논리 볼륨 관리자

- 여러 개 물리적인 하드디스크를 논리적인 디스크로 할당

- 하나의 대용량 파일 시스템으로 만듦

- 서버 운영시 대규모 저장 공간 필요할 때 주로 사용

  • 물리적 볼륨
    • 각각의 파티션을 'LVM'으로 사용하기 위해 형식 변환시킴
  • 볼륨 그룹
    • 'PV'로 되어 있는 파티션을 하나의 물리적인 그룹으로 만듦
  • 논리적 볼륨
    • 사용자가 다루는 부분, 마운트 포인터로 사용할 실직적 파티션, 크기 확장 및 축소 가능
RAID (Redundant Array of Independent Disks)

- 여러 개의 물리적인 하드디스크를 하나의 논리적인 디스크로 만드는 기술

- 데이터 저장 방법 여러가지 있고, 이를 레벨이라고 함

  1. 종류
    • 하드웨어 RAID
      • 'RAID' 기능을 하드웨어로 구현
      • 여러 개의 하드디스크로 만들어 공급
      • 안정적, 고가
    • 소프트웨어 RAID
      • 'RAID' 기능을 소프트웨어로 구현
      • OS안에서 구현
      • 성능 향상 낮고 안정성 떨어짐
  2. RAID 레벨 구조
    ① RAID 0
    - 연속된 데이터들을 디스크 드라이브에 나눠서 저장하는 스트라이핑을 사용
    - 하나의 디스크에 오류 발생하면 모든 데이터 잃어버릴 수 있음
    RAID 0 구조

    ②  RAID 1

    - 같은 데이터 2개 디스크에 저장하여 복사본 만드는 미러링을 통해 하나의 디스크처럼 사용
    - 완전히 동일하게 복제, 사용할 수 있는 용량은 절반
    - 오류 발생시 미러링된 디스크로 복구
    RAID 1 구조

    ③ RAID 0+1
    - RAID 0 + RAID 1 결합
    - 최소 4개 이상의 디스크에서 2개씩 스트라이핑으로 묶고, 미러링으로 결합
    RAID 0+1 구조

    ④ RAID 2
    - 오류 정정을 위해 해밍 코드를 사용하는 방식
    - 최근 디스크 드라이브에는 오류 검출 기능이 있어 거의 사용하지 않음
    RAID 2 구조

    ⑤ RAID 3/4
    - 하나의 디스크 패리티 정보를 위해 사용, 나머지 디스크에 균등하게 데이터 분산 저장
    - 읽기 성능은 RAID 0과 비슷, 쓰기는 패리티 처리로 성능 저하 발생
    - 하나의 디스크에 오류 발생시 패리티를 통해 복구
    - RAID 4는 블록 단위로 분산 저장함. 모든 블록이 균등하게 저장되지 않음
    - 병목 현상 발생시 성능 저하 발생
    RAID 3/4 구조

    ⑥ RAID 5
    - 3개 이상의 디스크를 사용해 하나의 디스크처럼 사용, 각각 디스크에 패리티 정보 가짐
    - 하나의 디스크에 오류 발생해도 다른 두 개의 디스크로 복구 가능
    - 패리티 디스크 별도 사용하지 않아 병목 현상 발생하지 않음
    RAID 5 구조

    ⑦ RAID 6
    - 하나의 패리티를 두 개의 디스크에 분산 저장
    - 패리티 이중 저장으로 두 개의 디스크에 오류 발생해도 복구 가능
    - 쓰기 속도는 저하, 안정성 높아짐
    RAID 6의 구조