본문 바로가기

IT인생_스크랩/기타

Cygwin 설치 및 기본 설정

Cygwin 설치 및 기본 설정



1. 소개
Cygwin은 Cygnus 라는 회사에서 처음 개발되었는데 현재는 Redhat에서 인수하여 지속적으로 버전업을 하고 있다.

Cygwin은 크게 두 부분으로 이루어져 있는데, 하나는 하부 유닉스 응용프로그램 인터페이스(substantial Unix API)를 제공하는 Unix emulation layer로 DLL(cygwin1.dll) 이고, 다른 하나는 유닉스나 리눅스를 사용하는 느낌을 주도록 Unix에서 포팅된 각종 툴(tool) 모음이다.

cygwin을 이용하면 굳이 듀얼 부팅의 방법을 쓰지 않더라도 POSIX 호환을 개발 환경을 만들수 있을 뿐더러 Linux 에서 사용할 수 있는 다양한 서비스들인 telnet, apache 이용해 볼수 있다. 물론 소스 파일을 다운로드하여 직접 컴파일, 설치하여 사용?수도 있다. 모든 Windows 시리즈에서 실행될 수 있지만 Windows CE 에서는 작동하지 않는다.

Unix, Linux 의 명령 체계와 비슷한 명령체계를 가지지만, Linux 나 Unix 를 배우기 위함이라면 Cygwin은 개인적으로 비추천이다. 운영되는 방식은 전혀 딴판이기 때문이다. Linux 를 잘 다루는 사람도 Cygwin 사용 방식에 익숙해 지려면 꽤 많은 시간이 걸린다. 어쩔수 없이 Unix 환경이 필요하지만, Windows 를 버릴수 없는 사람에게 꼭 맞는 대안으로 생각된다.

여기서는 이런 Cygwin 을 이용하여 작업을 원활히 하기위한 기본적인 설치 방법을 다루기로 하겠다.

2. 설치 

2.1 설치파일 다운로드
http://cygwin.com 를 들어가서 설치파일인 setup.exe 을 다운로드 받는다.

2.2 인스톨 방법 선택
3가지 설치옵션이 나타나는데 어렵지 않은 영어이기 때문에 쉽게 이해할 수 있을 것이다.

  • Install from Internet : 인터넷을 통해 설치 패키지를 다운로드한 후, 곧바로 Cygwin 을 설치하는 옵션
  • Download from Internet : 설치는 하지 않고 단순히 인터넷을 통해 설치 패키지를 자신의 HDD에 다운로드하는 옵션
  • Install from Local Directory : 이미 다운로드 받아둔 패키지 파일들을 사용하여 Cygwin을 설치할 때 선택하는 옵션

우리는 일단 하드디스크에 모든 패키지를 저장하여 놓고 필요할때 인스톨 해서 쓰기 위해 패키지를 인터넷에서 하드디스크로 다운로드 받아 놓을 것이다.

사용자 삽입 이미지

Download from internet 을 선택하고 다음을 눌러주자.



2.3 저장 디렉토리 선택
패키지 를 다운로드 받을 디렉토리를 정하는 화면이다. 자신에게 알맞는 디렉토리를 선택하고 다음으로 넘어가자.

사용자 삽입 이미지


2.4 다운로드 방법 선택
패키지 다운로드의 방법을 설정하는 화면이다. 자신에게 맞는 방법을 선택하고 넘어가자.
사용자 삽입 이미지
보통은 Direct connection 을 사용한다.

2.5 ftp 서버 선택
패키지를 다운로드 받을 ftp 를 정하는 화면이다. 속도가 잘나오는 곳을 선택해 주고 넘어가자.

사용자 삽입 이미지
우리나라의 경우 kaist 쪽이 속도가 잘 나오는 편이다.

2.6 다운로드 패키지 선택
받을 패키지를 선택하는 화면이다. 모두 install 로 선택해주고 다음으로 넘어가자.

사용자 삽입 이미지
패키지를 다운로드 받는데 시간이 좀 걸리니 차라도 한잔 하면서 기다리자.

