nomachine连接无显示器的Ubuntu/Debian时黑屏

nomachine连接无显示器的Ubuntu/Debian时黑屏

黑屏原因

无外接显示器时,Linux不会启动桌面GUI,或者说显卡就根本没有启动,这就是所谓的headless mode(无头模式?)

解决方法

官方给出了一些解决方案,见NoMachine - Connecting to Linux headless machines with NoMachine -- Knowledge Base

方法一:用一个外置的诱骗器来骗Linux启动显卡,这样就有桌面了,但这个太麻烦了。

方法二:停用X-Server,然后用nomachine自带的显示服务取而代之。

bash 复制代码
sudo systemctl stop gdm3  
sudo /etc/NX/nxserver --restart

这里的gdm3也有可能是lightgdm,sddm之类的东西。

这种方法, 每次重启Linux都要通过SSH来执行以上命令才可以看到图形界面。

方法三:使用虚拟显示器

首先安装xserver-xorg-video-dummy,这算是一个驱动吧,

bash 复制代码
sudo apt install xserver-xorg-video-dummy

然后编辑虚拟显示器的配置文件:sudo vim /usr/share/X11/xorg.conf.d/xorg.conf

bash 复制代码
Section "Device"
    Identifier "DummyDevice" 
    Driver "dummy"
    VideoRam 256000
EndSection
 
Section "Monitor"
    Identifier "DummyMonitor"
    HorizSync 30.0-1000.0
    VertRefresh 30.0-1000.0
    Modeline "2560x1440_50.00"  256.09  2560 2728 3008 3456  1440 1441 1444 1482 -HSync +Vsync
    Modeline "2560x1600_50.00"  285.75  2560 2736 3016 3472  1600 1601 1604 1646 -HSync +Vsync
EndSection

Section "Screen"
    Identifier "DummyScreen"
    Device "DummyDevice"
    Monitor "DummyMonitor"
    DefaultDepth 24
    SubSection "Display"
        Depth 24
        Modes "2560x1600_50.00" "2560x1440_50.00"
    EndSubSection
EndSection

上面文件中我自行添加了两个分辨率,比如2560x1600这个分辨率的配置可以使用gtf 2560 1600 50的命令生成,这里刷新率只能设置到50Hz,是因为如果时钟频率超过300MHz会失效,所以只能降低刷新了来提高分辨率了。如果不需要更高的分辨率,将Modes 后面改成"1920x1080"即可。

bash 复制代码
➞  gtf 2560 1600 50                                                                                                          
  # 2560x1600 @ 50.00 Hz (GTF) hsync: 82.30 kHz; pclk: 285.75 MHz
  Modeline "2560x1600_50.00"  285.75  2560 2736 3016 3472  1600 1601 1604 1646  -HSync +Vsync

➞  gtf 2560 1600 60   #生成的pclk超过300MHz会失效                                                                                                       
  # 2560x1600 @ 60.00 Hz (GTF) hsync: 99.36 kHz; pclk: 348.16 MHz
  Modeline "2560x1600_60.00"  348.16  2560 2752 3032 3504  1600 1601 1604 1656  -HSync +Vsync

保存xorg.conf之后,需要重启电脑(或者重启gdm3之类的服务也行),然后就可以在设置里看到分辨率了。

建议在设置的电源里面,把息屏改为从不,这样就不会自动登出了。

注意,用这种方法,如果下次要接物理显示器会不亮屏,需要把上面的配置文件删除掉。

使用windows自带的远程工具来连接linux

nomachine毕竟要另外安装,不如使用自带的远程工具来连接Linux,最新版的Linux一般也默认支持这种连接方式了,用的是RDP协议,体验还不错。

第一步,安装虚拟显示器

需要按照以上所述的方法三来安装一个虚拟显示器(当然,如果本身连着显示器就不必了)

第二步,开启自动登录

因为这个远程连接还不是系统级的软件,用户没有登陆的话,远程连接软件是还没有启动的,也就不能连接,所以要设置自动登陆、自动进入桌面,然后就会自动启动远程连接服务了。

bash 复制代码
cd /etc/gdm3
sudo nano daemon.conf
# 或者下面这条,取决于你目录下有哪个
sudo nano custom.conf 

把相应的行取消掉注释,然后把用户名改成自己的用户名就好了。我这里把Wayland也关了,不知道影不影响。

第三步,开启远程服务

这里以debian12的gnome环境为例,把远程桌面开了。

上图的密码,就是远程登录时候要输入的密码,可以设置的跟用户密码一样,也可以不一样。

除此之外,还有一个密钥环的密码。密钥环密码不为空白会导致登陆密码发生改变。当初次开启远程连接的时候,会弹出要设置密钥环的窗口,记得把密码设置为空白(是空白,不是0),不然每次重启Linux,上图的登录密码就会自己发生改变。如果没有弹出这个密钥环的窗口,可以去密钥管理的软件里面,把默认密钥环的密码设置为空白,如下图所示。

到此为止,就配置好远程登陆了,打开windows的远程登陆软件。

这里的计算机名称是你的ip地址,需要输入用户名,然后弹出窗口输入密码,即可成功远程。如果出现分辨率太小的问题,设置里改一下就好了。

最后吐槽下gnome4x版本,怎么会有桌面不让放桌面图标的啊,dash也藏起来了hhh,难道说以后的桌面真的就只有一张壁纸了???幸好我有dash to dock插件。

相关推荐
EasyNVR1 小时前
基于WebRTC与AI大模型接入EasyRTC:打造轻量级、高实时、强互动的嵌入式音视频解决方案
运维·服务器·微信·小程序·webrtc·p2p·智能硬件
技术小齐2 小时前
网络运维学习笔记 022 HCIA-Datacom新增知识点03园区网典型组网架构及案例实战
运维·网络·学习
致奋斗的我们2 小时前
HAProxy介绍与编译安装
linux·汇编·数据库·mysql·青少年编程·haproxy·openeurler
Java潘老师2 小时前
Automa 浏览器自动化编排 实现自动化浏览器操作
运维·自动化
waves浪游2 小时前
Linux基本指令(上)
linux·运维·服务器
不确定性确定你我2 小时前
`sh` 与 `bash` 的区别详解
linux·bash·运维开发
是北欢吆3 小时前
QQ登录测试用例报告
运维·服务器·测试用例
9毫米的幻想4 小时前
【Linux系统】—— 冯诺依曼体系结构与操作系统初理解
linux·运维·服务器·c语言·c++
刘什么洋啊Zz4 小时前
剖析IO原理和零拷贝机制
java·运维·网络
升讯威在线客服系统4 小时前
如何通过 Docker 在没有域名的情况下快速上线客服系统
java·运维·前端·python·docker·容器·.net