리눅스 환경에서 "원격 데스크탑"으로 가장 유명한 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




반응형


빌드 환경을 테스트하는데,

Ubuntu 12.04 환경과 Ubuntu 14.04 환경 모두 필요해서 고민하던 중에 문득 떠오른 Docker.


설치까지만 해보고 가지고 놀지를 못하다보니 docker의 개별 image를 어떻게 다루어야 할지,

image와 container를 어떻게 구분을 해야 하는지,

각 container가 어느 정도의 독립성을 갖고 있는지 아무것도 확신이 없다.


하나씩 정복해보도록 하겠다.




1. Image 다운로드 받기


- Ubuntu 이미지를 다운로드 받으려면 다음과 같이 했었다.


$ docker pull ubuntu

latest: Pulling from ubuntu


83e4dde6b9cf: Pull complete 

b670fb0c7ecd: Pull complete 

29460ac93442: Pull complete 

d2a0ecffe6fa: Already exists


$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

ubuntu              latest               d2a0ecffe6fa         2 days ago            188.4 MB

ubuntu              14.04              5ba9dab47459        5 months ago        188.3 MB

ubuntu              14.04.1            5ba9dab47459        5 months ago        188.3 MB

ubuntu              trusty               5ba9dab47459        5 months ago        188.3 MB


- 그런데, 우리가 필요한 12.04 버전이 없다.




2. 특정 버전의 Ubuntu 다운로드 받기


- 우리가 필요한 12.04를 다운로드 받기 위해서는 다음과 같이 하면 된다.


$ docker pull ubuntu:12.04

12.04: Pulling from ubuntu


093e01545ca5: Pull complete 

639d60300768: Pull complete 

50e9f95f98f1: Pull complete 

6d021018145f: Already exists 

ubuntu:12.04: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.


Digest: sha256:ac1fcd76d94daa6ee3e832b540812d42a0095bfdc7c2837e2fc6cee2ec9809d7

Status: Downloaded newer image for ubuntu:12.04



$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

ubuntu              latest               d2a0ecffe6fa          2 days ago           188.4 MB

ubuntu              12.04               6d021018145f        2 days ago           134 MB

ubuntu              14.04               5ba9dab47459       5 months ago        188.3 MB

ubuntu              14.04.1             5ba9dab47459       5 months ago        188.3 MB

ubuntu              trusty               5ba9dab47459        5 months ago        188.3 MB



 

다음 링크 참조하면 도움이 많이 될 것이다.

https://github.com/docker/docker/wiki/Public-docker-images



반응형

여러 버전의 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

오랜만에 새로운 Ubuntu 버전과 Git 버전을 가지고 설치를 진행해보았다.
달라진 것은 없다.



1. 필수 패키지 설치

$ sudo apt-get install make libcurl4-gnutls-dev libexpat1-dev gettext zlib1g-dev libssl-dev asciidoc xmlto autoconf

 

 

2. 다운로드

$ cd /srv/install/git

$ wget http://www.kernel.org/pub/software/scm/git/git-2.1.0.tar.gz
$ tar zxvf git-2.1.0.tar.gz
$ cd git-2.1.0/


3. 빌드

$ make configure
$ ./configure --prefix=/usr/local
$ make all doc
$ sudo make install install-doc install-html

   - 설치가 잘 되었는지 확인을 해보기 위해서 버전 확인을 해보자.

$ git --version



GIT 자동완성을 지원하기 위해서는...

   - http://whatwant.tistory.com/478


우리 모두 Git으로 행복한 형상관리를...

반응형

hostname 우리말로는 "호스트명"이라고 부르면 될 것 같다.

일반적으로는 네트워크에서 특정 컴퓨터(서버)를 인식할 수 있는 이름을 의미하게 되며,
같은 네트워크에서는 유니크한 이름을 갖도록 해야 한다.

만일, 동일한 네트워크에서 같은 호스트명을 사용하게 된다면
단순한 혼란이 발생하는 것이 아니라 충돌상황이 발생할 수도 있다.

FQDN(Fully Qualified Domain Name)과 관련한 부분에 대해서는 이번에는 제외하도록 하겠다.


1. hostname 확인하기

   - 지금 현재 설정되어있는 호스트명을 확인하기 위해서는 다음과 같이 실행해보면 된다.
   - 물론, 대부분의 사용자들은 프롬프트에 표현되어 있기도 하다.

$ hostname

   - "2014.08.16" 기준으로 Ubuntu 12.04에서 hostname 버전은 3.06이고, 14.04에서는 3.15 이다.
   - hostname 버전에 따라서 약간의 옵션 차이가 있기에 12.04/14.04 모두에 적용되는 내용으로 설명하겠다.



2. hostname 변경하기

   - Linux 배포판에 따라 차이가 있는 부분인데, 우리는 여기에서 Ubuntu 기준으로 설명하도록 하겠다.

$ sudo nano /etc/hostname

변경하고 싶은 호스트명

   - 다른 내용은 필요없고, 호스트명을 수정하면된다.

$ sudo hostname -F /etc/hostname

   - [ hostname ] 명령으로 확인하면 변경된 것을 확인할 수 있지만, 터미널을 다시 실행하는 것이 깔끔하다.



3. 뒷정리하기

   - 위와 같이 하면, 기본적으로 호스트명을 변경할 수 있지만 다른 부분도 손봐주는 것이 바람직하기에...

$ sudo nano /etc/hosts

127.0.0.1         localhost
127.0.0.1         변경한 호스트명
...


필자의 경험으로... 네트워크와 관련된 사항들은 재부팅을 해주는 것이 가장 깔끔하다!

반응형

+ Recent posts