简介:面向已安装 Windows 11、计划加装 Ubuntu 22.04.1 LTS 并保留双系统的用户,尤其适合希望独立完成系统部署与后续调优的初中级读者。教程围绕 UEFI 环境确认、启动盘制作、磁盘分区、与 Windows Boot Manager 共存安装、默认启动项调整及 GRUB 界面美化展开,并专门说明双系统时间不同步的成因与修复思路,同时覆盖安装后的启动选择与系统切换。除主流程外,还提示安装前备份、U 盘写入注意点、BIOS 启动顺序、安装类型选择和启动菜单排序等易错环节,附装机过程问题记录,便于按目录定位与对照排查。资源包共 1 个 doc 文档,约 76.43MB,按基础环境、安装准备、安装过程、启动设置、时间同步与问题记录分章组织,结构清晰,可作流程参考和事后查阅手册。已有 19297 人学习,在双系统安装场景中具有一定参考价值,对准备动手安装或排查双系统故障的读者较为实用。
1. 双系统不是「装两次机」:先看 UEFI、GPT 和那 80G 空闲分区
很多人以为装双系统最难的是分区,实际翻车最多的两处是 BIOS 模式不对、RTC 时钟对不上。这篇记录做的事很窄:在一台已经跑着 Win11 的机器上,把 Ubuntu 22.04.1 LTS 装进同一块盘的空白分区,让两个系统各自完整,开机能在菜单里选,装完之后时间不差 8 小时。适合手上只有一台主力机、不想折腾虚拟机和云主机、又确实需要原生 Linux 环境的人,比如跑编译、跑容器、接开发板、复现某些只在 Linux 下成立的实验。
系统安装这件事,最难的不是「点下一步」,而是弄清安装器在背后改了什么。整套流程按实机顺序走:确认环境、做启动盘、共存安装、改启动项、修时间。参数会写死,能抄;坑会标出来,能躲。全程不改动 Win11 的引导分区,也不用第三方分区软件,只在 Windows 自带的磁盘管理里压出一块空地。装完之后两个系统各自独立升级,互不牵连,这一点比很多人想的要省心。
2. 做启动盘:Rufus 的 GPT、UEFI(非 CSM)、NTFS 三个选项到底在管什么
启动盘这一步是整个安装过程里最容易被轻视、也最容易白干的一步。U 盘做错了,后面所有操作都是空转,而且现象往往不是「报错」,是「开机压根认不到这个盘」或者「安装器里看不到 Windows」。Rufus 界面上那几个下拉框不是随便填的,每一个都对应固件层的一个开关。
2.1 用 msinfo32 确认 BIOS 模式,Legacy 上装不出共存
先按Win+R,输入msinfo32回车,在弹出的系统信息里找两项:「BIOS 模式」和「安全启动状态」。BIOS 模式必须是 UEFI。如果是「传统」或者「Legacy」,说明这台机器还在用 MBR 引导,Win11 官方装机流程下几乎不可能出现这种情况,但老机器升级上来的、或者早期改过设置的,确实会遇到。
为什么死磕这一项:UEFI + GPT 下,Windows Boot Manager 和 Ubuntu 的 GRUB 是在同一个 EFI 系统分区里并列注册的两个引导项,安装器才能识别出「这里已经有一个系统,可以共存」。Legacy + MBR 走的是另一套逻辑,安装器给的选择通常只剩「清除整个磁盘」和「其他选项(手动分区)」,手动分区对新手就是劝退现场。
安全启动状态是「开启」也没关系,Ubuntu 22.04.1 的引导程序是签过名的,安装过程中会要求你设一个 MOK 密码,装完第一次重启时在蓝色的 MOK 管理界面里选 Enroll MOK、输入那个密码即可。这一步不少人以为装坏了,其实就是安全启动在按流程确认。真嫌麻烦,在 BIOS 里关掉安全启动也能过,但关掉之后 Windows 那边某些依赖安全启动的功能会受影响,我不太建议。
用管理员权限的 PowerShell 也能顺手确认一下磁盘是不是 GPT,少走一趟图形界面:
# 列出所有磁盘及其分区表类型,GPT 才符合 UEFI 引导条件 Get-Disk | Select-Object Number, FriendlyName, PartitionStyle, SizePartitionStyle显示GPT就对了,显示MBR的话先别继续,转分区表是另一件事,动之前必须备份。顺便看一眼 C 盘的可用压缩上限,决定后面能压多少空间出来:
# 查询 C 盘当前大小与可压缩到的极限,两者之差就是能压出来的空间 Get-Partition -DriveLetter C | Get-PartitionSupportedSize输出里SizeMin到SizeMax是允许的区间,SizeMax减去当前分区大小,就是理论上能压出来的最大值。如果这个值远小于你预期的 80G,一般是页面文件、系统保护还原点、休眠文件占住了位置,处理办法在 2.4 里说。
2.2 Rufus 参数逐项拆:分区类型、目标平台、文件系统、簇大小
镜像从 Ubuntu 官方站点下ubuntu-22.04.1-desktop-amd64.iso,官方源速度慢就换国内镜像站,路径规则一般是/ubuntu-releases/22.04.1/,文件名一致。下完对一下大小,别用下载器中断后留下的半截文件。
Rufus 用 3.20 及以上版本,插上 U 盘后按这张表填:
| 选项 | 取值 | 为什么是这个值 |
|---|---|---|
| 设备 | 目标 U 盘 | 整个盘会被重写,选错就是数据事故 |
| 引导类型选择 | 下载好的 ISO | 不要解压,直接选 iso 文件 |
| 分区类型 | GPT | 与 UEFI 固件配套,MBR 会退回 Legacy |
| 目标系统 | UEFI(非 CSM) | 带 CSM 就是兼容模式,共存会出问题 |
| 文件系统 | NTFS | FAT32 单文件上限 4G,大镜像会写失败 |
| 簇大小 | 4096 字节(默认) | 保持默认即可,改小只会更慢 |
「目标系统」这个下拉框在 Rufus 里是跟着「分区类型」联动的,选了 GPT 之后可选项里才有 UEFI(非 CSM)。如果发现只能选 BIOS 或 UEFI+CSM,回头检查是不是分区类型还停在 MBR。
文件系统选 NTFS 这一点值得多说一句。Ubuntu 的 ISO 里有个别文件超过 4G,用 FAT32 写到一半会报错,现象是「镜像写入失败」但看不出原因。Rufus 现代版本会自动处理,但手动改成 FAT32 就是给自己找麻烦。NTFS 的代价是 U 盘做完之后在部分老设备上不可读,装完系统重新格式化就行,无所谓。
2.3 写入模式选 ISO 还是 DD,以及杀毒软件为什么要先关
点「开始」之后 Rufus 会弹一个窗,让你选写入模式:以 ISO 镜像模式写入,还是以 DD 镜像模式写入。选第一个,ISO 模式。
两种模式的差别是实打实的。ISO 模式会把镜像内容解包后按文件写入,引导记录由 Rufus 重新生成,U 盘做完之后剩余空间还能正常放文件,后续想换个镜像也方便。DD 模式是逐扇区原样复制,做完的 U 盘在系统里看起来就是个只读的怪异设备,想再用必须重新格式化,而且部分机器的固件对 DD 写出来的盘识别更慢。Rufus 检测到 Ubuntu 这类混合镜像时会主动问,默认建议就是 ISO。
制作过程里建议先把杀毒软件实时防护临时关掉。原因不玄学:Rufus 写完引导区之后,系统会把这个 U 盘当成「刚插入的新设备」反复重新枚举,实时防护每次都全盘扫一遍,轻则拖慢到十几分钟,重则在中途锁住文件句柄导致写入中断。我见过一次做到 92% 卡死不动,就是扫描卡住了。关防护、拔掉其他无关 U 盘、别在制作过程中开虚拟机,这三件事做完,一次成功率明显高。
U 盘里原有数据会被全部擦除,动手前把该拷的拷出来。这一步没有后悔药。
2.4 在磁盘管理里压出 80G:为什么不能直接删分区
右键「开始」菜单进磁盘管理,选中要压缩的磁盘,右键「压缩卷」,输入压缩量。Ubuntu 的根分区加上日常装软件、跑容器镜像,40G 是底线,60G 比较从容,我给的是 80G。这里不用精确到 G,多点少点都行,压缩出来的空间会显示为「未分配」,安装器认的就是这块黑色区域。
关键点:未分配空间必须和 Windows 的 EFI 分区在同一块物理磁盘上。跨盘装也不是不行,但引导项的注册会分散到两块盘的 EFI 分区,出问题时排查成本翻倍,新手别碰。
如果「压缩卷」弹出来的可压缩量只有几个 G,说明磁盘上有不可移动的文件挡着。常见的三个:休眠文件、页面文件、系统保护还原点。处理顺序是先在「系统属性 → 系统保护」里对 C 盘关闭保护并删除还原点,再在「高级系统设置 → 性能 → 虚拟内存」里把页面文件临时设为无分页文件,重启后再压。休眠文件用管理员 PowerShell 关:
# 关闭休眠,释放 hiberfil.sys 占用的空间;装完系统后可再开回来 powercfg /hibernate off这一条命令下去,hiberfil.sys会被删除,通常能多释放出内存容量 40% 左右的空间。装完 Ubuntu 之后要不要开回来,看你用不用快速启动和休眠,powercfg /hibernate on就还原了。
空间压好之后,别急着关机重启进 BIOS。Windows 的「快速启动」是伪关机,会保留一部分设备状态,某些主板上表现为按 Del 进不去 BIOS 或者 U 盘启动项不出现。走「开始 → 电源 → 关机」完整关机,再开机按 Del(部分品牌是 F2 或 F12),进 BIOS 把启动顺序里带UEFI:前缀的那个 U 盘拖到第一位,F10 保存退出。BIOS 界面各家长得不一样,但「把 UEFI 开头的项提到最上」这个动作是一样的。
3. 走进安装器:从 safe graphics 到「与 Windows Boot Manager 共存」
U 盘引导起来之后,屏幕上的第一件事不是安装界面,是一个黑底白字的 GRUB 菜单,几行选项。这一步选错,后面可能连图形界面都进不去。
3.1 启动项顺序与 safe graphics 入口的意义
菜单里通常有Ubuntu、Ubuntu (safe graphics)、OEM install、Test memory几项。选Ubuntu (safe graphics)。
safe graphics 的意思是本次启动使用基础显示驱动,不加载独立显卡的专有驱动。它的作用不是「更安全」,是「更可能点亮屏幕」。近几年带独显的笔记本和台式机,用默认项启动后卡在黑屏、只亮一个光标的情况非常常见,原因是开源显卡驱动在某些新卡上初始化失败。用 safe graphics 进去把系统装完,装完再处理驱动,比在安装界面里跟黑屏搏斗高效得多。
进去之后先选语言「中文(简体)」,点「安装 Ubuntu」。界面会先让你选键盘布局,默认 Chinese 就对;接着是无线网络,选「我现在不想连接 Wi-Fi」也行,安装过程不需要网络,但连着网可以在安装时勾选下载更新,会慢一些,我一般跳过,装完再统一更新。
3.2 共存安装动了哪些分区:EFI、根分区、swap
走到「安装类型」这一屏,是整场最关键的一步。选项通常有三个:清除整个磁盘并安装、加密 Ubuntu 安装、与 Windows Boot Manager 共存。选第三个。
选完会弹一个「将改动写入磁盘吗」的确认框,列出它准备做的动作:缩小某个分区、新建一个 ext4 分区、在已有 EFI 分区里写入 Ubuntu 的引导文件。看清楚再点继续。
它实际动了三处地方,值得知道:
第一处是 EFI 系统分区(一般是 100M 到 300M 那个 FAT32 小分区)。安装器不会格式化它,只是在里面新建一个EFI/ubuntu目录,放 shim 和 grub 的引导文件,同时在固件的启动项列表里注册一条ubuntu。Windows 的EFI/Microsoft目录原封不动。这就是为什么装完之后两个系统都能启动——它们共用同一个 EFI 分区,但各占一个子目录。
第二处是新的根分区。安装器在未分配空间里建一个 ext4 分区挂到/,把系统文件写进去。你压缩出来的那 80G 就是给它用的。
第三处是交换空间。Ubuntu 22.04 的安装器默认不在磁盘上单独切 swap 分区,而是在根分区里建一个 swapfile,大小跟内存和磁盘容量挂钩,一般 1G 到 2G。想手动调整可以装完之后改/swapfile,但日常使用不太需要动。
如果你更习惯手动分区,走「其他选项」,规则是:EFI 分区选中已有的那个、挂载点留空、绝对不要勾格式化;新建 ext4 分区挂/,勾格式化;swap 可以不建。手动分区的风险全在 EFI 那一格上,格式化了它,Windows 就起不来了。这就是我建议新手直接选共存的原因——它替你避开了这个唯一的致命操作。
3.3 语言、键盘、网络、时区、用户这五屏怎么填
后面几屏基本一路默认,但有两处值得停一下。
时区那一屏,原始教程里给的建议是「省事些直接选 London」。这个做法能用,但得知道它的本质:选伦敦等于把 Ubuntu 的系统时区设成 UTC+0,而 Ubuntu 默认又把硬件时钟当 UTC 存,两下一凑,Ubuntu 显示的时间刚好等于硬件时钟的值,看起来跟 Windows 就一致了。代价是你系统里所有时间戳都是 UTC,日志、定时任务、文件修改时间全部差 8 小时,只是桌面右上角那个时钟看着对。装个数据库、跑个 cron,问题就冒出来了。正确做法是时区老老实实选东八区(标识Asia/Shanghai),时间差的问题到第 4 章用一条命令解决,别在这里埋雷。
用户那一屏,姓名随意,用户名有硬性规则:必须小写字母开头,只能包含小写字母、数字、连字符和下划线,不能有大写、不能纯数字。输大写字母时「继续」按钮是灰的,不少人卡在这以为是 bug。密码随便设,登录时会用到,输入密码时终端光标不动是正常设计,不是卡死,输完直接回车。
3.4 装完的第一次重启:卡住的常见形态
进度条走完,提示「安装完成,需要重启」,点「现在重启」。此时会出现一句提示,大意是请移除安装介质后按回车。
这里有三种典型形态。第一种,按提示拔掉 U 盘再按回车,正常重启,进 GRUB 菜单。第二种,按了回车之后画面卡住不动,一直停在厂商 logo 或者黑屏——原始记录里作者遇到的就是这个,最后靠长按电源键强制断电,重新上电才进去。这种情况多数是 U 盘没拔干净,或者显卡驱动在关机阶段没正常卸载,断电重启不影响已安装的系统,可以放心。第三种是重启后直接进了 Windows,没有出现 GRUB 菜单,这是引导顺序的问题,不是安装失败,处理办法在第 5 章。
第一次进 Ubuntu 会走一遍初始设置,然后进桌面。到这一步,系统装完了,接下来是让两个系统「好好相处」。
4. 双系统差 8 小时:RTC 里存的到底是本地时间还是 UTC
装完双系统,十个人里有八个会遇到这个:在 Ubuntu 里把时间调对,重启进 Windows,时间慢了 8 小时;在 Windows 里调对,回 Ubuntu 又快了 8 小时。反复横跳,怎么调都调不好。这不是系统 bug,是两家对同一块硬件时钟的理解不一样。
4.1 一次开机的三段流程,时间在哪一步被改写
主板上有一颗靠纽扣电池供电的时钟芯片,叫 RTC(Real-Time Clock),它只有一套数值,断电也在走。问题在于,这套数值代表什么,Windows 和 Linux 的约定不同。
Windows 认为 RTC 存的是本地时间。你在东八区,RTC 里就是 12:00,Windows 开机直接读出来显示 12:00,不做换算。
Linux 的默认约定是 RTC 存的是 UTC。同样 RTC 里是 12:00,Ubuntu 认为这是格林威治时间,加上时区偏移 8 小时,显示 20:00。
一次完整开机是这样走的:固件读出 RTC 的值,交给操作系统显示;联网之后,系统从网络时间服务器拿到当前真实时间,修正显示;最后系统把修正后的时间写回 RTC。前两步只是显示层的差异,真正制造麻烦的是第三步——两个系统写回 RTC 的规则不一样。Windows 拿到本地时间 12:00,直接写 12:00 进 RTC;Ubuntu 拿到本地时间 12:00,先减 8 小时得到 UTC 4:00,再写 4:00 进 RTC。于是每次切换系统,RTC 就被改写一次,两个系统互相「纠正」对方,永远对不上。
理解了这个机制,解决方案就清楚了:要么让 Ubuntu 也把 RTC 当本地时间,要么让 Windows 也把 RTC 当 UTC。前者一条命令,后者要改注册表。主流做法是前者。
4.2 方案一timedatectl set-local-rtc 1:一行命令的代价
在 Ubuntu 终端里执行:
# 让系统把硬件时钟(RTC)按本地时间解释,与 Windows 的约定保持一致 sudo timedatectl set-local-rtc 1 --adjust-system-clockset-local-rtc 1是核心,意思是「RTC 里存的是本地时间」。--adjust-system-clock是配套动作,让系统立刻按新的解释重新计算一次当前时间,不加这个参数,设置要等下次重启才生效,容易让人误以为没起作用。
执行完会打印一条警告,大意是这个模式下系统在夏令时切换和跨时区旅行时可能出问题。东八区没有夏令时,日常使用基本无感,这条警告可以接受。但它的含义要知道:一旦你把笔记本带到另一个时区,或者手动改时区,RTC 里存的「本地时间」就跟新时区对不上了,系统还得再校准一次。这是这个方案的真实边界,不是吓唬人。
改完之后 Ubuntu 这边显示可能没立刻变,别慌。重启进一次 Windows,让 Windows 联网把时间校准,再回 Ubuntu,两边就一致了。顺序不能反,反了还是差 8 小时。
4.3 方案二 ntpdate + hwclock:三行命令的边界
另一套流传更广的做法是强制同步一次网络时间,再把结果写回硬件时钟:
# 安装 ntpdate 工具(Ubuntu 22.04 默认不带) sudo apt update sudo apt install -y ntpdate # 从时间服务器拉一次准确时间,覆盖本机系统时间 sudo ntpdate time.windows.com # 把当前系统时间按「本地时间」的语义写回硬件时钟 sudo hwclock --localtime --systohc--localtime告诉 hwclock:RTC 里存的是本地时间,不是 UTC。--systohc是 system to hardware clock,把系统时间写进硬件。这两个参数合起来,效果和方案一的set-local-rtc 1殊途同归。
差别在于持久性。方案一改的是系统配置,重启后依然有效;方案二只是执行了一次性同步,配置层面没变,下次开机 Ubuntu 还是会按 UTC 去解释 RTC,时间又会跑偏。所以方案二不能单独用,它更适合作为「已经用方案一改过配置,但当前时间还是歪的」之后的补刀。
还有一点:ntpdate这个工具在较新的发行版里被视为过时,Ubuntu 22.04 默认用systemd-timesyncd做时间同步。装了 ntpdate 不会冲突,但如果你机器上跑着完整的 ntpd 或 chrony 服务,ntpdate 会因为端口被占用而失败,报「the NTP socket is in use」。这时候用sudo systemctl stop systemd-timesyncd临时停掉再执行即可。
4.4 验证与回滚:怎么确认真的同步了
改完不能只看桌面右上角的时钟,那个显示有可能被手动改过。用命令看底层状态:
# 查看时区、是否启用网络同步、RTC 是否按本地时间解释 timedatectl # 直接读硬件时钟的原始值,以及系统当前的 UTC 时间 sudo hwclock --show date -utimedatectl输出里盯三个字段:Time zone应该是Asia/Shanghai (CST, +0800);System clock synchronized应该是yes;RTC in local TZ应该是yes。最后这个字段是判断方案一有没有生效的唯一可靠依据,no就说明没改成。
hwclock --show显示的是硬件时钟当前值,date -u显示的是系统 UTC 时间。改了set-local-rtc 1之后,这两个值应该相等——因为此时系统认为硬件时钟存的就是本地时间,而hwclock --show在 localtime 模式下读出来也是「按本地时间解释的值」。
回滚很简单,把 1 改成 0:
# 恢复 Linux 默认约定:RTC 存 UTC sudo timedatectl set-local-rtc 0 --adjust-system-clock改回 0 之后,Windows 那边的时间就需要用注册表方式去适配了,键值在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation下新增一个RealTimeIsUniversal的 DWORD 设为 1。这条路我不太推荐给新手,注册表改错了影响面比一条命令大得多。
5. 避坑与排查:五个卡住过我的现场
下面这几条都是实际卡住过人的,按「看到什么 → 为什么 → 怎么办」写,遇到时直接对号入座。
5.1 安装前与启动盘相关的三个坑
现象:BIOS 启动项列表里根本找不到 U 盘,或者只有一个不带 UEFI 前缀的项。
原因是 Rufus 的分区类型选成了 MBR,或者「目标系统」选成了带 CSM 的兼容模式。这样写出来的盘是 Legacy 引导的,UEFI 固件不认。解决:回 Windows 重新做一遍,分区类型 GPT、目标系统 UEFI(非 CSM),两个下拉框联动着改,改完再写。
现象:安装器走到「安装类型」这一屏,只有「清除整个磁盘」,没有「与 Windows Boot Manager 共存」。
原因有三种可能:BIOS 处于 Legacy 模式、Windows 装在 MBR 盘上、或者 Windows 的快速启动没关导致 EFI 分区状态没被正确读取。解决顺序是先回msinfo32确认 BIOS 模式,再确认磁盘是 GPT,最后完整关机(不是重启)再进安装器。三者都排除还是不行,就走「其他选项」手动分区,但 EFI 分区那一格千万别勾格式化。
现象:「压缩卷」能压出来的空间远小于预期,只有几 G。
原因是休眠文件、页面文件、系统还原点占住了磁盘中段,这些文件被标记为不可移动。解决:按 2.4 的顺序,先关系统保护删还原点,再关休眠(powercfg /hibernate off),再临时禁用页面文件,重启后重新压缩。压完记得把页面文件开回来。
5.2 安装过程中的两个坑
现象:选默认的Ubuntu启动项进去,屏幕黑掉,只有一个光标在闪,等五分钟没反应。
原因是开源显卡驱动在新一代独显上初始化失败。解决:重启回到 GRUB 菜单,选Ubuntu (safe graphics)进安装界面。系统装完之后如果还是黑屏,在 GRUB 菜单上按e编辑启动参数,在linux那一行末尾加nomodeset,Ctrl+X启动,进系统后再装对应显卡的驱动。
现象:用户名怎么填,「继续」都是灰的。
原因是 Ubuntu 安装器对用户名有格式限制:必须以小写字母开头,只能含小写字母、数字、连字符、下划线。大写字母、中文、纯数字开头都会被拒。解决:换成全小写的英文名,比如dev01这种。这个用户名会变成你的家目录名和终端提示符,装完再改要动/etc/passwd和家目录,麻烦,一次填对。
5.3 装完之后的两个坑
现象:重启之后直接进了 Windows,完全看不到 GRUB 菜单。
原因是固件启动顺序里 Windows Boot Manager 排在 ubuntu 前面。解决有两条路:进 BIOS 把ubuntu提到第一位,或者留在 Windows 里用管理员权限的 PowerShell 改:
# 查看当前固件启动顺序,确认 ubuntu 是否存在 bcdedit /enum firmware # 把 ubuntu 的引导项设到最前({GUID} 换成上一条命令里 ubuntu 那项的标识符) bcdedit /set "{fwbootmgr}" displayorder "{GUID}" /addfirst第一条命令会列出一堆固件启动项,找到描述为ubuntu的那条,记下它的大括号标识符。第二条命令把它插到顺序最前。改完重启就能看到菜单。如果bcdedit列表里压根没有 ubuntu,说明安装时引导没写进 EFI 分区,得用 Live U 盘进系统跑boot-repair,这是另一档事。
现象:GRUB 菜单里能看到 Windows 选项,点了之后黑屏或者报错回菜单。
原因是 Windows 的 EFI 引导文件路径变了,或者 Windows 做过大版本更新后重写了引导。解决:进 Ubuntu,终端执行sudo update-grub,让它重新扫描所有磁盘上的操作系统,输出里应该能看到Found Windows Boot Manager on /dev/xxx。扫到了说明路径正确,重启再试;扫不到说明 Windows 的 EFI 分区挂载有问题,用sudo os-prober手动探一次,输出为空就是分区没挂上。
6. 收尾技巧:把 GRUB 默认项和倒计时调成不用伸手的样子
装完双系统,日常开机如果每次都要在菜单上按方向键选,用不了多久就会烦。GRUB 的配置文件在/etc/default/grub,改之前先备份,这是个好习惯:
# 备份原配置,改坏了能一条命令还原 sudo cp /etc/default/grub /etc/default/grub.bak # 打开编辑,nano 存盘是 Ctrl+O 回车,退出是 Ctrl+X sudo nano /etc/default/grub里面三个参数值得动:
第一是GRUB_DEFAULT,默认启动项。它的值是菜单里从上往下的序号,从 0 开始数。菜单第一项是 Windows 就填 0,第二项是 Windows 就填 1。数的时候别把底部的「UEFI Firmware Settings」算漏了。更省心的写法是改成GRUB_DEFAULT=saved,再加一行GRUB_SAVEDEFAULT=true,这样 GRUB 会记住你上次选的是哪个,下次开机自动选它,不用每次数序号。
第二是GRUB_TIMEOUT_STYLE,控制倒计时怎么显示。设成menu是正常显示菜单并倒计时,设成hidden是不显示菜单直接启动(想进菜单得在启动瞬间狂按 Shift)。想看到菜单又不想等太久,就把GRUB_TIMEOUT设小一点。
第三是GRUB_TIMEOUT,倒计时秒数,单位是秒。改成 3 到 5 比较合适,既留出选择的窗口,又不至于每次开机干等 10 秒。
改完存盘,必须执行一次更新才会写进/boot/grub/grub.cfg:
# 重新生成 GRUB 配置,输出里应能看到 Windows Boot Manager 被探测到 sudo update-grub # 想确认最终生成的内容,可以直接查这一段 grep -E "set default|set timeout" /boot/grub/grub.cfgupdate-grub的输出里,Found Windows Boot Manager on /dev/...这一行是健康信号。看不到这一行,说明系统探测环节出了问题,先解决探测,再谈默认项,否则改了序号也对不上实际的菜单顺序。最后那条grep是用来核对生成结果的,set default和set timeout两个值应该跟你配置里的意图一致。
改完重启验收一次。如果发现默认项偏了一位,回来把序号减一,再看一眼菜单里到底有几项——多数人栽在这里是因为把菜单第一项的序号当成了 1。
从那以后我每次装完系统,都强制走一遍三级验收:timedatectl看 RTC 模式、sudo update-grub看 Windows 探测、重启看菜单倒计时。三步全绿才算装完,中间任何一步跳过,后面都会以更麻烦的形式找回来。希望帮到你。
本文还有配套的精品资源,点击获取