반응형

Client OS: Ubuntu Desktop 14.04.1 LTS (amd64)

Host OS: Ubuntu Server 14.04 LTS (amd64)


우분투 데스크탑에서 원격 컴퓨터에 SSH로 로그인하면서 X윈도우를 통한 앱을 쓰려면 서버와 클라이언트 양쪽 모두 X11 forwarding 옵션을 켜야 한다.  서버 쪽에서는 /etc/ssh/sshd_config 파일에서 X11Forwarding yes 항목이 주석 없이 적혀 있어야 한다. 클라이언트 쪽에서는 간단하게 "-X" 옵션만 추가하면 되지만, 이 때 에러 메세지가 발생하는 경우가 있는데, 그 중에 다음과 같이 .Xauthority 파일에 접근을 하지 못하는 에러가 발생할 때가 있다.


/usr/bin/xauth: /home/[로그인 사용자 계정]/.Xauthority not writable, changes will be ignored



일단 위와 같은 에러 메세지가 뜨더라도 SSH 로그인은 되기 때문에, /home/[로그인 사용자 계정]/.Xauthority 파일을 확인해 보니 권한이 600 (루트만 읽고 수정가능)으로 되어 있었다. 그래서 일단 이 파일의 권한을 모든 사용자가 읽고 쓸 수 있게 바꾸어 보았다.

$ sudo chmod 666 /home/[로그인 사용자 계정]/.Xauthority



다시 ssh -X로 로그인해 보니 위의 에러는 사라졌지만, 로그인 과정에서 잠시 멈춰 있다가 아래와 같은 에러 메세지를 보여 주면서 어쨌든 기본 SSH로 로그인은 되었다. 여전히 X윈도우 관련 어플리케이션은 실행되지 않았다.

/usr/bin/xauth: timeout in locking authority file /home/[로그인 사용자 계정]/.Xauthority



이 경우에는 lock에 관여하는 .Xauthority-c, .Xauthority-l 파일들을 삭제하면 된다.


$ sudo rm -fr /home/[로그인 사용자 계정]]/.Xauthority-*


SSH 세션에서 빠져나온 후, 다시 ssh -X를 이용하여 로그인해 보면 에러 없이 로그인이 되고, X윈도우 앱들도 정상적으로 실행됨을 확인할 수 있다.



반응형
블로그 이미지

Bryan_

,
반응형

Host OS: Ubuntu 14.04.1 LTS (amd64)

Guest OS: Windows 10 (64-bit)


연구실 PC가 메모리가 넉넉한 편이라서(16GB) 가상 머신으로 윈도우를 시험삼아 돌려 보고 있는데, 이상하게 오랜만에 가상머신에 원격으로 접속하면 (원격 데스크탑 RDP 사용) 바탕화면이 뜨는데 상당히 오랜 시간이 걸린다. 정확히 재지 않았지만, 1분은 확실히 넘는 것 같다.


가상머신 구성은 다음과 같다:

  • 가상 머신 관리는 QEMU KVM을 사용
  • 윈도우 가상 머신에 CPU 2 Cores (물리적으로 2개, 쓰레드 기준으로 4개), 6GB 메모리, 180GB의 하드디스크를 할당
  • 평소에 항상 PC를 켜 두고, 리눅스를 주로 사용하다가 몇 시간에 한 번씩 윈도우 가상 머신에 RDP로 연결(리미너 원격 클라이언트 또는 FreeRDP 사용)

보통 맨 처음 가상 머신을 부팅시키고 나면 직접 Virtual Machine Manager 어플리케이션에서 확인하든 RDP로 원격접속하든 상관 없이 바로 바탕화면이 나오는데, 윈도우에서의 작업을 마치고 원격 접속 연결만 해제한 채 (즉, 켜진 상태로) 오랜 시간을 쓰지 않으면, 나중에 다시 접속할 때 위와 같이 상당히 오랜 시간이 걸린다. 그리고 그 때 PC의 물리적인 상태를 보면 HDD 램프가 빠르게 깜빡거리면서 하드디스크에 지속적으로 열심히 접근하고 있다.


확인해본 결과, 우분투는 기본적으로 물리적인 메모리에 상주하는 어플리케이션을 가급적이면 스왑 영역(가상 메모리 영역; 즉 하드디스크)에 옮겨 두려는 경향이 크다는 것을 알게 되었다. 그리고 그 경향을 조절하는 설정 변수가 Swappiness이다. 0부터 100 사이의 값 중에서 기본값이 60으로 되어 있다. 60이라는 숫자가 정량적으로 얼마만큼의 메모리 영역을 스왑 영역으로 보내는지는 확실하지 않지만, 경향성이 매우 높은 편에 속한다는 사실에는 이견이 없어 보인다.


인터넷에서 대부분의 우분투 사용자들이 개인 PC에서 우분투를 쓸 때 성능을 개선하기 위해서 가장 먼저 swappiness부터 조정한다는 것 또한 알 수 있었다. 설정 방법은 /etc/sysctl.conf 파일에 아래와 같이 한 줄을 추가하거나, 이미 있으면 숫자를 아래와 같이 조정한다:

