2008. 7. 10.

ext3 파일 시스템으로 변환하기

1.3. ext3 파일 시스템으로 변환하기
tune2fs 프로그램은 기존 ext2 파일 시스템에서 파티션 상에 저장된 자료를 변경시키지 않고서 저널링 기능을 추가할 수 있는 기능을 갖추고 있습니다. 파일 시스템 변환 과정에서 그 파일 시스템이 이미 마운트되었다면, 저널은 파일 시스템의 루트 디렉토리에서 .journal 파일로 나타납니다. 만일 파일 시스템이 마운트되지 않은 경우에는 저널이 감추어져서 파일 시스템에서 전혀 나타나지 않을 것입니다.

ext2 파일 시스템을 ext3로 변환하기 위해서는, 루트로 로그인 하신 후 다음을 입력해 주십시오:

/sbin/tune2fs -j /dev/hdbX

위의 명령에서 /dev/hdb 부분은 장치명을 입력해 주시고, X 부분은 파티션 번호로 대체해 주십시오.

명령을 입력하신 후, /etc/fstab 파일에서 파티션 유형을 ext2에서 ext3로 변경해 주시는 것을 잊지 마십시오.

루트 파일 시스템을 변환하는 경우에는, initrd 이미지 (또는 RAM 디스크)를 사용하여 부팅하셔야 합니다. mkinitrd 프로그램을 실행하여 initrd 이미지를 만드십시오. mkinitrd 명령을 사용하는 방법에 대한 정보를 원하신다면, man mkinitrd 명령을 입력하여 메뉴얼 페이지를 읽어보시기 바랍니다. 또한 initrd를 로드하도록 GRUB이나 LILO 설정을 확인해 주십시오.

부트로더가 initrd를 로드하도록 제대로 설정되지 않는다면, 시스템은 여전히 부팅되지만, 파일 시스템은 ext3 대신에 ext2로 마운트됩니다.

2008. 7. 9.

mysql admin 패스워드

1>암호 초기화
# killall mysqld (데몬을 죽입니다)

# cd /usr/local/mysql (mysql이 깔린 곳으로 갑니다)

# ./bin/safe_mysqld --skip-grant &

여기까지가 초기화


2>새 암호 넣기
# ./bin/mysql (sql 실행)

mysql>use mysql

mysql>update user set password=password('새암호') where user='root';
(root 암호 변경합니다. '새암호' 자리에 새암호를 넣으세요
예>update user set password=password('1234') where user='root';

mysql> FLUSH PRIVILEGES
mysql> exit

# ./bin/mysql -uroot -p1234 으로 들어와지면 성공입니다.

nslookup 이란?

nslookup
인터넷 상에는 수많은 네임서버(DNS 서버)들이 있다. 이 네임서버에는 수많은
도메인들이 설정되어 있는데 제대로 설정 되었는지 확인하기 위해 nslookup 이라는 프로그램을 사용한다.

사용자가 default server 를 지정해서 도메인을 IP로 바꾸는 것 처럼 nslokkup 은 이서버에게 query 를 하게 되고, 이 네임 서버는 답변을 하게 된다. 만약, 이 프로그램이 없다면 각각의 네임서버로 찾아가서 직접 확인해 볼수 밖에 없다.
ex) nslookup www.naver.com

리눅스 파일 시스템 구조

GNU/Linux 디렉토리 구조 (Redhat 계열)

* 명령어 : ls -al /

- 레드햇 계열의 디렉토리 구조는 다음과 같다.

/ 루트 디렉토리
/bin 가장 필수적인 실행명령
/boot 커널,LILO 등 부팅에 관련된 파일
/dev 장치파일
/etc 시스템 전체 설정파일
/home 사용자의 홈디렉토리
/lib C 라이브러리 등 가장 필수적인 공유 라이브러리
/mnt 임시 마운트용 디렉토리
/proc 시스템 정보를 위한 가상적인 디렉토리
/root 루트 사용자의 홈 디렉토리
/sbin 시스템 관리용 실행파일
/tmp 임시 파일 생성용 디렉토리
/usr 어플리케이션이 설치되는 디렉토리
/var 시스템 운영중 생성되는 각종 임시 파일

2. 각 디렉토리들

1) /
근원이 되는 뿌리로 구체적인 파티션에 대한 정의
가 없는 경우 루트 디렉토리에 포함 되어진다.

2) /bin
실행파일들이 놓여있는 디렉토리로 부팅에 과정에서 필요하고 부팅후에도 일반
사용자를 포함한 모든 사용자들이 사용하는 프로그램들이 있다. 각종 쉘 프로
그램 및 리눅스 기본 명령어들이 포함되어 있다.
가장 기본이 되는 명령어들이 있는 디렉토리이므로 이곳에 있는 명령어들은

숙달되게 사용할 수 있도록

* 명령어: ls -la /bin | more

한후 다른 한텀이나 xterm을 띄워

* 명령어: man 명령어이름

명령어 사용법을 알아 두어야 한다.


3) /boot
GNU/Linux 에서 Linux( 리눅스 커널 )이 위치하는 디렉토리 이다.
부팅 이미지, 시스템 맵, 모듈 정보, 리눅스 커널등이 있다.

# ls -al /boot

4) /dev
리눅스에서는 모든 장치들이 하나의 파일로 간주한다.

디바이스 드라이버들도 하나의 파일처럼 간주되고 그렇게 사용된다.
다만 그것에 대하여 장치 파일처럼 놓는 통신포트,프린터 포트,터미널 장치처
럼 한번에 한바이트씩 자료가 오가는 단방향의 순차적인 접근만 할 수 있는 장
치이며, 블록 장치는 디스크,시디롬으로 원하는 부분만을 읽어들일 수 잇는 양
방향의 랜덤한 방식으로 작동한다.

블록 장치는 버퍼링을 하는데, 읽기 버퍼링의 경우는 캐쉬 메모리처럼 이미 읽
은 내용을 메모리에 보관하고 있다가 요청이 있을 때마다 보여준다.
쓰기 버퍼링의 경우에는 일종의 스풀링 기능처럼 일정시간 혹은 일정량을 모아
두었다가 한꺼번에 작업을 한다.

그렇게 함으로 해서 다중 사용자, 다중 작업 시스템의 효율성을 높이는 것이다.
유닉스를 기반으로 하는 리눅스에서는 모든 하드웨어에 대하여 각각의 파일명
을 가지고 있으며, 이 파일들은 /dev 디렉토리에 놓여있다.
이 파일들을 mknod나 /dev/MAKEDEV 라는 스크립트를 이용하여 만들수 있다.

brw-rw---- 1 root disk 3, 1 May 6 1998 hda1

퍼미션 앞에 있는 문자 b는 불록 장치임을 의미하며, c는 문자 장치를 나타낸다
Disk 다음에 나오는 번호는 장치 파일의 고유속성값인 메이저 번호이며, 파일
명의 끝에 붙어있는 숫자는 마이너 번호이다.
IDE 하드디스크의 장치 파일은 마이너 번호 3번으로 시작하며, SCSI 하드디스크
의 장치 파일은 8번으로 시작한다.
이 번호들은 고유 번호로 임의로 선택하거나 변경할 수 없다.

/devfd0 : 플로피 디스크 드라이브


/dev/hda : 첫 번째 마스터 IDE 드라이브
/dev/hdb : 첫 번째 슬레이브 IDE 드라이브
/dev/hdc : 두 번째 마스터 IDE 드라이브
/dev/hdd : 두 번째 슬레이브 IDE 드라이브


/dev/sda : 첫 번째 SCSI 하드 디스크 드라이브
/dev/st0 : 첫 번째 SCSI 테이프 드라이브
/dev/scd0 : 첫 번째 SCSI 시디롬 드라이브


/dev/mouse : 마우스
/dev/psaux : PS/2 마우스
/dev/ttyS0 : COM1 포트

5) /ETC
시스템에서 사용하는 각종 설정에 대한 정보를 가지고 있다.
가장 중요한 디렉토리 중 하나이다.
제일 중요한 파일들로소는 사용자 정보를 가지고 있는 파일인 passwd(쉐도우
파일 시스템에서는 패스워드가 shadow 파일에 따로 놓인다.)
그룹 정의 파일인 group, 프린터 목록 파일인 printcap, 자동 마운트 될 파일
시스템을 등록해 두는 파일 시스템 테이블 파일인 fstab, 그리고 각종 네트웍
관련 파일들이 있다.

