어쩌라구..?? ㅡㅡa..

Posted
Filed under Linux/system
X 윈도우는 서버/클라이언트 모델로 동작한다.

서버는 화면을 그려주고 키보드, 마우스 입력을 받는다.
클라이언트는 프로세스이다. 웹 브라우저, 에디터, 기타 등등의 프로그램들이 클라이언트가 된다.

클라이언트가 서버에게 입력을 요청하고, 화면 출력을 요청한다.
서버는 이를 받아 디스플레이에 그려주거나 클라이언트가 요청한 반응을 보인다.

이 개념이 그닥 쉽게 다가오지는 않는다. 프로그램이 화면을 그리라고 시키고, 입력을 달라고 시키는데, 이거 뭔가 뒤바뀐게 아닌가?
근데 이렇게 생각하면 조금 이해가 쉬울지도 모르겠다.
X 윈도우를 떠나서 생각해 보면, (웹을 예로 들어) 항상 켜 있고 대기중이면서 클라이언트(브라우저)의 연결을 기다리고 있는 녀석이 서버이고, 필요에 따라 실행되고 원하는 서버에 접속하는 녀석이 클라이언트이다.

여기까지 이해가 되는가? 부디 이해가 되면 좋겠다.
맨날 대기중이어서 아무때나 연결을 받아들이는 녀석이 서버이고,
필요에 따라 서버에 연결을 하는 녀석이 클라이언트라고 했을때
X 윈도우에서는 누가 항상 대기중인 녀석인가 생각해보면 이해가 될 것이다.
응용 프로세스가 화면을 그리라고 시키는 녀석이긴 하지만,
조금 더 파헤쳐 보면 프로세스가 실행 되고 대기중인 서버에 접속해서 화면 그리라고 시키는것이다.
그렇다면 접속하는 녀석이 프로세스이므로 클라이언트가 맞지 않은가?

서버/클라이언트 얘기는 여기까지 하고,
이 글의 주제는 그렇다면 X 윈도우 서버와 클라이언트가 다른 컴퓨터에 있어도 되지 않겠는가에 대한 생각이다.
물론 가능하다. 내 로컬 컴퓨터에 X 서버가 있다면 다른 컴퓨터에는 클라이언트만 있어도 된다는 말이다.
MS윈도의 터미널 클라이언트 처럼 화면을 통째로 가져다 놓는것이 아니라,
한 프로그램의 화면 출력을 이쪽 컴퓨터로 끌어오는 것이다.
프로세스는 다른 컴퓨터에 있고, 디스플레이와 입/출력은 이쪽에서 한다.
띄워 놓으면 상당히 쓰기 편하다. ssh나 telnet과 비교해 봤을때.
ssh는 아무리 용 써봐야 CLI다. 그러나 그 ssh를 통해 GUI를 사용 할 수 있다.

사설이 길었다. 이제 방법을 얘기 하자면,
이 글에서 가정한 환경은 서버/클라이언트(X윈도우 말고..) OS는 모두 ubuntu이다.
서버에는 openssh 서버가 돌고 있고, 로컬 컴퓨터에 ssh 클라이언트가 깔려 있다.
서버에는 X윈도우가 없고, 로컬에는 당근 X윈도우가 돌면서 웹도 쓰고 오피스도 쓰고 한다.
이정도는 흔히들 쓰고 있을 환경일 것이다. 서버에 왜 X윈도우가 깔려 있겠는가?

이 상황에서 서버쪽에는 X 서버가 없지만, 그렇다고 해서 X 클라이언트가 돌지 말라는 법은 없다.
서버에 ssh를 이용하여 접속하고, X 응용 프로그램을 깔고 돌려보자.
$ sudo apt-get install vim-gtk
$ gvim
당연히 실행 안된다. 디스플레이가 없다고 에러 낸다.
디스플레이라는것이 X 서버를 말하는것인데, 당연히 안되는것이 정상이다.
이때 X 서버로 연결을 ssh를 통하여 터널링 시키는것이다.