vm.swappiness=10


인터넷에서는 보통 swappiness 값을 10 으로 권장하는 분위기이다. 실제로 나도 swappiness 값을 조정하고 나서 윈도우 가상 머신의 원격 데스크탑 접속 로딩 시간이 꽤 단축되는 것을 체감할 수 있었다. 하지만 여전히 몇 시간 후에 다시 접속하면 약 30초 가량의 딜레이가 발생하였다. 그래서 아예 vm.swappiness 값을 3으로 더욱 낮게 설정했더니, 그제서야 길어도 10초 이내로 바로 원격 데스크탑 화면이 나타났다.


개인적인 경험으로 볼 때, 물리적 메모리가 16GB이고 가상 머신을 한 개만 운용하고 있으며, 이외에 메모리를 많이 소비하는 다른 프로그램을 쓰지 않기 때문에 swappiness 값을 매우 낮게 줘도 앞으로 쓰는 데는 문제가 없을 것 같다.


하지만 근본적으로는 서버에서 가상 머신을 돌리는 것이 속도를 개선하는 가장 확실한 방법인 것 같다. 실제로 연구실에서 운용하는 24코어에 64GB 메모리, 5TB의 하드디스크를 갖고 있는 서버에서 동일한 스펙의 가상 머신을 돌리는 것이 개인 PC에서 돌릴 때에 비해 속도가 월등하게 빨랐다. 즉, 그래픽 측면의 이질감과 불편함(폰트 같은 것이 깔끔하게 표시되지 못하고, 게임을 실행하지 못하는 문제)만 감수할 수 있다면, 서버에서 가상 머신을 돌리는 것(결국 클라우드 환경)이 좋을 수밖에 없다.


아직 연구실에 오픈스택(OpenStack)을 적용하지는 못했는데 (당장 이 쪽으로 연구실 구성원 중에 연구주제가 있는 것은 아니고, 운영상의 목적만 있음), 서버 여러 대와 몇몇 잉여 데스크탑 본제들을 조합해서 클라우드 환경을 만들어서 돌려보고 싶다. 일단은 졸업이 급하니 졸업하고 나서 해 봐야겠다. ㅜㅜ


반응형
블로그 이미지

Bryan_

,
반응형

일반적으로 VI 설정은 사용자 디렉토리에 있는 .vimrc 파일에 적힌 대로 따라가는데, 루트 계정으로 vi를 실행하면 그 설정이 모두 없이 기본 VI로 로드되는 경우가 있다.


다 그런 것 같지는 않은데, 예를 들어 우분투는 $ sudo vi 로 실행하더라도 사용자 설정을 따라가는 듯 하다. 반면에 라즈베리파이에 설치한 Raspbian에서는 $ vi 와 $ sudo vi 의 설정이 서로 다르다.


Raspbian의 경우, (아마 다른 배포판도 마찬가지일 듯) /root/ 디렉토리에 사용자 디렉토리에 있는 .vimrc 파일을 복사하는 것으로 간단하게 해결된다.

반응형
블로그 이미지

Bryan_

,
반응형

Tested OS: Raspbian, Ubuntu 14.04.2 LTS (amd64), Ubuntu 11.04 (i386)

Wireless LAN card: TP-LINK TL-WN722N (chipset: Atheros ath9k_htc)


실험을 위한 애드혹 네트워크 구성을 하는 과정에서, /etc/network/interfaces 파일을 가이드라인에 맞게 고쳤는데도 애드혹 네트워크가 생성되지 않아서 원인을 찾던 중 하나를 발견했다. 사실 이것이 데비안 계열 리눅스에서 발생하는 문제인지, 아니면 ath9k_htc 칩셋에서 지원하지 못하는 것인지는 모르겠다.


일단 가이드라인대로 /etc/network/interfaces 파일을 설정하는 방법은 아래와 같다:


# 무선랜 인터페이스 이름이 "wlan0"일 경우로 가정

auto wlan0

iface wlan0 inet static

address 192.168.3.100  # 연결할 기기마다 1~254 사이의 아무 숫자나 겹치지 않게 정한다.

netmask 255.255.255.0

wireless-channel 11 주변 다른 무선랜 채널 상황을 고려해서 1,6,11 중에서 정한다. 

wireless-essid testAdhocNet # 가급적이면 하이픈(-) 없이, 영문과 숫자조합으로만...

wireless-mode ad-hoc


위와 같이 파일을 저장하고 나서,

만약 Ubuntu desktop을 쓰면서 network-manager 서비스가 실행중이라면 종료한다.

$ sudo service network-manager stop


그리고 네트워크 재시작을 한다.

$ sudo /etc/init.d/networking restart


이후 iwconfig 명령으로 무선랜 인터페이스에 대해서 아래와 같이 "Ad-Hoc" 모드로 나타나는지 확인한다.