/etc/fstab
리눅스에서 사용하고자 하는 디스크 및 마운트 할 디렉토리에 대한 정보가 들
어있는 파일이다.
fstab의 설정에 따라 부팅시 자동으로 마운트할 디렉토리들이 결정되게 된다.
만일 새로운 하드디스크를 추가하고 이를 리눅스에서 사용하고자 한다면 fstab
에 등록해야만 부팅시 자동으로 마운트 할수 있다.

/etc/inittab
시스템의 런레벨을 지정하는 파일이다.

/etc/issue
로그인 시 'login:' 프롬프트 바로 위에 나타나는 메시지를 가지고 있는 파일
이다.
당연히 issue 파일을 수정하면 원하는 메시지를 출력할 수 있다.
하지만 다음에 부팅해보면 다시 이전의 기본값으로 변경되어 있는 것을 알 수
있다.
이를 수정하려면 /etc/rc.d/rc.local 파일 후반부의 issue 파일 생성스크립트
를 모두 주석처리하거나 삭제해주면 된다.

/etc/login.defs
login명령에 대한 설정 파일.

/etc/motd
issue와 비슷한데 issue가 로그인 전에 나타나는 메시지에 비해 motd는 로그인
직후 나타나는 메시지이다.

/etc/mtab
현재 마운트되어 있는 파일시스템의 목록. 처음에는 초기화 스크립트에 의해
설정되고 mount명령에 의해 자동으로 갱신된다.

/etc/rc.d or /etc/rc.?.d 디렉토리
처음 시스템이 시작될 때나 런 레벨이 변경될 때 실행 되는 스크립트 또는 스
크립트들이 들어있는 디렉토리이다.

/etc/magic
file 명령을 위한 설정 파일. 이 파일은 file이 어떤 파일의 타입을 추측할때 증거가
되는 여러 가지 파일 형태에 대한 기술을 담고 있다.

/etc/securetty
root의 접속이 허용되는 터미널(secure terminal)을 정의한다. 일반적으로 가
상콘솔만이 목록에 들있어서 모뎀이나 네트웍을 파고 들어서 슈퍼유저의
권한을 획득하는 것을 실질적으로 불가능하거나 아주 어렵게 만든다.

/etc/shells
신뢰성 있는 쉘의 목록. 일반 사용자는 chsh 명령으로 로그인 쉘을 변경할 수
있으며 이때 여기에 기록되어 있는 쉘만이 가능하다. FTP서버 데몬인 ftpd는
사용자의 쉘을 검사해서 만일 /etc/shells에 나와있지 않은 쉘이라면 접속을
허용하지 않는다.

/etc/termcap
터미널의 특성에 대한 데이터베이스 파일. 여러종류의 터미널들이 어떤 escape
코드에 의해 제어되는지를 나타낸다. 프로그램들은 직접 escape코드를 출력해
서 특정한 타입의 터미널에서만 작동하도록 만들어지는 대신 적절한 코드를
/etc/termcap에서 찾도록 짜여진다. 그러면 결과적으로 대부분의 프로그램들이
모든 종류의 터미널에서 작동할수가 있게 된다.

6) /home
별다른 의미가 없는 디렉토리로 일반적인 리눅스에서는 사용자들의 홈디렉토리
들을 위치시키는데 사용한다.
다중 사용자 시스템이므로 각 사용자의 자료가 뒤죽박죽 섞이지 않도록 모든
사용자는 자신만의 공간을 갖고, 자료파일은 모두 그곳에 두도록 한다.
물론 디스크 구조에 따른 다른 디렉토리를 사용하는 경우도 많다.
레드햇 기반의 리눅스에서는 홈디렉토리를 ftp,httpd 등의 네트워크 서비스의
공용 홈디렉토리로 사용하고 있다

7) /lib
일반적인 리눅스시스템에서 사용하는 공용라이브러리 파일들이 위치한 곳이다.
실수로 파일들을 지우지 않아야 한다.
C 라이브러리 같은 경우 시스템이 더 이상 작동하지 않을 것이다.
이 디렉토리에는 다음과 같이 라이브러리 파일과 그 라이브러리 파일을 가르키
는 심볼릭 링크로 구성되어 있다.
파일은 라이브러리 이름과 버전 그리고 .so(shared Object)라는 문자로 구성되
어 있다.
윈도우에서의 DLL과 같은 기능의 파일이다.
cpp@ libext2fs.so.2.4* libnss_nis.so.2@
ld-2.1.1.so* libm-2.1.1.so* libnss_nisplus-2.1.1.so*
ld-linux.so.1@ libm.so.6@ libnss_nisplus.so.2@

ld 로 시작하거나 libdl 로 시작하는 파일들은 프로그램들이 실행될 때 필요한
라이브러리를 알맞게 찾아서 메모리에 올려주고 연결해 주는 로더이다.
이미 메모리상에 존재하는 공유 라이브러리를 메모리에 중복해서 올릴 필요없
이 같이 사용할 수 있어 메모리를 절약할 수 있다.
그러나 일부 특수한 프로그램들은 공유 라이브러리를 사용하지 않고 모든 기능
을 다 포함시켜 놓은 경우가 있는데 이런 프로그램들을 정적 컴파일 되었다고
한다.
정적 컴파일된 라이브러리는 당연히 파일 크기 자체도 크며, 모든 기능을 자체
적으로 갖고 있기 때문에 메모리 손실이 크다.
어떤 프로그램이 어떤 라이브러리와 동적링크가 되어 있는지는 ldd 명령을 사
용하여 확인할 수 있다.
다음과 같이 명령을 했을 때 나타나는 메시지에서처럼 라이브러리가 하나라도
없으면 그 명령은 실행되지 않는다.

# ldd /bin/cp
lib.so.6 => /lib/libc.so.6 (0x4001a000)
/lib/ld-linux.so.2 = > /lib/ld-linux.so.2 (0x40000000)

8) /mnt
디스크,CD-ROM, floppy등을 마운트 할 경우 기본적으로 적재할 위치로 사용된다.
그러나 굳이 /mnt를 사용하지 않아도 된다.

#ls -la /mnt
cdrom
floppy
smb
nfs


9) /proc
파일시스템은 가상적인 파일시스템을 담고 있다. 이것은 디스크상에 존재하는 것이 아니고
대신에 커널에 의해 메모리상에 생성되며, 시스템에 대한 정보를
제공하는데 이용된다.(원래는 프로세스에 관한 정보였으며 그 이유로 /proc이라 이름붙여졌다.)
여러 파일과 디렉토리들 중 중요한 것들에 대해서 아래에 설명한다.
/proc 파일시스템에 대한 더 상세한 내용은 proc 매뉴얼 페이지를 참고하라.

/proc/1
1번 프로세스에 대한 정보를 가진 디렉토리. 각각의 프로세스는 /proc 아래에
해당 프로세스 번호에 해당하는 이름의 디렉토리를 가진다.

# cat /proc/1/status


/proc/cpuinfo
타입, 제조사, 모델, 성능 등 프로세서에 관한 정보.

# cat /proc/cpuinfo
processor : 0


/proc/devices
현재 동작중인 커널에 설정되어 있는 디바이스 드라이버의 목록.


# cat /proc/devices


/proc/dma
지금 현재 어떤 DMA 채널을 사용중인지 보여준다.


# cat /proc/dma


/proc/filesystems
커널에 설정되어 있는 파일시스템들.

# cat /proc/filesystems


/proc/interrupts
어떤 인터럽트가 사용중이고 각각의 인터럽트가 얼마나 사용되었나를 보여준다

# cat /proc/interrupts


/proc/ioports
현재 어떤 I/O 포트가 사용중인지 보여준다.

# cat /proc/ioports


/proc/kcore
시스템의 실제 메모리에 대한 이미지. 이것의 크기는 메모리의 크기와 정확히
같지만 메모리를 억세스할 때에만 생성되므로 실제로 그렇게 많은 메모리를
차지하지는 않는다(만약 다른곳으로 복사하지 않는다면 /proc 아래에 있는 것
은 디스크 공간을 전혀 차지하지 않는다는 것을 상기하라).

** 절대 출력 하지 말것 - 책임 못짐 **

/proc/kmsg
커널이 출력하는 메시지. 시스템 호출 syslog도 이것들을 보여준다.

/proc/ksyms
커널의 심볼 목록.

# cat /proc/ksyms | tail -20


/proc/loadavg
시스템의 평균적인 부하; 순간 시스템이 얼마의 일을 해야 하는지를 나타내는
세 개의 지표로 표시된다.

