회사에서 VNC를 사용하고자 하는데, RealVNC 라는 업체에서 제공하는 것은 왠지 찝찝했다.

그러다가 발견한 문구 !!!

 

"free for both personal and commercial usage, with full source code available"

 

http://www.tightvnc.com/

 

거기에다가 vnc4server와 거의 완벽히 일치한다.

 

기본 실행 환경은 Ubuntu Desktop 버전을 기본값으로 그대로 설치하고,

기본 패키지 업그레이드는 기본 상태에서 최신으로 계속 갱신해 놓은 상태이다.

 

아래 내용을 테스트한 환경은 아래와 같다.

- Ubuntu 12.04 LTS 64bit

- Ubuntu 14.04 LTS 64bit

- Ubuntu 16.04 LTS 64bit

 

이하 과정은 vnc4server와 거의 동일하다.

 

 

1. 필요 패키지 설치

 

    본래는 아래 패키지들도 설치해야하지만, 이미 설치되어 있어서 제외하고 설치해도 된다.

 

        - sudo apt-get install gnome-settings-daemon gnome-terminal metacity nautilus

 

    아래와 같이 필요한 패키지를 설치하자

 

$ sudo apt-get install gnome-panel tightvncserver

 

 

 

2. 첫 실행

 

    첫 실행을 해서 기본 Config 등의 구성을 하도록 하면 되는데,

    sudo 없이 계정 권한으로 실행하여도 된다.

 

$ vncserver

 

    아래와 같이 패스워드 설정을 진행하면 된다.

 

 

 

    위의 화면을 보면 알겠지만, 계정 권한으로 실행을 하면 해당 계정으로 환경 설정을 한다.

 

 

 

 

3. 기본 창 관리자 변경

 

    기본 생성된 xstartup 파일에는 내가 원하는 대로 환경 설정이 되어 있지 않다.

    가장 먼저 실행된 vnc4server를 종료부터 하고 xstartup 파일을 수정하자.

 

$ vncserver -kill :1

$ cp ~/.vnc/xstartup ~/.vnc/xstartup.old

$ nano ~/.vnc/xstartup

 

#!/bin/sh

export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &

gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &

 

 

 

4. 다시 실행하기

 

    실행할 때에 해상도를 미리 정해줘야 한다.

 

$ vncserver -geometry 1024x768

 

 

 

5. VNC Viewer 로 접속하기

 

    다른 PC에서 해당 IP로 접속하면 된다. 물론 뒤에 디스플레이 번호 붙여서...

    VNC Viewer를 그대로 사용할 수도 있다.

 

 

    예쁘게 잘 나온다!

 

 

 

 

6. TightVNC Java Viewer 로 접속하기

 

    이왕 TightVNC를 사용하는 김에 Viewer도 바꿔 보자.

 

       - http://www.tightvnc.com/download.php

 

 

    다운로드 후 압축을 풀어서 실행하면 된다.

 

 

 

    실행하는 방법은 살짝 다르다. 여기에서는 Display가 아니라 포트 번호를 적어주면 된다.

 

 

 

    실행은 뭐 당연하게도 잘된다!

 

 

 

7. 부팅 時 자동으로 실행

 

    이제 잘 되는 것 까지는 확인했으니, 부팅할 때에 알아서 되도록만 하면 되겠다.

 

$ sudo nano /etc/init.d/vncserver

 

    아래 내용을 그대로 사용하면 된다.

    USER 부분이나 해상도 부분은 각자 상황에 맞게...

 

#!/bin/bash
### BEGIN INIT INFO
# Provides:          vncserver
# Required-Start:    networking
# Required-Stop:     networking
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

 

PATH="$PATH:/usr/bin/"
export USER="u12"

 

DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"

 

OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"

 

. /lib/lsb/init-functions

 

case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;

 

stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;

 

restart)
$0 stop
$0 start
;;
esac
exit 0

 

$ sudo chmod +x /etc/init.d/vncserver

