Linux 소개
유닉스 역사
Unix는 1969년 AT&T 벨 연구소인 켄 톰슨, 데니스 리치, 브라이언 카니한이 개발한 OS이다. 원래 벨 연구소에서 “Multics"라는 멀티 태스킹 OS를 개발했지만 시스템이 너무 커졌다. 그러나 Multics에서 놀이로 개발한 “Space Travel"이라는 게임을 할 목적으로 연구소의 한 구석에서 먼지를 쓰고 있던 DEC사의 PDP-7이라는 컴퓨터상에 Multics의 소형판이라고도 할 OS 를 개발하다. 이것은 Unix의 시작이다.
다양한 UNIX
Unix계 OS는 각사, 각 단체가 독자적인 강화를 실시해 System V(AT&T), BSD(California 대학 Berkeley교), Solaris(Sun Microsystems), HP-UX(HP), AIX(IBM), XENIX(Microsoft ), UnixWare(Novell), FreeBSD, NetBSD, OpenBSD 등 다양한 종류와 버전의 것이 개발되어 왔다. Unix계 OS의 표준화 단체(UNIX International, OSF, X/Open…)도 몇개가 발족 및 통폐합되어 현재는 The Open Group이라는 단체가 표준화를 행하고 있다.
UNIX와 Unix
“UNIX"라는 명칭은 The Open Group이 상표를 관리하고 있으며, IEEE가 정하는 Unix계 OS의 표준 사양인 “POSIX"를 확장한 “Single UNIX Specification"이라는 표준 사양을 만족하는 것만이 “UNIX"를 자칭할 수 있다. 그런데, 이 사양을 충족하는 것은 많지 않다. 사양을 충족하지 않는 OS는, “UNIX"가 아닌 “Unix계 OS"나, 소문자를 섞은 “Unix"라고 표기된다.
Linux 등장
헬싱키 대학(핀란드)의 리누스 토르발즈(Linus Torvalds)가 1991년 11월에 개발한 Unix계 OS의 하나이다. 오픈 소스로 공개되어 PC에서도 동작하기 때문에 급속히 퍼졌다. 엄밀히 말하면 Linux는 OS 커널 전용 이름이다. 이것에 GNU 프로젝트가 개발한 C언어 컴파일러(gcc)등의 각종 기본 소프트웨어를 더한 것을 GNU/Linux라고 부른다. 또, GNU/Linux 를 베이스로 인스톨러나 패키지 관리 시스템등을 추가한 각종 “Linux 배포판"이 존재한다.
운영체제 (Operating System) 컴퓨터를 활용적으로 사용할 수 있게 인터페이스를 구축한 것이다. ex) Window, Mac, Linux, Unix
Linux 배포판
초기에는 TurboLinux, Miracle Linux, Debian, Red Hat Linux 등 다양한 배포판이 난립했다. 현재는 데비안계와 Red Hat계가 주류가 되고 있다.Debian계에서는, 염가판 PC용 OS로서도 채택되고 있던 우분투가 많이 사용되고 있다. Red Hat Linux는 상용 안정성을 향상시킨 Red Hat Enterprise Linux(RHEL)와 실험적으로 최신 기술을 통합하는 Fedora로 분화되었다. RHEL 호환 무료 CentOS도 자주 사용된다.
Debian 계열 배포판
배포판 | 설명 |
---|---|
Debian | GNU/Linux: 커뮤니터에게 개발된 Linux |
KNOPPIX | CD 부팅으로 이용할 수 있는 Linux |
Ubuntu | 풍부한 데스트톱 환경을 제공하고 있는 것이 특징 |
Red Hat 계열 배포판
배포판 | 설명 |
---|---|
Fedora | Red Hat이 지원하는 커뮤니티 ‘Fedora Project’의 Linux |
Red Hat Enterprice Linux | Red Hat이 제공하는 상용 Linux. RHEL로도 불림 |
CentOS | RHEL과의 완전한 호환을 지향하는 Linux. RHEL의 무료 버전에 가까움 |
Vine Linux | 일본에서 개발된 Linux. |
Slack ware 계열 배포판
배포판 | 설명 |
---|---|
OpenSUSE | Novell이 지원하는 커뮤니티에세 개발된 Linux |
SUSE Linux Enterprise | openSUSE를 기반으로 한 안정화된 상용 Linux |
기타 배포판
배포판 | 설명 |
---|---|
Arch Linux | 패키지 관리 시스템에 Pacman을 사용 |
Gentoo Linux | Postage 패키지 관리 시스템을 채택한 Linux |
Unix/Linux 사용처
당초의 Unix계 OS는 주로 엔지니어링계의 업무에 사용되었지만, 현재는 Web 서버, 메일 서버, 라우터 등의 네트워크 기기, TV나 카 내비게이션 등 다양한 용도에 사용되고 있다. Mac도 Mac OS X에서 BSD Unix를 기반으로 다시 작성되었다. Google의 Android도 Linux를 기반으로 한다. Unix/Linux의 대국이라고도 할 수 있는 Microsoft Windows도 Unix계 OS라고까지는 불려지지 않지만, Unix계 OS의 기술이나 사상을 조금만 도입하고 있다.
Linux의 특징
- 권한을 갖는다.
- 리눅스 시스템은 “소유권/허가권” 이라는 두 가지 권한을 사용한다.
- 다중 사용자 환경을 지원한다.
- 리눅스 시스템은 Multi-Users 및 Multi-Tasking 환경을 사용하므로 다수의 사용자가 한 번에 작업이 가능하다.
- 대/소문자를 구분한다.
- “Caps Lock"키의 On/Off를 확인해야 한다.
- Windows의 파일 확장자 개념이 없다.
TUI와 GUI
- TUI (Text User Interface)
- 텍스트로 입 출력 되는 환경
- GUI (Graphical User Interface)
- 그래픽 환경
디렉터리와 폴더의 차이
TUI 환경에서는 디렉터리라고 부르고, GUI 환경에선 폴더라고 부른다.
사용자
UNIX에서는 사용자는 devkuma 라든지 kimkc 등의 사용자명으로 식별된다. 사용자 정보는 /etc/passwd
라는 파일에 기록된다.
그룹
사용자는 여러 그룹에 속할 수 있다. 예를 들어, devkuma와 kimkc의 두 사람이 adm이라는 그룹에 소속되어 있다고 한다. 그룹 정보는 /etc/groups
라는 파일에 기록된다.
권한
rwxr-xr-x
와 같은 9자는 권한을 나타낸다.
쉘(Shell)
Windows 명령 프롬프트(이전 이름: MS-DOS 프롬프트)에 해당하는 UNIX의 명령을 셸이라고 한다. 텍스트 모드에서 명령을 입력하면 결과도 텍스트로 표시된다.
프롬프트(Prompt) 정의
명령어를 입력 받아 실행될 수 있는 대기 상태이다.
prompt 구조
Windows (MS-DOS)
드라이버명//경로>
``
```cmd
C://windows>
Linux (Bash Shell)
구분자 | 의미 |
---|---|
root | 로그인한 사용자 계정 명 |
localhost | 리눅스 시스템의 호스트 명 |
~ | 현재 작업 디렉터리 위치 |
# | 관리자 계정(#), 일반 계정($) |
[root@localhost ~]#
[devkuma@localhost ~]$
환경 변수
프로그램간에 정보를 교환할 때 참조할 수 있는 특수한 변수를 환경 변수라고 한다. Windows의 “AUTOEXEC.BAT"에서 지정한 “PATH"와 같다. CGI는 환경 변수를 통해 WWW 서버와 CGI 스크립트간에 많은 정보를 교환한다. 주요 환경 변수는 다음과 같다.
환경 변수 | 의미 |
---|---|
PATH | 명령 검색 경로. 예를 들어, PATH=/bin:/usr/bin 일 때 ls 명령을 실행하면 쉘은 /bin/ls , /usr/bin/ls 를 순서대로 찾아서 먼저 발견된 명령을 실행한다. 반대로 PATH로 설정되지 않은 명령은 /bin/ls 와 절대 경로 이름으로 지정해야 한다. |
TZ | 시간대. 해당 지역의 시간대를 지정한다. 예를 들어 한국의 경우는 TZ=KST-9(최근에는 TZ=Asia/Seoul)로 지정해 둔다. 그렇지 않으면 시스템에 따라 시간이 9시간 벗어날 수 있다. |
환경 변수의 값을 알기 위해서는, 쉘의 경우는 printenv(printenv 를 사용할 수 없는 때는 set) 커멘드, perl 의 경우는 $ENV{‘환경 변수명’} 을 이용한다.
UNIX와 Windows의 차이
UNIX | Windows | |
---|---|---|
드라이브 개념 | 없다 | 있다 |
디렉터리 구분 기호 | / |
\ |
파일 목록 | ls | dir |
파일 복사 | cp | copy |
파일 삭제 | rm | del |
파일 이동 | mv | move |
파일 이름 바꾸기 | mv | ren |
디렉터리 생성 | mkdir | mkdir |
디렉터리 삭제 | rmdir | rmdir |
디렉터리 이동 | cd | cd |
일반적인 도움말 보기 | man command | command /? |
환경 변수 표시 | set/printenv | set |
파일 이름 길이 | 256자 | 255자 |
파일명의 대소문자 | 구별한다 | 구별하지 않는다. |
실행 파일 | 퍼미션으로 의해 | 확장자에 의해 |
텍스트 파일의 개행 문자 | <LF> |
<CR><LF> |
한자 코드 | UTF-8(옛날에는 EUC) | UTF-8 |
POSIX
Linux나 Unix 관련 자료를 보다 보면 POSIX라는 단어를 자주 보게 된다. POSIX는 Portable Operation Systems Interface with Unix의 약자이다. Unix의 호환성과 이식성을 위해서 국제 표준 기구 ISO에 표준으로 선택된 규약이다. 1990년대 초반 여러 기업에서 고유의 Unix를 독자적으로 개발하기 시작했는데, 이들은 같은 Unix운영체제임에도 개발한 회사별로 고유한 기능들이 Customization되어 서로간의 호환성과 이식성이 현저하게 떨어지게 된다. 때문에 사용자들은 같은 Unix임에도 프로그램을 실행하고 이전하는 것에 매우 힘든 작업을 해야 했으며, 시스템 관리나 사용법 조차도 개발사마다 서로 다른 형식을 취하게 되어 사용자 입장에서는 매우 불편했다. 이런 이유로 Unix의 호환성과 이식성을 위해 ISO에서는 POSIX라는 규약을 표준으로 채택하였다. 따라서 1990년대 후반 이후에 출시된 버전의 Unix는 대부분 POSIX 규약을 만족하려고 노력하고 있다. POSIX 규약은 매우 넓은 범위를 포괄한다.