ssh 연결을 끊고 다시 접속하는데 이번에는 -X 옵션을 주고 연결하자.
옵션의 -X는 반드시 대문자를 사용할것. 이 옵션이 X윈도우 연결을 터널링 해주는 옵션이다.
소문자 x를 사용하면 연결 할 수 있어도 하지 말라는 옵션이다. 당연히 연결 안된다.
$ ssh -X 어딘가.있는.서버
(로그인 과정 생략)
$ gvim
뜨는가? 글쎄.. 안될것이다. 또 디스플레이 못 찾는다고 투덜거리고 CLI vi에디터가 뜰 것이다.
이제내가 알아낸 방법을 써 먹을때가 되었다. 캬캬~

다음 명령을 서버에서 실행시키자.
$ sudo apt-get install xauth
설치가 끝나면 ssh 연결을 끊고 -X 옵션을 주고 다시 연결하자.
그리고 gvim 띄우면 이제는 로컬에 gvim이 나타날 것이다. 아름답지 않은가?
실행 속도도 그다지 느리지 않다. 적어도 터미널 클라이언트에 비하면 수십배 빠르다.

이제는 사족이다. 서버에 X 포워딩을 이용하여 연결했을때
자동으로 이를 감지하여 vi라고 실행시켜도 gvim이 뜨면 편할것이다.
이를 위하여 다음의 코드를 ~/.bashrc에 집어넣는다.
어디 넣어야 하는지 모르겠다면 맨 끝에 때려넣어라.
# if X window server available
if [ ! -z $DISPLAY ]; then
  alias vi='gvim'
fi
이거 해석할 수 있는 사람이면 원하는거 추가도 할 수 있겠지?


마지막으로 변명이다. ㅡㅡ;
gvim의 경우 vim-gnome을 설치하면 좀 더 이쁜 화면을 볼 수 있으나,
서버에 gnome시스템이 없는 관계로 저걸 설치하면 용량이 수십배 더 많이 든다.
gtk버전이 그나마 용량을 적게 사용해서 gtk버전을 설치했다.
그래도 이정도면 봐줄만 하지 않은가? ㅡㅡ
2007/09/17 07:44 2007/09/17 07:44
Posted
Filed under Linux/system
네트워킹 시작 스크립트로 해서 네트워킹이 제대로 동작하면 참 다행이지만,
리눅스를 쓰다보면 그렇게 해서 안되는 경우가 가끔 있다.
이럴때는 네트워킹 옵션을 수동으로 조절해가면서 동작시켜야 하지 않겠는가?

ubuntu에서 쓰는 방법인데, 레드햇 계열에서도 응용하면 거의 될걸로 본다.
레드햇 계열에서 테스트는 안해봤다.

무선랜의 essid를 설정한다.
# iwconfig eth0 essid NESPOT
eth0은 당연히 자신의 네트워크 카드 인식 이름을 써줘야 하고,
NESPOT 부분은 자신이 사용할 essid를 적어주어야 한다.
나의 경우에는 대부분 이 설정이 제대로 안돼서 수동으로 네트워킹을 설정하곤 한다.
학교에서 NESPOT 대신에 sktelecom이 자동으로 인식되곤 하는데,
재시작시켜도 또 sktelecom을 잡아서 수동으로 설정한다.

네트워크를 활성화 시킨다. 여기서부터는 유선이나 무선이나 모두 적용된다.
# ifconfig eth0 up
이제 시스템이 eth0 인터페이스가 동작중인것으로 인식하고 여기로 패킷을 보낸다.
ifconfig는 네트워크에 대한 일반적인 설정을 한다.
유선네트워크 설정도 대부분 여기서 한다.
무선네트워크에 대한 설정은 iwconfig에서 한다.

IP정보를 가져온다.
# dhclient eth0
IP, gateway, dns등의 정보를 가져와서 eth0인터페이스에 설정한다.

이제 네트워크가 동작할것이다.
2006/06/18 23:13 2006/06/18 23:13
Posted
Filed under Linux/system
6월 1일부로 ubintu 6.06 (DapperDrake)가 릴리즈 되었다.

개선사항은 알아서 찾으시고, (ㅡㅡ;)
내 시스템을 업그레이드 했던 기록이다.
지우고 새로 설치한다면 이 글을 볼거 없다. 다른 좋은 글 많이 있다.

업그레이드 하는 방법을 몰라서 ubuntu 사이트를 이리저리 뒤져보다가
발견하였다.

DapperUpgrades : ubuntu wiki이다. 이 글은 여기에 있는 내용을 대충번역 & 설명이다.