$ sudo update-rc.d vncserver defaults

 

    이제는 재부팅을 하여도 잘 된다~!!!

 

반응형

 

리눅스 환경에서 "원격 데스크탑"으로 가장 유명한 SW로 꼽히는 것이 바로 VNC이다. 최근에는 xrdp를 많이 사용하긴 하지만, 그래도 전통을 갖고 있는 VNC...

 

하지만 보통 우리가 알고 있는 VNC SW는 오픈소스 프로젝트가 아닌 것 같다.

RealVNC 라는 업체에서 제공하는 Free 버전의 경우 "For individual private use." 용도로 되어있다.

 

 

뭐 일단 내 PC와 Server가지고 나만 사용하는 것이니까... 라이선스에는 부합하는 것 같은데...

 

 

 

VNC에 대해서 검색을 하다보면 그 대중성과 유명세에 비해서 정보들이 많지 않다.

다들 잘 아는데, 나만 모르는 건가? 나만 검색을 잘 못하는 건가?

 

 

 

일단 VNC를 사용할 때에 좀 귀찮은 부분이 "Desktop Environments"을 맞추는 것이다.

검색 결과의 대부분이 VNC를 셋팅할 때에 가볍게 사용하기 위한 XFce 같은 것으로 알려주고 있다.

나는 그냥 사용하고 있는 Unity 화면과 비스무리하게 사용하고 싶은데...

 

 

그리고, 대부분의 포스트에서 보면 실행 권한에 대한 언급을 볼 수 없었다.

대체 root 권한으로만 해야하는 것인지, 그냥 일반 계정 권한으로 하면 안되는 것인지...

 

 

또 하나는, 포트인데... VNC에서 사용하는 포트가 몇 번인지 명확히 설명해준 글이 많지 않았다.

때로는 방화벽이나 Proxy 등으로 사용하는 포트가 궁금했는데...

 

 

 

결국은 목마른 넘이 우물을 파듯이...

하나씩 찾아보고, 직접 테스트 해보고 하면서 다음과 같이 정리해보았다.

 

 

 

기본 실행 환경은 Ubuntu Desktop 버전을 기본값으로 그대로 설치하고,

기본 패키지 업그레이드는 기본 상태에서 최신으로 계속 갱신해 놓은 상태이다.

 

아래 내용을 테스트한 환경은 아래와 같다.

- Ubuntu 12.04 LTS 64bit

- Ubuntu 14.04 LTS 64bit

- Ubuntu 16.04 LTS 64bit

 

 

 

1. 필요 패키지 설치

 

    본래는 아래 패키지들도 설치해야하지만, 이미 설치되어 있어서 제외하고 설치해도 된다.

 

        - sudo apt-get install gnome-settings-daemon gnome-terminal metacity nautilus

 

    아래와 같이 필요한 패키지를 설치하자

 

$ sudo apt-get install gnome-panel vnc4server

 

 

 

2. 첫 실행

 

    첫 실행을 해서 기본 Config 등의 구성을 하도록 하면 되는데,

    sudo 없이 계정 권한으로 실행하여도 된다.

 

$ vnc4server

 

    아래와 같이 패스워드 설정을 진행하면 된다.

 

 

    위의 화면을 보면 알겠지만, 계정 권한으로 실행을 하면 해당 계정으로 환경 설정을 한다.

 

 

 

 

3. 기본 창 관리자 변경

 

    기본 생성된 xstartup 파일에는 내가 원하는 대로 환경 설정이 되어 있지 않다.

    가장 먼저 실행된 vnc4server를 종료부터 하고 xstartup 파일을 수정하자.

 

$ vnc4server -kill :1

$ cp ~/.vnc/xstartup ~/.vnc/xstartup.old

$ nano ~/.vnc/xstartup

 

#!/bin/sh

export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &

gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &

 

 

 

4. 다시 실행하기

 

    실행할 때에 해상도를 미리 정해줘야 한다.

 

