1. 先摸清这台机器的硬件底子:为什么它装双系统容易翻车
Dell G15 上装 Ubuntu 双系统,是这两年我被问到次数最多的一类问题。表面上看,它只是一台常规的游戏本:出厂预装 Windows 11,标配一块 NVMe 固态硬盘,Intel 或 AMD 平台加一张独立显卡。但真正动手时会发现,同一个镜像在别的机器上点几下就装完了,在这台机器上却可能卡在厂商 Logo、黑屏、找不到硬盘、装完没声音、无线网卡不识别这些环节上。这不是 Ubuntu 的锅,也不是机器质量的问题,而是这台机器的几个硬件和出厂配置,恰好都踩在了 Linux 桌面版适配的边缘地带。
我前后在这台机器上重装过不下七八次,从 20.04 一直到 24.04 都试过,也在不同批次、不同配置的 G15 上复现过同样的问题。这里先把结论摆出来:绝大多数“装不上”和“装完不能用”,都可以归结为三个源头——出厂 SATA 模式是 RAID On、双显卡混合输出、以及较新的无线网卡与声卡需要较新内核和固件。只要在动手之前把这三件事想明白,后面 90% 的坑都能提前避开。
下面这篇记录,我会按照“动手前、装的过程中、装完之后、长期维护”的顺序来讲,每一步都说明白为什么要这么做,参数为什么选这个值,遇到报错怎么判断是哪一层出的问题。适合第一次在游戏本上折腾双系统的朋友,也适合已经装完但还有一堆小毛病没解决的。
1.1 一份能对上号的硬件清单
要排查问题,先得知道自己手里这台到底是哪个配置。G15 这个系列横跨了好几代,Intel 平台和 AMD 平台的差别不小,网卡、声卡、屏幕面板也会因为批次不同而变化。我的建议是,在 Windows 下先把这些信息抄下来,装完系统之后对照着排查,比对着网上别人的帖子瞎试效率高得多。
在 Windows 里打开设备管理器,重点看这几项:存储控制器里有没有出现 “RAID” 字样;显示适配器里除了核显之外那张独显的型号;网络适配器里无线网卡的具体型号;声音、视频和游戏控制器里的声卡代号。另外在“系统信息”里看一下 BIOS 版本和日期,这个信息在后面判断“是不是 BIOS 太老导致的问题”时很有用。
我把常见的几类硬件和它们在 Linux 下的适配情况整理成了一张表,你可以对照自己的机器看看落在哪一档:
| 硬件类别 | 常见配置 | Linux 适配情况 | 需要注意的点 |
|---|---|---|---|
| 存储控制器 | Intel RST / RAID On | 需要改为 AHCI | 直接改会导致 Windows 蓝屏,要先做安全模式切换 |
| 独立显卡 | NVIDIA RTX 系列 | 需装闭源驱动 | 安装镜像默认 nouveau 会黑屏,要加启动参数 |
| 无线网卡 | Intel AX200/AX201 系 | 内核 5.10 以上基本免驱 | 固件包要新,蓝牙单独走 USB 通道 |
| 声卡 | Realtek + Intel SOF | 部分批次需强制走旧驱动 | 表现为有设备但没声音,或只有 HDMI 出声 |
| 屏幕 | 高刷新率面板 | 需独显驱动才能跑满 | 默认可能锁在 60Hz |
| 键盘背光 | 分区 RGB | 无官方 Linux 支持 | 只能靠 Windows 端软件设置后记忆 |
这张表不是让你背下来,而是让你在出问题时能快速定位:是驱动层的缺失,还是固件层的缺失,还是纯配置没开。
1.2 三个先天坑:RAID、混合显卡、新网卡
第一个坑是存储模式。相当一部分 G15 出厂时 BIOS 里的 SATA Operation 设成了 RAID On,这是为了让 Windows 侧能启用某些存储加速特性。Ubuntu 的安装器在这个模式下根本看不到那块 NVMe 硬盘,表现出来就是“安装程序里硬盘列表一片空白”。很多人到这一步就卡住了,以为要拆机换硬盘,其实只要把模式改成 AHCI 就解决了。
但这里有个陷阱:你不能直接改。Windows 是以 RAID 驱动加载的,你在 BIOS 里一改成 AHCI,下次开机就是蓝屏,进不去系统。正确做法是先在 Windows 里让系统以安全模式启动一次,让它在启动时加载 AHCI 驱动,再改 BIOS,再退出安全模式。具体命令我放在第 2 章里,一定要按顺序来。
第二个坑是混合显卡。这台机器是核显负责输出、独显负责渲染的架构,安装镜像启动时加载的开源 nouveau 驱动对较新的 NVIDIA 芯片支持不完整,典型表现是选完 “Try or Install Ubuntu” 之后黑屏、花屏、或者卡在一个光标闪啊闪的界面。这不是镜像坏了,是显示驱动在这一步就挂了。绕过办法是临时禁用 nouveau,用最基础的显示模式把系统装进去,装完再装闭源驱动。
第三个坑是新硬件需要新内核。无线网卡、声卡、触摸板这些设备,Ubuntu 22.04 的初始内核(5.15)对一部分批次是能认的,但蓝牙、麦克风、扬声器这些子功能可能不工作。这不是配置问题,是固件和内核对不上。解决办法通常是升级到 HWE 内核,或者直接上更新的 LTS 版本。我在 22.04 上遇到过装完之后扬声器完全没声音、插耳机才有声音的情况,换到 22.04.3 之后的镜像(内核更新)就正常了。
提示:动手前先用另一台设备把这台机器的 BIOS 版本、网卡型号记下来。装的过程中一旦黑屏,你至少知道该往哪个方向查,而不是把整台机器重装一遍。
2. 动手之前:镜像、U盘和BIOS设置里的关键开关
准备工作做得好,后面的安装会顺利得让你怀疑是不是同一台机器。我见过太多人跳过这一步直接插U盘,然后在一堆莫名其妙的问题里打转。这一章把镜像选择、启动盘制作、BIOS 逐项设置、Windows 侧预处理这四件事讲透。
2.1 启动盘制作与镜像版本选择
镜像版本的选择比很多人想的更重要。我的建议是:如果你追求省事,直接选最新的 LTS 点版本,比如 22.04.4 或 24.04.x,而不是 22.04 的最初版本。原因很直接——更新版本意味着更新的内核和固件包,而这台机器的问题恰恰集中在“新硬件需要新内核”上。用老镜像装完再升级内核,等于把本可以一步到位的事拆成两步,中间还可能踩到显卡驱动和新内核不匹配的坑。
下载完之后一定要校验。这一步很多人跳过,但一个下载不完整的 ISO 会导致安装到一半报错,报错信息还完全看不出是镜像的问题。在 Linux 或 macOS 下用sha256sum比对官网给出的值,Windows 下可以用 PowerShell 的Get-FileHash:
sha256sum ubuntu-24.04-desktop-amd64.iso启动盘工具方面,Windows 下用 Rufus 或官方的启动盘创建工具都行。用 Rufus 时有两个选项要注意:分区类型选 GPT,目标系统选 UEFI(非 CSM)。这台机器是纯 UEFI 引导,选错了模式启动时根本不会出现U盘选项。文件系统保持默认的 FAT32 就好,别为了放一个大文件去折腾 NTFS,会引入不必要的兼容问题。
U盘本身建议 8GB 以上、USB 3.0 接口。我试过用一张很老的 USB 2.0 盘,光是进到安装界面就等了三分钟,中途还因为读取超时失败过一次,换盘之后一次成功。这种问题排查起来特别费劲,因为它看起来像是“机器不兼容”。
2.2 BIOS逐项设置清单
开机时连按 F2 进 BIOS。这台机器的 BIOS 界面比较朴素,但关键的几个开关都在。下面是我每次都按顺序过一遍的清单:
| 设置项 | 位置(大致) | 应该设成 | 为什么 |
|---|---|---|---|
| SATA Operation | Storage / SATA Configuration | AHCI | RAID 模式下安装器看不到硬盘 |
| Secure Boot | Security / Boot | Disabled | 闭源显卡驱动的内核模块签名麻烦 |
| Fast Boot | Boot / POST Behavior | Disabled | 加快自检会跳过部分设备初始化 |
| Boot List Option | Boot | UEFI | 纯 UEFI 引导,不要 Legacy |
| USB Boot | Boot | Enabled | 确保能从U盘启动 |
| VT-x / SVM | Performance / Virtualization | Enabled | 后续跑虚拟机、容器需要 |
关于 Secure Boot,我要多说一句。Ubuntu 本身是支持安全启动的,官方镜像带签名,能正常引导。真正麻烦的是装完系统之后安装 NVIDIA 闭源驱动时,内核模块需要签名,会弹出一个叫 MOK 的蓝色界面让你设置密码、重启、再手动确认。这个过程对新手极不友好,一旦没在规定时间点按键就会失败,表现出来就是“驱动装完了但没生效”。在你还不熟悉这套流程的时候,直接关掉 Secure Boot 是性价比最高的选择。如果你有必须开启它的理由,那也行,但要提前了解 MOK 的完整流程,别等到界面弹出来才现查。
Fast Boot 这个选项要单独强调一下。它和 Windows 里的“快速启动”不是一回事:BIOS 里的 Fast Boot 是精简开机自检,可能会跳过部分 USB 控制器和外部设备的初始化,导致你的U盘压根不被识别。装系统期间关掉它,装完可以再开回来。
改完 SATA 模式之后,记得按 F10 保存退出。如果你之前没在 Windows 里做预处理,现在先别改这个选项,否则重启就是蓝屏。下一节讲完预处理再回来改。
2.3 Windows侧必须先关掉的三样东西
第一样是快速启动。这个功能让 Windows 关机时并不真正关机,而是把系统状态写进一个休眠文件里,硬盘上的 NTFS 分区会被标记为“未正常卸载”。Linux 挂载这种分区时,为了安全会以只读方式挂上去,你在 Ubuntu 里想往共享盘里存个文件都不行,报错是 “The disk contains an unclean file system”。关掉它的路径是:控制面板 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选“启用快速启动”。
第二样是BitLocker 或者设备加密。如果你开着它,装完双系统之后 GRUB 引导 Windows 时,Windows 会认为启动环境发生了变化,直接要你输入恢复密钥。很多人到这一步才发现自己根本没有备份密钥。安装之前先在 Windows 里把它暂停或解密,装完之后再重新开启。
第三样就是存储模式的预处理。这是最关键的一步,顺序绝对不能错。在 Windows 里以管理员身份打开命令行,执行:
bcdedit /set "{current}" safeboot minimal执行完重启,进 BIOS 把 SATA Operation 改成 AHCI,保存退出。这时候系统会自动进入安全模式(因为刚才那条命令让它下次以最小配置启动)。进入安全模式后,再打开管理员命令行执行:
bcdedit /deletevalue "{current}" safeboot然后再重启。这一次 Windows 应该能正常进入系统,并且是以 AHCI 模式运行的。到这一步再去设备管理器里确认一下,存储控制器应该已经不再显示 RAID 相关字样了。
注意:这三步的顺序错了就要重来一遍,尤其是 safeboot 那条命令,忘了执行就改 BIOS,蓝屏之后你可能连安全模式都进不去,只能靠系统还原或者重装。做之前把重要的东西备份一下,花十分钟,省几个小时。
顺便再说一个容易被忽略的点:在 Windows 的磁盘管理里,先把要留给 Ubuntu 的空间腾出来。直接在安装器里压缩分区风险更大,因为安装器对 NTFS 的收缩支持不如 Windows 自己的工具稳。压缩出 100GB 到 200GB 的未分配空间,保持“未分配”状态,不要新建分区。装 Ubuntu 的时候安装器会自己处理这块空间。
3. 分区方案与安装过程的实战记录
准备工作做完,插上U盘,开机按 F12 选U盘启动。这一章讲的是从进入安装器到第一次重启之间的所有关键决策,以及中途卡住时的应对。
3.1 EFI分区到底要多大:算一笔账
这是我最想强调的一点,因为它关系到你半年之后会不会被一个“磁盘空间不足”的报错误伤。Windows 装完之后自带的 EFI 分区通常是 100MB,里面已经塞了 Windows 引导所需的文件。如果你选择让 Ubuntu 共用这个分区,剩余空间可能只有三四十兆。
问题在于,Ubuntu 的每次内核更新都会在 EFI 分区里留一份内核和 initrd 的副本。一份典型的内核镜像加 initrd 大概在 100MB 到 150MB 之间。也就是说,共用 Windows 那个 100MB 的 EFI 分区,你在第一次内核更新的时候就会撑爆。撑爆之后的症状很有意思:更新过程报错、GRUB 配置写完但启动菜单里多了个坏条目,最坏的情况是引导彻底坏掉。
所以我的建议是:给 Ubuntu 单独划一个 EFI 分区,大小 512MB。如果你只有一块硬盘,那么这个分区和 Windows 的 EFI 分区并存,两个分区都是 FAT32,都带 boot 和 esp 标志,安装器会自动把引导文件写到新的那个里。如果你有两块硬盘,那就更简单了,把 Ubuntu 整个装在第二块盘上,EFI 分区也放第二块盘,两边完全独立,将来想换系统互不影响。
512MB 这个数字是怎么来的?我按最坏情况算:Ubuntu 默认保留 2 个旧内核版本,加上当前使用的,一共 3 套引导文件,每套按 150MB 算就是 450MB,再留一点余量,512MB 刚好。如果你想更保险,给 1GB 也不会有人拦你,对现在的硬盘容量来说这点空间不算什么。
剩下的分区规划,我用的是这套方案:
| 挂载点 | 建议大小 | 文件系统 | 说明 |
|---|---|---|---|
| /boot/efi | 512MB | FAT32 | 单独放,不共用 Windows 的 |
| / | 60–80GB | ext4 | 系统本体,够用即可 |
| /home | 剩余大部分 | ext4 | 数据和配置分离,重装不丢 |
| swap | 内存大小或 8GB | swap | 需要休眠功能就按内存算 |
关于 swap,如果你不用休眠功能,可以用 swap 文件代替分区,安装完在系统里创建就行,灵活性更高。如果要用休眠(合盖长时间不用,希望恢复现场),那就老老实实划一个不小于物理内存的 swap 分区,并且在启动参数里加上resume=UUID=xxx指向它。注意,休眠在 NVIDIA 独显驱动的环境下成功率不高,经常是一觉醒来黑屏或者花屏。我个人的建议是别折腾休眠,改用挂起到内存(suspend),稳定性好得多。
3.2 安装器卡Logo、黑屏、识别不到硬盘怎么办
进入 GRUB 菜单之后,光标停在 “Try or Install Ubuntu” 上,先别急着按回车。按e键进入编辑模式,找到以linux开头的那一行,在这一行的末尾加上启动参数。这一步是绕开显卡黑屏的关键。
具体加什么,取决于你遇到的现象:
- 黑屏、花屏、卡在紫色或黑色界面不动:加
nomodeset。它的作用是告诉内核先用最基础的显示模式启动,不要在这一步加载 nouveau,等系统装完再装闭源驱动。 - 卡在 “A start job is running...” 之类的等待:在 22.04 及更早版本上可以加
nouveau.modeset=0,效果类似。 - 完全没有任何反应,连 GRUB 菜单都不出现:先回去检查 BIOS 里的 Boot List 是不是 UEFI,以及U盘是不是按 UEFI 方式制作的。
- 安装器里硬盘列表是空的:这不是启动参数的问题,是 SATA 模式还停在 RAID On,回第 2 章检查。
改完按Ctrl+X或者F10启动。这一次屏幕应该能正常进入桌面或者安装向导了。注意,这个参数只是这一次启动有效,装完系统之后还需要在系统里永久配置,具体做法在 4.1 节。
另外有个细节:如果你加了nomodeset之后分辨率特别低、界面看起来怪怪的,这是正常的,不用管,能装就行。装完装好驱动自然就恢复了。
3.3 安装向导里的几个关键选择
进入到安装向导之后,有几个选项值得停下来想一想。
安装类型这一页,务必选“其他选项”(手动分区),不要选“与 Windows 共存自动分区”。自动分区的逻辑是压缩现有分区然后新建,在已经有未分配空间的情况下它反而可能做出奇怪的决定。手动分区你自己清清楚楚知道每个分区在哪、多大、挂在哪儿。
引导程序安装位置这一页,默认会指向第一块硬盘的 EFI 分区。如果你按 3.1 节的做法单独建了 EFI 分区,这里要手动改成你新建的那个分区(比如/dev/nvme0n1p5)。选错了会写到 Windows 的 EFI 分区里,虽然也能引导,但就把 100MB 撑爆的风险又装回来了。
时区这一页看起来无关紧要,但它决定了后面 RTC 时间是否错乱的初始状态。选对你所在的时区,装完再按第 5 章调整。
装的过程中如果进度条卡在 “正在配置 apt” 或者 “正在执行 late-command” 很久,先别急着断电。有些机器在这一步会因为网络源访问慢而卡十几分钟。如果超过二十分钟还是不动,再考虑重启重来,重来的时候可以把网络断开,用离线模式装,速度快很多。
装完重启,拔掉U盘,你会看到 GRUB 菜单,里面有 Ubuntu,但大概率没有 Windows 那一项。这是正常现象,原因在 5.2 节讲。
4. 装完之后才是正戏:驱动与硬件适配排查
系统能进桌面,只是走完了上半场。真正消耗时间的是接下来这一堆硬件适配。这一章按问题出现频率从高到低排,每一节都给出“怎么判断”“怎么解决”“为什么这么解”。
4.1 NVIDIA混合显卡:从nomodeset到prime-select
装完第一次重启,如果你在安装时加了nomodeset,这次大概率是能进桌面的,但分辨率不对、界面有点糊。这是因为系统还在用最基础的显示驱动。要恢复正常,得先让这个参数失效,再装闭源驱动。
第一步,编辑 GRUB 配置,把临时加的nomodeset去掉:
sudo nano /etc/default/grub找到GRUB_CMDLINE_LINUX_DEFAULT这一行,去掉里面的nomodeset。如果去掉之后变成空字符串,就写GRUB_CMDLINE_LINUX_DEFAULT=""。然后更新配置并重启:
sudo update-grub sudo reboot重启之后,如果又黑屏了,那就说明 nouveau 在这个内核版本上确实有问题。这时候改用另一种思路:先不急着去 nouveau,而是直接进恢复模式装闭源驱动。开机时在 GRUB 菜单选 “Advanced options”,选带 “(recovery mode)” 的那一项,进去选 “root” 进入命令行,然后:
sudo apt update sudo ubuntu-drivers devices这条命令会列出系统识别到的显卡和推荐驱动。通常推荐的是带-recommended标记的那个版本。装它:
sudo ubuntu-drivers install装完重启。这一次应该能正常进入图形界面,分辨率正常,nvidia-smi也能输出信息了。
接下来是混合显卡的切换逻辑。这台机器默认是核显输出、独显按需调用,Ubuntu 上通过prime-select管理:
prime-select query sudo prime-select nvidiaon-demand模式最省电,独显只在需要时启动,但它在某些外接屏和 CUDA 场景下表现不稳定。nvidia模式性能最好,代价是续航明显下降。我一般的做法是:平时用 on-demand,接外接显示器或者跑需要独显的任务时临时切到 nvidia,切完注销重新登录生效。
实测心得:切换模式之后不需要重启,注销再登录就够。但如果你发现切换后
nvidia-smi报 “Failed to initialize NVML”,那就是内核模块没重新加载,老老实实重启一次。
还有一个容易踩的点:如果你在 BIOS 里看到过 “Hybrid Graphics” 或 “Discrete Graphics” 之类的选项,别去动它。改成独显直连之后,核显被禁用,很多发行版的安装器和驱动脚本会找不到显示设备,问题反而更多。
4.2 无线网卡与蓝牙不工作
无线网卡的表现通常是两种:一种是连 WiFi 图标都没有,说明驱动没加载;另一种是有图标但搜不到网络,说明固件缺失或者被软禁用了。
先用命令确认硬件和驱动状态:
lspci -nn | grep -i network sudo dmesg | grep -i iwl rfkill list第一条看网卡型号,第二条看内核加载 iwlwifi 时的日志。如果日志里出现 “firmware: failed to load” 或者 “no suitable firmware found”,那就是固件包太旧。解决办法是更新固件和内核:
sudo apt update sudo apt install linux-firmware sudo apt install linux-generic-hwe-22.04 sudo rebootHWE 内核会跟着 LTS 的硬件支持周期更新,对新网卡的支持明显更好。这一步做完还没好,再检查rfkill list里是不是有 “Soft blocked: yes”,如果有,执行sudo rfkill unblock all。
蓝牙是另一个独立的问题,因为它走的是 USB 通道,跟 WiFi 虽然在同一张卡上但驱动路径不同。典型症状是设置里根本没有蓝牙开关。检查:
lsusb | grep -i bluetooth sudo dmesg | grep -i btusb如果lsusb能看到设备但dmesg里有固件加载失败,同样是linux-firmware的问题。还有一种情况是 Windows 那边蓝牙处于配对状态,导致设备在切换系统后没有正常复位,这种时候在 Windows 里把蓝牙关掉再重启进 Ubuntu 就好了。
4.3 声音、亮度、功能键这些“小毛病”
声音问题在这台机器上出现的频率不低,典型表现是:设置里能看到输出设备,音量条也在动,但就是没声音;或者只有插耳机才有声音,扬声器完全不响。这通常是 Intel 的 SOF 音频框架和 Realtek 编解码器之间的兼容问题。
先确认声卡是否被识别:
aplay -l如果列出的设备里有 HDMI 输出但没有模拟输出,说明模拟声卡那一路上有问题。可以试着强制内核走旧版的 HDA 驱动,在/etc/modprobe.d/下新建一个配置文件:
sudo nano /etc/modprobe.d/audio-fix.conf写入这一行:
options snd-intel-dspcfg dsp_driver=1保存后重启。这个配置的意思是让内核不要用新的 SOF 框架,改用传统的 HDA 驱动路径,兼容性更好,代价是可能会失去一些高级特性(比如某些降噪功能),但对普通使用来说完全够。如果改完还是没声音,把这一行删掉,换成dsp_driver=3再试一次,两个值对应不同的驱动加载策略,具体哪个有效跟批次有关,只能试。
亮度调节是另一个高频问题。按 Fn 加亮度键,屏幕上那个滑块会动,但实际亮度不变。原因是内核不知道用哪种方式控制背光。解决办法是加内核参数,在/etc/default/grub的GRUB_CMDLINE_LINUX_DEFAULT里加上:
acpi_backlight=native如果不行,换成acpi_backlight=vendor或者acpi_backlight=video,三个值依次试。改完sudo update-grub然后重启。这三个值不要同时加,只能选一个,加多了行为不确定。
功能键方面,音量和亮度之外的键(比如切换性能模式的那个键)在 Linux 下基本没有官方支持,按下去没反应是正常的,不用在这上面花时间。
4.4 刷新率、缩放和续航
高刷新率屏幕在装完闭源驱动之后才会被正确识别。在“设置 → 显示器”里看看刷新率选项里有没有 120Hz 或者 165Hz。如果没有,说明系统还在用核显输出,检查一下是不是还停留在 nouveau 或者没切到 nvidia 模式。
如果有了但选中之后屏幕闪烁或者花屏,那是驱动版本和面板时序的兼容问题。可以试着在/etc/X11/xorg.conf.d/下加一个配置指定模式,或者干脆降一档用 60Hz。我个人对这件事的态度是:在 Linux 下追求高刷带来的收益,远不如稳定重要。除非你有明确的游戏或视频需求,否则 60Hz 用着,省心。
缩放是个老生常谈的问题。1080p 的 15.6 寸屏,100% 缩放字有点小,125% 又会出现某些应用模糊。我的建议是:先用 100%,然后把系统字体调大一号,再把常用应用的字体单独调。这样避免了分数缩放带来的一堆兼容问题。如果你确实需要 125% 或者 150%,那就用 Wayland 会话,它对分数缩放的支持比 Xorg 好得多,代价是部分截图工具和录屏工具会有兼容问题。
续航方面,装完系统之后有几个东西值得装一下:
sudo apt install tlp thermald sudo systemctl enable tlptlp负责电源管理策略,thermald负责温度控制。这两个对笔记本来说基本是必装。另外在 on-demand 模式下,独显不工作时功耗会明显低一些,这也是我推荐日常用这个模式的原因。实测下来,纯办公场景能比 nvidia 模式多撑一到两个小时,具体取决于你在做什么。
5. 双系统长期共存的细节维护
装完能用只是开始,真正的麻烦往往在用了几个月之后才浮现。这一章讲的都是“用着用着出问题”的场景。
5.1 时间差8小时的根本原因
双系统最常见的抱怨是:从 Ubuntu 重启进 Windows,时间差了 8 小时(或者你所在地时区对应的偏移量)。原因很简单:Windows 把主板上的硬件时钟当作本地时间存储,Linux 默认把它当作 UTC 存储。同一个硬件时间,两套系统解读出来的结果就差了时区偏移量。
两种修法,选一种,不要两边都改:
第一种,让 Ubuntu 也用本地时间:
timedatectl set-local-rtc 1 --adjust-system-clock这条命令简单直接,缺点是会让 Ubuntu 的时间管理处于一种非标准状态,某些依赖 UTC 的服务(比如日志时间戳、证书校验)可能出怪问题。
第二种,让 Windows 也认 UTC。在 Windows 里以管理员身份打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation下新建一个 DWORD 值,名字叫RealTimeIsUniversal,值设为 1,然后重启。这个方案更干净,我推荐这个。万一哪天你把 Ubuntu 删了,Windows 的这个设置也不会造成任何影响。
顺便提醒一句,如果你在 Ubuntu 里开了自动时间同步,改完之后等几秒让它同步一次再重启,避免带着错误的时间进另一个系统。
5.2 GRUB引导顺序与os-prober
装完第一次重启,GRUB 菜单里只有 Ubuntu,没有 Windows。这不是引导坏了,而是新版 GRUB 默认关闭了os-prober这个探测其他系统的功能,出于安全考虑。
启用方法:
sudo nano /etc/default/grub找到或者添加这一行:
GRUB_DISABLE_OS_PROBER=false保存后执行:
sudo os-prober sudo update-grub第一条命令如果输出了 Windows 的引导分区路径,说明探测到了,第二条更新配置之后菜单里就会出现 “Windows Boot Manager”。
注意几个坑。第一,如果os-prober什么都没输出,检查 Windows 所在的 EFI 分区有没有被挂载。有时候装完系统那个分区是没挂的,os-prober自然看不到。可以手动挂一下再执行。第二,如果菜单里出现了 Windows 但选了进不去,报错跟chainloader相关,那通常是 EFI 分区路径不对,用efibootmgr -v看一下实际的引导项。第三,如果你像我一样把两个系统装在两块硬盘上,想让默认启动项是 Windows,可以用:
sudo efibootmgr它会列出所有引导项和编号,然后:
sudo efibootmgr -o 0001,0000把顺序改成你想要的。这个操作比改grub.cfg干净得多,因为 BIOS 层面的顺序优先级高于 GRUB 的默认项。
5.3 共享盘、快速启动与休眠
如果你想在 Ubuntu 里访问 Windows 的 NTFS 分区,默认情况下点一下就能挂载,但有个前提:Windows 那边必须是完全关机,不是快速启动之后的“假关机”。这个在第 2 章讲过,但值得再强调一次,因为很多人装完系统之后又把快速启动打开了,然后发现共享盘变成只读。
如果你已经遇到了只读的情况,先别急着改权限。用这条命令看一下分区状态:
sudo ntfsfix /dev/nvme0n1p3把设备名换成你实际的 Windows 分区。这条命令会清理 NTFS 的日志标记,让它能被正常挂载。但这是治标,治本还是要关掉 Windows 的快速启动。反复用ntfsfix有损坏文件系统的风险,尤其是在 Windows 那边还有未完成的写入时。
还有一个更隐蔽的问题:如果你在 Windows 里对某个 NTFS 分区启用了 BitLocker,Ubuntu 里是打不开的。这不是配置问题,是这个分区本身就是加密的。要么在 Windows 里解密,要么就别指望在 Linux 里访问。
休眠这块,我前面提过不建议用。如果你的确要用,除了 swap 要够大、启动参数要加resume=UUID=xxx之外,还要注意一点:从休眠恢复之后,独显的状态经常是不对的,可能表现为外接屏不亮,或者nvidia-smi报错。遇到这种情况只能重启。所以我的实际做法是:合盖设置成挂起到内存(suspend),而不是休眠到硬盘(hibernate)。挂起恢复快,问题也少。
6. 常见问题速查与几条踩坑心得
前面几章是按流程讲的,这一章是一张对照表,方便你直接按症状查。后面几条是我反复装机之后总结出来的、官方文档里基本不会写的东西。
6.1 症状到方案的对照表
| 症状 | 最可能的原因 | 处理方式 |
|---|---|---|
| 安装器里看不到硬盘 | SATA 模式是 RAID On | 按 2.3 节的顺序切 AHCI |
| 选完启动项后黑屏 | nouveau 驱动不兼容 | GRUB 里加 nomodeset |
| 装完重启没有图形界面 | 驱动装完但模式没切 | 恢复模式装驱动后 prime-select |
| WiFi 图标都没有 | 固件或内核太旧 | 升级 linux-firmware 和 HWE 内核 |
| 有音量但没声音 | SOF 与编解码器不兼容 | 强制 dsp_driver=1 |
| 亮度键无效 | 背光控制方式未指定 | 加 acpi_backlight=native |
| 时间差 8 小时 | RTC 标准不一致 | 改 Windows 注册表或 timedatectl |
| GRUB 里没有 Windows | os-prober 被禁用 | 设 GRUB_DISABLE_OS_PROBER=false |
| 共享盘只读 | Windows 快速启动 | 关快速启动,ntfsfix 清理 |
| 睡眠唤醒后花屏 | 独显电源状态异常 | 禁用休眠,改用挂起到内存 |
| 内核更新后空间不足 | EFI 分区太小 | 单独划 512MB EFI 分区 |
这张表里,我最想让你注意的是最后一条。它不会在你装系统那天出现,而是在三个月后的某次例行更新里突然冒出来,报错信息还完全跟“空间”没关系,很容易把人带到错误的方向去。
6.2 不太会写在官方文档里的经验
第一条,先怀疑线材和接口,再怀疑系统。我有一次折腾了两个小时怀疑是 BIOS 设置问题,最后发现是那根 Type-C 转接的U盘读卡器接触不良。装系统这件事上,硬件层的偶发问题造成的症状和软件问题高度相似,先换一个U盘、换一个接口,能省下大量时间。
第二条,把每次改动的配置记下来。装双系统涉及 BIOS、GRUB、内核模块、电源管理好几个层面,你改了五六处之后出问题,根本记不清是哪一处引起的。我的习惯是改一处、重启一次、验证一次,并且在一个文本文件里记一行。这看起来慢,实际上比反复试错快得多。
第三条,别追新。新版本的系统、最新的内核、刚发布的显卡驱动,听上去很诱人,但在游戏本这种硬件组合复杂的环境里,稳定性永远排在第一位。我现在的做法是:装一个已知能工作的 LTS 版本,然后只做安全更新,内核和驱动不主动升级。等这套配置用满半年确认没问题,再考虑要不要动。
第四条,留一个能进命令行的后路。图形界面挂了不可怕,进不去命令行才可怕。确保你知道怎么在 GRUB 里进恢复模式、怎么挂载根分区、怎么用chroot修引导。这几个操作在关键时刻能救你一整个下午。具体命令我建议你提前查好存到手机里,因为出问题的时候你正好没法上网查。
第五条,别把 Windows 的引导搞坏。这句话听起来理所当然,但真出事的时候修复起来非常麻烦。最保险的做法是两套系统分别用各自的 EFI 分区,装 Ubuntu 的时候把引导装到新分区上,Windows 那边一个字节都不动。如果只有一块硬盘,那就更要小心,在安装器的“引导程序安装位置”那一页多看一眼,确认选的是新分区而不是 Windows 的那个。
第六条,键盘背光和风扇曲线这两件事,趁早放弃在 Linux 下折腾。背光控制需要厂商的私有工具,Linux 下没有,你能做的只是让它保持 Windows 里最后一次设置的样式。风扇曲线同理,BIOS 里的性能模式切换键在 Linux 下不起作用,风扇转速由 BIOS 自己决定。这不是你配置不对,是本来就没有这条路。我在上面花的时间,加起来够重装三次系统了。
最后说一个我自己的体会:在这台机器上折腾双系统,成功的关键不在于你有多熟悉 Linux,而在于你有没有耐心把准备工作做扎实。BIOS 那三个开关、Windows 那边的三项预处理、分区时那个 512MB 的 EFI,这三件事做对了,后面的安装过程会顺利到让你觉得“网上那些问题帖是不是在骗人”。反过来,如果这三步里有一步偷懒,那后面就要用几倍的时间去弥补。