Ubuntu 20.04安装界面显示不全?改GRUB启动参数一步搞定
装Ubuntu 20.04的时候最磨人的不是分区也不是换软件源而是安装界面根本显示不全。按钮跑到屏幕外页面只显示左上角一小块鼠标滚轮滚到底也拉不回底部的“下一步”最后只能按电源键重启来回折腾一个多小时还在原地打转。这个“分辨率”问题我在台式机、笔记本、虚拟机上全都遇到过现象大同小异安装界面要么截半要么按钮消失要么干脆黑屏。问题本身并不复杂可以用三句话讲明白图形化安装器在没加载显卡驱动时误选了一个不合适的默认分辨率显示器分辨率越高安装界面内容越容易溢出可视范围只要在启动参数上动点手脚让内核以“安全模式”跑问题基本当场解决。这篇文章会从原理讲到实操给出几种场景的具体改法也把安装完成后的分辨率修复一起交代清楚。我习惯按这样的顺序处理问题先判断是启动阶段还是安装界面阶段出问题再用临时启动参数验证最后等系统装好以后装驱动、调分辨率。整个过程不需要专业设备也不需要重下镜像一根U盘和几分钟就够了。下面直接进入正题。1. 为什么安装界面会显示不完整1.1 “默认分辨率”惹的祸Ubuntu 20.04的图形化安装界面本质上是先启动一套完整的GNOME桌面再在这个桌面里运行安装向导。既然是图形桌面就必须有一个分辨率。正常Windows环境下显示器会通过HDMI或DP线把自身的“显示能力数据”汇报给显卡显卡据此选择一个合适的输出分辨率这个过程在行业内叫EDID识别。问题是Linux安装介质启动时显卡驱动往往还没有加载齐全。NVIDIA显卡尤其典型官方闭源驱动不在安装镜像里系统只能先用开源驱动把画面撑起来这就导致很多显卡不能正确识别显示器的EDID或者识别到却选不出合适的模式。选不出合适的模式时系统就会退而求其次挑一个它认为“大家都支持”的默认分辨率。如果这个分辨率超出了物理屏幕的可显示范围安装界面就会在屏幕边缘被截断。可以想象成一张A4纸铺在课桌面上纸比桌面大四边自然垂到桌沿外你想点右下角的按钮就得先认出那本来在纸上的内容其实超出了目所能及的范围。1.2 显卡驱动未就绪是根源安装镜像里集成的开源显卡驱动一般包含Intel的i915、AMD的amdgpu/radeon以及NVIDIA的nouveau。这些驱动对老硬件支持很好但对比较新的显卡兼容性不够。nouveau加载失败时屏幕上可能长时间停在黑屏amdgpu遇到较新的RDNA架构显卡、而内核版本太老时也可能出现输出异常。我在自己那台老NVIDIA显卡机器上遇到的情况是安装界面能进入但整个画面被放大了好几倍只显示左上角的一个区域鼠标移动范围也受限。后来加上了nomodeset参数相当于让内核在启动阶段禁用这些开源显卡驱动改用最基础的显示方式。这样虽然不会获得任何3D加速但会让分辨率和屏幕的物理尺寸严格匹配安装界面瞬间恢复正常。1.3 其他容易被忽略的诱因除了显卡驱动还有三个容易被漏掉的因素。第一是显示器的“过扫描”设置。部分电视当作显示器使用时会在边框区域裁掉一圈画面导致系统UI被切边看起来像分辨率不对。这种情况关键不是改启动参数而是去电视自己的设置菜单里关掉“HDMI过扫描”。第二是UEFI固件输出的显示模式。UEFI在开机阶段就已经初始化了图形输出协议Linux内核会沿用这个模式。如果主板默认将UEFI下的分辨率设置成很高的值而安装器在这个模式下渲染不全界面就会出现错位。修改启动参数时指定一个更稳妥的分辨率通常能覆盖这种问题。第三是虚拟机场景。VMware或VirtualBox默认给虚拟显卡的分辨率往往只有800x600但宿主机窗口比较大安装界面虽然完整却显得很小。这不是“显示不完整”而是虚拟机工具没安装好后文会单独讲。2. 最有效的解法临时修改GRUB启动参数2.1 按e进入GRUB编辑界面这个方法不需要改U盘里的任何文件只在内存中临时调整内核启动参数重启即恢复原状。具体操作用制作好的Ubuntu 20.04安装盘启动电脑在出现GRUB菜单时光标默认停在“Try or Install Ubuntu”这一项上。此时不要直接按回车而是按键盘上的e键进入编辑模式。屏幕上会出现一大段以linux开头的启动配置其中包括类似这样的内容linux /casper/vmlinuz file/cdrom/preseed/ubuntu.seed maybe-ubiquity quiet splash ---这段配置告诉内核去哪里找安装介质的文件、以什么模式启动。我们要动的就是这一行的结尾参数。修改完成后按CtrlX或F10保存并启动就可以看到应用了临时参数的系统。有一点要注意编辑界面里不能用鼠标导航全靠键盘方向键。如果你按e以后什么反应也没有检查一下键盘是否处于USB 3.0接口。某些老主板对U盘键盘的兼容性不好换一个USB 2.0接口再试。2.2 加nomodeset参数先绕开显卡驱动这是适用范围最广、见效最快的操作。把上面那行linux参数末尾的quiet splash ---改成quiet splash nomodeset ---整行修改后大概长这样linux /casper/vmlinuz file/cdrom/preseed/ubuntu.seed maybe-ubiquity quiet splash nomodeset ---nomodeset的意思是告诉内核在进入系统图形环境之前不要对显卡驱动做模式设置。内核会直接用UEFI固件已经建立好的输出模式或者选一个最基础的帧缓冲模式。它牺牲了图形加速但换来了极高的兼容性。我实测下来的结论是九成以上的“安装界面显示不完整”“启动时黑屏”“安装过程中花屏”加这个参数都能解决。NVIDIA用户尤其需要关注因为nouveau驱动折腾人的概率远高于Intel核显。如果你还想保留一定的输出灵活性也可以试试顶替参数例如nouveau.noaccel1它只关闭nouveau的硬件加速不彻底禁用它但实际验证下来没有nomodeset直接稳定。2.3 固定分辨率video参数怎么选nomodeset能解决大部分问题但个别机器在加了这个参数后画面还是歪的或者分辨率低得离谱按钮虽然能看见但字体模糊。这时可以再加一个强制分辨率的参数直接在linux行的末尾补充video1366x76860完整形态linux /casper/vmlinuz file/cdrom/preseed/ubuntu.seed maybe-ubiquity quiet splash nomodeset video1366x76860 ---分辨率怎么选最稳妥的做法是先用你显示器面板上标出的物理分辨率。比如屏幕是1366x768就填1366x768是1920x1080就填1920x1080。注意别贪高如果你不确定显示器支持哪种模式宁可往低压比如1024x768也不要强行设4K。安装阶段最重要的是把所有按钮都显示出来分辨率低一点不影响后续分区和系统安装安装完成后再调回来就行。我通常会做这样几个候选值按顺序试video1024x768video1366x76860video1600x90060video1920x108060一次试一个哪个能完整显示安装界面就用哪个。2.4 安全启动与特殊固件的影响如果加完参数依然卡在启动界面就要检查电脑的Secure Boot安全启动状态。部分品牌的电脑在安全启动开启时会限制Linux使用某些显卡驱动安装盘启动后表现就是黑屏或者卡logo。进BIOS暂时关闭Secure Boot再重新引导安装盘通常就正常了。这里要说清楚关闭安全启动不会损坏系统装完Linux以后如果你希望保持整机安全级别更高可以重新开启但如果重新开启后Ubuntu无法启动就需要去了解微软签署的shim引导组件是否匹配对新手来说保持关闭也不算违规操作。还有一种情况是双显卡笔记本尤其是IntelAMD混合输出的型号。Linux对双显卡切换的支持不如Windows完整安装界面偶尔会输出到内屏以外的接口上。常见做法是在外接显示器上观察安装界面或者在linux行里加上显卡对应的内核参数例如amdgpu.dc0这是AMD在特殊显示器上的兼容性开关非必需但遇到顽固问题时可作为一个尝试入口。3. 不同机器和场景下的操作变体3.1 双系统Windows正常不代表Ubuntu也正常很多用户是在Windows或macOS能正常显示的前提下想装Ubuntu双系统结果却发现安装界面残缺。Windows正常说明显示器本身没问题EDID数据也没坏问题几乎全部集中在开局阶段的Linux显卡驱动上。按第2章的方法在GRUB里加nomodeset就好。但这类用户要额外注意磁盘问题因为它会让安装进度卡住如果Windows开启了快速启动功能文件系统可能处于休眠状态Ubuntu安装器有时会把分区识别成“已使用”或无法读取。这个和显示接口无关但却是安装Ubuntu最常见的第二个拦路虎。建议在Windows里关闭快速启动后再继续安装。3.2 NVIDIA显卡从开源nouveau到厂商驱动NVIDIA显卡的兼容性问题最密集。安装界面往往只是第一步装完系统后的重启黑屏更是高发区。解决办法是系统装好后安装官方驱动但安装驱动前要先把nouveau屏蔽掉否则两套驱动互相抢硬件同样会黑屏。结合分辨率问题的典型动作是安装完系统后如果重启黑屏就在GRUB菜单里选择“Advanced options for Ubuntu”进入“recovery mode”再在恢复菜单里选“root”进入命令行手动把启动参数保存到GRUB配置sudo sed -i s/GRUB_CMDLINE_LINUX_DEFAULT.*/GRUB_CMDLINE_LINUX_DEFAULTnomodeset/ /etc/default/grub sudo update-grub这会让系统始终以nomodeset启动先保证能看到桌面再去“软件和更新”的“附加驱动”页面装NVIDIA官方驱动。装完官方驱动后可以把上面替换的nomodeset去掉因为闭源驱动接管显卡后不需要这个兼容模式了。3.3 虚拟机VMware和VirtualBox的处理差异在虚拟机里装Ubuntu 20.04时界面显示不完整的概率要小很多因为虚拟显卡是软件模拟的不存在EDID不识别的问题。如果你的虚拟机窗口比较小安装界面虽然能显示但每个对话框都被压扁装完系统后分辨率还是固定800x600那是虚拟显卡驱动没装。VMware用户装完系统后执行sudo apt update sudo apt install open-vm-tools open-vm-tools-desktop安装完成后重启虚拟机窗口就能跟随宿主机窗口大小自动伸缩。VirtualBox用户则需要在设备菜单里挂载“安装增强功能”光盘镜像然后运行脚本。这两个工具的安装本身也会修复分辨率问题。如果在虚拟机里要改启动参数方法和物理机完全一致GRUB菜单按elinux行末尾加nomodeset和video参数。3.4 ARM开发板等特殊平台如果用树莓派或RK3588这类ARM平台直接“烧写”Ubuntu镜像通常没有传统意义上的图形安装界面分辨率问题一般发生在首次登录桌面后。启动参数同样可以解决只是改法不同ARM平台的启动参数通常在/boot/firmware/cmdline.txt树莓派或者U-Boot的环境变量里。把video参数和nomodeset追加进去再重启验证即可。不过这里要提醒一下ARM开发板的HDMI输出能力差异很大树莓派4B支持4K但线材质量差会导致没有信号。先确认你用的HDMI线支持实际输出分辨率再调试启动参数能省掉很多无效操作。4. 安装完成后分辨率仍然不对怎么办4.1 先用系统自带设置调整系统装完以后分辨率问题的处理逻辑可以回归正常。先打开“设置-显示器”查看系统识别出了什么样的分辨率。如果选项里有显示器的最佳分辨率直接切换就好。如果设置里没有正确选项或者切过去后画面变形继续往下看。多数情况下只要你在第2章里用nomodeset完成了安装安装完成后的桌面分辨率会由内核自动选一个比较安全的值可能不是最佳但能看清内容。此时优先去“附加驱动”里装好显卡驱动装完重启分辨率选项才会完整。4.2 xrandr手动添加显示器模式如果显卡驱动已经装好但设置里的分辨率列表仍然缺少你想要的那一档可以用xrandr手工添加。先查看当前输出接口和分辨率xrandr --verbose输出里会列出类似HDMI-1、DP-1、eDP-1这样的接口名。然后生成一个自定义分辨率的模式cvt 1920 1080 60命令会返回Modeline信息例如Modeline 1920x1080_60.00 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync vsync把里面的数字复制下来依次执行xrandr --newmode 1920x1080_60.00 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync vsync xrandr --addmode HDMI-1 1920x1080_60.00 xrandr --output HDMI-1 --mode 1920x1080_60.00三行命令之后显示器应该能切换到1920x1080。这个操作是临时的重启会丢失。如果你确实需要永久生效可以把这些命令写进~/.xprofile或者新建/etc/X11/xorg.conf.d/50-monitor.conf在Section Monitor段落里显式声明PreferredMode。新手建议用第一种修改简单出错也容易回退。4.3 Ubuntu 20.04下显卡驱动的后续处理NVIDIA用户装完驱动后可以用nvidia-smi命令检查驱动是否正常加载了。如果命令输出一个图形布局的信息说明驱动工作正常。AMD用户则不需要额外操作因为amdgpu已经在开源内核驱动里了只是新一代显卡可能需要更新主板BIOS或使用更新的HWE内核才能完整支持。Ubuntu 20.04默认使用的是5.4内核对2021年以后发布的显卡识别不完全是常有的事。可以安装HWE内核栈让系统用更新的内核版本sudo apt install linux-generic-hwe-20.04装完重启这样能让amdgpu和i915的驱动代码覆盖新硬件的bug。我的个人经验是安装界面黑屏、分辨率识别不全这类问题在更新HWE内核后常有明显改善这个方法甚至可以和nomodeset结合使用先保证界面显示再逐步回到正常模式。5. 常见问题速查与避坑建议5.1 问题排查顺序碰到安装界面显示不完整别急着重下镜像按这个顺序排查确认显示器面板本身的物理分辨率再把线材换DP或HDMI重新插一次排除线材问题。U盘启动进GRUB加nomodeset看问题是否消失。如果仍异常再加video1024x768降低默认显示规格。检查Secure Boot是否干扰Linux启动暂时关闭再试。装完系统后安装闭源显卡驱动或虚拟化增强工具恢复最佳分辨率。这五步覆盖了从硬件到软件、从启动阶段到系统阶段的整个链路九成情况都能找到答案。5.2 高频故障对照表故障现象常见原因正确操作安装界面右上角大量内容不可见分辨率超出物理屏幕加nomodeset并指定较低分辨率启动U盘后直接黑屏nouveau或amdgpu驱动加载失败加nomodeset必要时关闭Secure Boot安装界面能显示但剧烈花屏显卡驱动与硬件不兼容加nomodeset安装后同步更新内核笔记本双显卡画面输出到错误屏幕混合显卡切换逻辑异常在BIOS里切换显卡模式或外接显示器观察虚拟机安装后分辨率锁死未安装增强工具VMware装open-vm-toolsVirtualBox装增强功能电视当显示器画面四周被裁剪HDMI过扫描开启在电视设置里关闭过扫描或将HDMI输入标记为PC5.3 几个容易踩的坑修改GRUB参数时千万不要顺手删掉linux行里的---。这个分隔符告诉内核下面是initramfs初始化参数删掉虽然在很多机器上也能启动但个别机器会出现莫名奇妙的启动失败。不要在有其他操作系统的情况下用dd命令直接往整块磁盘写镜像。很多人下载Ubuntu镜像后用类似指令把镜像写到整个U盘却误写了电脑硬盘。这里顺便强调写U盘时一定要看清设备名确认是/dev/sdb还是/dev/sdc不要把/dev/sda覆盖掉。安装完成后千万别把nomodeset永久写入/etc/default/grub就再也不管了。闭源驱动装上后显卡的主要加速引擎被驱动接管nomodeset这种“强制无模式设置”的参数有时反而会限制驱动功能表现为能进桌面但非常卡顿或者显示刷新率只有30Hz。装好驱动后把这个参数去掉再执行sudo update-grub重启验证才是正路。根因没有确认前不要急着改grub.cfg文件。GRUB启动菜单的真正配置文件是/boot/grub/grub.cfg但它由update-grub自动生成手动改的内容会被后续更新覆盖。要做好永久修改永远修改/etc/default/grub然后执行update-grub。最后补一个细节如果在安装界面每点击一个按钮都要等待很久界面疑似卡死可以按CtrlAltF2切换到另一个终端再按CtrlAltF1切回图形界面这样能刷新一下渲染偶尔能解决鼠标失灵但界面仍然响应的问题。这招不保证每次都有用但我在老硬件上遇到过好几次切一次终端就恢复正常了。写在最后的操作心得根据我这些年装机的经验Ubuntu 20.04安装界面显示不完整百分之八十都是显卡驱动在“裸奔”状态下工作导致的真正硬件故障的概率非常低。买个安装盘回来的第一件事别急着双击安装先按e把nomodeset加进去这是一种习惯。你甚至可以像做实验一样把温度记录下来哪些参数组合在你的硬件上稳定哪些参数又快又没用以后装别的Linux发行版都能借鉴。如果你在装完系统后还需要继续跑ROS、搭建YOLOv8这类深度学习环境建议把“解决显示问题”看作整个环境搭建的第一道门槛先把显示器调顺再谈其它。先把这段折腾过去后面的路会平坦很多。