# cat /proc/loadavg

/proc/meminfo
실제 메모리와 스왑 메모리의 사용량에 대한 정보.

# cat /proc/meminfo

/proc/modules
현재 어떤 커널 모듈이 로드되어 있는지를 나타낸다.

# cat /proc/modules

/proc/net
네트웍 프로토콜의 상태에 대한 정보.

# ls /proc/net/

/proc/self
/proc을 억세스하는 프로그램의 프로세스 디렉토리에 대한 심볼릭 링크. 두 개
의 프로세스가 /proc에 접근하면 각각은 서로 다른 링크를 갖게 된다. 이것은
주로 프로그램이 자신의 프로세스 디렉토리에 쉽게 접근하도록 하기 위함이다.

# ls /proc/self/


/proc/stat
시스템이 부팅된 이후 발생한 페이지 폴트의 횟수와 같은 시스템에 관련된 여
러 가지 통계 자료.


# cat /proc/stat


/proc/uptime
시스템이 작동해온 시간.

# cat /proc/uptime


/proc/version
커널 버전.

# cat /proc/version


이것 외에도 많은 시스템의 정보를 얻을 수 있다.

위의 파일들은 텍스트 파일이므로 그냥 읽을 수 있지만 어떤 경우에는 쉽게 이
해할 수 없는 형태로 되어 있다. 그런 경우 해당 파일을 읽어들여서 새로 포맷
하는 명령을 이용하면 쉽게 이해할 수 있다.
예를 들면 명령어 free는 /proc/meminfo를 읽어서 바이트로 주어진 용량을 킬
로바이트로 변환한다(게다가 약간의 정보를 추가하기도 한다).

10) /sbin
관리자의 권한에서만 실행할 수 있는 명령들로 파일시스템 처리 명령,네트웍
인터페이스 설정 명령,시스템 초기화 명령,커널 모듈 관리 등 주로 시스템 관
리에 필요한 명령들로 놓여 있다.


11) /tmp
수많은 프로그램들이 작업을 위해 임시 파일을 저장하기 위해 존재하는 디렉토
리이다. 시스템에서 관리하면 일반 사용자들도 파일 생성이 가능하다.

12) /usr
일반적으로 사용하는 명령어와 메뉴얼, 사용자들을 위한 각종 환경 설정과 X11
R6를 비롯한 여러가지 프로그램들이 위치하는 곳으로 루트디렉토리 만큼 많은
디렉토리를 가지고 있다.

# ls /usr/
X11R6/ dict/ etc/ i386-accel-linux/ include/ kde/ libexec/
lost+found/ sbin/ src/ bin/ doc/ games/ i486-linux-libc5/
info/ lib/ local/ man/ share/ tmp@

/usr/X11R6
X 윈도우 시스템의 모든 파일들. X의 개발과 설치를 단순화하기 위해 X의 파일
들은 시스템의 나머지 부분들과는 분리되어 있다. /usr아래에 있는 디렉토리와
유사한 구조가 /usr/X11R6 아래에도 있다.

/usr/X386
/usr/X11R6과 비슷하나 X11R5에 해당한다.

/usr/bin
대부분의 사용자 명령어. 몇몇 명령어들은 /bin이나 /usr/local/bin에 있다.

/usr/sbin
시스템이 부팅되고 작동하기 위해 필요한 필수 관리 명령을 제외한 데몬들이
위치하고 있다.

/usr/include
C 라이브러리 및 각종 추가 라이브러리의 헤더 파일이 놓여 있다.

/usr/lib
/lib에 들어 있는 라이브러리를 제외한 라이브러리들이 들어있다.
/usr/bin의 실행 라이브러리에 동적 링크된 라이브러리가 들어있다.

/usr/src
커널 소스가 들어있는 디렉토리이다.

/usr/doc, /usr/info,/usr/man
how-to 및 man page 등의 문서파일이 들어있다.

/usr/local
시스템에 관련된 프로그램들이 아닌 사용자가 소스를 가져다 컴파일한 프로그램들이
설치되는 공간이다.

13) /var
시스템이 정상적으로 작동할 때 수시로 변경되는 데이터가 저장된다. 이것은 각 시스템마다
달라서 다른 컴퓨터와 네트웍을 통해 공유되거나 하는 일은 없다.

/var/catman
포맷된 매뉴얼 페이지가 저장되는 곳. 매뉴얼 페이지의 소스는 보통 /usr/man/
man*에 있다; 일부의 매뉴얼 페이지는 /usr/man/cat*에 미리 포맷된 형태로 제
공되기도 한다. 그외의 매뉴얼 페이지들은 처음 사용자가 불러서 볼 때 포맷이
되며 이렇게 포맷된 것들은 /var/man에 저장되어서 다음에 볼 때에는 포맷되기
를 기다릴 필요가 없다.(/var/catman의 파일들은 흔히 임시 디렉토리들의 내용
이 삭제되는 것과 마찬가지 방법으로 삭제된다.)

/var/lib
시스템이 정상적으로 동작할 때 변경되는 파일들.

/var/local
/usr/local에 설치되어 있는 프로그램이 필요로 하는 변동하는 데이터.
/var/lock과 같은 적당한 곳이라면 /var아래의 다른 디렉토리도 사용될수 있다

/var/log
시스템의 로그가 쌓이는 곳이다. 이곳은 상당히 중용한 곳으로 유심히 보아야 할

디렉토리이다.

# ls /var/log/


/var/log/boot.log
부팅시 시작된 데몬들에 관한 정보가 들어 있습니다.

# cat boot.log | tail -10

/var/log/cron
크론의 메시지를 기록한다.

# cat /var/log/cron | tail -10

/var/log/dmesg
부팅시 컴퓨터 초기화부분의 메세지가 기록며, 마지막 부팅함 메시지를 담고 있다.
LiLo: 부분 나온 다음 부터 서비스 데몬 시작하기 전까지의 메세지가 기록된다.
bootup 메세지가 기록되므로 시스템이 부팅시 에러 유무를 확인 할수 있다.


# cat /var/log/dmesg | head -10

# cat /var/log/dmesg | tail -10


/var/log/secure
서비스를 받기 위하여 서버에 접속하는 모든 기록이 저장되는 화일이다.


# cat /var/log/secure | tail -10


/var/log/spooler
메일이나 뉴스 로그 화일이다.

/var/log/statistics
센드메일에서 사용하는 로그 화일이다.

/var/log/xferlog
ftp 엑세스 로그 화일이다.


# cat /var/log/xferlog | tail -5


/var/log/htmlaccess.log
아피치의 웹 엑세스 로그 화일로 rpm으로 설치시 여기에 엑세스 로고가 쌓인다.
/var/log/httpd/와 더불어 아파치와 관련된 로그 화일이다.

/var/log/maillog
센드메일의 로그 화일로 사용자가 메일관련해서 접속할 경우 이 화일에 기록된다.


# cat /var/log/maillog | tail -3


/var/log/wtmp
로기한 사람의 정보를 가지고 있는 데이터 화일 이다. 현재의 시스템을 사용하고 있는
사람의 정보를 담고 있다.
last와 lastlog 라는 명령어로 화일의 내용을 확인 할 수 있다.

화일 타입은 data 이므로 이것을 cat 해보면 아마도 후회 할것이다.


# file /var/log/wtmp
/var/log/wtmp: data


/var/log/lastlog
마지막에 로긴한 사람에 관한 정보가 기록되어 있다.

** cat /var/log/lastlog 하지 말것 **
화일 타입은 아스키 화일인데 깨짐.ㅡ.ㅡ)

/var/log/messages
시스템의 이상 유무에 관련있는 로그 화일로 시스템의 이상유무를 파악 할 수 있다.

# cat /var/log/messages | tail -5


/var/log/netconf.log
netconf 명령어를 수행 후에 나타나는 로그 화일이다.

# cat netconf.log


/var/log/maillog
센드 메일 엑세스 로그 화일이다.

# cat /var/log/maillog | tail -5


/var/run
다음번 부팅때까지 유효한 시스템에 관련된 정보를 담은 파일들.

/var/run/utmp
현재 로그인되어 있는 사용자에 관한 정보가 들어있다.

** cat /var/run/utmp 하지 말것 **

화일 타입은 data 이므로 이것을 cat 해보면 아마도 후회 할 것이다.


# file /var/run/utmp
/var/log/wtmp: data

그외에 서버의 프로세스 id가 기록되어 있다.