$ vnc4server -geometry 1024x768

 

 

 

5. VNC Viewer 로 접속하기

 

    다른 PC에서 해당 IP로 접속하면 된다. 물론 뒤에 디스플레이 번호 붙여서...

 

 

    예쁘게 잘 나온다!

 

 

 

 

 

6. 부팅 時 자동으로 실행

 

    이제 잘 되는 것 까지는 확인했으니, 부팅할 때에 알아서 되도록만 하면 되겠다.

 

$ sudo nano /etc/init.d/vncserver

 

    아래 내용을 그대로 사용하면 된다.

    USER 부분이나 해상도 부분은 각자 상황에 맞게...

 

#!/bin/bash
### BEGIN INIT INFO
# Provides:          vncserver
# Required-Start:    networking
# Required-Stop:     networking
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

 

PATH="$PATH:/usr/bin/"
export USER="u12"

 

DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"

 

OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"

 

. /lib/lsb/init-functions

 

case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;

 

stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;

 

restart)
$0 stop
$0 start
;;
esac
exit 0

 

$ sudo chmod +x /etc/init.d/vncserver

$ sudo update-rc.d vncserver defaults

 

    이제는 재부팅을 하여도 잘 된다~!!!

 

 

 

아! 그리고 Display 1번인 경우 디폴트 포트는 5901 을 사용한다!

다른거 없이 이거 하나만 열리면 사용할 수 있다.

 

 

 

앗싸~ 여기까지!

반응형


짜증나는 오류 보고 메시지...



원인을 찾아보기 위해 로그를 뒤져보았다.


$ nano /var/log/syslog


어라?! 진짜로 error 메시지가 보이네....



Nov 15 01:31:05 u12-VBox NetworkManager[839]: <info> DNS: starting dnsmasq...

Nov 15 01:31:05 u12-VBox NetworkManager[839]: <error> [1447518665.535971] [nm-dns-dnsmasq.c:393] update(): dnsmasq not available on the bus, can't update servers.

Nov 15 01:31:05 u12-VBox NetworkManager[839]: <error> [1447518665.536318] [nm-dns-dnsmasq.c:395] update(): dnsmasq owner not found on bus: Could not get owner of name 'uk.org.thekelleys.dnsmasq': no such name

Nov 15 01:31:05 u12-VBox NetworkManager[839]: <warn> DNS: plugin dnsmasq update failed



뭔가 해보자.


$ sudo cp /usr/share/doc/dnsmasq-base/examples/dnsmasq.conf.example /etc/NetworkManager/dnsmasq.d/dnsmasq.conf


샘플 복사하고...


#strict-order


→ strict-order


주석 지워주자!



$ sudo restart network-manager



서비스 재시작!




반응형


툴 같은 것들을 테스트하기 위해서 Ubuntu 여러 버전을 만들어 놓고 있는데

잊을만하면 나오는 기분나쁜 메시지 !!!



대체 Avahi 라는 놈은 뭔데 나를 기분 상하게 하지!?

심지어 이것때문인지 오류 보고까지 하겠다고 한다. 아! 기분나빠!






Avahi가 뭔지 열심히 검색을 해보았더니,

Zeroconf(Zero configuration networking)의 Linux 환경을 위한 구현체라고 한다.


Zeroconf라는 놈은 또 무엇일까 열심히 검색을 해보았더니,

DHCP가 없는 환경에서도 수동 설정 없이 자동으로 네트워킹을 할 수 있는 환경을 만들어주는 것을 말한다고 한다.

(Apple의 Bonjour와 같은 놈!)


뭐 지금 이 놈에 대해서 깊이 공부하는 시간은 아니니...여기까지만 하기로 하고...



결론적으로,

이러한 Avahi의 알려진 버그로 인해서 특정 ISP 환경에서는 위와 같은 에러 메시지(?)를 보인단다.


