OS/Linux

GUI부팅, VNC server

엔지니어1 2024. 3. 25. 16:37

리눅스나 유닉스는 다양한 소프트웨어를 사용하여 GUI환경으로 부팅을 할 수 있습니다.

그중 대표적으로 xwindow를 사용하여 KDE와 GNOME과 같은 GUI로 부팅을 시도할 수 있습니다.

이렇게 설정된 GUI서버를 VNC server를 설정하여 원격으로 GUI에 접속하거나(5901~),

XRDP를 사용하여 rdp 프로토콜(3389)을 사용하여 원격으로 접속을 할 수 있습니다.

 

아래는 위에 소개한 방법을 CentOS 7, Rocky 8, Ubuntu 22.04 환경에서 사용하는 것을 알아보겠습니다.

 

1) CentOS 7

 

1-1) Xwindow 설치

# yum -y groupinstall 'X Window System'

 

1-2) GUI 설치 (KDE or GNOME)

# yum -y groupinstall 'KDE Plasma Workspaces' # kde
# yum -y groupinstall 'GNOME Desktop' # gnome

여기서 간단하게 KDE와 GNOME에 대해 설명드리자면

GNOME(GNU Network Object Model Environment): GNOME은 자유 소프트웨어 재단(FSF)과 GNU 프로젝트에 의해 개발된 데스크톱 환경입니다.
단순하고 사용하기 쉬운 디자인, 애플리케이션의 간결한 디자인, 확장성과 커스터마이징이 주요 특징입니다.

KDE(K Desktop Enviroment) : KDE 커뮤니티에 의해 개발된 데스크톱 환경으로, Qt 라이브러리를 기반으로 합니다.
기능의 다양성과 유연성, 고급 기능과 도구, 일관된 사용자 경험이 주요 특징입니다.

 

차이점은

디자인 - GNOME : 단순하고 사용하기 쉬운 디자인입니다.
           - KDE : 고급 기능을 포함하고 다양한 설정을 제공합니다.

기본 응용 프로그램 - GNOME은 Nautilus 파일 관리자와 GNOME 터미널을 기본으로 제공합니다.
                              - KDE는 Dolphin 파일 관리자와 Konsole 터미널을 제공합니다.

 

run level 설정하여 gui 부팅

# ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target

설정 후 재부팅시 GUI모드로 부팅됩니다.

 

1-3) VNC server 설치

VNC 서버는 리눅스 시스템에 설치된 X Window System(GUI 환경)을 원격으로 접속하여 사용할 수 있도록 합니다. 

사용자는 VNC 클라이언트를 사용하여 원격 시스템에 접속하고, 해당 시스템의 화면을 보고 GUI 응용 프로그램을 실행하고 제어할 수 있습니다.

# yum -y install tigervnc tigervnc-server

 

1-4) VNC server 패스워드 설정

# vncserver

 

1-5) VNC 서버 설정 수정 및 재가동

부팅 스크립트 설정

# vi .vnc/xstartup

===============================================================
#!/bin/sh

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 120x40+10+10 -ls -title "$VNCDESKTOP Desktop" &
startkde & # kde
# gnome-session & # gnome
===============================================================

 

VNC 서버 설정

# vi /etc/sysconfig/vncservers

===============================================================
VNCSERVERS="1:root"
VNCSERVERARGS[2]="-geometry 1280x1024 -nolisten tcp -nohttpd -localhost" 
===============================================================

 

root사용자로 접속하기 위해 설정파일 복사 및 데몬 설정 변경

# cp -arp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

# vi /etc/systemd/system/vncserver@:1.service

================================================================
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i -geometry 1280x1024"
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target
================================================================

 

VNC 서버 재부팅 및 OS 리부트

# systemctl enable vncserver@:1.service
# reboot

 

이후 client에서 VNC 서버로 접속하는 보조 응용 프로그램을 활용하여 접속하시면 됩니다.

1. VNC Viewer
2. chrome vncviewer
3. tigervnc (yum install -y tigervnc, vncviewer <ip>:<세션번호>)

 

2) rocky 8

Rocky에서는 xwindow가 아닌 GUI서버룰 설치하여 진행해 보겠습니다.

 

2-1) GUI 설치

# yum -y group install "Server with GUI"

 

2-2) 시작 시 GUI(gnome)로 기본설정

# vi ~/.xinitrc
=================================================================
export XDG_CURRENT_DESKTOP=GNOME-Classic:GNOME
export GNOME_SHELL_SESSION_MODE=classic
exec /usr/bin/gnome-session --session=gnome-classic
=================================================================

# startx # 실행

 

2-3) VNC server 설치

# yum -y install tigervnc-server

 

2-4) VNC server 패스워드 설정

# vncpasswd

 

2-5) VNC 서버 설정 수정 및 재가동

서버 설정 수정하기

# vi ~/.vnc/config

=============================================
# create new
# session=(display manager you use)
# securitytypes=(security options)
# geometry=(screen resolution)
session=gnome
securitytypes=vncauth,tlsvnc
geometry=1280x1024
=============================================

 

로그인 설정 및 재가동

# vi /etc/tigervnc/vncserver.users

===============================================
# add to the end
# specify [:(display number)=(username] as comments
# display number 1 listens port 5901
# display number n + 5900 = listening port
#
# This file assigns users to specific VNC display numbers.
# The syntax is <display>=<username>. E.g.:
#
# :2=andrew
# :3=lisa
:1=root
===============================================

# reboot

# systemctl enable --now vncserver@:1

 

3) Ubuntu 22.04

ubuntu는 데몬 형태가 아닌 cinnamon 환경 GUI로 설정해 보겠습니다.

3-1) GUI 설치

# apt -y install task-cinnamon-desktop

 

3-2) VNC Server 설치

# apt -y install tigervnc-standalone-server

 

3-3) VNC 패스워드 설정

# vncpasswd

 

3-4) xstartup 설정 + vnc 서버 실행

# tigervncserver -xstartup /usr/bin/cinnamon-session -geometry 1280x1024 -localhost no :1

 

공통된 사항으로 iptalbes와 같은 방화벽을 확인해야 합니다.

만약 iptables를 사용하신다면

# iptables -A INPUT -p tcp -m tcp --dport 5901 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 5902 -j ACCEPT

를 사용하여 포트를 열고, iptables가 아닌 다른 방화벽 유무도 확인합니다. (ufw, firewalld)

 

다음 시간에는 XRDP를 설치하고 설정하는 법에 대해 알아보겠습니다.

감사합니다!