# ls /var/run/

/var/spool
메일, 뉴스, 프린터 큐, 그밖의 대기 작업(queued work)을 위한 디렉토리들.
각각의 스풀은 /var/spool 아래에 서브디렉토리를 가지고 있어서 일례로 사용

/var/spool/mail
사용자에게 온 메일을 보관하는 디렉토리이다.



3. 파일 시스템 마운트 테이블(/etc/fstab)

fstab에는 시스템 부팅시 자동으로 마운트되어야 할 항목과 옵션이 들어 있다.
자동 마운트 기능 외에도 마운트를 편리하게 하기 위한 옵션들이 존재한다.

/dev/hda1 / ext2 defaults 1 1
/dev/hdb1 /home ext2 defaults 1 2
/dev/hda6 /users ext2 defaults 1 2
/dev/hda5 /usr ext2 defaults 1 2

리눅스(Linux)의 장점

유연성에 따른 선택의 폭 확대

리눅스 소스코드는 수정한 내용을 소스코드와 함께 배포할 것을 전제로 누구나 소스코드를 마음대로 수정할 수 있도록 허용하는 GNU 공개 라이센스에 따라 보호되며 자유롭게 배포할 수 있습니다.
개방형 소스 개발 방법에 힘입어 리눅스 상에서 모든 x86 계열 프로세서, Alpha, SPARC 및 PowerPC 칩을 비롯하여 무수한 프로세서와 아키텍쳐가 지원됩니다. 또한 크기가 작기 때문에, PDA에서도 실행할 수 있습니다.
리눅스는 Web Server, Mail Server, Database Server를 비롯한 모든 Unix Application을 실행할 수 있도록 설계되어 있습니다. 리눅스는 광범위한 파일 시스템을 지원하기 때문에 특별한 하드웨어나 소프트웨어를 구입하지 않아도 같은 네트워크에서 다양한 제조업체와 모델의 컴퓨터 시스템을 사용할 수 있습니다. 또한 클러스터링 기능이 뛰어나므로 이전에 슈퍼컴퓨터에서만 가능하던 대량의 데이터 계산이나 검색 작업과 같은 프로세스를 처리할 수 있도록 확장 구성할 수 있습니다.
결과적으로 리눅스는 과학 및 공학 어플리케이션, 높은 가용성이 요구되는 웹사이트, 기업 데이터 센터, e비지니스 어플리케이션 같은 업무에 매우 적합한 운영 체제입니다.

강력한 보안기능

리눅스는 비지니스에 적합한 커널 수준 보안과 네트워크 및 어플리케이션 방화벽 구축 방법론 기능을 제공하는 운영 체제로, 시스템 운영자가 사용하는 네트워킹 보안 프로시저와 더불어 개방형 소스 제품에서만 제공할 수 있는 커널 수준의 보안 방법론이 사용자에게도 제공되는 반면, 타 운영체제는 사용자가 커널 수준에서 직접 코드를 작성할 수 있도록 허용되지 않습니다.
커널 수준 보안으로 침입자에게 약점을 제공하고 침투를 허용할 수 있는 서비스나 기능을, 사용자가 운영체제 내부에서 완전히 차단할 수 있는 이점이 있습니다.
또한 다른 운영체제는 실행하는 대부분의 보안 소프트웨어가 커널 위에 자리하여 이를 통과하는 프로세스를 모니터링하는 하향 접근 방식이지만, 리눅스는 시스템 운영자가 보안 문제 처리에 있어서 커널의 약점을 커널 수준에서 해결하는 상향 접근 방식을 지원합니다.
이 방식으로 보안 상의 약점을 겉만 패치로 가리는 것이 아니라, 완전히 보완해서 근본적인 문제를 해결할 수 있습니다. 리눅스는 커널 수준에서 강력한 암호화를 통해 네트워크 트래픽을 보호할 수 있으므로 가상 사설 네트워크 구현에 매우 적합합니다.

신뢰성

리눅스 운영체제는 수백만 개발자들이 참여하여 패치와 소스코드 작업을 수행하는 방식으로 개발/운영되므로 철저한 테스트와 디버깅 과정을 거치게 되며, 만약 버그가 발견될 경우에도 단 시간 내에 해결책이 나오게 됩니다.
새로운 서비스팩이나 패치가 나올 때까지 몇 개월을 기다릴 필요가 없습니다.
리눅스는 연속 가종 시간면에서도 매우 뛰어난 운영체제로서, 리눅스에서는 메모리를 격리하고 시스템 프로세서와 사용자 프로세서를 분리함으로써 운영 체제의 신뢰성이 매우 높습니다.

e-비지니스의 표준

e-비지니스를 수행하기 위해서는 다양한 통신기기들이나 디바이스들과의 원활한 접속이 지원되어야 하는데, 이 점에서 탁월한 성능을 지닌 리눅스는 e-비지니스의 표준 운영체제로 계속적으로 수요가 늘어날 것입니다.

안전성

안정성은 신뢰성과 대조되는 개념으로 운영체제의 제어를 벗어난 문제를 처리하는 능력을 말하며, 잘못된 커널 수준 코딩이나 정합성 손상으로 인한 시스템 중지는 신뢰성에 관한 문제인 반면, 시스템에서 실행 중인 다른 프로세스로 인한 시스템 중지나 성능 저하는 안정성에 관한 문제입니다.
시스템 운영자에게 운영체제의 안정성은 매우 중요한 관심 사항입니다. 리눅스에서는 시스템 안정성 향상에 기여할 수 있는 보호 메모리와 선제 멀티태스킹이 제공됩니다.
보호 메모리 하에서는 하나의 어플리케이션에 오류가 발생하여도 전체 시스템이 중지되지 않습니다. 각 어플리케이션은 메모리에서 고유한 개별 위치를 차지하며 사용자 프로세스는 운영 체제 프로세스와 완전히 분리되어 있어, 어플리케이션에서 오류가 발생하더라도 운영 체제는 전혀 영향을 받지 않습니다. 선제 멀티태스킹 기능은 한 어플리케이션에서 발생한 병목 현상으로 인해 시스템 전체가 악영향을 받지 않도록 보호하고, 사용자의 어플리케이션이 커널에서 사용되는 시스템 자원을 잠식함으로써 발생되는 여러 문제를 피하기 위하여 사용자 프로세스와 커널 프로세스 간을 명확하게 분리 운영되도록 합니다.

저렴한 총 소유 비용

초기에 리눅스는 무료 운영체제라는 이유로 신뢰성 면에서 오해를 사기도 했지만, 비지니스 환경에서 리눅스의 매력은 저렴한 비용이 아니라 낮은 유지보수 비용, 뛰어난 안정성, 다른 운영체제를 능가하는 성능에 있습니다.
리눅스는 다른 운영체제에서 할 수 없는 많은 작업을 수행할 수 있다는 점에다 저렴한 비용이라는 장점을 동반하고 있습니다.
리눅스에는 사용자 단위 라이센스나 사용료가 없고 구형 펜티엄 시스템에서도 잘 실행되기 때문에 적은 예산으로 고성능 네트워킹 인프라를 구축할 수 있습니다.

풍부한 기술 인력

전세계적으로 오픈 소스 커뮤니티를 구성하는 수많은 개발자들이 인터넷 상에서 활동하고 있으며, 대학을 졸업하는 기술 인력들이 리눅스 환경을 선택하는 비율이 급격하게 증가하고 있기 때문에, 미래의 인력 수급 전망도 밝습니다.

어플리케이션 가용성

많은 ISV들이 리눅스를 기본 플랫폼으로 포팅하고 있으며, 새로운 소프트웨어 개발자들도 리눅스 상에서 개발을 하고 있습니다.
그에 따라서 소규모 서버에서 대용량 서버에 이르기까지 사용할 수 있는 솔루션이 다른 플랫폼보다 다양해지고 있으며, 사용에 따른 비용도 상대적으로 낮으므로 솔루션 구현이 용이합니다.

세계에서 가장 빠른 속도로 성장하는 운영체제

많은 ISV들이 기본적으로 리눅스 환경을 채택하고 있으며, 새로운 소프트웨어 개발할 경우에도 리눅스 플랫폼을 이용하는 경우가 크게 증가하고 있습니다.


출처 -- ibm.com

리눅스(Linux)의 역사

리눅스의 역사를 알아보기 이전에 우선 UNIX와 GNU에 대한 역사를 알아야 한다.

UNIX의 탄생과 성장