그래서 저런 메시지가 나오지 않게 하려면 다음과 같이 하면 된다.



$ sudo nano /usr/lib/avahi/avahi-daemon-check-dns.sh


AVAHI_DAEMON_DETECT_LOCAL=1


AVAHI_DAEMON_DETECT_LOCAL=0


하나 더!


$ sudo nano /etc/default/avahi-daemon


AVAHI_DAEMON_DETECT_LOCAL=1


AVAHI_DAEMON_DETECT_LOCAL=0



그럼 이제는 재부팅~


반응형

'OS > Ubuntu' 카테고리의 다른 글

VNC Server 설치하기 (Ubuntu 12.04, 14.04, 16.04)  (5) 2016.06.06
dnsmasq error (Ubuntu 12.04)  (0) 2015.11.15
커널 빌드 하기 (Ubuntu 12.04 64bit)  (0) 2015.10.11
BASH Shell Script  (0) 2015.10.10
Apache2 error(?) - domain name...ServerName  (0) 2015.09.29


예전에 컴파일 시간 비교를 위해서 만만한(?) 커널을 가지고 테스트를 했었다.

그 때 메모해놓은 커널 컴파일 방법을 찾게되어서... 포스팅을 마무리 하고자 한다.



1. 사전 준비

    - 미리 설치해야하는 것들이 좀 있다.

$ sudo apt-get install build-essential kernel-package libncurses5-dev libgtk2.0-dev libglib2.0-dev libglade2-dev libqt3-mt-dev bin86 libssl-dev



2. 커널 다운로드

    - Ubuntu 패키지가 아니라 직접 다운로드 받아서 해보겠다.
    - 커널 소스가 있는 곳은 /usr/src 이다.

$ cd /usr/src

$ sudo wget https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.3-rc4.tar.xz

$ sudo xz -d linux-4.3-rc4.tar.xz

$ sudo tar -xvf linux-4.3-rc4.tar

$ cd ./linux-4.3-rc4

    - 특이하게(?) xz 타입으로 배포하는 커널이다.


3. 옵션 설정

    - 나름 Graphical 화면이 등장한다.

$ sudo make menuconfig

    - Save는 ".config" 파일로 하면 된다.



4. 빌드

   - 그냥 하면 된다.

$ sudo make


상황에 따라 다음과 같은 명령어도 사용할 수 있다.

설치 및 활용은 다음에 기회를 봐서 포스팅하겠다.

$ sudo make clean

$ sudo make bzImage install

$ sudo make modules modules_install




반응형

리눅스 서버를 가지고 놀다보면 종종 Shell Script를 작성해야하는 일이 발생한다.
아니면, 남이 만들어놓은 Script를 분석해야하는 경우거나...

이럴 때에 종종 부딪히는 문제가 내부 변수들에 대한 이해이다.
그러다가 찾은 너무나 잘 정리되어 있는 자료 발견~!!!

    - https://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/internalvariables.html


내부 변수에 대한 내용뿐만 아니라 Bash shell script에 대한 전반적인 사항 모두 훌륭하다.

    - https://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/index.html

Bash shell script의 기본 템플릿은 다음과 같이 하면 된다.

#! /bin/bash

blah blah

exit 0



반응형

집에서 혼자서 리눅스를 사용하다가 Apache2를 사용하다보면 아래와 같은 경고(?) 메시지를 보곤 한다.

 


$ sudo service apache2 restart
 * Restarting web server apache2                                                                                                          apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
                                                                                                                                   [ OK ]

Apache2 구동에는 별 지장이 없지만, 괜히 저런 메시지를 보면 기분이 나쁘니... 없애보자.

 


$ sudo nano /etc/apache2/httpd.conf

ServerName localhost

[ /etc/apache2/httpd.conf ] 파일을 수정하여 ServerName을 적어주면 된다.

 


$ sudo service apache2 restart


그리고, apache2를 재시작하면 기존에 보이던 마음에 안드는 메시지가 사라졌을 것이다!!!

 

