리눅스 소개
1.1 유닉스와 리눅스
리눅스?
다중 사용자, 다중 작업을 지원하는 유닉스(UNIX)계열의 운영체제
독립적 커널을 이용하여 개발한 운영체제
독점되거나 배타되지 않는 자유소프트웨어
- 유닉스의 등장과 발전
Multics 운영체제보다 우수하면서 향상된 소프트웨어 개발 환경을 제공하는 운영체제의 개발을 시작하면서 개발됨
AT&T는 교육을 목적으로 하는 대학에 UNIX V6를 소스코드와 함께 무상으로 제공하여 여러버전의 UNIX가 만들어질 수 있도록 함
최초의 UNIX 변형 == BSD(Berkeley Software Distribution)버전임
BSD는 자유롭고 공개된 방식으로 발전해나갔지만, AT&T는 UNIX의 상용화를 모색하게 됨
그래서 AT&T 직계의 유닉스는 V7부터 System V에 이르게 됨
유닉스 계열 운영체제에는 System V 계열과 BSD 계열로 나뉨
System V 계열은 주로 상업적인 목적을 가진 업체가 제공하는 것으로, IBM AIX, HP-UX, Sun Microsystems Solaris 등이 해당됨
BSD 계열로는 FreeBSD, OpenBSD, NetBSD, SunOS, Mac OS X, GNU/Linux 등이 속함
- Linux의 등장
리누스 토르발스가 Minix를 배우고나서 386 PC에서 동작하는 운영체제를 만들게 되면서 만들어짐
GNU 운영체제의 커널로 도입되어 완전한 운영체제가 됨
리눅스의 이름은 개발자인 '리누스'의 이름과 모델로 삼은 '유닉스'의 이름을 합친것
버전 0.01은 공개하지 않았고, 0.02부터 공개했는데, 0.02는 어셈블리 코드의 많은 부분이 C언어로 다시 작성되었기 때문에 뛰어난 이식성을 기반으로 초기 386프로세서에서 다른 기종의 하드웨어로 포팅이 가능해짐
bash, gcc, compress, gnu-make 등이 성공적으로 실행되었는데, 이 소스를 본 많은 사람이 개발에 참여하면서 리눅스는 빠른 속도로 발전함
그리고 0.12버전부터 GPL 라이선스가 채택됨
1.2 리눅스 개요
- GNU와 자유소프트웨어
GNU 프로젝트는 UNIX 운영체제 전체를 다시 코딩해 UNIX와 완벽하게 호환되는 운영체제를 개발하려는 의도로 시작되었으며, 자유소프트웨어재단은 자유소프트웨어 운동을 지원하기 위해 스톨먼이 설립한 비영리 단체임
-> 컴퓨터 프로그램의 실행, 복제, 배포 및 개작의 자유, 그리고 이러한 목적을 위해 소스코드의 사용헤 대한 제한 철폐를 목적으로 설립된 단체
GNU는 'GNU is not Unix'의 약어로, 유닉스와 호환되는 운영체제지만 다른 운영체제라는 의미를 내포함
자유소프트웨어?
프로그램의 사용이나 개작의 자유를 의미함
저작권을 의미하는 카피라이트(copyrights)와 반대되는 개념
카피레프트(copyleft) -> 소프트웨어의 상업화와 소수 독점을 거부하는 운동 또는 그러한 라이선스
스톨먼의 자유소프트웨어재단은 GNU/Linux 외에도 GNU C 컴파일러인 gcc, 문서 편집기 emacs, X 윈도우의 데스크톱 환경인 GNOME 등의 다양한 프로그램을 개발했고, 자유소프트웨어에 관한 사용 규정을 명확히 정의하기 위해 'GNU GPL(General Public License)'을 만듦
- Linux의 특징
(1) 리눅스는 다중 사용자와 멀티태스킹을 지원하는 운영체제이다
-> 멀티태스킹의 지원이란, 여러 개의 작업이 일정 시간 간격 동안 동시에 실행될 수 있음을 의미
(2) 리눅스는 뛰어난 이식성을 제공한다
(3) CUI와 GUI를 지원한다
(4) 리눅스 소스가 공개되어 있다
(5) 리눅스는 여러 종류의 파일 시스템을 지원한다.
-> 파일시스템이란, 파일과 디렉터리에 관한 전체적 구성을 말하며 디스크 공간에 어떤 식으로 파일을 구성할 것인가에 관한 규칙을 규정한다.
(6) 리눅스는 다양한 응용 프로그램과 우수한 소프트웨어 개발 환경을 제공한다.
1.3 오픈소스와 라이선스
- 오픈소스 소프트웨어
오픈소스 소프트웨어(OSS)는 소프트웨어 저작권자인 개발자가 자신이 만든 소프트웨어의 소스코드를 공개하여 누구나 자유롭게 사용, 복제, 수정, 재배포할 수 있도록 개방한 소프트웨어를 말함
GNU 프로젝트에서는 소프트웨어에 대해 다음과 같은 자유를 보장
(1) 프로그램을 목적에 상관없이 실행할 수 있는 자유
(2) 복제(copying)하고 이것을 함께 공유할 수 있는 자유
(3) 프로그램을 학습하고 소스코드를 자신의 필요에 맞게 개작할 수 있는 자유
(4) 개작된 프로그램을 배포(distribution)할 수 있는 자유
<오픈소스 소프트웨어 예시>
Linux 커널, GNU 소프트웨어, Apache 웹 서버, FireFox 웹 브라우저, MySQL 데이터베이스 시스템, Python/PHP/Perl 언어, Eclipse 도구 등
1998년 오픈소스 소프트웨어 활성화 및 오픈소스 소프트웨어에 대한 인증을 관장하는 OSI(Open Source Initiative)가 결정됨 -> 자유소프트웨어보다 더 널리 사용되고있음
OSI는 오픈소스가 추구하는 목표 또는 최소한의 기준을 OSD(Open Source Definition)로 정의해 둠
- 오픈소스 소프트웨어 라이선스
라이선스?
권리자가 타인에게 일정한 대가나 조건을 전제로 사용에 관한 권리를 부여할 수 있는데, 이와 같은 사용허가권을 라이선스(license)라고 함
오픈소스 소프트웨어 라이선스?
오픈소스 소프트웨어의 개발자와 그것의 사용자 간에 소프트웨어의 사용, 수정 및 공유 등에 관한 방법 및 조건을 말함
<공통적 준수사항>
(1) 저작자와 해당 라이선스 문구를 소스코드에 포함시키도록 하는 저작권 관련 문구 유지
(2) 상표권에 의해 보호받는 제품명의 중복 사용 금지
오픈소스 라이선스 인증을 받은 오픈소스 라이선스는 80개가 등록되어있음
-> 가장 많은 오픈소스 소프트웨어가 채택한 오픈소스 라이선스는 GPL
<GPL의 주요 내용>
(1) 어떠한 목적으로든 소프트웨어를 자유롭게 복사할 수 있고 배포할 수 있다.
(2) 필요에 따라 소프트웨어를 자유롭게 수정할 수 있으며 배포할 수 있다.
(3) 수정된 소프트웨어에 저작권자를 표시하고 같은 라이선스인 GPL 조건에 의해 배포되어야한다.
GPL이 적용된 소프트웨어를 이용해 개량된 소프트웨어를 개발했을 경우, 개발된 파생 소프트웨어의 소스코드 역시 공개해야함
GNU GPL 라이선스는 자유 소프트웨어를 공유하고 수정할 수 있는 자유를 보장하기 위해, 또한 라이선스 사용료나 사용상의 제약 조건을 자유롭게 하여 소프트웨어 유통과 자유로운 사용을 활성화하기 위해 만들어짐
라이선스 | 무료 이용 | 소스코드 수정 가능 |
배포 허용 | 2차적 저작물 재공개 의무 |
독점 SW와 결합 허용 |
GPL | o | o | o | o - 전체 | x |
LGPL | o | o | o | △ | o |
MPL | o | o | o | o - 파일 | o |
BSD | o | o | o | x | o |
Apache | o | o | o | x | o |
GPL, LGPL(Lesser General Public License), 모질라 라이선스(MPL)등은 해당 라이선스의 소스코드를 이용해 개발된 프로그램의 경우 소스코드를 공개하여야 하는 카피레프트 라이선스임
BDS, MIT, 아파치 라이선스(AL) 등은 수정된 프로그램의 재배포가 의무사항은 아니며 소스코드의 비공개가 허용됨
-> 애플이나 마이크로소프트는 BSD 코드를 사용중
1.4 리눅스 배포판
커널:
CPU와 메모리의 자원 관리, 프로세스 관리, 디스크와 주변 장치 제어 등의 기능을 수행
리눅스 배포판은 크게 상업적인 것과 비상업적인 것으로 분류됨
<상업적 배포판>
RHEL(Red Har Enterprise Linux), SLE(SUSE Linux Enterprise)
유료 서비스를 제공하고 수명주기가 김
<비상업적 배포판>
무료이고, 사용자와 개발자로 이루어진 오픈소스 커뮤니티에 의해 지원됨
Pedora, openSUSE, Ubuntu, Linux Mint, Debian
- 리눅스 배포판의 역사
1993년 7월 슬랙웨어(Slackware)가 발표됨
설치와 사용을 용이하게 하였으며 타르볼(tarball)형식의 소프트웨어 패키지를 제공
-> 개인의 작품이라 사용자의 늘어가는 요구사항이나 기대를 충족시키지 못하면서 슬릭웨어의 사용자는 점차 줄어듦
-> 그치만 아직 원조임
- 리눅스 배포판의 종류
모든 배포판은 기본 행위는 같다.
배포판의 주관심사, 지원수준 및 대충성에서 차이가 남
데비안 계열과 레드햇 계열의 배포판이 시장을 지배함
<데비안 계열>
Debian Ubuntu, Linux Mint
<레드햇 계열>
RHEL, Mandriva, Orable Enterprise Linux, Fedora, CentOS
<슬랙웨어 계열>
Slackware, SUSE, openSUSE
-> 데비안은 다른 배포판과 달리 전 세계 리눅스 개발자들이 만들어가는 유일한 순수 비상용 배포판임
<리눅스 배포판 종류>
1. 데비안 리눅스(http://www.debian.org)
-> 데비안 프로젝트는 이안 머독에 의해 1993년에 비영리 조직으로 설립된 독자적 모임
-> 패키지 인스톨러로 apt-get을 사용
2. 레드햇 리눅스
-> 레드햇 사가 제공
-> 배포판 가운데 최초로 사용된 RPM(Red hat Package Manager)이라는 패키지 관리 도구가 특징. RPM은 패키지 파일의 형식이자 패키지 설치 또는 업데이트를 위한 관리 도구로 바이너리, 설정 파일, 라이브러리, 도큐먼트 등을 일괄 관리할 수 있으며 RPM 데이터베이스에 질의하여 패키지에 관한 다양한 정보를 검색하는 기능을 제공
-> Fedora라는 오픈소스 프로젝트에 이양했고, Fedora 리눅스로 이어지게 지원하고 있음
3. 센트오에스 리눅스
-> 레드햇 엔터프라이즈 리눅스(Red Hat Enterprise Linux)의 소스코드를 기반으로 만들어지는 무료 배포판
-> 무료 정책, 공동체 중심의 지원을 유지하기 위해 탄생
-> 안정적이며 주로 서버 용도로 사용
4. 수세 리눅스
-> 독일에서 만든 배포판
-> WordPerfect, Start Office, Netscape 등 800여 개의 패키지를 포함함
-> YaST2라는 설치와 설정 도구를 제공하여 초보자도 쉽게 리눅스를 업그레이드하고 패키지 관리를 할 수 있도록 도와줌
-> 풍부한 기능과 안정성, 보안기능을 포함함
5. 슬랙웨어
-> 가장 먼저 대중화됨
-> 1992년 패트릭 볼커딩에 의해 시작됨
-> 패키지 업그레이드와 관리 기능이 취약해 인기가 떨어지고 있음
6. 우분투
-> 데비안 리눅스에 기초한 배포판으로 고유한 데스크톱 환경인 Unity를 사용하는 리눅스 배포판
-> 사용자 편의성에 중점을 두고 있고, 전 세계의 다양한 언어를 지원함