1960년대 후반

1965년 MIT, AT&T 벨 연구소, General Electric에서는 Multics라는 실험적인 운영체제를 공동으로 개발하는 프로젝트를 진행하였습니다. 이 프로젝트는 멀티태스킹, 멀티유저를 지원하는 초기 형태의 시분할 운영체제를 만들고자 했던 것이었습니다. 그러나, Multics는 초기의 설계 목표와는 다르게 비대해지고 쓸모없는 운영체제로 개발되어갔고, 프로젝트는 좌초되기에 이르렀죠.

그러나, 이 프로젝트에 참여했던, 켄 톰슨과 몇몇 연구원들은 프로그래밍에 관한 연구를 효과적으로 수행하기에 적합한 환경을 만들어 보자는 의도에서 계속하여 운영체계 개발에 몰두 하였고, 그래서 탄생한 것이 초기 형태의 UNIX였습니다.

당시에는 하드웨어를 운영하는 프로그램을 그 하드웨어의 어셈블러로 작성하여 사용했는데, 유닉스 역시 미니 컴퓨터인 PDP-7에서 돌아가도록 만들어진 것이었으며, 어셈블리어로 작성 되어 있었습니다. 그러니 다른 기종에 이식하려면 그 기종에 맞는 어셈블리어로 다시 작성해야만 하는 불편을 겪어야 했죠. 이렇게 초기의 UNIX는 기계 의존적이며, 기종간에 호환성이 없는 그런 운영체제였습니다. 그리고 UNIX를 운영체제로 사용하던 PDP-7 또한, 많은 소프트웨어를 제공하지 못하는 상황이었습니다.

1973년

이러한 상황에서 데니스 리치(Dennis Ritchie)가 C언어를 개발함으로써, 어셈블리 언어로 되어 있던 UNIX는 C언어로 제작성 되어 다시 태어나게 되었습니다. 이제 UNIX는 이식성과 호환성있는 시스템으로서 사용자들로부터 큰 반향을 일으켰고, 벨 연구소를 중심으로 유닉스 사용자 그룹이 형성되며 빠르게 버전업 되면서 퍼져 나가게 되었습니다. UNIX는 주로 연구와 학습을 목적으로 대학이나, 연구소등에 무료로 배포되었고, 이를 이용하는 프로그래머들 또한 자연스럽게 서로에게 필요한 프로그램을 공유하는 공동체 분위기가 조성되어 있었습니다. Source 프로그램이 공개되어 있었던 UNIX는 많은 대학들과 연구원들에 의해 연구되어 마침내 상업 시장에 진출하기에 이르렀고, Berkeley Unix(BSD), SYSV와 같은 계열로 분화되고, SunOS, OSF/1,AIX, HP-UX, Solaris, IRIX, SCOUNIX등과 같은 다양한 버전의 유닉스 운영체제들을 탄생시키는 모체가 되었습니다.

1980년 대 초반

UNIX는 당시 가장 인기 있는 기종인 DEC의 PDP-11과 VAX를 주축으로 발전되고 있었습니다. 한편, MIT의 인공지능 연구소에서는 PDP-10에 탑재하기 위한 시분할 운영체제인 ITS를 개발하였는데, 연구내용을 상업화 하려는 움직임이 있었고, 이로 인해 분열의 조짐이 보이면서, 몇몇 핵심 연구원들은 상업적인 것을 목적으로 하는 회사로 떠나 갔습니다. 때마침, DEC이 VAX와 PDP-11을 주력제품으로 삼으면서, PDP-10을 단종시킴으로써 더 이상 ITS의 개발은 이루어질 수 없었죠.

GNU 프로젝트의 시작

1984년 1월

MIT 인공지능 연구소의 연구원으로 ITS 프로젝트에 참여하였던 리차드 스톨먼(Richard Stollman)은, 소스를 공개하지 못하도록 하는 분위기와 기술을 상업화 하려는 조류에 반감을 갖게 되었습니다. 그래서, 그는 새로운 시스템을 구상하게 되었죠. 그 모델이 된 것은 UNIX였습니다. 그는 C로 작성된, 그리고 모두에게 공개된 UNIX 시스템을 위해 GNU(GNU is Not Unix) 프로젝트를 시작하게 되었습니다. 그는 GNU 프로젝트의 결과물들이, 자신이 몸담았던 MIT로부터 저작권과 관련한 어떤 제약을 받게 될 것을 우려하여, MIT 연구원 직을 사직할 만큼, 완전히 자유로운 운영체제를 원하고 있었습니다.

1985년

GNU 프로젝트로 개발된 에디터인 Emacs에 대한 사용자들의 관심이 높아지면서 , 스톨먼은 GNU프로젝트 운영을 위해 FSF(Free Software Foundation,자유 소프트웨어재단)을 설립하였습니다. 개발이 진행된 프로그램들은 GNU프로그램들의 배포 라이센스인 GPL하에서 판매되었으며, 판매 수익은 프로젝트를 운영하는데 사용되었습니다. 모든 GNU프로젝트는 FSF를 중심으로 진행되어 갔습니다.

1990년

GNU 프로젝트는 거의 완성단계에 이르렀으나, 운영체제에서 핵심이 되는 커널이 빠져 있는 상태였습니다. 스톨먼은 Mach를 기반으로 한 커널인 'Hurd'라는 이름의 커널을 개발하기 시작하였으나, 이미 공개된 프로그램들에 대한 지원 등 여러 가지 이유로 GNU 커널의 개발은 좀처럼 진척되지 않았습니다.

리눅스의 등장

1991년

이즈음, 핀란드의 헬싱키라는 곳에서는 한 대학생에 의해 GNU시스템에 적합한 커널이 개발되고 있었는데, 이것이 바로 리누스 토발즈의 리눅스였습니다. 당시 21살의 대학생이었던 리누스는, 앤디 타넨바움(Andy Tanenbaum)교수가 학생들의 학습을 주 목적으로 개발한 미닉스(MINIX)를 사용하던 중, 유닉스와 호환되는 공개된 운영체제의 개발 계획을 MINIX사용자 모임에 발표하였습니다. 그는 개발 할 운영체제가 "단지 취미이며 GNU처럼 거대하거나 전문적인 것은 아니다"라고 프로젝트 초기의 의도를 밝혔습니다. 그래서, 초기의 리눅스는 이식성이 고려되지 않은, 다만 i386계열에서 운영되는 유닉스 호환 운영체제를 목표로 하는 프로젝트였습니다. 초기 버전 0.01은 가장 기본적인 커널만을 포함하고 있었으며, 실행조차 되지 않는 수준이었습니다. 얼마 후 리눅스 공식 버전인 0.02가 발표 되었는데, bash(GNU Bourne Again Shell)와 gcc(GNU C 컴파일러)정도가 실행될 수 있는 수준이었습니다.

GNU와 함께 하는 리눅스

1992년

3월 리눅스는 0.95로 버전업 되었고, 인텔 x86칩에서 사용할 수 있었고, 그래픽 사용자 인터페이스가 추가 된 것이었습니다.
GNU커널로 개발 중이던 Hurd의 개발이 순조롭지 않았던, 스톨먼과 FSF는 유닉스 커널과 호환 가능한 커널인 리눅스를 GNU시스템의 커널로 채택하기로 하였습니다. 리눅스는 강력한 GNU C 컴파일러인 gcc로 컴파일된 많은 응용프로그램들을 가지게 되었고, 둘의 결합으로 GNU시스템은 완전한 구조를 갖추게 되었습니다.
리눅스의 커널부분은 리누스 주도 하에 계속 개발되었는데, 리누스는 최대한 확장 가능한, 즉 사용자에게 제어권이 있으며, 어떠한 인터페이스에도 종속되지 않도록 개발을 이끌고자 하는 의지가 있었습니다. 리누스는 그의 글을 통해서 리눅스의 성공의 원인을 다음과 같이 밝히고 있습니다. 리눅스의 성공은 훌륭한 설계 원칙과 좋은 개발 모델 때문이라고…

1994년

1년 6개월여 만에 버전 1.0 이 발표 되었고, 이 버전에는 네트워킹 기능 추가 되어 있었습니다.

이즈음, 리눅스에 확실한 수익모델이 있다고 판단한 밥 영과 마크유잉은 레드햇사를 설립하고, 최초로 자사에서 패키징한 레드햇의 최초 배포본을 발표하게 되었습니다.

1995년

