树莓派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
相关推荐
荒--14 小时前
Ubuntu软件包查询,弹框下载文件
运维·服务器·ubuntu
闲云自留地15 小时前
CentOS 搬 Ubuntu 24.04:yum 变 apt、防火墙、SELinux、root 全差异避坑
linux·ubuntu·centos
xiaobobo333019 小时前
Ubuntu 26.04环境中如何使用中文man手册以及man手册默认中文显示
ubuntu·中文man手册·man手册默认中文显示·简化man·cheat
菜菜的院子19 小时前
WSL2 运行 Ubuntu 26.04 完整 GNOME 桌面(WSLg Wayland)
linux·运维·ubuntu·wsl
KIDULT°21 小时前
Kubeadm 部署 Kubernetes v1.30.2 实战:Ubuntu24.04 三节点集群 + 排坑记录
ubuntu·云原生·容器·kubernetes·k8s
xiaobobo33301 天前
man手册的格式、共性、命令
ubuntu·man手册结构·man手册共性·man手册命令
Happy_Sharing1 天前
Windows虚拟机安装ubuntu后,如何在虚拟机Ubuntu系统中访问Windows文件夹
linux·运维·ubuntu
闲云自留地1 天前
从零造一台 Ubuntu 24.04:虚拟机、装系统、配 IP 到 root 远程登录一篇通
数据库·tcp/ip·ubuntu
xiaobobo33301 天前
Ubuntu 26.04环境下使用vim软件编辑文档的一些不常用用法
ubuntu·vim常用用法
我先去打把游戏先2 天前
NimBLE是什么-ESP32蓝牙协议栈详解
单片机·嵌入式硬件·ubuntu