2.7 cygwin 설치
다운로드를 다 받고 나면 다운로드가 완료 되었다는 팝업창이 뜨게 된다. 메세지를 확인하고 다시 setup.exe 파일을 실행 시켜 처음의 화면으로 돌아가 인스톨 방법에서 install from Local Directory 를 선택한다.

사용자 삽입 이미지

2.8 설치 디렉토리 선택
cygwin을 설치할 디렉토리를 선택해준다. 이 디렉토리가 최상위 root 디렉토리가 되므로 다른 디렉토리와 겹치지 않도록 설정해 주자.

  • Root Directory : Cygwin에서 Root Directory(/)가 되며, 위치는 어디든 상관없다
  • Install For : Cygwin을 자기 자신만 사용(Just Me)할지 아니면 전체 사용자 모두 사용(All Users)할지를 결정하는 옵션
  • Default Text File Type : 텍스트 문서의 Carrige return과 Line feed를 어떤 형태로 할 것인지 결정하는 옵션

-> Default Text File Type
문서작성중에 사용자가 enter(엔터) 키를 눌렀을 때 컴퓨터가 인식하는 문서상의 문단끝 부분에 대한 처리가 두 운영체제에서 다르기 때문이다. Unix 문서는 Carrige return만 있는 것이며, DOS 문서는 Carrige return과 Line feed가 함께 기록된다. (Unix 문서를 DOS 에디터로 열었을 때 한줄로 길게 붙어 나오는 것은 바로 Line feed 문자가 없으므로 DOS 에디터는 모든 문서의 문단이 한 줄인것으로 인식하며, 반대로 DOS 문서를 Unix에서 읽었을 때 line feed 문자인 "^M"이 문단끝마다 나타난다.)
윈도우즈용 에디터(예:winEdt 등)를 사용한다면 DOS를 선택하고, Emacs for windows를 사용한다면 어떤 것을 선택해도 차이가 없다.

사용자 삽입 이미지

2.9 패키지 디렉토리 선택
앞에서 다운 받아 놓은 패키지들이 들어 있는 디렉토리를 정해주는 화면이다. 다운로드 받아놓은 디렉토리로 설정해 주고 넘어가자.

사용자 삽입 이미지

2.10 설치할 패키지 선택
인스톨할 패키지를 선택하는 화면이다. 패키지에 대해 잘 모른다면 일단 All을 install 로 선택해주어 모든 패키지를 설치해 놓는 것이 좋을 것이다. 하드 용량이 부족하거나 패키지에대해 지식이 있으신 분은 각 개별 패키지 마다 설치 여부를 설정해 줄수도 있다. 하지만 매번 setup.exe 를 이용해 설치할때마다 각 설치 패키지와 비 설치 패키지 목록을 기억해야 하는 불편함이 있으므로 Default 로 셋팅해 설치하고 필요한것만 더 설치하는 방향이 좋을 것이다.

사용자 삽입 이미지 사용자 삽입 이미지

각 필드의 의미는 다음과 같다.

Category 설치될 패키지의 종류를 표시한다.
Current 현재 설치되어 있는 패키지를 표시한다.
New 새로 설치할 패키지의 버전을 표시한다.
Bin 실행화일의 포함 여부를 표시한다.
Source 소스포함 여부를 표시한다.
Package 자세한 패키지의 설명을 표시한다.

2.11 설치 종료
다운로드 화면이 모두 끝나고 바탕화면에 아이콘 추가가 끝나면 프로그램 설치는 모두 끝나게 된다. 바탕화면의 아이콘을 눌러보자. cygwin 의 세계에 온것을 축하한다... ^^



3. 제거
Cygwin 제거 방법은 매우 쉽게, Cygwin 디렉토리 만을 제거해도 되지만, 여러 프로세스들과 데몬이 떠 있을 경우는 주의해야 할 것들이 있다.