리눅스는 더 이상 i386계열에서 돌아가는 학습용 운영체제가 아닌, 인텔, 디지털, 썬 스팍 프로세스에도 포팅됨으로 그 영역을 넓혔으며, 알파프로세서용의 64비트 리눅스도 등장하였습니다.

1996년

버전 2.0이 발표 되었는데, 여러 프로세서를 한 번에 사용할 수 있는 컴퓨팅 파워가 추가되었습니다.

1998년

만여명의 프로그래머가 뉴스그룹에서 코드 향상과 테스팅에 참여하였습니다.

1999년

SMP 기능의 공식 지원으로 최대 16개까지의 CPU장착 가능해지고, 최대 동시접속 사용자수 2048명까지 지원하는 시스템이 되었습니다.

2003년 현재..

다양한 분야에 리눅스가 도입이 되고 있으며, IBM과 SUN이라는 거대 기업을 지원을 받으면서 Unix와 MS의 명성에 도전을 하고 있습니다.
국내 최초로 얼마전 금융권에 리눅스를 도입하기 시작하는등.. 국내에 다시 리눅스 열풍이 일지 않을까 하는 생각을 해 봅니다.

출처 -- wowlinux.co.kr

리눅스의 특징

리눅스의 특징 (장점)

1. 리눅스는 유닉스와 완벽하게 호환가능합니다.
리눅스의 보급이 다른 OS보다 빨랐던 이유중의 하나는 유닉스의 호환이라는 점입니다. 유닉스는 워크스테이션용 OS로 대학이나 기업, 연구기관에서 주로 사용됩니다. 하지만 뛰어난 성능에 비해 가격면에서 개인이 이용하기엔 무리가 있었습니다. 하지만 최근 PC 기능의 향상으로 PC와 워크스테이션사이에 성능 차이가 많이 줄어들면서 높은 성능인 유닉스를 개인적인 용도로 거의 무료로 이용할 수 있게 된 것이 리눅스의 인기비결 중 하나입니다.

실제로 프로그램을 개발하는 경우가 아니면 리눅스는 유닉스라고 할 수 있습니다. 유닉스용 프로그램은 별도의 수정없이 리눅스에서 동작할 수 있으며 이것은 유닉스의 성능과 역사가 리눅스에서 활용될 수 있다는 것을 의미합니다.

2. 리눅스는 공개운영체제입니다.
리눅스의 개방성 또한 큰 장점이라고 할 수 있습니다. 많은 우수 인력이 확보되어 있기 때문에 우수한 소프트웨어 개발이 가능하고 여러 배포판 개발 업체들이 있기 때문에 사용자에게 선택권이 주어집니다. 윈도우 NT의 경우 개발자가 Microsoft 밖에 없기 때문에 Microsoft가 NT의 문제를 해결해주지 않으면 다음 단계로 진행 할 수가 없습니다. 그러나 리눅스는 지금까지의 배포본 제공업체가 문제에 대응하지 않으면 다른 배포본으로 바꿀 수 있고 소스코드가 공개되기 때문에 우수한 코드만이 살아남을 수 있게 됩니다.

완전 무료라는 장점과 , 유닉스 호환 그리고 높은 품질과 기술 지원, 다양한 배포 패키지등의 이유로 대학기관과 기업등이 리눅스 사용을 해왔습니다.또한 리눅스는 멀티유저, 멀티 태스킹등으로 보안성이 높은 파일을 관리하고 시스템이 풍부한 네트워크를 지원합니다.

3. 리눅스는 PC용 OS보다 안정적입니다. 일반PC는 업무가 끝나면 전원을 끄지만 리눅스는 네트워크사용을 전제로 설계되었기에 불가피한 경우를 제외하고는서버가 항상 가동되어 매우 안정적이라고 할 수 있습니다. 또한 네트워크 지원이 풍부하고 다중 작업도 가능하며 한 대의 리눅스 시스템을 많은 작업자가 동시에 사용할 수도 있습니다.

4. 리눅스는 무료입니다.

5. 리눅스는 하드웨어의 기능을 알차게 사용합니다.
다른 진보된 운영체계보다 비교적 적은 양의 메모리를 필요로 합니다. . 리눅스는 2메가 램만 있으면 시스템을 운영할 수가 있고,만약 4메가 램만 있으면 여유롭게 X Window와 Emacs등을 실행 할 수 있습니다. 그래서 8메가 램만 있으면 개인이 사용하기에 충분하고, 16메가 이상이 되면 여러 사람이 사용할 수 있습니다. 리눅스는 하드 디스크의 일정 부분을 스왑이라는 방식으로 램처럼 사용하는 기법을 도입하고 있기 때문에, 램이 부족한 경우라도 스왑 영영을 늘리는 것으로 부족함을 채울 수 있습니다.

6. 리눅스는 강력한 네트워크를 구축할 수 있습니다.
리눅스의 또 다른 특징으로는 이미 하나의 프로세스가 실행되고 있는 가운데 또 다른 프로세스가 진행될 수 있다는 것입니다. 리눅스의 기본 설계 목적이 다중 사용자와 멀티태스킹인 유닉스를 기반으로하였기 때문에 이는 당연한 결과라 할 수 있습니다.

7. 다양한 응용프로그램을 제공합니다.
일반적으로 알려져 있는 바와는 달리 사실 리눅스용 프로그램은 생각보다 많이 존재합니다.

8. 리눅스는 다중작업이 가능합니다.

9. 리눅스는 인터넷의 모든 기능을 지원합니다.
리눅스를 이야기 할 때면 인터넷을 빼놓을 수 없습니다. 리눅스는 탄생 단계부터 인터넷을 이용하였으며 모든 개발이 인터넷으로 연결되어 이루어집니다. 인터넷이 없었다면 리눅스의 존재는 없었을지도 모릅니다. 리눅스 개발자들이 모두 인터넷 사용자들이므로 리눅스가 인터넷의 모든 기능을 지원하는 것은 어쩌면 당연한 일일 것입니다.

인터넷용 프로그램인 웹 브라우저, 메일(pine, elm) 뉴스(tin, nn) 등 외에도 웹서버 (Apache,CERN), 메일서버 (sendmail, Smail), 뉴스서버 (INND, C-News), DNS(Domain Name System) 서버, IRC 서버 등 거의 모든 인터넷서버의 기능을 갖추고 있고, 방화벽(Firewall) 으로도 사용할 수 있습니다. 인터넷용 시리얼 프로 토콜인 PPP, SLIP, CSLIP 등도 지원됩니다. 전세계의 상당수의 인터넷 서비스 제공자 (ISP: Internet Service Provider)가 리눅스를 인터넷 서비스에 사용하고 있으며 이들을 위한linux.admin.isp라는 뉴스그룹도 있습니다.
이처럼 많은 장점을 가진 리눅스는 윈도우 시장을 점차 잠식하고 있습니다. 하지만 리눅스의 모든 것을 다 좋다고 할 수는 없을 것입니다. 리눅스의 발전을 위해서는 네트워크 보안 문제 및 사용자 인터페이스 문제가 해결되어야 합니다. 비주얼툴 등의 특정 분야에도 부족하다고 여겨지는 부분이 있지만 외국에서는 이미 하나하나 개선되어 나가고 있는 실정이며, 우리나라의 많은 리눅스 관련 기업들도 리눅스 한글화와 인터페이스 문제를 해결하는 과정에 있습니다.


리눅스의 단점

1. 공개운영체제이기 때문에 문제점 발생시 보상받을 수 없습니다

2. 한글입출력이 어렵습니다.

3.공개운영체제이기 때문에 보안에 취약할 것이라는 선입관이 있습니다. 리눅스는 그 출발에서부터 프로그램 자체에 대한 정보의 완전공개에 바탕을 두었고, 유연하고 강력한 현재의 운영체제로 탈바꿈할 수 있었던 이유도 바로 GNU프로젝트에 의한 것이었습니다. 그 이면에는 공개이기 때문에 보안이 취약하다는 의미보다는 공개이기 때문에 신속한 보완이 가능하다는 뜻을 내포하고 있다고 생각합니다. 즉, 수많은 프로그래머들이 리눅스를 연구하고 있기 때문에, 어떠한 문제가 발생하였을 경우, 신속하게 해결될 수 있습니다. 또한 공개 운영체제이기 때문에 문제점 발생시 보상받기 어렵다는 것은 더 이상 큰 문제가 아닌듯 싶습니다. 리눅스의 급부상으로 많은 리눅스 관련업체들이 생겨나고 서비스를 제공하고 있기 때문에 이 문제는 점차 해결되고 있습니다.