$ iwconfig

lo        no wireless extensions.


eth0      no wireless extensions.


wlan0     IEEE 802.11bgn  ESSID:"testAdhocNet"  

          Mode:Ad-Hoc  Frequency:2.462 GHz  Cell: 8A:E1:09:41:AD:43   

          Tx-Power=16 dBm   

          Retry  long limit:7   RTS thr:off   Fragment thr:off

          Power Management:off


내 경우는 ESSID에 하이픈(-)을 2개 이상 넣고서 맨 처음 애드혹 네트워크 설정을 했더니 계속 Mode: Managed로 표시되는 문제가 있었다. 아직 정확한 원인은 모르겠다.

더 황당한 것은, 하이픈을 다 뺀 이름으로 애드혹 네트워크 생성을 성공하고 나서, 다시 하이픈이 2개 이상 들어간 ESSID로 바꿨더니, 그 후로는 하이픈이 들어간 이름으로도 애드혹 네트워크가 문제없이 생성되는 것이었다.


일단은 가장 안정적인 설정(하이픈이 없이 순수 영문과 숫자 조합으로만 ESSID 설정)으로 하는 것이 좋을 것 같다.



반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu 14.04.2 LTS (amd64)

원격접속 대상 OS: Windows 10 (64-bit)

사용한 앱: FreeRDP


리눅스에서 윈도우 컴퓨터에 원격으로 접속하는 프로그램은 우분투의 경우 리미너(Remmina) 원격 접속 클라이언트가 대표적이다. (성능상의 이유라기보다는, 우분투를 설치하면 기본으로 내장하고 있기 때문에)


그런데 리미너 원격 접속 클라이언트는 듀얼모니터를 지원하지 않는 한계점이 있다. 즉 접속하는 리눅스에 모니터가 2개가 있더라도 원격 접속 윈도우 화면은 모니터 한 곳에만 표시된다.


그래서 다른 대안 앱을 확인해 보니, rdesktop과 FreeRDP가 있다. [1]

하지만 rdesktop의 경우에는 말 그대로 두 개 이상의 모니터를 이용하는 커다란(...) 단일 화면 해상도를 만드는 방식이기 때문에 사람들이 일반적으로 상상하는 듀얼 모니터(모니터 2개에 전체화면 프로그램들을 별도로 배치할 수 있는 형태)가 아니다.

23인치 모니터와 22인치 모니터 2개를 쓰는 내 컴퓨터 화면에서는 가로 약 3700픽셀 * 세로 약 1000픽셀 정도 되는 지나치게 넓적한 단일 화면을 볼 수 있었다. ㅡㅡ;;


그래서 FreeRDP를 알아본 결과, 2015년 9월 8일 현재 기준으로는 우분투 소프트웨어 패키지 관리자(apt-get install)로 설치하는 버전으로는 여전히 듀얼 모니터를 지원하지 않고, 다만 git-hub에 올라와 있는 최신 버전(1.1 series second technology preview 이후 버전)은 듀얼 모니터를 지원한다.


따라서 최신 버전의 소스코드를 다운로드 받아서 수동으로 설치하고 이용할 수 있다.

소스코드 컴파일 및 설치 방법은 아래 링크에 있는 문서 [2]를 따라서 하면 된다:

https://github.com/FreeRDP/FreeRDP/wiki/Compilation



우분투(데비안 계열)를 위한 정보만 요약하면,


$ sudo apt-get install build-essential git-core cmake libssl-dev libx11-dev libxext-dev libxinerama-dev \

  libxcursor-dev libxdamage-dev libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 libxml2-dev \

  libxrandr-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libxi-dev libgstreamer-plugins-base1.0-dev


$ sudo apt-get install libavutil-dev libavcodec-dev



FreeRDP 소스코드의 압축을 푼 디렉토리로 이동해서,

$ cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_SSE2=ON .

$ make

$ sudo make install


그리고 /etc/ld.so.conf.d/freerdp 파일을 만들고 내용을 입력해서 저장한다:

/usr/local/lib/freerdp



이렇게 하면 xfreerdp 라는 이름의 앱 설치와 구성이 완료된다.

아래와 같은 명령으로 윈도우 머신에 원격으로 접속할 수 있다. multimon 옵션이 바로 듀얼모니터(멀티 모니터) 설정이다.

$ xfreerdp /multimon /u:사용자_계정_이름 /v:원격_컴퓨터_주소:포트번호


예를 들어, 192.168.0.10 컴퓨터에 있는 윈도우7에 사용자 계정 SampleUser로 접속하고자 하면,

xfreerdp /multimon /u:SampleUser /v:192.168.0.10:3389




<출처>

[1] http://askubuntu.com/questions/441543/is-there-an-rdp-client-that-can-work-with-a-dual-monitor-setup

[2] https://github.com/FreeRDP/FreeRDP/wiki/Compilation


반응형
블로그 이미지

Bryan_

,