3.1 프로세스 및 서비스 제거
OpenSSH나 Inetd 와 같은 서비스를 설치한 경우에는 Windows Service에 등록되므로 Cygwin을 제거하기에 앞서 이를 내려 주어야 한다. 서비스를 제거하는 방법은 아주 간단하다. Cygwin상에서 cygrunsrv (cygrunsrv -R <service-name>) 툴을 이용하거나 Windows NT/2000 리소스 킷중 srvinstw.exe 나 instsrv.exe 를 이용할 수 있다.

3.2 파일 허가권 및 소유권 확인
NTFS 파일시스템에서 NTSEC을 사용하고 있다면 Cygwin상의 chmod (cd / ; chmod -R 644) 명령어를 통해 원래대로 돌려야 한다. 즉, 관리자(Administrators)가 모든 권한을 갖도록 설정한다. 이 작업은 Windows 상에서도 가능하나 경험상 불가능한 경우도 있다.

3.3 Windows 환경설정(변수) 수정
위의 경우와 같이 Cygwin에서 특정 서비스를 설치하거나 사용자가 직접 Windows 시스템의 환경설정(변수)를 변경한 경우 Cygwin이 설치되기 이전의 상태로 돌려야 한다.

3.4 설치 디렉토리 삭제
설치 위치가 "C:\cygwin" 이라면 탐색기와 같은 파일 관리자를 통해 해당 디렉토리를 통채로 지운다. 명령 프롬프트에서는 "rmdir /s /q C:\Cygwin"

3.5 레지스트리 삭제
레지스트리 편집기(시작→실행→regedit.exe)를 실행시켜 다음 3개의 키(key)를 삭제한다.

  "HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions"
  "HKEY_CURRENT_USER\Software\Cygnus Solutions"
  "HKEY_USERS\.Default\Software\Cygnus Solutions "

위 2개의 키만 삭제하더라도 별 문제는 없지만 자신의 시스템에서 Cygwin의 흔적을 완전히 제거하고 싶다면 레지스트리 편집기에서 'cygwin'으로 검색하여 검색된 모든 키(key)를 삭제하면 된다.

4 기본 설정 

4.1 Bash 한글 설정
기 본적으로 Cygwin 을 설치하였을 경우 Bash 의 한글화가 되어 있지않아서 모든 한글 디렉토리 들이 깨져 나오게 된다. 디렉토리 이름을 한글로 사용하는 것은 권장하고 싶지는 않지만, 이왕이면 이쁘게 한글이 나오는 것을 보기 위해서 귀찮더라도 설정해 주자.

여기서는 모든 사용자에게 동일하게 적용하게 하기 위해서 /etc 에 존재하는 설정 파일을 설정해 주었으나, 자신이 유져별로 관리 하고 싶다면 각 유저들의 디렉토리 안에 있는 . 으로 시작하는 환경 변수들을 설정해 주기 바란다.

/etc/profile 수정
profile 파일을 열고 다음 내용을 추가한다.

if [ -f /etc/bash.bashrc ] ; then
   source /etc/bash.bashrc
fi

if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
   INPUTRC=/etc/inputrc
fi

/etc/inputrc 작성 및 수정
기본값으로 inputrc 파일이 존재하지 않는데 /etc 디렉토리에 새로 만들고, 다음 내용을 추가한다.

set meta-flag on
set convert-meta off
set output-meta on
set completion-ignore-case on
set bell-style visible
set horizontal-scroll-mode on
set show-all-if-ambiguous on
meta-flag on 터미널 자체의 8비트 문자 지원여부와 상관없이 8비트 입력을 가능하게 함
convert-meta off 8비트 문자를 변환하지 않도록 함
output-meta on 8비트 문자를 출력할 때 그대로 출력하도록 함
completion-ignore-case on 자동 완성 기능을 사용할때 대소문자를 구별하지 않음
bell-style visible 콘솔에서 나는 비프음(beep)이 나지 않게 함


/etc/bash.bashrc 수정
bash.bashrc인열어 다음 내용을 추가한다.
alias ls='ls -F --color=auto --show-control-char'
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i' 