타 운영체제와의 비교

이 부분은 개인용PC의 운용체제의 대표격인 윈도우98과 리눅스 그리고 서버 운영체제로써의 윈도우 NT를 비교해 봄으로써 독자들이 리눅스에 대한 개념을 보다 쉽고 명확하게 이해하도록 하였습니다.

* 윈도우 95/98 vs. 리눅스

지금까지 리눅스 공동체는 윈도우 시스템보다 리눅스가 우세하다는 확신이 있었지만 그것을 증명할 만한 자료를 확보하는 일은 어려웠습니다. 운영체계 선택시에는 성능 뿐 아니라 비용, 신뢰성, 가용성 , 확장성등을 고려해야 하기 때문입니다. 리눅스를 사용할 때 윈도우체계를 알고 있다면 리눅스를 더 빨리 배울 수 있습니다.

리눅스에도 윈도우95 / 98처럼 윈도우 중심의 GUI(Graphic User Interface) 환경이 제공됩니다. 사용자의 편의를 위해 생긴 것 만큼 화면구성이나 기능은 같다고 할 수 있습니다. 컴퓨터를 처음 시작하는 초보자에게는아무래도 텍스트방식이 어렵게 느껴지기 때문에 윈도우즈가 더 쉽다고 생각할 수 있습니다. 사실 초기 리눅스의 X윈도우는 지금보다 어려웠다고 할 수 있습니다. 하지만 하나하나 배워가면 리눅스가 가지고 있는 강력한 기능들을 자기 것으로 소화시킬 수 있는 능력을 갖게 될 것입니다. 리눅스나 윈도우즈 95 / 98이나 구성은 비슷하지만 하나는 공개이고 다른 하나는 비공개라는 점이 큰 차이라고 할 수 있습니다. 리눅스의 X윈도우와 윈도우즈 95 / 98을 비교하면 다음과 같습니다.

리눅스의 X윈도우는 독립적인 시스템이라 할 수 있습니다. 윈도우 95 / 98이 처음부터 GUI환경으로 설정되어 있고 사용자는 배경화면이나, 글꼴 등을 바꾸는게 전부인데 반해 리눅스는 Afterstep, Enlightenment, KDE(K Desktop Environment), GNOM(GNU Network Object Model Environment), Windowmaker등 여러가지 윈도우 관리자를 설정할 수 있으며 사용자의 임의대로 조작할 수도 있습니다. 리눅스를 이용하면 윈도우즈가 할 수 있는 일들 뿐 아니라 그외의 여러가지 일들도 할 수 있습니다. 물론 공개용 프로그램들을 이용해서입니다. 또한 리눅스는 X매니저 같은 프로그램으로 원격지에서도 X윈도우 화면을 띄울 수 있습니다.

최근에 MS사에서는 윈도우2000이라는 야심작을 발표했습니다. 윈도우2000은 썬이 주도해온 유닉스 시장을 목표로 하고 만들어진 프로그램입니다. 이 제품은 CPU가 8개 까지 지원되고 메모리가 8GB까지 확장 가능하며 이 제품의 등장으로 앞으로 유닉스 시장의 치열한 경쟁이 예상됩니다. MS사는 윈도우2000업그레이드 행사 등을 통해 윈도우2000의 시장 조기 진입을 위해 공격적으로 나섰습니다.

이러한 윈도우2000의 등장에 리눅스 업계도 긴장을 하고 있습니다. 윈도우2000은 사용자와 기업의 전산환경에 큰 영향을 미치리라 기대되며, 무엇보다 디렉터리 서비스가 내부에 포함되어 있는 등 다양한 부가기능 서비스를 갖추었고, 성능이나 용량면에서도 괄목할 만한 발전을 이룬 것으로 평가받고 있습니다. 한 쪽에서는 윈도우2000이 유닉스와 경쟁가능한 제품이 될 것이라고 하고 있지만 다른 한쪽에서는 여전히 윈도우2000에 대해 신뢰하지 못한다는 반응도 보여지고 있습니다.

* 윈도우 NT vs 리눅스

Microsoft사가 세계 서버시장을 장악할 야심을 키우며 만든 프로그램이 NT입니다. NT는 다른 윈도우즈들에 비해 확실히 개선된 보안시스템을 가지고 있으며 네트워크 보안체계도 잘되어 있습니다.그러나 NTFS를 사용하지 않는 경우 보안에 다소 문제가 있습니다. 이와는 반면 리눅스는 다중 사용자 체제이므로 root로 로그인하지 않으면 모든 사용자는 보호모드에서 작동하므로 바이러스에 노출되지 않습니다. 또한 리눅스는 소스코드가 공개되어 있기 때문에 이러한 문제를 직면하게 될 경우에 보다 쉽게 문제를 해결 할 수 있게 됩니다. 소스가 널리 공개,배포되어 있으면 어떠한 문제점이든 발견되는 즉시 해결책을 찾을 수 있게 될 것입니다.

NT와 리눅스의 성능을 비교해본다면 다음과 같습니다. 먼저 가격면에서 거의 무료나 다름없는 리눅스에 비해 윈도우즈NT는 $800이상을 들여야만 설치 할 수 있습니다. 최소 4MB의 램과 40MB의 하드디스크 스페이스를 가지고 있는 386시스템이면 리눅스의 설치는 가능하지만 NT의 경우 16MB이상의 램과 110MB의 하드디스크 스페이스를 가진 486이상의 시스템을 가지고 있어야만 합니다. 그 밖에도 리눅스가 잘 알려졌듯이 안정적인 프로그램인 반면에 NT는 적은 메모리와 라이브러리 충돌로 시스템 다운을 야기시킵니다. 버그가 발견되면 리눅스는 적어도 하루 안에 문제점을 해결 할 수 있는 반면에 NT는 6개월에서 12개월이 지나야 Service Patch가 나옵니다. 물론 리눅스에서도 인터페이스와 한글지원에 관한 문제 등은 조속히 해결되어야 할 과제입니다.

윈도우 NT가 기업환경에 지속적으로 존재하는 이유는 정보 기술과는 관련이 없다고 보아도 무방할 것입니다. 기술적인 관점으로 볼 때, 윈도 NT 는 어떤 유닉스 운영체제와도 비교할 수 없습니다.

한국의 리눅스

90년대 초반 한국에 처음 소개된 이래로 리눅스는 눈부신 성장 및 발전을 가져왔습니다. 이제는 국내의 리눅스 관련 기업들이 공동의 목표를 가지고 움직이고 있으며 데스크탑 시장의 움직임을 보면 참으로 반가운 일이 아닐 수 없습니다. Linus Torvalds의 "앞으로 Linux 커널에 큰 변화는 없다"는 말처럼 리눅스는 이미 성숙단계에 접어들고 있습니다. Linux만의 새로운 패러다임을 열어 나갈 시대가 온 것입니다.



출처 : www.linux.co.kr

리눅스의 역사와 발전과정

리눅스의 탄생

리눅스가 등장하게 된 것을 거슬러 올라가 보면 대표적인 서버 운영체제인 유닉스가 개인용 운용체제로 거듭난 것이라 할 수 있습니다. 1991년 리누스 토발스라는 헬싱키의 대학생이 개인용 PC에서 멀티태스팅을 구현하기위한 운영체제를 연구하였고, 그 연구결과를 인터넷상에 공개해 수많은 프로그래머들이 새로운 기능을 보강하여 오늘날의 리눅스체제를 만들어 내었습니다. 그러면 여기서 리눅스의 출현과정을 자세히 살펴보겠습니다.

유닉스의 등장

