1. 리눅스의 이해
1) 리눅스의 개요
(1) 특징
- 오픈 소스 운영체제이다.
- 멀티유저(다중 사용자), 멀티태스킹 운영체제이다.
- 가상 터미널 환경으로 하나의 모니터에 여러 개의 가상 화면(가상 콘솔)을 두어 화면마다 다른 작업을 실행할 수 있다.
- 다중 스레드를 지원하는 네트워크 운영체제이다.
- POSIX 규격을 따르기 때문에 유닉스와 완벽하게 호환 가능하다.
- SWAP방식을 통해 램이 부족한 경우 Swap영역을 넓혀 메모리 효율성을 높일 수 있다.
(2) 리눅스 디렉터리 종류와 특징
디렉터리 | 저장 내용 |
---|
/ | 파일 시스템이 있는 최상위 디렉터리, 모든 디렉터리의 출발점인 동시에 다른 시스템과의 연결점이 되는 디렉터리 |
/boot | 부트 디렉터리로 부팅 시 커널 이미지와 부팅 정보 파일 전달 |
/proc | 시스템 정보 디렉터리이며 커널 기능을 제어하는 역할, 현재 실행되는 프로세스와 실제 사용되는 장치, 하드웨어 정보 저장 |
/lib | 공유 라이브러리 디렉터리, 커널 모듈 파일들과 프로그램 실행을 지원해주는 라이브러리 저장 |
/dev | 시스템 디바이스 파일들을 저장하는 디렉터리, 하드 디스크 장치 파일, CD-ROM 장치파일 같은 파일 저장 |
/etc | 시스템 환경 설정 파일 저장 디렉터리 |
/root | 시스템 관리자용 홈 디렉터리(루트 사용자용) |
/sbin | 관리자용(s) 시스템 표준 명령 및 시스템 관리와 관련된 실행 명령어 저장 |
/usr | 사용자 디렉터리로 사용자 데이터나 애플리케이션 저장 |
/home | 일반 사용자들이 로그인 시 처음으로 위치하게 되는 디렉터리 |
/var | 가변 자료 저장 디렉터리로 로그 파일이나 메일 데이터 저장 |
/tmp | 각종 프로그램이나 프로세스 작업을 할 때 임시로 생성되는 파일 저장, 모든 사용자에 대해서 읽기와 쓰기가 허용 |
/mnt | 파일 시스템을 일시적으로 마운트할 때 사용 |
/lost+found | 결함이 있는 파일에 대한 정보가 저장되는 디렉터리 |
(3) 리눅스 배포판
- 슬랙웨어 리눅스
배포판 가운데 가장 먼저 대중화 되었지만 최근 패키지 관리의 문제점으로 인해 인기가 다소 떨어졌다.
- 데비안
GNU의 공식적인 후원을 받고 있는 유일한 배포판이다. 패키지 설치 및 업그레이드의 과정이 단순하다.
- 우분투
6개월 마다 새 버전이 배포되는 데비안 GNU에 기초한 운영체제이다. 영국에 기반을 둔 회사인 캐노니컬의 지원을 받고 있다. 사용자 편의서에 초점을 맞추고 있다.
- 레드햇
미국의 레드햇사가 개발하던 리눅스 배포판이다. 지금은 유료로 기술을 지원하는 기업용 레드햇 엔터프라이즈 리눅스(RHEL)와 페도라로 나뉘어 있다.
- RHEL
레드햇이 개발하여 판매하고 있는 상용 리눅스이다. 기술 지원은 출시 시점부터 7녀 동안 제공한다. 계약기간 중에는 추가 비용 없이 업그레이드 및 다운그레이드를 자유롭게 실시할 수 있다.
- 페도라
6개월 간격으로 새로운 버전이 배포되며 지원기간은 각 버전마다 13개월이다. 소프트웨어 개발이 안정적으로 이루어지기 위해서는 새 버전으로 계속 교체되어야 한다는 문제점이 있다.
- CentOS
업스트림 소스인 레드햇 엔터프라이즈 리눅스와 완벽하게 호환되는 무료 기업용 컴퓨터 운영체제이다.
- 수세
독일에서 출시된 배포판으로 유럽에서 인기를 누리고 있다. 풍부한 기능과 안정성, 포안 기능을 포함하고 있다. 정기적인 배포판이 존재한다기 보다는, 언제든지 새로운 버전이 출시되면 업데이트가 가능한 롤링 릴리즈 방식을 사용한다.
2) 리눅스의 역사
- 1965년 MIT, AT&T벨 연구소, General Electric에서 Multics라는 프로젝트 진행
- 1969년 참여했던 벨 연구소 연구원 켐 톤슨이 초기 형태의 UNIX 개발
- 1971년 벨 연구소의 데니스 리치가 C언어를 개발함으로써, 에셈블리 언어로 되어 있던 UNIX가 C언어로 재작성
- 1985년 MIT연구원 이던 리처드 스톨먼 상업화에 대한 반감으로 FSF라는 비영리 단체를 설립 후 'GNU 선언문'을 발표
- 1987년 앤드루 타넨바움은 미닉스(교육용)를 개발
- 1990년대 초 필란드 헬싱키 대학의 리누스 토발즈가 미닉스의 커널 소스를 고처 GNU시스템에 적합한 커널 개발
- 리처드 스톨먼과 FSF는 유닉스 커널과 호환 가능한 커널인 리눅스를 GNU 시스템의 커널로 채택
3) 리눅스 라이선스
- GNU(GNU's Not UNIX)
리처드 스톨만이 자유 소프트웨어 재단에서 진행하며 유지중인 운영체제 프로젝트이다. GNU프로젝트를 통하여 개발한 유닉스 계열 컴퓨터 운영체제로 '완전한 유닉스 호환 소프트웨어 시스템'이 되는 것이 목표이다.
- 자유 소프트웨어 재단(FSF;Frre Software Foundation)
1985년 리처드 스톨만이 설립한 재단이다. 자유 소프트웨어는 사용자가 소프트웨어를 실행하고, 복제하고, 배포하고, 학습하고, 개작하고, 향상시킬 수 있는 소프트웨어이다. 자유는 금전적인 측면과 관계가 없기 때문에 유료로 판매할 때 문제가 생기지 않는다.
- 오픈 소스 소프트웨어(Open Source Software)
1998년 일부 커뮤니티에서 '자유 소프트웨어'대신 '오픈 소스 소프트웨어'라는 용어를 사용하기 시작했다. 이는 자유가 가진 무료라는 의미가 일으키는 혼동을 피하기 위함이다.
- GNU GPL(General Public License)
FSF에서만든 Free소프트웨어 라이선스이다. 기본적으로 어떤 프로그램을 개발할 때 GPL코드를 일부라도 사용하게 되면 해당 프로그램은 GPL이 된다. GPL을 가진 프로그램을 유료로 판매하는 것은 가능하지만, 반드시 전체 소스코드는 무료로 공개해야 한다.
- GPL LGPL(Lesser General Public License)
GPL보다는 훨씬 완화된 조건의 공개 소프트웨어 라이선스이다. LGPL이 적용된 라이브러리를 이용하여 개발하였을 경우 프로그램 소스코드는 공개하지 않아도 된다. LGPL을 사용했음을 명시만 하면 된다. LGPL코드를 단순히 이용하는 것이 아니라 이를 수정한 또는 이로부터 파생된 라이브러리를 개발하여 배포하는 경우에는 전체 코드를 공개해야한다.
- BSD(Berkeley Software Distribution)
버클리 캘리포니아 대학의 자유 소프트웨어 저작권의 한가지이다. 소스코드 공개의 의무가 없으며 상용 소프트웨어에서도 무제한 사용가능한 라이선스이다. 해당 소프트웨어는 아무나 개작할 수 있고 수정한 것을 제한 없이 배포할 수 있다.
- 아파치 라이선스
아파치 소프트웨어 재단에서 자체적으로 만든 소프트웨어에 대한 라이선스 규정이다. 아파치 2.0 라이선스는 누구나 해당 소프트웨어에서 파생된 프로그램을 제작할 수 있으며 저작권을 양도, 전송할 수 있는 라이선스 규정이다. 누구든 부분 또는 전체를 개인적 혹은 상업적으로 목적으로 사용할 수 있다.
- MIT(Massachuetts Institute of Technology)
매사추세스 공과 대학교에서 본교의 소프트웨어 공학도를 돕기위해 개발한 허가서이다. BSD라이선스를 기초로 작성된 BSD계열 라이선스 중 하나이다. 해당 소프트웨어는 누구나 개작할 수 있고, 수정본의 재배포 시에 소스코드 비공개가 가능하다.
- MPL(Mozilla Public License)
오픈 소스와 자유 소프트웨어 라이선스이다. 변형 BSD 사용 라이선스와 GNU 일반 공중 사용 라이선스의 혼합적 성격을 띄고 있다. 소스코드와 실행 파일의 저작권을 분리한 것이 특징이다.
2. 리눅스의 설치
1) 파티션
파티션이란? 하나의 물리적 디스크를 여러 개의 논리적인 디스크로 분할하는 것이다.
(1) 다중 파티션의 장점
- 파티션마다 독립적인 파일 시스템이 운영되기 때문에 파일 점검 시간이 줄어들어 부팅 시간을 단축시킬 수 있다.
- 특정 파티션의 파일 시스템이 손상되더라도 다른 파티션에 영향을 주지 않기 때문에 높은 안정성을 보장한다.
- 필요한 파티션만 포맷할 수 있기 때문에 백업과 업그레이드가 편리하다.
- 파티션 상태 정보를 확인할 수 있는 파일은 /proc/partitions 이다.
(2) 파티션의 종류
주 파티션
- 부팅이 가능한 기본 파티션
- 하나의 하드디스크에 최대4개의 주 파티션 분할 가능
- 하드디스크를 4개 이상의 파티션으로 사용해야할 때 하나의 확장 파티션을 설정하여 확장 파티션 안에 여러 개의 논리 파티션을 분할하여 데이터 저장
확장 파티션
- 주 파티션 내에 생성, 하나의 물리적인 디스크에 1개만 생성, 파티션 번호는 1~4번 할당
- 데이터 저장 영역을 위한 것이 아니라 논리 파티션을 생성
논리 파티션
- 확장 파티선 안에 생성되는 파티션
- 논리 파티션은 12개 이상 생성하지 않는 것을 권고하며 5번 이후의 번호가 붙는다.
스왑 파티션
- 하드 디스크의 일부를 메모리 처럼 활용하는 영역
- 주 파티션 또는 논리 파티션에 생성
- 프로그램 실행시 부족한 메모리 용량을 하드디스크로 대신함
- 리눅스 설치 시에 반드시 설치되어야 하는 영역
(3) 파일 시스템
리눅스에서 파티션을 만들고 마운트 할 때 지정된 디바이스 명을 사용한다.
디바이스 종류 | 디바이스 명 | |
---|
플로피 디스크 | 첫 번째 플로피 | /dev/fd0 |
| 두 번째 플로피 | /dev/fd1 |
SCSI 디스크 | 첫 번째 SCSI 디스크 | /dev/sda |
| 두 번째 SCSI 디스크 | /dev/sdb |
CD-ROMS | SCSI CD-ROM | /dev/scd0 또는 /dev/sr0 |
IDE 디스크 | Primary Master | /dev/hda |
| Primary Slave | /dev/hdb |
| Secondary Master | /dev/hdc |
| Secondary Slave | /dev/hdd |
XT 디스크 | 첫 번째 XT 디스크 | /dev/xda |
| 두 번째 XT 디스크 | /dev/xdb |
파일 시스템은 운영체제가 파일을 시스템의 디스크 파티션상에 구성하는 방식이다.
파일 시스템 유형 | 종류 |
---|
리눅스 전용 파일 시스템 | ext, ext2, ext3, ext4 |
저널링 파일 시스템 | JFS, XFS, ReiserFS |
네트워크 파일 시스템 | SMB, CIFS, NFS |
시스템 파일 시스템 | ISO09660, UDF |
타 운영체제 지원 파일 시스템 | FAT, VFAT, FAT32, NTFS,HPFS, SysV |
(4) LVM(Logical Volumne Manager)
- 여러 개의 하드디스크를 합쳐서 사용하는 기술로 한 개의 파일 시스템을 사용한다.
- 작은 용량의 하드디스크 여러개를 큰 용량의 하드디스크 한 개 처럼 사용한다.
- 서버를 운영하면서 대용량의 별도 저장 공간이 필요할 때 활용한다.
- 다수의 디스크를 묶어서 사용함으로써 파티션의 크기를 줄이거나 늘릴 수 있다.
물리 볼륨 : 여러 개의 물리적 하드디스크
볼륨 그룹 : 물리 볼륨을 합쳐서 하나의 물리적 그룹으로 만든 것
논리 불륨 : 볼륨 그룹을 나눠서 다수의 논리 그룹으로 나눔
(5) 복수 배열 독립 디스크(RAID;Redundant Array of Independent Disks)
- 여러개의 물리적 디스크를 하나의 논리적 디스크로 인식하여 작동하게 하는 기술이다.
- 여러 개의 하드디스크에 일부 중복된 데이터를 나눠서 저장하는 기술이다.
하드웨어 RAID
- 하드웨어 제조업체에서 여러 개의 하드디스크를 장비로 마들어 그 자체를 공급
- 안정된 시스템일수록 고가
소프트웨어 RAID
- 고가의 하드웨어 RAID의 대안
- 운영체제에서 지원하는 방식
- 저렴한 비용으로 안전한 데이터 저장 가능
RAID 레벨0~6 다양한 방식 존재
(6) 파티션 분할
- fdisk는 파티션 테이블을 관리하는 명령어로 리눅스의 디스크 파티션을 생성, 수정, 삭제할 수 있는 일종의 유틸리티이다.
명령어 | 설명 |
---|
a | 부팅 파티션을 지정 |
l | 파티션 종류를 선택할 때 리눅스에서 지원하는 파티션 목록 확인 |
n | 새로운 파티션 추가 |
t | 파티션 종류 변경 |
w | 파티션 정보 저장 |
p | 파티션 정보 확인 |
q | 작업 종료 |
2) 부트 매니저
(1) 부트로더
- 부트스트랩 로더의 준말로 컴퓨터 사용자가 사용할 수 있도록 디스크나 플래시에 저장된 운영체제를 읽어 주기억 장치에 적재해주는 프로그램이다.
- 부트로더는 운영체제가 시도오디기 이전에 미리 실행되면서 커널이 올바르게 시도오디기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영체제를 시동시키기 위한 프로그램이다.
(2) 런레벨
- 리눅스 부팅 시 작도하는 서비스들이 있다. 런레벨에 따라 작동하는 서비스를 조정 가능하다.
- 리눅스 부팅 마지막 단계에서 모든 프로세스의 부모 프로세스인 init이 생성된다.
- 런레벨은 0부터 6까지 총 7가지이다.
3. 리눅스의 기본 명령어
1) 사용자 생성 및 계정 관리
(1) 리눅스 명령어 개요
- 명령어 which
명령어의 위치를 찾아주거나 alias를 보여주는 명령어
[user@localhost ~] $ which pwd
/bin/pwd
- 명령어 alias
자주 사용하는 명령어를 특정 문자로 지정하는 명령어
[user@localhost ~] $ alias [별명='명령어']
- 명령어 unalias
alias기능 해제하는 명령어
[user@localhost ~] $ unalias -a [단축명령어]
- 환경변수 PATH
PATH는 실행 파일들의 디렉터리 위치를 저장해 놓은 환경 변수
[user@localhost ~] $ echo $PATH
(지정된 PATH값 출력)
[user@localhost ~] $ PATH=$PATH: /dev
(기존 PATH에 디렉터리 /dev를 추가)
(2) 리눅스 도움말
- 명령어 man
리눅스에서 사용하는 명령어들의 매누얼을 제공
옵션 | 설명 |
---|
-a | 찾고자 하는 명령어의 검색된 매뉴얼 페이지를 모두 출력 |
-h | 사용법을 출력 |
-f | whatis 명령과 동일, 키워드와 동일한 man 페이지만 출력 |
-k | apropos 명령과 동일, 키워드가 포함된 man 페이지 출력 |
-w | 찾고자 하는 문자의 매뉴얼 페이지가 있는 위치 출력 |
- 명령어 info
리눅스 명령어의 사용 방법, 옵션 등을 출력
[user@localhost ~] $ info 명령어
- 명령어 whatis
명령어에 대한 기능을 간력하게 출력
자세한 사용법과 설명은 명령어 man이나 info로 확인
[user@localhost ~] $ whatis 명령어
2) 디렉터리 및 파일
3) 기타 명령어