Назад | Перейти на главную страницу

Не удается заставить VNC-сервер работать в CentOS 7.4

Я запускаю CentOS 7.4 с Gnome, и у меня проблемы с тем, чтобы сервер VNC обслуживал среду рабочего стола для клиента. У меня либо пустой черный экран, либо текст с флажками. Он работает для VNC:

Xvnc TigerVNC 1.8.0 - built Aug  7 2017 01:32:32

Если я использую .vnc / xstartup, как указано в моем домашнем каталоге:

#!/bin/sh

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec /etc/X11/xinit/xinitrc

У него запрашивают пароль, но он просто показывает пустой черный экран. Это вообще не вмешивается. Когда я вхожу в ту же учетную запись с консоли, она работает отлично.

У меня был VNC-сервер, работающий в системе CentOS 6, которая уже вышла из эксплуатации, поэтому я решил попробовать xstart с этой системы:

#!/bin/sh

vncconfig -iconic &
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
OS=`uname -s`
if [ $OS = 'Linux' ]; then
  case "$WINDOWMANAGER" in
    *gnome*)
      if [ -e /etc/SuSE-release ]; then
        PATH=$PATH:/opt/gnome/bin
        export PATH
      fi
      ;;
  esac
fi
if [ -x /etc/X11/xinit/xinitrc ]; then
  exec /etc/X11/xinit/xinitrc
fi
if [ -f /etc/X11/xinit/xinitrc ]; then
  exec sh /etc/X11/xinit/xinitrc
fi
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
exec gnome-session &

Но это создает серый экран для клиента со следующими флажками и текстом:

Accept clipboard from viewers
Also set primary selection
Send clipboard to viewers
Send primary selection to viewers

Я могу ставить и снимать эти флажки, но это все. Не получайте среду рабочего стола, которую я редактировал в соответствии со статьями и документацией CentOS 7, которую я видел:

Вот файл /etc/systemd/system/vncserver@:1.service:

# The vncserver service unit file
#
# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/vncserver@.service
# 2. Replace <USER> with the actual user name and edit vncserver
#    parameters appropriately
#   ("User=<USER>" and "/home/<USER>/.vnc/%H%i.pid")
# 3. Run `systemctl daemon-reload`
# 4. Run `systemctl enable vncserver@:<display>.service`
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted!  For a secure way of using VNC, you should
# limit connections to the local host and then tunnel from
# the machine you want to view VNC on (host A) to the machine
# whose VNC output you want to view (host B)
#
# [user@hostA ~]$ ssh -v -C -L 590N:localhost:590M hostB
#
# this will open a connection on port 590N of your hostA to hostB's port 590M
# (in fact, it ssh-connects to hostB and then connects to localhost (on hostB).
# See the ssh man page for details on port forwarding)
#
# You can then point a VNC client on hostA at vncdisplay N of localhost and with
# the help of ssh, you end up seeing what hostB makes available on port 590M
#
# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.
#
# Use "-localhost" to prevent remote VNC clients connecting except when
# doing so through a secure tunnel.  See the "-via" option in the
# `man vncviewer' manual page.


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

[Service]
Type=forking
User=justme

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/usr/bin/vncserver %i
PIDFile=/home/justme/.vnc/%H%i.pid
ExecStop=-/usr/bin/vncserver -kill %i

[Install]
WantedBy=multi-user.target

Я просмотрел файл журнала и увидел только следующие ошибки / предупреждения:

[root@myserver ~]# systemctl status vncserver@:1.service
● vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; **vendor preset: disabled**)
   Active: inactive (dead) since Wed 2017-10-11 05:04:32 EDT; 21min ago
  Process: 2456 ExecStop=/usr/bin/vncserver -kill %i (code=exited, status=0/SUCCESS)
  Process: 1410 ExecStart=/usr/bin/vncserver %i (code=exited, status=0/SUCCESS)
  Process: 1358 ExecStartPre=/usr/bin/vncserver -kill %i (code=exited, status=2)
 Main PID: 1570 (code=exited, status=0/SUCCESS)

Oct 11 05:01:31 myserver vncserver[1358]: Can't find file /home/justme/.vnc/myserver:1.pid
Oct 11 05:01:31 myserver vncserver[1358]: You'll have to kill the Xvnc process manually
Oct 11 05:01:34 myserver vncserver[1410]: New 'myserver:1 (justme)' desktop is myserver:1
Oct 11 05:01:34 myserver vncserver[1410]: Starting applications specified in /home/justme/.vnc/xstartup
Oct 11 05:01:34 myserver vncserver[1410]: Log file is /home/justme/.vnc/myserver:1.log
Oct 11 05:01:34 myserver systemd[1]: Started Remote desktop service (VNC).
Oct 11 05:01:34 myserver gnome-session[1952]: gnome-session-binary[1952]: **WARNING: software acceleration check failed: Child process exited with code 1**
Oct 11 05:01:34 myserver gnome-session-binary[1952]: WARNING: software acceleration check failed: Child process exited with code 1
Oct 11 05:04:32 myserver vncserver[2456]: Killing Xvnc process ID 1570
Oct 11 05:04:32 myserver vncserver[2456]: Xvnc process ID 1570 already killed

Я предпринял несколько попыток изменить файлы xstartup и etc / systemd / system / vncserver @: 1.service, но ни один из них не дал результата, кроме пустого пустого экрана или экрана с флажками.

Если у кого-то с опытом в этом есть предложения по устранению неполадок или вы можете увидеть, в чем проблема, поделитесь своими мыслями.

После следующих инструкций, таких как https://www.linuxtechi.com/install-configure-vnc-server-centos-7-rhel-7/ это все еще не сработало. Я документирую решение здесь на случай, если другие столкнутся с этим.

Решение: Удален драйвер Nvidia и заменен на xorg-x11-drv-nouveau. Это устранило проблему. Вот как я его удалил: https://ask.fedoraproject.org/en/question/78969/how-to-remove-the-nvidia-privateetary-driver/

С тех пор я провел несколько поисков и увидел упоминание о том, что драйвер Nvidia нарушает работу VNC, хотя он отлично работает с проводными мониторами.

попробуйте запустить два процесса:

systemctl start vncserver-x11-serviced systemctl enable vncserver-x11-serviced systemctl start vncserver-vrituald systemctl enable vncserver-vrituald

запустить vncserver