리눅스의 모태가 되는 유닉스는 다중 사용자와 멀티태스킹 기능을 효과적으로 수행할 수 있는 운영체체를 만들기 위한 프로젝트에 참여한 미국 벨 연구소의 켄 톰슨 (Ken Tompson)에 의해 1969년에 개발되었습니다. 그러나 유닉스는 PDP-7 기종에 맞게 설계된 어셈블리 언어(특정한 기종에서만 사용될 수 있는 언어)였기 때문에 다른 기종의 컴퓨터에서는 해당기종의 어셈블리 언어를 이용해서 운영체제를 다시 작성해야 한다는 불편함이 있었습니다. 즉 기종간의 호환성을 만족시키고 프로그래밍 작업에 통일성과 효율성을 확보할 수 있는 방법을 모색해야 했습니다. 이러한 문제는 1971년 벨 연구소의 노력으로 해결되었는데 이들은 상이한 기종간의 이식성을 높이기 위해서 어셈블리 언어가 아닌 새로운 방식의 프로그래밍 언어를 고안하였습니다. 이 새로운 언어는 CPU와 직접 연결되는 것이 아니라 간접적인 방식으로 작성된 소스코드를 특정한 기종에 맞게 최적화시키는 과정을 통해서 실행코드로 만드는 설계구조를 가지고 있었습니다. 다시 말해서 다른 기종의 컴퓨터에서도 해당 컴퓨터에 맞게 컴파일하는 과정만으로 동일한 운영체제를 사용할 수 있게 되었던 것입니다. 어셈블리 언어로 작성되었던 유닉스는 데니스 리치가 개발한 C언어로 다시 쓰이게 되었습니다. C언어의 특징은 어셈블리 언어처럼 하드웨어를 직접 통제할 수 있을 뿐만 아니라 특정한 하드웨어에 관계없이 프로그램을 작성할 수 있는 상반된 두가지 성질을 모두 가지고 있습니다. 따라서 C언어로 작성된 소스코드는 필요할 때에 이식될 하드웨어 환경에 맞게 다시 컴파일하는 과정을 통해서 다른 기종에서도 사용될 수 있게 되었습니다.

유닉스의 진화

최초 유닉스의 본래 복적은 자료와 정보의 공유를 위한 것으로 여러 사람들이 하나의 자료를 동시에 활용할 수 있게 하는 것이었습니다. 유닉스가 계속적으로 발전할 수 있었던 이유는 벨 연구소가 대학과 연구기관에 대한 관대한 라이센스방침을 두어 이들이 유닉스를 이용한 연구 개발을 할 수 있었기 때문이었습니다. 1969년 버클리 대학에서는 유닉스에 네크워크 기능를 집중적으로 보강하는 연구를 하여 BSD라고 명명하였습니다. 통신 기능과의 결합으로 더욱 강력해진 유닉스는 보다 유력한 운영체제로서의 위치를 계속 확대해 나가게 되었습니다. 한편 AT&T에서도 System V개발하였습니다. BSD와 System V는 유닉스의 가장 중요한 버젼으로 이어져 오고 있습니다.

리눅스 탄생

한편 개인용 PC 운영체제인 MS-DOS는 워크스테이션용으로 개발된 유닉스에 비해 상대적으로 많은 한계를 갖고 있었기 때문에 유닉스를 PC버젼으로 개발하려는 노력이 있었는데, 마이크로 소프트사의 제닉스와 네덜란드 브리제 대학의 전산과 교수, 앤드류타넨바움이 만들어낸 미닉스 (MIMIX)가 있습니다. 설계초기에 유닉스를 그 모형으로 한 미닉스는 PC에서 멀티태스팅을 구현하기에 적절한 운영체제였고 학생들에게 소스코드와 함께 무료로 배포되었습니다. 그 결과 많은 사람들로부터 보다 나은 운영체제로 발전시키기 위한 제안을 받았지만 그는 그들의 제안을 받아들이지 않았습니다. 그리고 이 역할을 대신한 사람이 바로 리눅스 창시자인 헬싱키 대학의 리누즈 토발즈(Linus B.Torvalds)로 그는 유닉스의 커널을 PC에서 사용가능한 커널로 만들었습니다. 커널은 운영제체의 핵심으로 모든 작업에 우선하여 작동하는 프로그램으로 인터럽트 처리, 프로세스 관리, 메모리 관리, 파일 시스템 관리, 프로그래밍 인터페이스 제공등 운영체제의 기본적인 기능들을 제공하는 핵심부문입니다. 커널은 운영체제에서 가장 중요한 요소로 운영체제의 기능 향상은 주로 커널에서 이루어집니다. 여기서 한가지 짚고 넘어가야 할 것은 리눅스의 커널과 배포판 개념의 차이입니다. 배포판은 리눅스의 보급을 보다 손쉽고 효과적으로 하기 위해 커널과 함께 여러 가지 유용한 프로그램들을 함께 모아서 제공하는 형태를 말합니다. 커널은 리누스 토발즈를 비롯한 수 많은 개발자들에 의해 이루어지고 있습니다.

1991년 리누즈 토발즈에 의해 최초 리눅스 0.01버전이 제작되었을 때 리눅스의 모습은 하드디스크 드라이버와 파일 시스템 뿐 이었으며 그 기능 또한 아주 미약했습니다. 때문에 0.01버전은 발표되지도 않았으며, 최초로 공개된 0.02버전은 bash, gnu-make, gcc, compress 등을 실행 할 수 있을 정도로 발전 하였지만 이때까지도 리눅스는 교육용 이상을 가치를 갖지 못하는 단순한 형태였습니다. 그러나 인터넷에 공개되자 수많은 개발자들의 호기심을 샀고 이때부터 리눅스는 거듭나기 시작했습니다.

리눅스의 발전

여기서 짚고 가야 할 한가지 중요한 사항은 리누스 토발즈가 개발한 것은 컴퓨터를 다양하게 활용할 수 있도록 지원할 수 있는 시스템 차원의 통합적인 운영 환경을 뜻하는 것이 아니라 리눅스 커널입니다. 따라서 리눅스 운영체제는 다른 프로그래머들이 개발했다는 것을 뜻합니다
리눅스가 여타 운영체제와 다르게 엄청난 도약을 하게 된 계기는 Free Software Foundation의 회장인 리챠드 스톨만입니다. 그는 소프트웨어는 사용하는 모든 이들이 자유롭게 사용할 수 있도록 해주어야 한다는 철학을 가지고 있었습니다. 처음 그가 소프트웨어의 자유로운 공유와 배포를 주장했을 때 주위에서는 그를 멸시하고 공격했었습니다만 지금 상황은 완전히 바뀌어 있다고 할 수 있습니다. 리누즈 토발즈가 커널을 개발해 현재 리눅스 시스템에 씨를 뿌렸다면 리차드 스톨만은 그 씨가 뿌려지기 위한 환경을 개발 한 사람이라고 할 수 있습니다. 실제로 전세계 리눅서들이 리누즈 토발즈를 리눅스의 아버지, 리차드 스톨만을 리눅스의 성자라고 부르는 이유가 여기에 있습니다. 그의 얘기를 할 때 빼놓을 수 없는 얘기는 GNU선언문에 관한 것입니다. "Gnu's Not Unix"라는 전 세계적인 프로젝트 그룹은 소프트웨어의 자유정신과 상징을 나타내고 있습니다.

GNU 선언문 (The GNU Manifesto)

저작권과 사용 허가에 대한 본 사항이 명시되는 한, 어떠한 정보 매체에 의한 본문의 전재나 발췌도 허용되며 상업적 이용을 포함할 수 있는 지속적인 배포에 따른 사용상의 모든 권리는 문서의 취득자에게 조건없이 양도된다. 1993년의 개정 이후, GNU 선언문은 영구 보존문으로 남아있게 될 것이며 원문에 대한 어떠한 형태의 수정과 첨삭도 허용되지 않는다.
Original Copy: The GNU Manifesto
Copyright (C) 1985, 1993 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA
Korean Translator: Ha Jaewon 하재원
Amendment Translator: 1998 Song Changhun 송창훈 chsong@cyber.co.kr

이는 컴퓨터 소프트웨어를 상호협력에 의해 지속적으로 발전시켜 나갈 수 있는 열린 형태로 만들기 위해서, 가장 근본이 되는 프로그램인 운영체제의 상업적 독점성을 없애려고 한 시도였습니다. 다시말해 프로그램을 무료로 제공하고 프로그래머들은 입수한 프로그램을 수정하고 재배포할 수 있는 권한도 얻게 된다는 의미였습니다.

1991년 7월부터 인터넷의 미닉스 뉴스 그룹에 그의 프로젝트를 위한 여러 가지 사항들을 메일링하기 시작한 리누즈는 그 자신의 유닉스라는 의미인 LINUX를 공식적으로 발표하였습니다. 이후 수많은 전세계 프로그래머들이 인터넷을 통해서 리누즈의 프로그램에 참여하게 되었고 이로 인해 커널 이외의 많은 프로그램들이 함께 통합된 운영체제로서의 모습을 완성시킬 수 있었습니다. 그리고 마침내 리눅스는 PC환경에서 멀티태스킹을 지원하는 운영체제로 거듭나게 되었습니다.


출처 : www.linux.co.kr