尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Win10+Ubuntu双系统安装避坑:UEFI、GPT、分区与GRUB

Win10+Ubuntu双系统安装避坑:UEFI、GPT、分区与GRUB 我第一台自己折腾双系统的机器是一台神舟的笔记本i5 加一块 512G 的固态出厂只有 Win10。当时的需求很朴素课程要用 Linux 环境跑编译Windows 下的虚拟机太吃内存开个虚拟机风扇就像起飞。于是在一个周末我把它格成了 Win10 Ubuntu 双系统。结果第一次装完重启直接进了 Windows第二次装完 Ubuntu 卡在紫屏第三次装完能进系统但无线网卡没驱动。三个周末的代价换来一句总结Win10 Ubuntu 双系统安装的难点从来不在点下一步的那二十分钟而在动手之前的判断和动手之后的收尾。这篇就把这几年的完整流程、踩过的坑和排查链路一次讲透无论你是第一次给笔记本装 Linux 双系统还是重装过一次但没搞明白原理都能照着复现。1. 双系统、虚拟机、WSL2 三条路的真实差距在打开的磁盘管理界面之前先花十分钟想清楚一件事你到底需不需要一个真机双系统。我给身边同事做过统计十个人里大概有六个的需求用虚拟机就能满足剩下四个才是真正需要裸机 Linux 的。选错路线的代价是折腾一整天外加一块硬盘空间选对了能省下好几年的麻烦。1.1 三种方案摆在一起对比把三种常见做法的关键维度列出来你大概就能对号入座了。维度真机双系统虚拟机VMware/VirtualBoxWSL2性能损耗无直接跑在硬件上CPU 有虚拟化开销图形性能差接近原生但只覆盖 Linux 内核层磁盘占用40G 起步可自由分配20G 起动辄 60G几个 G随用随长硬件直通完全支持USB/显卡直通配置麻烦基本不支持串口、外设受限图形界面完整桌面完整但卡需要额外配置 XServer系统崩溃影响可能影响引导需修复沙箱内删了重来基本不影响 Windows适合场景驱动开发、串口调试、CUDA、内核实验学命令、跑服务、隔离测试日常开发、命令行工具链结论很直白如果你只是想在 Linux 里跑gcc、cmake、docker或者写写 PythonWSL2 的性价比高得离谱一条命令就能装完还不用重启切系统。但如果你要碰串口设备、要装 NVIDIA 驱动跑 CUDA、要调试内核模块、要做系统级的实验那虚拟机和外层抽象都会碍事这时候真机双系统才是正解。1.2 判断自己属于哪一类有个很简单的判断方法列出你必须在 Linux 下做的三件事然后看这三件事在虚拟机里能不能干。如果三件里有两件能在虚拟机里完成那就先用虚拟机过渡一个月扛不住了再上双系统这时候你对 Linux 的熟悉程度也足够应付安装过程中的各种岔路了。反过来如果你现在已经明确知道自己要跑什么——比如要编译一个只在 Linux 下能过的大项目、要接一块开发板做串口通信、要装一个特定版本的 CUDA——那就别绕弯子直接准备双系统。虚拟机的显卡直通配起来的时间够你把双系统装三遍。1.3 动手之前先做的两件保命操作这一步我想强调一下因为它救过我两次。第一件事是把 Windows 里的重要数据备份到移动硬盘或者云盘注意是重要数据不是整盘镜像。安装过程中只要你不去动 Windows 所在的分区数据是安全的但分区操作本身有失手概率而且改 BIOS 里的硬盘模式有概率导致 Windows 起不来这时候你至少要有办法进恢复模式。第二件事是记下当前 Windows 的激活状态和 BitLocker 状态。如果系统盘开了 BitLocker改 BIOS 设置之后会要求输入 48 位恢复密钥找不到密钥就彻底进不去系统了。检查方法是在管理员 PowerShell 里执行manage-bde -status如果显示保护已开启先去控制面板把 BitLocker 暂停或者关闭等装完 Ubuntu 再开回来。2. 动手前必须确认的三件事固件模式、分区表、可用空间装双系统失败的案例里七成以上是这三个前提没确认清楚就开干了。它们都在 Windows 里就能查到不需要任何额外工具花五分钟确认能省掉几小时的返工。2.1 UEFI 还是 Legacy这个决定了后面一半的坑按Win R输入msinfo32在弹出的系统信息窗口里找BIOS 模式这一行它会明确告诉你当前是 UEFI 还是传统 BIOSLegacy。2012 年之后出厂的机器基本都是 UEFI但有些老机器被重装过可能被改成了 Legacy 模式。为什么这件事重要因为两种模式下的启动盘制作方式、分区表格式、引导文件位置完全不同。UEFI 模式下系统引导文件放在一个 FAT32 格式的 EFI 系统分区里ESPUbuntu 的 GRUB 会写进这个分区的EFI/ubuntu/目录Legacy 模式下引导信息写在磁盘的第一个扇区。如果你用 UEFI 模式装出来的启动盘去 Legacy 模式的机器上引导大概率连安装界面都进不去。提示新装机器默认 UEFI GPT 就对了。如果你查出来是 Legacy MBR也不一定要改Ubuntu 完全支持这种组合只要启动盘按对应模式制作即可。硬改 UEFI 反而可能让 Windows 起不来。2.2 GPT 还是 MBR分区表决定了能不能顺利装在 Windows 的磁盘管理里右键左侧的磁盘标签选属性切到卷选项卡能看到分区样式字段写着 GUID 分区表GPT或者主引导记录MBR。GPT 的好处是主分区数量几乎不受限Ubuntu 想分多少个都可以。MBR 的限制是最多四个主分区Windows 通常会占掉一到两个如果你还想再去分一个 Ubuntu 专用的 ESP就容易撞上限。MBR 下的解决办法是把第四个分区做成扩展分区再在里面切逻辑分区但这一步操作起来比 GPT 麻烦Ubuntu 安装程序处理扩展分区时的界面也更容易看错。另外要提醒的是如果磁盘是 GPT 格式做启动盘时 Rufus 的分区类型也要选 GPTMBR 则选 MBR。这两个不匹配是最常见的U 盘插上去 BIOS 里看不到的原因。2.3 从 Windows 里挤出一块未分配空间Ubuntu 需要一个独立的、不属于任何 Windows 分区的空间。正确的做法是在 Windows 的磁盘管理里右键 C 盘或者其他有富余的分区选压缩卷输入要压缩的容量压缩完成后会得到一块黑色的未分配空间。这里有个几乎人人都会踩的坑压缩卷能压出来的空间远小于你看到的可用空间。比如 C 盘显示还剩 200G 可用你一压缩却告诉你最多只能压 30G。原因是 NTFS 分区中间存在不可移动的文件——休眠文件、页面文件、系统还原点。解决办法有三个按推荐顺序用管理员身份执行powercfg -h off关闭休眠重启后再压缩能多挤出几到十几个 G。在系统属性 → 高级 → 性能设置 → 高级 → 虚拟内存里把 C 盘设为无分页文件重启后压缩压缩完再改回来。用第三方分区工具做无损调整但这有风险非必要不推荐。至于给 Ubuntu 留多少我的经验值是至少 60G其中根分区 40G、swap 按内存大小给、剩下的给 home。如果你要装 CUDA 和几个大模型框架直接给 120GLinux 下的依赖包体积比你想象的大得多/var/lib/docker和 conda 环境都是吃空间的大户。2.4 Intel RST / VMD 这个隐形杀手这个坑足够隐蔽值得单独拿出来讲。部分品牌机尤其是某些游戏本和轻薄本出厂时硬盘控制器工作在 Intel RST 模式或者 VMD 模式下这种模式下 Ubuntu 的安装程序根本看不到硬盘安装类型界面里只有 U 盘本身你会以为是启动盘做坏了。改法是把 BIOS 里的 SATA Mode 从 RST/VMD 改成 AHCI。但直接改会导致 Windows 进不去蓝屏报 INACCESSIBLE_BOOT_DEVICE。正确顺序是这样# 第一步在 Windows 管理员命令行里让下次启动进安全模式 bcdedit /set safeboot minimal # 第二步重启进 BIOS把 SATA 模式改成 AHCI保存退出 # 此时 Windows 会自动进入安全模式 # 第三步在安全模式下打开管理员命令行解除安全模式标记 bcdedit /deletevalue safeboot # 第四步正常重启Windows 会以 AHCI 模式正常启动这四步做完Windows 和后续的 Ubuntu 就都能认到硬盘了。如果 BIOS 里根本没有 AHCI 选项有些机器被厂商锁了那就只能考虑外接硬盘或者放弃这台机器装双系统。3. 启动盘的制作镜像、写盘工具与校验硬盘空间准备好了接下来是那个 U 盘。这部分看起来简单但细节不少尤其是镜像体积越来越大之后写盘工具的选择开始变得有讲究。3.1 镜像从哪来、怎么验证Ubuntu 的镜像只从官方渠道下载优先选 LTS 版本。截至我写这篇的时候22.04 LTS 和 24.04 LTS 都还有支持20.04 LTS 接近生命周期尾声了。如果你追求稳定、驱动兼容性好22.04 是保守选择想要更新的内核和软件包24.04 更合适代价是部分第三方软件比如某些输入法、老版 CUDA适配会晚一点。下载完务必做一次校验这一步很多人跳过但镜像下载不完整导致安装过程中报文件损坏的情况确实存在# Windows PowerShell Get-FileHash .\ubuntu-24.04-desktop-amd64.iso -Algorithm SHA256 # Linux / macOS sha256sum ubuntu-24.04-desktop-amd64.iso把结果和官网同一页面上的 SHA256 值对比一致才继续。文件大小也要看一眼一个完整的桌面版镜像大概在 4 到 6 个 G 之间明显偏小说明下载中断了。3.2 Rufus、balenaEtcher、Ventoy 该怎么选三个工具我都用过各有各的适用面。Rufus是 Windows 下最常用的体积小、速度快而且会针对 Ubuntu 的镜像做一些特殊处理。需要注意的选项是分区类型按你前面查到的选 GPT 或 MBR目标系统选 UEFI 或 BIOS。还有一个细节新版 Ubuntu 镜像里的casper/filesystem.squashfs文件可能超过 4GB超过 FAT32 的单文件上限Rufus 会弹窗提示你用 NTFS 或者它自带的 UEFI:NTFS 方案选推荐的就行能正常引导。balenaEtcher的优点是操作极简选镜像、选盘、点烧录没有分区类型这种让人发怵的选项适合第一次做启动盘的人。缺点是速度慢一些也没法自定义。Ventoy的思路完全不同它先把 U 盘做成一个能自动引导 ISO 的容器之后你只要把 ISO 文件复制进去就能用一个 U 盘可以同时放 Ubuntu 22.04、24.04、PE 工具、硬件检测工具想装哪个就在启动菜单里选哪个。我的建议是如果你以后还会反复装系统、试不同发行版直接上 Ventoy 一劳永逸如果就装这一次Rufus 更省事。3.3 BIOS 里那几个开关该关什么U 盘插上重启在开机 Logo 出现时按对应的功能键进 BIOS联想是 F2 或 FnF2惠普是 F10戴尔是 F2华硕是 F2神舟和不少国产本子是 F2 或者 Del。进去之后重点看这几项Secure Boot安全启动Ubuntu 22.04 之后其实支持开启 Secure Boot 安装但装了第三方内核模块NVIDIA 驱动、某些无线网卡驱动之后需要手动签名比较麻烦。建议装的时候先关掉装完驱动再按需开回来。Fast Boot快速启动BIOS 里的这个 Fast Boot 和 Windows 里的快速启动不是一回事。它跳过一些硬件自检会导致你按键进不去 BIOS也偶尔影响 U 盘识别。建议临时关掉。SATA Mode前面提到的 AHCI 设置确认一下。Boot Order / Boot Menu把 USB 提到最前面或者干脆用开机时的 F12 之类的快捷键呼出一次性启动菜单这样不会改乱默认顺序。保存退出重启如果一切正常你会看到 GRUB 的引导界面上面有Try or Install Ubuntu的选项。到这一步最麻烦的部分已经过去了。4. 分区方案手动分还是让安装程序自动分进到安装界面之后会有一系列问题等着你语言、键盘布局、网络、更新选项然后是整个安装过程中最关键的一步——安装类型。这个界面给了几个选项选错了要么覆盖 Windows要么装完空间分配得很难受。4.1 安装类型界面三个选项分别意味着什么界面上通常有这么几项清除整个磁盘并安装 Ubuntu字面意思整块盘格掉。如果你只有一块盘、且不在乎 Windows可以选。但双系统场景下绝对不能选它会连 Windows 分区一起删。与 Windows Boot Manager 共存看起来最省事安装程序自动帮你从 Windows 分区里划出一块空间来装。但我不推荐原因是它给的空间通常偏小往往就二三十 G而且分配方案是固定的没法把 /home 单独分出来。它还有个毛病是偶尔会从错误的分区里借空间。其他选项 / Something else手动分区双系统的正确入口。你会看到一块完整的磁盘布局能看到 Windows 的分区、Windows 保留分区、EFI 分区以及你之前压缩出来的那块未分配空间。注意如果你在这块盘上看到不止一块硬盘比如一块 NVMe 加一块 SATA务必先确认设备名。经验不熟的话可以在 Windows 的磁盘管理里对照容量核对别把系统装到了数据盘上。4.2 一套用了很多年的分区模板我的手动分区方案稳定用了好几年分享出来给你参考。假设你留出了 100G 的未分配空间内存是 16G挂载点建议大小文件系统用途说明EFI 系统分区原有的不新建或新建 512MBfat32存放引导文件UEFI 必须有/根分区40Gext4系统和软件包swap16G等于或略大于内存swap 区域内存不足时的交换也决定能否休眠/home剩余全部ext4个人文件、配置、下载的东西关于 EFI 分区这里要分情况说。如果你的 Windows 已经建好了一个 EFI 分区而且剩余空间足够通常有 100MBUbuntu 的引导文件占几十 M直接复用就行不需要新建。但如果那个分区剩余空间紧张或者你想让两个系统的引导互相独立以后卸载 Ubuntu 更方便就单独新建一个 512MB 的 EFI 分区挂载点选/boot/efi。注意新建 EFI 分区需要先新建分区表还是直接用现有空间取决于你的磁盘是 GPT 还是 MBR。swap 的大小有个经验规则不缺内存的机器给 8G 到 16G 就够日常用如果你想用休眠功能systemctl hibernateswap 必须不小于内存容量。4.3 挂载点与格式化勾选框的雷区手动分区界面最下方的安装启动引导器的设备下拉框是个容易出错的地方。默认它可能指向某个分区你需要把它改成整块磁盘的设备比如/dev/nvme0n1或者/dev/sda而不是/dev/nvme0n1p5这种带分区号的。选成具体分区的话GRUB 不会正确写入 EFI 引导记录重启后可能找不到启动项。另一个雷区是格式化那个勾选框。选中某个分区、点更改、分配挂载点之后界面会有一个格式化选项默认是勾上的。对于你要新建的 / 和 /home 分区勾上没问题但如果你手滑点到了 Windows 的 NTFS 分区并且勾了格式化那块数据就没了。所以分区界面里每次点更改之前先看一眼设备和容量确认是自己刚压缩出来的那块未分配空间。还有一个细节Windows 有几个隐藏的恢复分区容量通常在几百 M 到 1G 之间格式是 NTFS 或者微软保留分区。这些不要动尤其那个 MSR微软保留分区删掉之后 Windows 更新可能出问题。5. 安装过程与 GRUB 引导的真实行为分区确认之后安装程序会问用户名、计算机名、密码然后开始拷贝文件这个过程通常十到二十分钟取决于 U 盘速度。这段等待时间可以先看看下面的内容装完之后会遇到的问题都在这里。5.1 安装过程中真正需要注意的几步安装界面里的几个选项值得说一下。下载更新这个勾我一般不勾因为安装阶段下载更新会让整个过程慢几倍而且一旦某个软件源不通安装会卡在某个百分比不动。等装完系统进桌面之后再更新可控性高得多。安装第三方软件这个勾建议勾上它包含了无线网卡固件、MP3 解码、显卡的部分驱动不勾的话有些无线网卡装完直接没信号。键盘布局选Chinese还是English其实影响不大装完都能加。用户名建议全小写、不要用中文因为 Linux 的用户名会成为家目录名之后很多命令行工具和路径处理对中文支持不佳改起来还容易出问题。密码别设太简单因为 sudo 全靠它。5.2 为什么重启之后还是 Windows这是新手遇到最多的问题装完了拔掉 U 盘重启屏幕一闪直接进了 Windows完全看不到 Ubuntu 的影子。别慌Ubuntu 大概率是装好了只是引导顺序的问题。原因是 UEFI 固件里保存着一个启动项列表优先级最高的是 Windows Boot ManagerUbuntu 的 GRUB 虽然写进了 EFI 分区但排在后面或者压根没被固件识别。解决办法有两个开机时按 F12 之类的一次性启动菜单键手动选 ubuntu 那一项能进系统就说明没问题进去之后再调顺序。或者进 BIOS 的 Boot 选项卡把 ubuntu 移到 Windows Boot Manager 前面。如果一次性启动菜单里根本没有 ubuntu 这一项那说明 GRUB 没有正确写入。回到第 7 章看引导修复的完整步骤。5.3 GRUB 菜单的几个实用调整进到 GRUB 菜单之后有些默认行为可以调得更顺手。配置文件在/etc/default/grub改完要执行sudo update-grub生效。# 让菜单默认停在 Windows 还是 Ubuntu GRUB_DEFAULT0 # 0 是第一项可以改成 Windows Boot Manager 这种名字 # 菜单等待时间单位秒 GRUB_TIMEOUT10 # 记住上次选择的那一项 GRUB_DEFAULTsaved GRUB_SAVEDEFAULTtrueGRUB_TIMEOUT0会让菜单一闪而过直接进默认系统看起来很爽但我建议至少留 3 秒。原因是有时候系统更新出错需要进恢复模式或者需要临时加内核参数比如nomodeset没菜单就得按住 Shift 键碰运气很烦。另一个常用的改动是把分辨率设低一点避免某些老显示器在 GRUB 阶段花屏GRUB_GFXMODE1024x768。6. 装完之后真正影响日常使用的六项配置能进桌面只是开始。Ubuntu 装完的默认状态离日常能干活还差一段距离中文、显卡、时间、文件互访这几件事如果不处理用起来会一直别扭。这一章按重要性排序都是装完必做的。6.1 中文输入法Ubuntu 自带的中文输入在 22.04 之后是 ibus 加 libpinyin装完系统默认可能只有英文需要手动加。路径是设置 → 键盘 → 输入源 → 加号 → 汉语中国→ 智能拼音加完用Super Space切换。如果你想要更接近 Windows 输入体验的候选词和词库可以装 fcitx5sudo apt update sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-config-qt # 切换输入法框架然后注销重新登录 im-config -n fcitx5重启会话之后在 fcitx5 的配置里添加拼音即可。搜狗输入法也是老牌选择但它在 Ubuntu 24.04 上的适配一直有些滞后安装第三方 deb 包时容易和系统的 fcitx5 版本冲突得注意依赖关系。我的建议是先用系统自带的智能拼音如果你的输入习惯确实需要更好的词库再上 fcitx5 加拼音兼容性最省心。顺带说一个坑改完输入法框架如果桌面登录之后黑屏或者卡住多半是im-config的选择和已安装的框架不匹配。解决办法是Ctrl Alt F3切到 tty用im-config -n ibus切回去再重启显示管理器。6.2 显卡与无线网卡驱动NVIDIA 显卡的驱动安装现在比几年前简单多了# 先看推荐哪个版本 ubuntu-drivers devices # 一键安装推荐的驱动 sudo ubuntu-drivers autoinstall # 装完重启 sudo reboot如果你想手动指定版本sudo apt install nvidia-driver-版本号也行。重启之后用nvidia-smi验证能打印出显卡信息和驱动版本就成功了。无线网卡是另一个高发问题尤其是某些 Realtek 芯片的机器装完系统后设置里压根没有 Wi-Fi 选项。这通常是因为缺少固件或者需要额外的内核模块。先检查lspci | grep -i network看芯片型号然后apt install firmware-*或者搜对应的 DKMS 驱动包。麻烦的地方在于没网就装不了包这是典型的死循环解决办法是用手机 USB 共享网络给电脑临时上网或者用另一台电脑下载 deb 包拷过去。6.3 双系统时间差 8 小时这个问题几乎 100% 会遇到而且很多人不知道原因Windows 把硬件时钟当成当地时间存储Linux 默认把它当成 UTC 存储。所以你在 Ubuntu 里看到的正确时间切回 Windows 就变成了差 8 小时如果你在东八区。看起来是小事但会让 Windows 的日历、邮件、证书验证全部错乱。修复方式有两种我更推荐改 Linux 侧因为 Windows 那边的注册表方案在休眠恢复后偶尔会失效# 让 Linux 也按本地时间读写硬件时钟 timedatectl set-local-rtc 1 --adjust-system-clock # 确认结果 timedatectl如果一定要改 Windows 侧用管理员命令行执行reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1 /f改完重启一次两个系统的时间就对齐了。6.4 跨系统访问 NTFS 分区Ubuntu 默认就能挂载 NTFS 分区在文件管理器里点一下 Windows 盘符就能进去。但很多人会遇到只能读不能写或者提示分区被占用的情况原因几乎都是 Windows 的快速启动没关。Windows 10/11 的关机其实是一种混合休眠它会把系统状态写到硬盘上导致 NTFS 分区留下一个未清理的日志Linux 出于安全就只给只读权限。关闭路径是控制面板 → 硬件和声音 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选启用快速启动然后彻底关机一次。如果你希望 NTFS 分区开机自动挂载可以编辑/etc/fstab先拿到 UUIDsudo blkid # 然后在 fstab 里加一行注意 UUID 和挂载点替换成实际值 UUIDXXXX-XXXX /mnt/win-data ntfs-3g defaults,uid1000,gid1000,umask022 0 0umask022这个参数决定权限让普通用户也能读写。改完 fstab 之后务必执行sudo mount -a验证如果报错就赶紧改回来fstab 写错会导致开机进不了图形界面。6.5 开发环境的一次性配置如果你装 Ubuntu 是为了写代码这几个包基本是标配sudo apt update sudo apt install build-essential cmake git curl wget vim # 远程登录用 sudo apt install openssh-server sudo systemctl enable --now ssh关于gcc或cmake安装失败我遇到过几次原因集中在两类一是apt有另外的进程在跑比如后台的自动更新报错信息里会有无法获得锁等一会儿重试或者重启即可二是软件源配置有问题报 404 或者连接超时这时候换一个可用的镜像源就能解决。换源的方法是编辑/etc/apt/sources.listUbuntu 24.04 用的是/etc/apt/sources.list.d/ubuntu.sources把里面的域名替换掉然后sudo apt update。Docker 的安装建议走官方脚本比 apt 里的版本新很多curl -fsSL https://get.docker.com | sudo sh sudo usermod -aG docker $USER # 注销重新登录让用户组生效SSH 连不上是另一个高频问题排查顺序是这样的先在 Ubuntu 本机执行systemctl status ssh看服务是否在跑再用ss -tlnp | grep 22看端口是否在监听然后检查sudo ufw status看防火墙是否拦了 22 端口最后才是网络层面的事。大部分ssh 无法连接其实是服务没启动或者防火墙没放行跟网络没关系。6.6 环境变量改错了怎么救这是一个小众但杀伤力极大的坑改~/.bashrc或者/etc/profile的时候手滑写错导致终端启动就报错甚至图形界面登录之后循环跳回登录页。原因通常是 PATH 被覆盖了或者某个变量定义有问题。救回来的方法是切到 ttyCtrl Alt F3用绝对路径调用编辑器/usr/bin/vi ~/.bashrc改完之后source ~/.bashrc验证正常了再切回图形界面。如果你不记得改了什么可以在 vi 里用:set nu看行号或者直接把可疑的那几行注释掉。为了避免这类事我现在的习惯是改配置文件前先备份一份cp ~/.bashrc ~/.bashrc.bak一分钟的事能救命。7. 出问题时的排查链路前面讲的都是顺利路径但实际操作中总会遇到点意外。这一章把最常见的四个问题按现象 → 排查 → 修复的顺序整理出来你可以照着一步步走不用去论坛翻帖子。7.1 GRUB 不见了开机直接进 Windows现象是 BIOS 启动菜单里没有 ubuntu 项或者有但选了进不去。原因通常是 GRUB 没有正确写入 EFI 分区或者 Windows 更新之后覆盖了引导项。修复的方法是用 Ubuntu 的安装 U 盘启动选Try Ubuntu进试用桌面打开终端按顺序执行# 1. 找到 Ubuntu 的根分区和 EFI 分区 sudo fdisk -l # 2. 挂载根分区假设是 nvme0n1p5按实际改 sudo mount /dev/nvme0n1p5 /mnt # 3. 挂载 EFI 分区假设是 nvme0n1p1 sudo mount /dev/nvme0n1p1 /mnt/boot/efi # 4. 挂载必要的虚拟文件系统 for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done # 5. chroot 进系统环境 sudo chroot /mnt # 6. 重装并更新 GRUB grub-install /dev/nvme0n1 update-grub # 7. 退出并重启 exit sudo rebootupdate-grub这一条很关键它会扫描所有磁盘上的操作系统自动把 Windows 加进菜单。如果只做了grub-install没做update-grub重启后可能只有 Ubuntu 没有 Windows。7.2 卡在 Logo 或者黑屏进不去桌面现象是选了 Ubuntu 之后卡在紫色屏幕、厂商 Logo或者黑屏只有个光标。八成是显卡驱动的问题尤其是 NVIDIA 显卡加新内核的组合。临时解决办法是在 GRUB 菜单里按e编辑启动参数找到以linux开头的那一行在行末加上nomodeset然后按F10引导。这样能跳过内核的图形驱动加载用最基本的显示模式进系统进去之后再装好显卡驱动就能正常启动了。如果nomodeset也不行可以试试acpioff或者noapic这两个是给一些主板 ACPI 实现有问题的机器用的。但要注意acpioff会导致电源管理失效、风扇狂转、无法关机只能作为临时排查手段别长期这么用。想把这个参数永久加上改/etc/default/grub里的GRUB_CMDLINE_LINUX_DEFAULT加完sudo update-grub。7.3 安装程序看不到硬盘这就是前面提到的 Intel RST/VMD 问题但还有另外几种可能。按这个顺序排查先确认 BIOS 里的 SATA 模式如果是 RST 或者 RAID改成 AHCI。确认启动盘的制作模式UEFI 机器用 Legacy 模式做的盘可能在安装阶段认不到硬盘控制器。如果机器的硬盘是 NVMe 且特别新比如刚出的型号可能是内核版本太老不认这个控制器换更新的 Ubuntu 版本试试。极少数情况是硬盘本身在 BIOS 里被设成了禁用或者被厂商的某种保护模式锁住进 BIOS 确认硬盘是否正常识别。7.4 想反悔怎么干净地卸载 Ubuntu用了半年发现还是 Windows 更顺手想删掉 Ubuntu 把空间还给 Windows这个操作要按顺序来顺序错了会导致 Windows 也起不来。第一步是在 Windows 里用diskpart删除 Ubuntu 的分区或者用磁盘管理直接删除卷。注意别删错先把各个分区的容量和位置对照记下来。第二步是处理 EFI 分区里的残留。用管理员权限打开命令行挂载 EFI 分区diskpart list disk select disk 0 list partition select partition 1 # EFI 分区通常是那个 100MB 到 500MB 的 assign letterZ exit然后进Z:\EFI\目录删掉ubuntu文件夹。这一步做完Z:盘还在可以再进 diskpart 用remove letterZ取消挂载恢复成不可见的系统分区。第三步是清理引导项。在管理员命令行里执行bcdedit /enum firmware # 找到描述里带 ubuntu 的那一项记下它的 identifier bcdedit /delete {那一串 identifier}做完这三步重启一次确认能正常进 Windows然后再去磁盘管理里把之前腾出来的未分配空间合并回 C 盘或者新建分区。合并的话用磁盘管理的扩展卷就行前提是未分配空间紧挨着目标分区。8. 用了几年之后的一些体会装过几十台机器之后我对双系统的看法变了不少。最开始把它当成一个技术挑战总想着一次装好、配置完美后来发现真正省时间的做法是先装一个能跑起来的最小系统用上一周再逐步配置。上来就折腾驱动、输入法、主题、各种开发环境中间任何一步出问题都会让你怀疑是安装本身出了错排查范围一下变得很大。另外一点是关于版本选择的心态。很多人纠结 22.04 还是 24.04其实对日常使用来说差别没那么大反而更要关注的是你的硬件是不是太新。新硬件配老内核容易出驱动问题老硬件配新内核反而更稳。如果机器是三年前买的22.04 LTS 是更保守的选择。还有关于分区的一个建议如果你以后打算反复重装系统做实验、学发行版、给不同的项目配不同的环境把/home单独分出来会极大减轻痛苦。重装的时候只格式化根分区/home保留不动你的浏览器书签、SSH 密钥、各种配置文件全都在装完挂上去就能用省下的是好几个小时的重配时间。这个习惯我坚持了很多年每次都庆幸当初多分了一个区。
返回列表