-> alias ls='ls -F --color=auto --show-control-char'
-F는 파일 형식을 알리는 문자를 각 파일 뒤에 추가하는 것으로, 실행파일은 "*", 경로(디렉토리)는 "/", 심볼릭 링크는 "@", FIFO는 "|", 소켓은 "=", 을 표시해 준다. --color=auto는 파일의 형태에 따라 그 파일의 색깔을 다르게 보여주는 기능이고, --show-control-char는 한글을 제대로 출력해 주는 기능이다.
 
퍼미션 수정
파 일 편집을 모두 마쳤다면 마지막으로 다른 사용자들도 파일을 읽을 수 있도록 퍼미션을 수정해 준다.

chmod 644 profile bash.bashrc inputrc

프롬프트 수정
기존의 Cygwin Bash 의 프롬프트는 너무 길고 불편 하다. 따라서 리눅스 콘솔에서 사용하는 것처럼 바꾸어 사용해 보자. 기존의 설정 부분은 주석처리 하고 새로운 프롬프트를 설정하면 된다. /etc/bash.bashrc 파일에 추가해 주자..

#export PS1='\[\033]0;\w\007\033[32m\]\u@\h \[\033[33m\w\033[0m\]
export PS1='[\u@\h \W]\$ '

이제 모두 끝났다.

4.2 vim 설정
처음으로 vim 을 인스톨 하였을때는 설정 파일이 설치 되지 않은 상태로 실행 된다. 예제 설정 파일은 /usr/share/vim/vim62/vimrc_example.vim 로 존재 한다. 따라서 이 설정을 적용하기 위해서 /etc 디렉토리 밑에 vimrc 라는 이름으로 파일을 복사한뒤 /etc/bash.bashrc 파일에 alias 를 추가 시켜주도록 하자.

[comafire@juvat-nb /]$ cp /usr/share/vim/vim62/vimrc_example.vim /etc/vimrc

/etc/bash.bashrc 파일을 열어 다음 내용을 추가하자

alias vi='vim -u /etc/vimrc'

이제 리눅스에서 사용하던 vim 을 볼수 있을 것이다.

4.3 rxvt 사용
rxvt는 xterm과 비슷한 X-Window 터미날 에뮬레이터이다. 컬러를 지원하고, 메모리를 적게 소모하는 장점이 있다. 원래 목적은 xterm을 대체하기 위해서 탄생되었지만 Cygwin에서는 Windows 명령 프롬프트를 대체하기 위해서 사용될 것이다. 한가지 특이한 것은 rxvt는 X-Windows용이지만 Cygwin에서는 X-Window 없이도 바로 실행된다.

Cygwin에서 rxvt의 장점은 빠르고 한글도 깨끗하게 출력해 준다. 또한 풀 스크린(full screen)을 지원해 준다.
rxvt는 Cygwin을 기본설치할 경우 디폴트로 설치되지 않기 때문에 따로 추가해 주어야 한다. setup.exe 파일을 통해 기존의 설치되어 있는 패키지에 Shells 카테고리 안에 rxvt 패키지를 설치하자.

사용자 삽입 이미지

Windows 명령 프롬프트를 버리고 rxvt를 Cygwin 전용 콘솔로 사용하고 싶은 사용자는 cygwin.bat 파일을 다음과 같이 수정해 주면 된다.

@echo off

D:
chdir D:\Cygwin\bin
rxvt -tn xterm -rv -sr -sw -sl 1000 -sbt 15 -fn fixedsys -e /bin/bash --login -i

rxvt -help를 참조하면 rxvt 의 글꼴, 배경색 등 다양한 옵션을 확인할 수 있다.

4.4 openssh 사용
rxvt 를 띄워서 사용할경우 rxvt를 띄우는데 시스템 리소스를 좀 잡아 먹는다. 그래서 선택할수 있는 것이 openssh.. ^^  openssh 를 데몬으로 띄워놓고 SecureCRT 같은 터미널 접속 툴로 붙어서 사용하면, 에뮬을 모두 띄워놓구 사용하지 않고 openssh 데몬만 자동으로 띄우게 만들어 사용할수 있다. 항상 SecureCRT 같은 터미널 접속툴을 한개씩 띄워 놓구 사시는 분들에게 추천한다.

