Ubuntu 下如果没有接入显示器,vnc 会无法正常工作,所以需要做一些额外的操作来处理。
配置 vino
Ubuntu使用vino来作为默认的vnc服务器,但是默认的设置需要进行一些修改,特别是require-encryption
这个标志,macos自带的vnc客户的不支持它的加密方式。
gsettings set org.gnome.Vino require-encryption false
gsettings set org.gnome.Vino prompt-enabled false
gsettings set org.gnome.Vino authentication-methods "['vnc']"
gsettings set org.gnome.Vino lock-screen-on-disconnect false
gsettings set org.gnome.Vino vnc-password $(echo -n "mypassword"|base64)
需要注意的是,不要用sudo
来运行上面的命令,否则不但在ssh客户的操作时会有警告,而且修改的也不是当前的配置。
自动启动 vino server
随用户登录后,自动启动 vino server。编辑一个 vino-server.desktop 文件,如果 autostart 目录不存在,就创建一个。
sudo vim ~/.config/autostart/vino-server.desktop
填入如下内容:
[Desktop Entry]
Type=Application
Name=Vino VNC server
Exec=/usr/lib/vino/vino-server
NoDisplay=true
vino-server 不能在 console 中运行,所以需要在用户登录到桌面后用这样的方式自动启动。
安装 video-dummy
sudo apt install xserver-xorg-video-dummy
配置 dummy 显示器
在/etc/X11
下创建 xorg.conf 文件,填写分辨率等信息
sudo vim /etc/X11/xorg.conf
填写如下内容:
Section "Monitor"
Identifier "Monitor0"
HorizSync 28.0-80.0
VertRefresh 48.0-75.0
# 1024x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 64.11 MHz
# Modeline "1024x768_60.00" 64.11 1024 1080 1184 1344 768 769 772 795 -HSync +Vsync
# 1280x720 @ 60.00 Hz (GTF) hsync: 44.76 kHz; pclk: 74.48 MHz
# Modeline "1280x720_60.00" 74.48 1280 1336 1472 1664 720 721 724 746 -HSync +Vsync
# 1368x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 85.86 MHz
# Modeline "1368x768_60.00" 85.86 1368 1440 1584 1800 768 769 772 795 -HSync +Vsync
# 1600x900 @ 60.00 Hz (GTF) hsync: 55.92 kHz; pclk: 119.00 MHz
# Modeline "1600x900_60.00" 119.00 1600 1696 1864 2128 900 901 904 932 -HSync +Vsync
# 1920x1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz
Modeline "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync
EndSection
Section "Device"
Identifier "Card0"
Option "NoDDC" "true"
Option "IgnoreEDID" "true"
Driver "dummy"
EndSection
Section "Screen"
DefaultDepth 16
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Depth 16
Modes "1920x1080"
EndSubSection
EndSection
配置用户自动登录桌面
查看当前用的是什么管理器:
cat /etc/X11/default-display-manager
我的是/usr/sbin/gdm3
,那么编辑文件:
sudo vim /etc/gdm3/custom.conf
把下面三行的注释去掉,其中AutomaticLogin
行修改成自己的用户名。
WaylandEnable=false
AutomaticLoginEnable = true
AutomaticLogin = username
重启电脑,就可以登录了。
重启桌面
我通过 macos 的 Screen Sharing.app
用 vnc 协议来连接,查看 Ubuntu 的 Settings 的时候每次都会 crash,据说是 nvidia 的驱动问题,但是我没有深究,有兴趣的可以研究。
crash 后,vino-server 就退出了,要再次启动的话,需要重启桌面管理。Ubuntu 18.04下,只需要运行:
sudo systemctl restart display-manager
问题
这样配置后,如果再次接上显示器后,显示器会黑屏,这时候,需要把/etc/X11/xorg.conf
删除或者改名,比如改成/etc/X11/xorg.conf.dummy
,然后重启显示管理器:
sudo systemctl restart display-manager
即可。