Ubuntu 18.04.6老机器安装避坑:分区扫描、UEFI引导与显卡排错
简介:这份PDF面向初次在实体机或笔记本上部署Ubuntu 18.04.6的用户,把安装前后最容易卡住的环节整理成一份可随手查阅的排错手册,覆盖启动盘制作、分区规划、网卡驱动适配与常用软件安装等场景,适合具备基础命令行操作能力的开发者和运维人员参考。资源包内仅含1个PDF文档,大小约172KB,篇幅精炼、结构按问题分类,便于按机型或现象快速定位。已有438人学习下载。内容结合多台真实设备的实测记录展开:既有联想E480无线网卡、Realtek 8125有线网卡等驱动获取与编译安装思路,也说明了MBR老机型与UEFI新平台在启动盘格式上的差异,并给出boot、EFI、swap、根目录与home的挂载点容量建议;日常应用部分则涵盖Chrome、dbeaver、WPS、搜狗拼音与Flameshot的安装途径。读者可据此少走弯路,形成从装机到驱动、再到常用工具配置的完整处理路径。
1. 一台老机器、一块机械盘,卡在分区扫描那十分钟
手上这台机器有年头了:四条内存槽只插两条,一块小容量固态加一块机械盘,固件界面还是那种灰底蓝字的风格。装 Ubuntu 18.04.6 的时候,安装器走到分区扫描那一步就停住,风扇狂转,进度条十分钟不动。这种场面不是个例,Ubuntu 18.04.6 系统安装真正难的地方,是它撞上的硬件太杂,版本本身没多大问题。
到今天还在装这个版本的人,需求都很具体:产线设备、教学机房、老工控机锁死在这条 LTS 线上,配套的驱动和工具链只在 18.04 上验证过,往上跳一个版本就得重做整轮测试。所以那些按日期命名的安装问题笔记才有生命力——它们记的是这个特定点版本在特定硬件上反复翻车的点,而不是「怎么装一个 Linux」这种泛问题。下面按准备、分区、引导与显卡、排错、收尾的顺序,把这些点摊开讲,能照着做,也知道哪一步该停手。
2. 装之前把三件事钉死:镜像校验、写盘方式、固件模式
装系统失败,八成原因在按下「Install」之前就已经埋好了。我见过太多案例:镜像下载中断、U 盘写到一半拔掉、固件一半 UEFI 一半 Legacy,最后全表现成「安装器卡死」,然后开始在硬件上瞎折腾。这三件事必须在动手前一次性钉死,任何一件含糊,后面所有排错都是在沙上盖楼。
2.1 先校验 ISO,别拿「能启动」当合格证
镜像能引导进菜单,不等于它是完整的。18.04.6 的桌面镜像两个 GB 上下,只要有一个块读错,安装器大概率会在解包某个 deb 包时崩掉,报错还特别含糊。校验这一步五分钟,能省掉两小时。
# 进入存放镜像的目录,先确认文件在、大小对得上 cd ~/iso ls -lh ubuntu-18.04.6-desktop-amd64.iso # 把发布页给出的校验清单文件一起下到同目录(通常叫 SHA256SUMS) # -c 让 sha256sum 按清单逐行比对,--ignore-missing 跳过清单里没有的文件 sha256sum -c SHA256SUMS --ignore-missing命令本身没什么花头,关键在读结果。输出里只有OK才算过;出现FAILED就是文件坏了,别抱侥幸心理,重下。--ignore-missing的作用是:清单里往往同时列着桌面版、服务器版、不同架构的一堆条目,你本地只有其中一个,不加这个参数会刷一屏「找不到文件」的噪音。校验失败最常见的原因是下载器分片没合完、或者镜像先在手机/网盘里倒过一手。
还有一点值得说清楚:desktop-amd64和live-server-amd64是两个不同的安装器,行为差异比想象中大。桌面版走图形安装流程,分区界面友好但对内存更贪;服务器版是文本流程,对老硬件的容忍度反而更高。如果目标机器只有 2GB 内存,live 会话本身就会吃掉一大半,安装器在扫描分区阶段被系统直接杀掉是完全可能的——这时候换服务器镜像或者加内存,比在参数上死磕有效。
提示:镜像文件名里的架构、版本号、变体三部分一定要逐字核对,把
amd64当成i386写进 U 盘,装到一半才发现是白忙。
2.2 写盘:命令行 dd 与图形工具各自的地盘
写盘这一步有两种流派,选哪个取决于你对自己的手有多信任。
# 插上 U 盘后先认设备,输错一个字母就是整块硬盘没了 lsblk -o NAME,SIZE,TYPE,TRAN,MOUNTPOINT # if= 源镜像,of= 目标整块盘(不要写 /dev/sdb1 这种分区) # bs=4M 是块大小的折中值,status=progress 给进度,oflag=sync 强制落盘 sudo dd if=ubuntu-18.04.6-desktop-amd64.iso of=/dev/sdb \ bs=4M status=progress oflag=sync conv=fsync # 命令返回后再刷一次,确保缓存全写进 U 盘再拔 syncof=必须指向整块盘,这是 dd 最容易翻车的地方——写到分区上,U 盘会变成「能引导但不完整」的诡异状态。bs=4M在现代机器上速度和内存占用都合适,老机器内存紧张可以降到bs=1M。oflag=sync和conv=fsync是双保险,防止你看到进度 100% 就拔盘,实际上还有几百兆在页缓存里没落地。
图形写盘工具胜在不会让你手抖选错盘,但它有个隐性差异:有的工具默认用「ISO 镜像模式」,有的用「DD 模式」,还有的为了兼容会在 U 盘上再建一个额外分区。老固件对这种花式布局的识别能力参差不齐,表现就是「同一块 U 盘,这台机器能进菜单,那台机器直接跳过」。我的习惯是:给老机器装机一律用 DD 模式,越接近原始镜像字节流越省事。
写完盘有个快速自检法:重启进固件启动菜单,看 U 盘条目前面有没有UEFI:前缀。有前缀说明固件按 UEFI 认了这块盘,没有就是按 Legacy 认的——这个信息直接决定你下一步该把固件设成什么模式,比事后猜省事得多。
2.3 固件里三个开关,决定后面所有排错的起点
固件设置是整篇文章里最容易被跳过、又最容易埋雷的部分。18.04.6 这个年代的镜像,对固件实现的兼容性没有今天这么宽容,几个选项的组合能直接决定装不装得上。
| 固件项 | 建议值 | 为什么这么设 | 什么情况下要改回去 |
|---|---|---|---|
| 启动模式 | UEFI 或 Legacy 二选一,别混 | 混用会导致引导项一半在一半不在,GRUB 装完找不到自己 | 原系统是 Legacy 装的,就跟它保持一致 |
| Secure Boot | 先关 | 闭源驱动、自编译内核模块会被拦,装完再开更省事 | 单位有强制开启要求时,装完做密钥注册 |
| SATA 模式 | AHCI | 部分机器默认的 RAID/加速模式让安装器直接看不见硬盘 | 装完原系统起不来时,得改回原值 |
| 快速启动 | 关 | 跳过部分硬件初始化,U 盘和外设容易识别不全 | 装完可以开,出问题再关 |
| CSM 兼容层 | 与启动模式一致 | UEFI 下开 CSM 会让部分显卡在安装阶段黑屏 | 老显卡需要 Legacy 显存调用时再开 |
表格里最值钱的是 SATA 模式那一行。有批机器出厂默认把硬盘挂在一种带缓存的加速模式下,18.04.6 的内核缺对应驱动,安装器分区界面直接空白一片——不是硬盘坏了,是它根本没被枚举出来。这个现象极具迷惑性,很多人第一反应是「硬盘没插好」,拆机箱拆半天。判断方法很简单:进固件看存储控制器当前模式,再进 Live 环境的磁盘工具看一眼有没有设备节点,两边对不上就是它。
启动模式这条要说透一点:UEFI 和 Legacy 的差别不只是引导方式,还牵扯到分区表格式和引导分区的位置。你在 UEFI 模式下装完,分区表是 GPT,引导文件写在 EFI 分区里;切回 Legacy,固件根本不看那个分区。所以整台机器(包括原有的那套系统)必须统一在一种模式下,中途改主意等于重装。老机器上我一般优先 Legacy,不是因为它先进,而是那个年代的 UEFI 实现bug 太多,尤其在 CSM 半开半关的时候,表现特别玄学。
3. 分区是后悔药最贵的一步:EFI、swap 与双系统的落盘顺序
分区界面是整场安装里唯一不可逆的操作。前面几步错了重来就是,分区错了,数据没了。这一章把三件事讲清楚:分区表怎么选、每块分区给多大、双系统时先动谁。
3.1 分区表、EFI 分区与那块 1MB 的隐藏分区
先把最容易搞混的一组概念摆平。分区表分 MBR 和 GPT:MBR 最多四个主分区,单盘容量上限 2TB;GPT 没有主分区数量限制,也不需要扩展分区这种历史包袱。UEFI 启动必须配 GPT(技术上 MBR 也能凑合,但没必要给自己找麻烦),Legacy 启动两种都行。
然后是挂载点。18.04.6 的桌面安装在自动分区时不会单独建 swap 分区,它用的是一个 swap 文件,这点和很多人的习惯认知不一样。手动分区时我一般按下面这套走:
| 挂载点 | 大小 | 类型 | 说明 |
|---|---|---|---|
| EFI 分区 | 300~500MB | FAT32,带 esp/boot 标志 | UEFI 启动必需,双系统时复用原有的,千万别新建第二个 |
| / | 40GB 起 | ext4 | 桌面环境加常用工具,留余量给日志和缓存 |
| /home | 剩余空间 | ext4 | 独立出来,重装时能保住用户数据 |
| /boot | 1GB | ext4 | 只在用 LVM 或全盘加密时才需要单独划 |
| swap | 内存的 1~2 倍 | swap | 需要休眠功能才单独划,否则用 swap 文件 |
| bios_grub | 1~2MB | 无文件系统 | 仅 Legacy + GPT 组合需要,不加标志 |
最后那一行是纯粹的踩坑产物。Legacy 固件配 GPT 分区表时,GRUB 没有地方写自己的 Stage 1.5,必须给它留一块无文件系统的小分区。不加这块,安装过程一路顺利,重启直接进固件界面或者黑屏一个光标闪,报错信息里连个像样的提示都没有——黑匣子程度拉满。
EFI 分区那一行的注意事项更值钱:双系统时如果原来的 EFI 分区还有空间(一般都有),直接复用、只挂载不格式化。新建第二个 EFI 分区,两套系统的引导文件各写各的,固件启动菜单里会出现两个互不相识的条目,切换全靠手动,后续升级必翻车。
3.2 双系统:先装谁、装在哪、引导写到哪里
顺序问题只有一个答案:先装原系统,后装 Ubuntu。反过来做的代价是原系统的引导程序会覆盖 GRUB,你得进 Live 环境手工修复一次,纯属给自己加戏。
真正需要记住的是三条纪律。
第一条,装之前把原系统里的快速启动和休眠关掉。这两个功能会让文件系统处于「未完全卸载」状态,Ubuntu 挂载那个分区时会拒绝以读写方式打开,表现是安装器提示「该分区正在使用中」或者干脆卡住。关掉之后正常关机一次,让分区干净落盘。
第二条,缩小分区要用原系统自带的磁盘管理或者 Live 环境里的分区工具,别在安装器里干这事。安装器的分区编辑器对「缩小已有分区」的支持很弱,一不留神就把整块盘重排了。
第三条,也是最多人栽的一条:安装界面底部那个「引导程序安装位置」,UEFI 模式下选整块盘(比如/dev/nvme0n1),不要选 EFI 分区本身。选分区的话,有些固件会认为引导项不合法,装完启动菜单里压根没有 Ubuntu 这一项。这条在虚拟机里测不出来,只有真机才复现。
3.3 手动分区的操作序列与装完的验证动作
真到动手时,先摸清现状再下刀,别凭记忆。
# 分区表类型、每块盘的分区布局,先看清楚 sudo parted -l # 文件系统、UUID、挂载点,双系统时用来确认哪个分区是原系统的 lsblk -f # 装完之后,在 Live 环境里验证 EFI 分区的内容是否合理 sudo mount /dev/nvme0n1p1 /mnt ls /mnt/EFI # 正常应能看到 ubuntu 目录,双系统还能看到原系统那套引导目录parted -l输出里重点看两处:Partition Table是 gpt 还是 msdos,以及有没有esp标志的分区。lsblk -f的FSTYPE列能直接告诉你哪个是 ntfs(原系统)、哪个是 ext4(已有的 Linux 数据盘),避免手滑格错。
装完后的验证比装的过程更重要。EFI 分区里应该能看到EFI/ubuntu/目录,里面是shimx64.efi和grubx64.efi这类文件。如果这个目录不存在,说明引导根本没写进去,别急着重启,回去重跑一次引导安装比事后进救援模式省事。双系统的话,再确认一下原系统那套引导目录还在,两个目录并存才是正常状态。
如果没单独划 swap 分区,装完要补一个 swap 文件,命令不长但顺序别错:
# 4GB 的 swap 文件,fallocate 比 dd 快得多 sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 写进 fstab,否则重启就失效 echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab # 验证:输出里应该有 /swapfile 这一行 swapon --showchmod 600不能省,swap 文件里可能残留内存内容,权限松开等于把敏感数据摊在盘上。tee -a是追加写,别用>覆盖掉 fstab 里原有的行——fstab 写坏了开不了机,得进救援模式改。
4. 进不去图形界面:安装器黑屏、开源显卡驱动与引导修复
这一章处理的是「装的过程中看不见」和「装完了起不来」两类问题。它们的症状很像,原因完全不同,混着猜会浪费大量时间。
4.1 安装界面黑屏花屏:先怀疑显卡,别怀疑镜像
U 盘插上,菜单能出来,选「Install」之后屏幕一黑,或者花成一屏彩色条纹,风扇正常转,硬盘灯偶尔闪。这个现象在带独立显卡的机器上出现频率极高,尤其是有一定年头的型号。
原因不复杂:18.04.6 的 Live 环境默认用开源显卡驱动接管显示,而这个驱动对部分老芯片的显示模式切换处理得不好,切到高分辨率图形界面那一下就直接失联了。它和镜像是否损坏无关——你能看到菜单就是证据。
判断方法:等十分钟。如果黑屏期间硬盘灯还在有规律地闪,说明系统在正常跑,只是没画面,大概率是显示模式问题;如果彻底没动静,那才需要怀疑内存或镜像。
临时绕过很简单:在菜单页面按e进入编辑,找到以linux开头那一行,在行尾追加启动参数。几个参数的作用不一样,别一把梭:
| 参数 | 解决什么 | 副作用 |
|---|---|---|
nomodeset | 禁止内核在启动早期切换显示模式 | 装完分辨率可能偏低,需要装好驱动后再去掉 |
nouveau.modeset=0 | 只禁用开源显卡驱动的模式设置 | 比 nomodeset 精准,但仅对特定芯片有效 |
acpi=off | 关闭 ACPI 电源管理 | 风扇可能全程满速,笔记本电池信息丢失 |
noapic | 关闭中断控制器的高级模式 | 部分多核机器会只认一个核 |
idle=nomwait | 避开 CPU 空闲指令的兼容问题 | 待机功耗略高,基本无感 |
顺序上先试nomodeset,它是覆盖面最广的一个。不行再叠加acpi=off,能进图形界面就说明是电源管理相关。两个都加上还黑,那问题更可能在内存或者显卡本身,换台机器验证一下更省时间。
注意:
acpi=off是诊断参数不是长期方案。它关掉的不只是显示相关的东西,笔记本的合盖休眠、温度读取、电池状态全都会失效。能进系统之后一定要去掉。
4.2 把临时参数变成永久配置
在菜单里按e改的参数只在本次启动有效。装完系统后如果仍然黑屏,得把它写进配置文件。
# 备份再改,改坏了还能回滚 sudo cp /etc/default/grub /etc/default/grub.bak # 把默认启动参数整行替换,注意保留原有的 quiet splash sudo sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"/' /etc/default/grub # 重新生成 grub.cfg,不跑这一步改了等于没改 sudo update-grubsed那一行是整行替换,不是追加,所以原来的quiet splash必须自己带上,漏了会看到满屏内核日志。update-grub才是真正把配置写进/boot/grub/grub.cfg的动作,这一步漏掉是最常见的「改了没生效」。
装好闭源显卡驱动之后,nomodeset一定要记得去掉,否则驱动装了也不接管,分辨率还是上不去。去掉的流程就是再改回去、再update-grub、重启。这里有个坑:如果 Secure Boot 一直开着,闭源驱动装上了也可能不加载,因为内核模块没签名。表现是驱动装了、lsmod里看不到、分辨率依旧。解决办法要么关 Secure Boot,要么走一次密钥注册流程,在重启时的蓝色界面上设一个临时密码,进系统后用工具把密钥登记进去。
4.3 装完起不来:GRUB 救援与引导项排查
如果出现的是重启后直接掉进grub>提示符,或者固件启动菜单里压根没有 Ubuntu,那就是引导没装上,而不是显卡问题。这两类现象的区别要分清:黑屏且硬盘灯不动是显卡,出grub>是引导。修引导不用重装,进 Live 环境 chroot 修一遍就行。
# 假设根分区是 nvme0n1p2,EFI 分区是 nvme0n1p1,按实际情况替换 sudo mount /dev/nvme0n1p2 /mnt sudo mount /dev/nvme0n1p1 /mnt/boot/efi # 把系统目录挂进 chroot 环境,缺一个都可能报奇怪的错 for d in /dev /dev/pts /proc /sys /run; do sudo mount --bind $d /mnt$d; done sudo chroot /mnt grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu update-grub exit--bootloader-id决定固件启动菜单里显示的名字,重复安装不同 id 会留下多个条目,清理起来麻烦,统一用一个就好。--efi-directory必须指向真正挂着 EFI 分区的路径,写错的话grub-install会自己在根分区上建一个目录,看着成功实际没用。
退出 chroot 后还有一步容易漏:检查固件启动项。
# 列出所有 UEFI 启动项,看 Ubuntu 那条在不在,顺序对不对 sudo efibootmgr -v如果 Ubuntu 的条目存在但排在后面,用-o参数调顺序;如果压根没有,说明上一步grub-install没写进 NVRAM,再跑一次并注意看输出里的报错。有些固件对 NVRAM 写入有限制,需要先在固件界面里清掉一批无用的旧启动项腾位置——这个现象在老机器上不算罕见。
5. 五类反复出现的问题:按现象索引的避坑清单
下面这五条是从多次装机里筛出来的高频项,共同点是症状具有强误导性,第一次遇到基本都会往错误方向排查半天。每条按「现象 → 原因 → 解决」写,遇到时直接对号入座。
第一类,安装器卡在扫描分区或者软件选择页面。现象是进度条长时间不动,鼠标能动但点下一步没反应,硬盘灯规律闪烁。原因通常不是硬件,是安装器在联网拉取更新源——18.04.6 的桌面安装器默认勾选「安装时下载更新」,网络不通或者源响应慢的时候就会一直等。解决方式很直接:把网线拔了或者关掉无线,安装器检测不到网络就会跳过这一步,装完再配源。这个坑的迷惑性在于它看起来像硬件故障,实际是网络等待。
第二类,分区界面看不到硬盘。现象是只列出 U 盘,内置硬盘完全不出现。原因有两个可能:一是固件里硬盘挂在带缓存的加速模式上,内核缺驱动;二是这块盘之前做过某种软 RAID,留下了元数据。判断方法是在 Live 环境里跑lsblk,如果连块设备都没有就是前者,有设备但没有分区就是后者。前者改固件设置里的存储模式为 AHCI,后者需要先清掉 RAID 元数据再分区。改存储模式这一步要注意:如果盘上还装着原系统,改完原系统会起不来,得先在原系统里做一次安全模式引导适配,顺序别弄反。
第三类,装完没有无线网络。现象是有线正常、无线列表空的,或者能看到网卡但搜不到任何热点。原因是 18.04.6 默认内核里没有收录某些较新无线芯片的固件,内核版本差了一代。判断看lspci或lsusb能不能列出无线设备:列得出但没接口,是缺固件;连设备都列不出,是硬件开关或者固件层面的禁用。解决要靠有线先联网,装好对应内核版本的固件包,或者手动把固件文件放进/lib/firmware再重启。这条最烦人的地方在于:装系统时一切正常,装完才发现上不了网,而你又需要网络来修它,形成死循环,所以装机前最好备一个 USB 无线网卡或者一根网线。
第四类,双系统时间差八小时,或者启动菜单里原系统不见了。时间差的原因是两套系统对硬件时钟的时区解释不同,一套按本地时间存,一套按 UTC 存。解决是在 Ubuntu 里执行一条命令让硬件时钟按本地时间解释,别去改另一边的设置,改那边风险更大。启动菜单里原系统消失,通常是安装时os-prober没跑或者没检测到,重跑一次update-grub一般就能找回来;如果还不行,检查原系统分区是不是处于休眠状态导致无法挂载识别。
第五类,装完第一次重启就黑屏,但能听到登录音效。现象是画面全黑,硬盘灯正常,外接显示器有信号但笔记本屏没有。原因多为显卡驱动的显示输出选择问题,或者背光没被正确初始化。解决是先接外接屏进系统,装上闭源驱动;如果是背光问题,在启动参数里加背光控制相关的项,或者临时用功能键调亮度唤醒。这类问题最容易被误判成「装失败了」,实际上系统跑得好好的,只是你看不见它。
6. 把这套经验固化成验收清单和一条自检脚本
装完能进桌面不叫装好。我吃过一次亏:机器交付当天一切正常,一周后用户反馈休眠唤醒之后网络断了,查下去是 swap 文件权限在某次更新后被改回去,休眠时内存镜像写不完整。从那以后,每次装完机我都会跑一遍固定清单,不靠记忆。
| 检查项 | 命令 | 合格标准 |
|---|---|---|
| 引导模式 | [ -d /sys/firmware/efi ] && echo UEFI || echo Legacy | 与固件设置一致,不能混 |
| 引导项 | efibootmgr -v | 有 ubuntu 条目且顺序合理 |
| 分区挂载 | findmnt -t ext4,vfat | 根、EFI、home 全部按预期挂上 |
| swap | swapon --show | 有输出且大小符合预期 |
| 内核版本 | uname -r | 与预期一致,HWE 和 GA 不能混 |
| 显卡驱动 | lsmod | grep -i drm | 闭源驱动场景下应能看到厂商模块 |
| 时间同步 | timedatectl | 时区正确,NTP 处于同步状态 |
这张表的价值在于把「感觉没问题」变成「能验证」。尤其是引导模式和引导项这两行,出问题时它们是最先要确认的,装完立刻记下来,将来排查省一半时间。
更进一步,把这套检查写成一个脚本,装完直接跑,输出一份报告存进/var/log。批量为同型号机器装机时,这个习惯能省掉大量重复确认。
#!/bin/bash # 安装后自检:所有检查项输出到一份报告,异常项单独标记 REPORT=/var/log/postinstall-check-$(date +%F).log { echo "=== 引导模式 ===" [ -d /sys/firmware/efi ] && echo "UEFI" || echo "Legacy" echo "=== 引导项 ===" command -v efibootmgr >/dev/null && efibootmgr -v || echo "非 UEFI,跳过" echo "=== 挂载情况 ===" findmnt -t ext4,vfat -o TARGET,SOURCE,FSTYPE,SIZE echo "=== swap ===" swapon --show || echo "未启用 swap" echo "=== 内核与架构 ===" uname -rm echo "=== 时间同步 ===" timedatectl | grep -E "Time zone|synchronized" } 2>&1 | tee "$REPORT" # 关键项失败时给出显式提示,别让它静默通过 grep -q "未启用 swap" "$REPORT" && echo "注意:swap 未启用,休眠功能不可用"脚本本身没什么技术含量,值钱的是「每次都跑」这个纪律。tee保证屏幕上能看到、文件里也留了底;最后的grep -q是给自己留的提醒,人看输出容易滑过去,机器不会。
最后说个我自己的习惯:装完一台机器,我会把这台机器的固件设置、分区布局、额外装的内核模块版本记在一个纯文本里,跟机器编号绑在一起。听上去土,但等到半年后这台机器出问题、而你已经装过几十台不同配置的机器时,那份记录就是唯一能告诉你「当初这台是怎么装的」的东西。这套动作花不了十分钟,省下的是整晚的排查。
希望帮到你。
本文还有配套的精品资源,点击获取