위와 같이 해도 여전히 에러메시지가 나올 때가 있다.

그럴 때엔 앞에서 만든 "/etc/apache2/httpd.conf" 파일 삭제하고,

"/etc/apache2/apache2.conf" 파일의 제일 뒤에 "ServerName localhost" 적어주고 나서

"sudo service apache2 restart" 해주면 된다.

 

 http://hosts.tistory.com/448


 

반응형

여러 버전의 JDK를 사용하고 싶은 경우 때문에 알게된 명령어가 바로 "update-alternatives" 이다.

기본적인 사항을 한 번 살펴보기 위해서 java를 살펴보자.

$ whereis java
java: /usr/bin/java /usr/bin/X11/java /usr/local/java /usr/share/java

여기저기에 위치하고 있는 java 중에서 "/usr/bin/java"에 대해서 조금 더 자세히 살펴보면,

$ ls -al /usr/bin/java
lrwxrwxrwx 1 root root 22  6월  7 22:10 /usr/bin/java -> /etc/alternatives/java

잘 살펴보면, 일반적이지 않은 경로의 링크가 보인다. 바로 "alternatives" 경로가 바로 그것이다.
이러한 설정을 알아보기 위해서 "--config" 옵션을 사용해보면 전체 목록을 보면서 설정도 해볼 수 있다.

$ update-alternatives --config java
대체 항목 java에 대해 (/usr/bin/java 제공) 2개 선택이 있습니다.

  선택       경로                                            우선순위    상태
------------------------------------------------------------
  0            /usr/local/java/jdk1.7.0_60/bin/java   1         자동 모드
* 1            /usr/local/java/jdk1.7.0_60/bin/java   1         수동 모드
  2            /usr/local/java/jdk1.8.0_05/bin/java   2         수동 모드

기본 사항[*]을 사용하려면 엔터, 다른 것을 사용하려면 번호를 입력하십시오:

$

위의 화면을 보면, 설정에 대해서 전반적으로 살펴볼 수 있다.
사실 정보만 보기 위해서는 "--display" 옵션이 맞는 것이지만, 예쁘게 보여주는 것은 "--config" 옵션인 것 같다.



[ 등록하기 ]

특정 패키지를 설치한 후 다음과 같은 명령어로 등록을 할 수 있다.

sudo update-alternatives --install <link> <name> <path> <priority>

각 항목에 대한 설명은 다음과 같다.

옵션 설명
<link>   실행파일 이름으로 /etc/alternatives/<name> 을 가리킨다.
 (예: /usr/bin/pager) 
<name>   해당 링크 그룹의 대표 이름으로, 여러 가지 버전의 패키지들을 대표하는 이름으로 보면 될 것 같다.
 (예: pager)
<path>   alternatives 로 실제 연결할 실행파일 이름으로, 시스템에 설치한 패키지의 실행파일 이름이다.
 (예: /usr/bin/less)
<priority>   automatic 모드에서 어떤 것을 자동으로 선택해서 사용할지 결정할 때 사용되는 우선순위로, 높은 수가 더 높은 우선순위이다.



[ 삭제하기 ]

설정한 내역을 지워버리고 싶을 때에는 다음과 같이 하자.

sudo update-alternatives --remove <name> <path>




[ 설정하기 ]

등록한 내역을 설정하기 위해서는 다음과 같이 하면 된다.

sudo update-alternatives --set <name> <path>



반응형

'OS > Ubuntu' 카테고리의 다른 글

BASH Shell Script  (0) 2015.10.10
Apache2 error(?) - domain name...ServerName  (0) 2015.09.29
리눅스 배포판 인기 순위  (0) 2014.08.17
hostname 확인/변경 하기 (Ubuntu 12.04 / 14.04)  (0) 2014.08.16
fcitx : 한글 입력기 (Ubuntu 14.04)  (2) 2014.08.11

+ Recent posts