업그레이드 하는 방법에는 크게 세가지 방법이 있다.
1. UpdateManager를 이용하여 네트워크로 업그레이드 하는 방법
2. 쉘에서 명령을 이용하여 네트워크로 업그레이드 하는 방법
3. alternate CD를 이용하여 업그레이드 하는 방법

나는 3번 방법을 이용하였다.
일단 다운로드 받아서 시디로 구워버린다음 업그레이드 하는 방법을 몰라서
이리저리 찾다가 네트워크로 업그레이드 할 수 있다는걸 알았다. ㅡㅡ;
그러나 일단 다운로드 받아서 CD로 구워놨는데, 다시 다운받는다는건
대단한 삽질이자 뻘짓이므로 CD로 업그레이드 하기로 하였다.

CD로 업그레이드할때는 반드시 alternate CD가 있어야 한다.
desktop 이나 server CD는 오로지 새로 설치밖에 할 수 없다.

2번과 3번 방법은 비슷하다.
root 권한으로 /etc/apt/sources.list 파일을 편집기로 연다.
유요한 라인(주석이 아닌 라인)의 'breezy'를 'dapper'로 모조리 바꾼다.
저장하고 편집기를 종료한 후,

3번 방법으로 업그레이드 하려면 다음의 명령을 실행한다.
sudo apt-cdrom add
CD를 넣으라고 나올것이다. CD를 넣고 엔터를 누르면 CD를 막 읽으면서
뭔가 설정을 할 것이다.

이제는 실제 업그레이드를 수행 할 차레인다. 2, 3번 방법 모두 다음의 명령을
실행한다.
sudo apt-get update && sudo apt-get dist-upgrade
한참을 다운로드 받던지, CD를 읽던지 하면서 열~~ 심히 업그레이드 할 것이다.

시간 꽤 걸리므로 인내를 가지고 기다려야 하고, 설정 할때 이전 시스템 설정과
새 시스템 설정이 충돌한다면 경고를 보여줄것이다. 적절히 선택하자.

설치가 다 끝나고 쉘로 돌아오면 업그레이드가 끝난것이다.

그러나 업그레이드 한 후에는 이전 버전에서 사용하던 패키지나 설정이 없어지는것이
있으므로 이 컴퓨터에서 하던 작업이 제대로 되는지 확인하여 필요한 설정을 추가로
해야 한다.
2006/06/03 16:36 2006/06/03 16:36
Posted
Filed under Linux/system
fedora core 5 를 데스크탑에 설치하였다.
이전에 쓰던 haansoft나 core4가 자꾸 문제가 생기고 버전이 오래되어
core5 나온참에 바꿔버렸는데, 한동안 ubuntu를 쓰다보니 redhat계열 배포판들이
더 불편하게 느껴지던 참이었다.

이 글은 설치후 사용하면서 했던 설정, 삽질들의 기록이다.
새로운 삽질이 성공하면 새로 업데이트 할것이다.



한글 및 한영키 설정 :
2.6 커널의 문제로 처음 설치하고나면 한영키, 한자키가 전혀 인식되지 않는다.
xev를 사용하여 체크해보아도 아예 키 입력 자체가 인식되지 않는다.
이 문제는 2.6커널 한영키 인식문제 에 기록되어 있으므로 이 글을 참조한다.
이것은 fedora만의 문제가 아니라 2.6커널을 사용하는 거의 모든 배포판들에
공통되는 문제이다. 국내에서 만든 배포판들만 문제가 해결되어있다.



yum.conf 설정하기 :
fedora 처음 깔고 yum 쓰기 시작하면 속 터진다. 대책없이 느린 다운로드에,
그나마도 받다가 서버리면 난감하고 잠시후면 속 터진다.
원인은 외국 서버에서 파일을 받아오기 때문이다.
고로 국내 서버에서 받도록 하면 대단히 빨라진다. 음하하하하~

먼저 베껴온 출처부터 밝힌다. 당근빠다 내가 첨 발견한게 아니다.
yum -y update가 빨리 되게 하기 - Darth ssanzing
linux - yum.conf setting - AngKa FrEe Ong

내용을 간단하게 설명하자면,
Fedora 딱 깔면 설정되어있는 yum 서버들이 죄다 외국걸로 물려있다.
그 파일을 뜯어고쳐서 국내 서버로 돌려주면 된다.
국내에서 Fedora Mirror 운영하고 있는 대표적인 곳은
kreonet과 kaist이다. (왜 우리학교는 없는 거시여? ㅡㅡ;)