cygwin 운영 환경은 window server 2003 enterprise 이다.

우선 cygwin 의 설치 프로그램을 동작 시켜서 Admin Category 카테고리에서 cygrunsrv 과 Net Category 카테고리에서 openssh 를 설치해준다.
그리고 나서 host 설정 스크립트를 실행 시켜 준다.

[Administrator@juvat-nb Administrator]$ssh-host-config -y
Overwrite existing /etc/ssh_config file? (yes/no) yes
Generating /etc/ssh_config file
Overwrite existing /etc/sshd_config file? (yes/no) yes
Privilege separation is set to yes by default since OpenSSH 3.3.
However, this requires a non-privileged account called 'sshd'.
For more info on privilege separation read /usr/share/doc/openssh/README.privsep.

Should privilege separation be used? (yes/no) yes
Generating /etc/sshd_config file


Warning: The following functions require administrator privileges!

Do you want to install sshd as service?
(Say "no" if it's already installed as service) (yes/no) yes

Which value should the environment variable CYGWIN have when
sshd starts? It's recommended to set at least "ntsec" to be
able to change user context without password.
Default is "ntsec".  CYGWIN=

CYGWIN= 에다가 tty ntsec 값을 넣어준다.

Default is "ntsec".  CYGWIN=tty ntsec

The service has been installed under sshd_server account.
To start the service, call `net start sshd' or `cygrunsrv -S sshd'.

Host configuration finished. Have fun!
[Administrator@juvat-nb Administrator]$

이와 같이 메세지가 나온다면 설정 된 것이다.

이제 sshd 데몬을 돌릴 sshd_server 의 password 을 설정해 주자.

[Administrator@juvat-nb Administrator]$passwd sshd_server
Enter the new password (minimum of 5, maximum of 8 characters).
Please use a combination of upper and lower case letters and numbers.
New password:
Re-enter new password:
Password changed.

그 다음으로는 윈도우 관리도구에 보면 서비스라는 항목이 있는데 거기서 cygwin_sshd 서비스의 password를 cygwin 과 맞추어 주어야 한다.

사용자 삽입 이미지

암호 부분에 Cygwin 에서 sshd_server 에 적용했던 암호를 적어주고 적용을 눌러주자.

사용자 삽입 이미지

시작을 눌러주면 서비스가 시작된다.

사용자 삽입 이미지

윈도우에서 설정된 암호를 계속 사용하기 위해서 계정 정보를 변경해 주어야 한다. 암호의 기간 제한이 없도록 설정해 주자.

사용자 삽입 이미지

이제 설정이 다 끝났다. SecureCRT 를 통해서 접속해보자.
다음과 같이 접속 설정을 해주고

사용자 삽입 이미지

아래 같은 로그인 화면을 보았다면 성공이다.

사용자 삽입 이미지

4.5 FileSystem Mount
보통 cygwin 을 인스톨하면 기본적으로 /usr/bin 과 /usr/lib 를 /bin 과 /lib 로 마운트 시켜 사용한다. 기본적으로 사용할때는 문제가 없지만, /usr/bin 아래에 실행 파일이 생성되는 경우 아예 파일조차 안보이는 결과를 초래하게 된다. 따라서 /usr/bin 을 마운트 시켜야만 /usr/bin 에 설치되는 실행 파일들을 정상적으로 실행 시킬수 있게 된다.

mount -f -s -b "c:/Cygwin/usr/bin" "/usr/bin"

이렇게 명령을 내려주면 디렉토리가 마운트되어 /usr/bin 디렉토리를 사용할 수 있게 된다.

'IT인생_스크랩 > 기타' 카테고리의 다른 글

tpmc  (0) 2010.06.23
TPC, TPMC, TPC-C  (0) 2010.06.23
울트라 VNC 사용하기  (0) 2010.06.23