리눅스 마스터 2급 대비 정리(2) (리눅스의 설치 - 기본 설치 및 유형, 파티션, 부트 매니저)
리눅스 마스터 2급 시험 대비를 위해 관련 책을 바탕으로 내용들을 정리하는 포스트입니다. 이번 포스트는 리눅스의 설치 파트로 기본 설치 및 유형, 파티션, 부트 매니저에 대해 알아보겠습니다.
개요
이번 포스트는 리눅스 설치를 할 때 필요한 기본 설치 및 유형, 파티션, 부트 매니저에 대해 알아보겠습니다.
참고한 책은 2023 이기적 리눅스 마스터 2급 기본서 - 권소라 저, 영진닷컴입니다. 실습한 리눅스 버전은 CentOS 7이고, ISO 명은 CentOS-7-x86_64-Minimal-2009.iso입니다.
목차
기본 설치 및 유형
리눅스 설치의 개요
| 버전 | 설명 | | :—: | :—: | | Minimal | 리눅스 설치 시 필수 패키지만 설치 | | Desktop | 개인용 컴퓨터에 적합한 패키지로써 문서작성, 멀티미디어 등 관련 프로그램들이 자동으로 설치됩니다 | | Minimal Desktop | 개인용 컴퓨터로 사용하기 위한 최소한의 프로그램만 설치되어있는 버전입니다 | | Server | 하드디시크의 모든 파티션을 삭제하고 서버 운영에 적합한 패키지가 설치됩니다, 종류로는 Basic(필수 기본 패키지), Database(DB 서버 관련 패키지), Web(아파치 웹 서버 관련 패키지) 서버가 있습니다 | | Laptop | 노트북 등 랩탑 시스템에 적합한 패키지 | | 가상 호스트 | 가상화 시스템 운영을 위한 패키지 | | Software Development Workstation | 소프트웨어 설치 시 필요한 다양한 도구들이 포함된 패키지, 소스 컴파일 도구를 기본적으로 포함하기 위해 선택합니다 | | 사용자 설정 시스템 | 사용자 취향에 맞는 소프트웨어 선택 후 설치합니다 |
리눅스 설치를 위한 하드웨어 정보 파악
- 설치 마법사의 Plug and Play(PNP) 기능으로 자동으로 하드웨어를 찾아냅니다.
- 설치 전 하드웨어 정보를 알아두는 것이 설치 작업을 용이하게 합니다.
- 리눅스는 많은 하드웨어 제품들에서 문제없이 작동하지만 다른 운영체제들만큼 다양한 종류의 하드웨어에서 동작하지는 못합니다.
- 시스템 관리자는 네트워크 설정에 필요한 정보를 알고 있어야 합니다.
- 무선 네트워크를 사용한다면 무선 네트워크 SSID와 보안키를 사용할 경우 WEP 키를 확인해야 합니다.
CentOS 리눅스 설치하기
해당 포스트는 CentOS 7.9.2009 버전을 기준으로 합니다.
- 설치 초기 화면에서 2개의 선택지 중 1개를 고릅니다.
- Test this media & install CentOS 7: 파일의 이상 여부를 체크한 후 설치 실행
- Install CentOS 7: 안전한 파일일 경우 선택 후 설치(일반적인 경우 해당 옵션을 선택합니다), 설치 시간을 줄일 수 있습니다.
- 이후 언어 선택 과정이 나옵니다. 한국어도 지원하니 원하시는 분들은 한국어를 선택하시고, 저는 영어를 선택해 진행했습니다.
- 설치 요약에서 여러 옵션을 선택해 설정할 수 있습니다.
- 날짜 와 시간 설정: 기기의 시간대를 도시별로 설정할 수 있습니다. 저는 서울을 골랐습니다. 한국어를 설정하신 분들은 아마 서울로 설정되어 있을 꺼에요.
- 이후 키보드와 언어 설정할 수 있는 곳이 있습니다.
- Software에는 Installation Sources(설치 소스) 즉 저장소(Repository)를 설정해 줄 수 있는 곳이 있습니다. 설정하지 않아도 자동으로 서버가 설정되어 있지만 저는 아래 사진과 같이 “https://mirror.kakao.com/centos/7.9.2009/os/x86_64/” 로 국내 카카오 미러 저장소 서버로 주소를 설정했습니다. 해당 작업의 완료를 위해선 System 부분의 네트워크를 먼저 연결해야 합니다.
- Software Selection(설치 대상)에서는 Minimal Install을 골랐습니다.
- Installation Destination(설치 디렉터리)는 자동으로 파티션을 나눌수도 있지만 아래 I will configure partitioning.을 누르고 Done을 누르면 아래 사진과 같이 뜹니다. 거기서 자유롭게 파티션 설정을 진행하면 됩니다.
- KDUMP는 커널 크래시 덤프 메커니즘으로 커널 충돌이 발생하면 시스템에서 정보를 수집해 충돌 원인을 규명하는 자료를 제공하는 기능인데 해당 작업에 할당될 물리적 메모리를 설정합니다.
- 네트워크 설정에서는 네트워크를 선택할 수 있고
- Security Policy는 보안 강화 리눅스에 대한 정책을 설정할 수 있는 항목으로써 데이터 스트림 문장이나 아카이브 URL을 작성하면 됩니다.
- 모든 작성을 완료하고 Begin Installation을 누르면 설치되는 동안 Root 비밀번호와 유저를 만들 수 있습니다.
저장소를 Kakao Mirror로 설정한 장면
파티션 나누기 전 수동으로 설정
파티션 나눈 후
추가 설명
- Troubleshooting이 난 경우 초기 화면
- Rescue a CentOS system: 시스템이 정상 부팅이 되지 않는 경우 선택, 파일 시스템 손상 또는 GRUB 패스워드 분실 시 복구를 위해 선택합니다.
- Run a memory test: 시스템의 메모리 상태를 점검합니다. 시스템 점검에 오랜 시간이 걸립니다.
- Boot from local drive: 디스크 또는 DVD로 부팅시 사용합니다.
- NTP(Network Time protocol) 기반으로 네트워크를 통해 컴퓨터 시스템 간 시간 동기화를 자동으로 설정할 수 있습니다.
- 설치와 관련된 특수 저장 장치 설정
- SAN(storage Area Network): 서버와 저장 장치를 Fiber Channel Switch로 연결한 고속 데이터 네트워크입니다.
- FCoE(Fiber Channel over Ethernet) SAN: FCoE 프로토콜로 구성된 고속 데이터 네트워크입니다.
- iSCSI(Internet Small Computer System Interface): IP 기반의 스토리지 네트워크입니다.
- 멀티패스(Multipath): 대량의 스토리지 장치와 CPU 사이에 한 개 이상의 경로로 구성되어 있습니다.
- 파티션은 기본적으로 루트(/) 파티션과 SWAP 파티션만으로도 운용이 가능합니다.
파티션
파티션의 특징과 종류
- 파티션이란 하나의 물리적 디스크를 여러 개의 논리적 디스크로 분할하는 것입니다.
- 다중 파티션의 장점은 아래와 같습니다.
- 파티션마다 독립적인 파일 시스템이 운영되기 때문에 파일 점검 시간이 줄어들어 부팅 시간을 단축시킬 수 있습니다.
- 특정 파티션의 파일 시스템이 손상되더라도 다른 파티션에 영향을 주지 않기 때문에 높은 안정성을 보장합니다.
- 필요한 파티션만 포맷할 수 있기 때문에 백업과 업그레이드 가 편리합니다.
- 파티션 상태 정보를 확인할 수 있는 파일은 /proc/patitions입니다.
- 파티션은 아래 표와 같이 구분됩니다.
파티션 종류 | 설명 |
---|---|
주 파티션 | 부팅이 가능한 기본 파티션입니다. 하나의 하드디스크에 최대 4개의 주 파티션이 분할 가능하며 하드디스크를 4개 이상의 파티션으로 사용해야 할 때 하나의 확장 파티션을 설정하여 확장 파티션 안에 여러 개의 논리 파티션을 분할해 데이터를 저장합니다 |
확장 파티션 | 주 파티션 내에 생성되 하나의 물리적 디스크에 1개만 생성됩니다. 파티션 번호는 1~4번이 할당되고, 데이터 저장 영역을 위한 것이 아니라 논리 파티션을 생성하기 위함입니다 |
논리 파티션 | 확장 파티션 안에 생성되는 파티션으로 논리 파티션은 12개 이상 생성하지 않는 것을 권고하며 5번 이후의 번호가 붙여집니다 |
스왑 파티션 | 하드디스크의 일부를 메모리처럼 사용하는 영역입니다. 주 파티션 또는 논리 파티션에 생성되 프로그램 실행시 부족한 메모리 용량을 하드디스크로 대신합니다. 리눅스 설치 시에 반드시 설치되어야 하는 영역으로 스왑 영역의 크기는 메모리의 2배를 설정하도록 권고되고 있습니다 |
디스크와 장치명
/dev/hd a 3
- hd부분은 하드디스크 유형을 지정하는 것으로 sd는 SCS 또는 USB 방식의 디스크를 의미하고, hd는 IDE 또는 ATA 방식의 디스크를 의미합니다.
- a 부분은 한 케이블에 묶인 하드디스크의 우선순위를 정하는 것으로 마스터 또는 슬레이브로 설정합니다.
- 첫 번째 하드디스크는 a, 두 번째 하드디스크는 b와 같이 증가합니다.
- 3 부분은 파티션 번호로써 1~4번은 primary 또는 extended를 의미하고, 5번부터는 logical 파티션을 의미합니다.
파일시스템
파일 시스템 유형 | 종류 |
---|---|
리눅스 전용 파일 시스템 | ext, ext2, ext3, ext4 |
저널링 파일 시스템 | JFS, XFS, ReiserFS |
네트워크 파일 시스템 | SMB, CIFS, NFS |
크러스터링 파일 시스템 | 레드햇 GFS, SGI cXFS, IBM GPFS, IBM SanFS, EMC highroad, Compaq CFS, Veritas CFS, 오라클 OCFS2 |
시스템 파일 시스템 | ISO9660, UDF |
타 운영체제 지원 파일 시스템 | FAT, VFAT, FAT32, NTFS, HPFS, SysV |
LVM(Logical Volume Manager)
- 여러 개의 하드디스크를 합쳐서 사용하는 기술로 한 개의 파일 시스템을 사용합니다.
- 작은 용량의 하드디스크 여러 개를 큰 용량의 하드디스크 한 개처럼 사용합니다.
- 서버를 운영하면서 대용량의 별도 저장 공간이 필요할 때 활용합니다.
- 다수의 디스크를 묶어 사용함으로써 파티션의 크기를 줄이거나 늘릴 수 있습니다.
- 물리 볼륨: 여러 개의 물리적 하드디스크
- 볼륨 그룹: 물리 볼륨을 합쳐 하나의 물리적 그룹으로 만드는 것을 의미합니다.
- 논리 볼륨: 볼륨 그룹을 나눠 다수의 논리 그룹으로 나눕니다.
RAID
- RAID는 복수 배열 독립 디스크(Redundant Array of Independent Disks)의 약자입니다.
- 여러 물리적 디스크를 하나의 논리적 디스크로 인식해 작동하게 하는 기술입니다.
- 여러 개의 하드디스크에 일부 중복된 데이터를 나눠 저장하는 기술입니다.
- RAID 종류는 하드웨어 RAID와 소프트웨어 RAID로 나뉩니다.
RAID Level | 설명 |
---|---|
RAID 0 | 스트라이핑 저장방식을 사용해 연속된 데이터를 여러 디스크에 나눠 저장합니다. 최소 2개의 하드디스크가 필요합니다 |
RAID 1 | 미러링 저장 박식을 사용해 하나의 디스크에 내용을 저장하면 다른 디스크에 동일한 내용이 백업되어 저장됩니다. 최소 2개의 하드디스크가 필요합니다 |
RAID 2 | 스트라이핑 저장 방식으로 기록용 디스크와 데이터 복구용 디스크를 별도로 제공해 오류 제어 기능이 없는 디스크를 위해 해밍 코드를 사용하지만 모든 SCSI 디스크에 ECC를 탑재하고 있기 때문에 실제 사용되지는 않습니다 |
RAID 3 | 스트라이핑 저장 방식으로 오류 검출을 위해 패리티 방식을 사용합니다. Byte 단위로 데이터를 저장하고, 최소 3개 이상의 하드가 필요합니다 |
RAID 4 | 3과 유사한 방식이지만 Block 단위로 데이터를 저장합니다 |
RAID 5 | 스트라이핑 저장 방식으로 디스크마다 패리티 정보를 갖고 있어 패리티 디스크의 병목현상을 줄이는 것이 가능해 실무에서 많이 사용합니다. 디스크 섹터 단위로 저장합니다. 쓰기 작업이 많지 않은 다중 사용자 시스템에 적합니다 |
RAID 6 | dual parity를 사용함으로써 더 나은 무정지성을 갖게 합니다. 최소 4개의 드라이브가 필요합니다 |
파티션 분할
- fdisk는 파티션 테이블을 관리하는 명령어로 리눅스의 디스크 파티션을 생성, 수정, 삭제할 수 있는 일종의 유틸리티입니다.
- 해당 실습을 진행하기 위해 새로운 하드디스크를 가상 머신에 할당했습니다. 이제 아래 사진을 보며 설명하겠습니다.
시스템에 장착되어 있는 파티션을 확인합니다. sdb가 파티션이 나누어져 있지 않음을 확인했습니다
sdb의 주 파티션을 설정합니다
- 파티션 파일 시스템은 ext로 하고, 주 파티션의 ID 번호는 83(Linux), 8e(Linux LVM), fd(Linux raid auto)가 있습니다.
설정된 파티션 정보를 확인 후 저장합니다
명령어 fdisk -l로 전체적인 하드디스크의 파티션 정보를 확인합니다
fdisk 명령어
명령어 | 설명 |
---|---|
a | 부팅 파티션을 지정 |
l | 파티션 종류를 선택할 때 리눅스에서 지원하는 파티션 목록을 확인 |
n | 새로운 파티션을 추가 |
t | 파티션 종류를 변경 |
w | 파티션 정보를 저장 |
p | 파티션 정보를 확인 |
q | 작업을 종료 |
m | 명령어들을 잘 모르겠을때 사용합니다. 도움말 명령어 |
부트 매니저
부팅 과정은 전원 ON -> ROM-BIOS 실행 -> 부트로더 실행 -> 스와퍼 프로세스 수행 -> init 프로세스 실행 -> 부팅 레벨 결정 -> rc.sysinit 스크립트 실행 -> rcX.d 스크립트 실행 -> X 윈도우 실행 순입니다.
부트로더(Boot Loader) 기능
- 부트스크랩 로더(bootstrap loader)의 준말로 컴퓨터를 사용자가 사용할 수 있도록 디스크나 플래시에 저장된 운영체제를 읽어 주기억장치에 적재해 주는 프로그램입니다.
- 운영체제가 작동되기 이전에 미리 실행되면서 커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영체제를 시동시키기 위한 프로그램이다.
- 운영체제 실행에 필요한 환경을 설정하고 운영체제 이미지를 메모리에 복사합니다.
- 부트 메니저라고도 부르며 크기가 512바이트로 하드디스크의 첫 번째 섹터인 MBR(Master Boot Recond)에 위치합니다.
- 주 파티션마다 부트 섹터가 할당됩니다.
- 부트 섹터는 디스크의 다른 부분에 저장되는 부팅 프로그램을 담을 수 있는 하드디스크, 플로피 디스크 또는 비슷한 기억 장치의 섹터를 말합니다.
- 분할된 주 파티션들은 자신의 부트 레코드를 MBR에 기록해 실행됩니다.
- x86 아키텍처에서 많이 사용되는 부트로더는 LILO(LInux LOader)와 GRUB(GRand Unified Bootloader)입니다.
- LILO는 리눅스 운영체제에 한정되 사용되는 반면 GRUB는 리눅스 운영체제 외에도 다른 운영체제에서도 사용 가능합니다.
- GRUB와 LILO 모두 System 전원이 공급되면 가장 먼저 ROM-BIOS에서 시스템 제어권을 가지고 장착된 하드웨어에 대한 기본적인 점검과 인식을 합니다.
- ROM-BIOS는 하드디스크의 첫 번째 부트 색터인 MBR(Master Boot Record)에 있는 Boot Loader에게 제어권을 넘깁니다.
GRUB
- 리눅스 부팅 시 처음 나오는 선택화면이 GRUB입니다.
- LILO의 단점을 보완한 것이빈다.
- 부트 정보를 사용자가 임의로 변경해 부팅할 수 있어 부트 정보가 올바르지 않더라도 부팅시 바로 수정해 부팅할 수 있습니다.
- 다른 운영체제와 멀티 부팅할 수 있습니다.
- 대화형 설정이므로 커널의 경로와 파일 이름만 알면 부팅할 수 있습니다.
- 메뉴 인터페이스 환경을 지원하며, 대화명 모드로 부트 정보를 설정할 수 있습니다.
- 파일 시스템과 커널 실행 포맷을 인식해 하드디스크상에서 커널의 물리적 위치를 기록하지 않아도 커널 위치와 커널 이미지 파일명만 알고 있으면 부팅이 가능합니다.
- CentOS 6의 경우 Grub Legacy를, CentOS 7에서는 GRUB 2버전을 사용합니다. 아래는 차이점입니다.
구분 | GRUB 1 | GRUB 2 |
---|---|---|
설정 파일 | /boot/grub/menu.lst | /boot/grub2/grub.ctg |
파티션 | 첫 번째 파티션은 0부터 시작 | 첫 번째 파티션은 1부터 시작 |
root 파티션 지정 방법 | root (hd0.0) | set root=(hd0.msdos1) |
커널 이미지 설정 옵션 | kernel=옵션으로 커널 이미지 명시 | linux=옵션으로 커널 이미지 명시 |
작업모드 | ‘c’ | ‘e’ |
GRUB 1에서 설정 파일의 설명
설정 | 설명 |
---|---|
root(hd0.0) | root 파티션의 위치를 지정, (hd0.0) primary master의 첫 번째 파티션을 의미 |
kernel/boot/vmlinuz | 부팅하면서 메모리에 위치하는 리눅스 커널에 전달할 인수를 지정하는 옵션, /boot 파티션을 별도로 사용하고 있으면 커널의 위치는 kernel/boot/vm |
initrd/boot/initrd | 이미지 파일의 경로를 지정하는 옵션 |
GRUB 2에서 설정 파일의 설명
설정 | 설명 |
---|---|
GRUB_TIMEOUT | 자동 부팅 시간 설정(초 단위) |
GRUB_DISTRIBUTOR | 부팅 화면의 각 엔트리 앞에 명시되는 이름 지정 |
GRUB_DEFAULT | GRUB 2의 기본 부트 엔트리 지정 시 사용 |
GRUB_DISABLE_SUBMENU | 서브 메뉴 사용 여부 설정 |
GRUB_TERMINAL_OUTPUT | GRUB 표시 방법을 명시 (console: 콘솔창, gfxterm: 그래픽 모드) |
GRUB_CMDLINE_LINUX | 부팅 시 커널에 전달할 파라미터 지정 |
GRUB_DISABLE_RECOVERY | Recovery mode 화면 명시 유무 표시 |
런레벨
- 부팅시 작동하는 서비스들로 런레벨에 따라 작동하는 서비스를 조정할 수 있습니다.
- 리눅스 부팅 마지막 단계에서 모든 프로세스의 부모 프로세스인 init이 생성됩니다.
- 프로세스 init이 참조하는 것이 런레벨로 0~6까지 총 7가지입니다.
- 현재 실행되는 런레벨을 확인하는 명령어는
runlevel
입니다. - 아래는 런레벨과 그 기능입니다.
런레벨 | 기능 |
---|---|
0 | 시스템 종료 상태입니다. init 0을 입력하면 시스템이 종료되는 것이 이 이유입니다 |
1 | 단일 사용자 모드(root만 로그인 할 수 있는 모드). 네트워크, 서버, 파일 공유 서비스를 제공하지 않습니다. root 패스워드 분실, 파일 시스템 점검 및 복구, 시스템 점검을 할 때 접근합니다. |
2 | 네트워크가 없는 다중 사용자 모드입니다 |
3 | 텍스트 모드에 의한 다중 사용자 모드 |
4 | 미사용 |
5 | 그래픽 모드에 의한 다중 사용자 모드 |
6 | 시스템 재시작상태로 init 6을 입력하면 재시작되는 것이 이 이유입니다 |
로그인과 로그아웃
로그인
- 로그인 과정은 다음과 같습니다.
- 입력한 패스워드와 파일 /etc/passwd 필드를 비교합니다.
- 셸 설정 파일을 실행합니다. 셸 설정 파일은 다음과 같은 일을 수행합니다.
- 검색 경로 설정
- 터미널 종류 설정 및 다양한 터미널 설정
- 환경변수 설정
- 로그인 시 실행 명령어 실행
- 로그인 메시지 출력
- 로그인 셸을 실행합니다.
- 로그인 셸은 파일 /etc/passwd의 마지막 필드에 정의되어 있습니다.
- 로그인 셸에 따라 프롬프트가 다릅니다.
- 아래는 파일의 특징과 셸 종류를 간단히 작성한 파일입니다.
파일 | 특징 | 상태 |
---|---|---|
/etc/issue | 콘솔 접속 시 보여줄 메시지 파일 | 로그인 전 |
/etc/issue.net | 원격지에서 접속 시 보여줄 메시지 파일 | 로그인 전 |
/etc/motd | 로컬접속, 원격접속 모두에 해당하며 로그인 성공 후 보여줄 메시지 파일 | 로그인 후 |
셸 종류 | 저장 위치 | 프롬프트 |
---|---|---|
sh | 본셸, /bin/sh에 위치 | $ |
csh | C셸, /bin/csh에 위치 | % |
ksh | 콘셸, /bin/ksh에 위치 | $ |
bash | 배쉬셸, /bin/bash에 위치 | $ |
- 제가 다운받은 CentOS7.9.2009에 sh가 링크되있는 것을 확인해보면 본셸이 아닌 배쉬셸에 링크되어 있는 것을 확인할 수 있습니다. 아래 사진을 참조해 주세요.
로그아웃
- 로그아웃은 명령어
logout
,exit
또는 조합키 Ctrl + D 를 사용합니다. - 관리자는 일정 시간 동안 작업을 수행하지 않느 모든 사용자들을 강제로 로그아웃할 수 있습니다.
- 강제 로그아웃은 /etc/profile에 TMOUT 변수에 값을 지정해 해당 작업을 수행합니다.