/etc/yum.conf 파일 열어서 다음의 내용을 복사해다 제일 마지막에 붙여넣는다.
[core]
name=Fedora Core 5
baseurl=http://ftp.kaist.ac.kr/pub/fedora/linux/core/5/i386/os/

[updates]
name=Fedora Core 5 updates
baseurl=http://ftp.kaist.ac.kr/pub/fedora/linux/core/updates/5/i386/

[extras]
name=Fedora Core 5 extras
baseurl=http://ftp.kaist.ac.kr/pub/fedora/linux/extras/5/i386/
또는
[core]
name=Fedora Core 5
baseurl=http://ftp.kreonet.re.kr/pub/Linux/fedora/core/5/i386/os/

[updates]
name=Fedora Core 5 updates
baseurl=http://ftp.kreonet.re.kr/pub/Linux/fedora/core/updates/5/i386/
둘중에 한군데 마음에 드는곳으로 정하면 된다.
이제 yum으로 뭔가 하기가 한결 수월할것이다.

추신 : 혹시 이렇게 설정해서 다운로드 하고 설치하기 직전에
'Header V3 DSA signature: NOKEY' <-- 이런 에러가 발생하면,
다음을 하니씩 실행하면서 yum을 다시 실행시킨다.
$ rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
$ rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY
보통 첫번째 명령만 실행시키고 나면 설치가 될 것이다.




커널 개발 환경 설정 :
yum update를 하고 나면 커널 버전이 올라가있다.
거기다가 커널 소스나 헤더가 전혀 들어있지 않아서 커널 모듈을 컴파일 할 수 없다.
이것은 yum을 이용하여 커널 헤더를 설치해주면 된다.

yum install kernel-devel
또는
yum install kernel-smp-devel
사용중인 프로세서가 smp를 지원하면(Hyper threading, Dual core, etc..)
당연히 커널도 smp 커널을 사용중일것이고, 따라서 smp 헤더를 받아와야 한다.



nvidia video driver 설정 :
나의 비디오 카드는 Nvidia Geforce 6600GT이다. 기본으로 쓰는 vesa 드라이버는
영화를 보거나 다른 그래픽 가속 기능을 쓸때 제성능이 나오지 않는다.
그래서 nvidia에서 제공하는 linux 드라이버를 받아서 설치하기로 하였다.

드라이버를 다운로드 받아 설치하면 x-window가 뜨지 않는다.
드라이버를 읽을수 없다는 에러가 뜨는데, nvidia forum의 HOWTO 문서를 침고하라.

설치하는 방법은 nvidia 사이트에 잘 설명되어있고, 그리 어렵지 않으니 생략하겠다.
그냥 다운로드 받아서 런레벨 3으로 바꾼후 실행시키면 된다.
설치후, 설정관련 문서들은 /usr/share/doc/NVIDIA_GLX-1.0/ 아래에 설치된다.

다음부터는 x-window 환경에서 실행하지 않는 명령들이니,
적어놓거나 텍스트를 파일로 저장해놓고 보기 바란다.
깔다가 실패하면 다른컴퓨터 가서 봐야 한다.

드라이버 설치 다 끝나고 종료하면 xorg.conf도 설정이 끝나 있지만,
x-window를 실행하면 제대로 뜨지 않는다.
이것은 SELinux 설정 때문인데, SELinux 전체를 disable 시키지 않고
x-window를 실행시키려면 먼저 아래의 명령을 실행시킨다.

chcon -t texrel_shlib_t /usr/lib/xorg/modules/drivers/nvidia_drv.so
chcon -t texrel_shlib_t /usr/lib/xorg/modules/extensions/libglx.so.1.0.8762
이 밍령을 실행 후 다시 x-window를 띄워서 뜨면 아싸~ 를 외치면 되고,
그래도 제대로 안되면 살포시 <alt>+<ctrl>+<F1>을 눌러서 콘솔로 돌아오자.
그리고 가차없이 <Ctrl>+C를 놀러 x-window를 종료시키면,
콘솔에 "무슨 파일을 읽지 못했습니다" 라는 내용의 메세지가 있을것이다.

