树莓派4B+ubuntu20.04:不插显示器能不能正常开机?

问题原因

树莓派4B在没有显示器的情况下无法正常启动,主要是因为GPU和显示配置的问题。Ubuntu Server/Desktop 默认需要检测显示设备来完成图形界面的初始化。

  1. GPU驱动初始化:树莓派的GPU需要显示设备来完成初始化

  2. EDID检测失败:没有显示器时,系统无法获取显示器的扩展显示识别数据

  3. 图形服务挂起:图形界面服务等待显示设备就绪

  4. 自动分辨率检测:系统尝试检测最佳显示分辨率

解决方案

步骤一:修改GPU内存分配

编辑 /boot/firmware/config.txt 文件,添加或修改以下配置:

bash 复制代码
# 强制启用GPU,即使没有显示器
gpu_mem=64
disable_overscan=1
hdmi_force_hotplug=1
hdmi_group=1
hdmi_mode=16
hdmi_drive=2

# 强制HDMI热插拔检测
hdmi_force_hotplug=1

# 设置默认分辨率(1024x768)
hdmi_group=2
hdmi_mode=16

# 禁用splash屏幕以避免显示问题
disable_splash=1

步骤二:配置虚拟显示驱动

bash 复制代码
# 安装xserver虚拟显示驱动
sudo apt update
sudo apt install xserver-xorg-video-dummy

# 创建虚拟显示配置
sudo nano /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-70.0
    VertRefresh 50.0-75.0
    Modeline "1024x768" 65.00 1024 1048 1184 1344 768 771 777 806 -hsync -vsync
EndSection

Section "Screen"
    Identifier "DummyScreen"
    Device "DummyDevice"
    Monitor "DummyMonitor"
    DefaultDepth 24
    SubSection "Display"
        Depth 24
        Modes "1024x768"
    EndSubSection
EndSection

步骤三:设置x11vnc

x11vnc可以共享现有的显示会话,更适合无显示器情况:

bash 复制代码
# 安装x11vnc
sudo apt install x11vnc

# 设置VNC密码
x11vnc -storepasswd

# 创建systemd服务
sudo nano /etc/systemd/system/x11vnc.service

服务文件内容:

bash 复制代码
[Unit]
Description=X11 VNC Remote Desktop Service
After=display-manager.service network.target syslog.target
 
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -rfbauth /home/pi/.vnc/passwd -forever -display :0
User=pi
Restart=on-failure
RestartSec=5
 
[Install]
WantedBy=multi-user.target

启用服务:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service
sudo systemctl start x11vnc.service

重启树莓派即可

分辨率参考表

虚拟桌面的情况下配置:/usr/share/X11/xorg.conf.d/xorg.conf

修改如下参数:hdmi_group、hdmi_mode

如果预设模式不满足需求,可以使用自定义分辨率:

bash 复制代码
# 禁用预设模式,使用自定义
hdmi_group=2
hdmi_mode=87

# 自定义 1600x900 分辨率
hdmi_cvt=1600 900 60 3 0 0 0

# 或者自定义 1920x1080
hdmi_cvt=1920 1080 60 3 0 0 0

CEA 模式 (hdmi_group=1) - 电视标准

模式 分辨率 刷新率 说明
1 640x480 60Hz VGA
4 1280x720 60Hz 720p HD
16 1920x1080 60Hz 1080p Full HD
31 1920x1080 50Hz 1080p PAL
32 1920x1080 24Hz 1080p 电影

DMT 模式 (hdmi_group=2) - 显示器标准

模式 分辨率 刷新率 说明
4 640x480 60Hz VGA
9 800x600 60Hz SVGA
16 1024x768 60Hz XGA
23 1280x768 60Hz WXGA
28 1280x800 60Hz WXGA
35 1280x1024 60Hz SXGA
39 1366x768 60Hz HD
47 1440x900 60Hz WXGA+
58 1680x1050 60Hz WSXGA+
82 1920x1080 60Hz 1080p
相关推荐
David猪大卫16 小时前
【Linux修炼】环境变量、进程地址空间
linux·c语言·经验分享·笔记·学习·ubuntu·centos
且从容.1 天前
Ubuntu 安装 Docker
linux·ubuntu·docker
承渊政道2 天前
Linux网络学习【深入理解多路转接select、poll的代码改写】
linux·ubuntu·select·多路转接·poll
沫璃染墨3 天前
从零入门计算机网络系列(十二):HTTP长连接与会话管理详解——从Connection到Cookie与Session
linux·服务器·c++·tcp/ip·ubuntu·http·交互
longzhizhui9263 天前
Ubuntu 全版本 CVE-2026-98432 内核安全升级操作手册
ubuntu·网络安全·云计算·bash
OPEN-F3 天前
Ubuntu 自动登录后 GNOME 远程桌面连不上?一次登录钥匙环锁定的排查与永久修复
linux·运维·ubuntu
A7bert7773 天前
【MobileSAM部署至RK3588】环境适配→转换RKNN→开发板部署
c++·人工智能·深度学习·目标检测·ubuntu
用户4107192013254 天前
用 systemd 从零做一个系统健康巡检服务:脚本、沙箱与磁盘满排查实战
linux·ubuntu
Linux-lucky4 天前
46-Linux学习之旅之LVS负载均衡与keepalived高可用
linux·运维·学习·ubuntu·负载均衡·lvs
wzg20164 天前
ubuntu通过docker镜像部署安装onlyoffice
linux·ubuntu·docker