이 파일을 위의 chcon 명령으로 설정해 줘야 한다.
맨 마지막 인자가 옵션을 설정할 파일 이름이니까 에러가 발생한 파일을 지정하여
실행시켜준다. 그리고 다시 startx를 띄워라.

나의 경우는 권한 없음 에러가 나는 파일을 4갠가 5갠가 수정하고 나서야
x-window가 뜨는걸 볼수 있었다. 인내를 갖고 띄워 보자.
하다보면 뜰 것이다.



nvidia twinview 설정 :
듀얼모니터 쓰고싶어서 vesa 드라이버 안 쓰고 nvidia 드라이버 삽질해가면서 설치하였다.
그런데 lcd 하나화 crt하나를 쓰고 있고, lcd가 왼쪽 crt가 오른쪽에 있다.
그리고 lcd를 주 모니터로 쓰고 있는데, 이노무 드라이버가 crt를 primary로 써 버렸다.
로그인 창이 crt에 뜬다.. ㅜㅜ..

primary 모니터를 옮기는것까진 아직 못했는데, twinview 쓰는것까진 설정 하였다.
이 문서에서는 x-window가 nvidia 드라이버로 정상 부팅이 된다는 전제로 설명하겠다.

옵션을 설정한 xorg.conf 파일의 Device 섹션은 다음과 같다.
Section "Device"
   Identifier  "Videocard0"
   Driver      "nvidia"
   VendorName  "Videocard vendor"
   BoardName   "nVidia Corporation NV43 [GeForce 6600/GeForce 6600 GT]"
       Option      "TwinView"
       Option      "TwinViewOrientation" "LeftOf"
       Option      "UseDisplayDevice"    "DFP, CRT"
EndSection

주목할 부분은 Option 부분인데,

TwinView 옵션으로 x-window의 듀얼 모니터 설정이 아닌, 비디오카드의 설정으로
모니터 두개로 출력한다. MS윈도 처럼 화면이 가로 해상도가 2배가 되는 효과가 난다.

TwinViewOrientation 옵션으로 화면 베치를 바꿨다. 위에서 말했듯이, CRT가 primary가
되어버려서 화면이 거꾸로 뜨기 때문이다. 마우스 커서가 오른쪽 모니터 오른쪽으로 사라지면
왼쪽 모니터 왼쪽으로 들어오는 그런... ㅜㅜ....
옵션을 설정하면 왼쪽모니터가 왼쪽에 나타나고 오른쪽 모니터가 오른쪽에 나온다.
그러나 그래도 로그인할때 primary 모니터는 crt이다. ㅜㅜ.

UseDisplayDevice는 비디오카드가 감지한 모니터 설정을 무시하고 강제로 설정하는
옵션이라고 하는데, 사실 이 옵션 안 주어도 동일한 화면이 나온다.
여기서 CRT를 빼거나 DFP를 빼면 옵션에 빠진 모니터로는 아무런 출력이 나오지
않는다. 설정이 맘에 안들면 아예 옵션을 주석처리 하는것이 좋다.

이렇게 하여 듀얼모니터 설정을 마쳤다.
로그인 화면도 LCD로 옮기고 싶은데, 거기까지는 아직 하지 못했다.
누구 방법 아는사람 없나... ㅡㅡa..



Firefox 에서 flash 보기 :
flash가 있는 페이지에서 아무리 플러그인을 다운로드 받아도 flash가 뜨지 않는다.
다음의 페이지를 참고하라.
페도라5 firefox flash-plugin
2006/05/30 15:29 2006/05/30 15:29
Posted
Filed under Linux/system
fedora에는 기본으로 ntfs 파일 시스템을 사용할수 없다.
이를 해결하려면 커널을 ntfs를 지원하도록 설정을 바꾼 후 다시 컴파일 하거나,
이미 빌드되어있는 커널 모듈을 올려서 사용하면 된다.

linux에서 ntfs를 사용하도록 지원해주는 사이트이다.
www.linux-ntfs.org
이 사이트의 왼쪽 메뉴에서 'Redhat and Fedora' -> 'Download'를 따라 들어가서
사용중인 커널 버전에 맞는 rpm을 다운로드 받아 설치하면 된다.

rpm을 설치하고 나면 바로 ntfs 파일시스템을 마운트 할 수 있다.
2006/05/30 03:50 2006/05/30 03:50