我第一台自己折腾双系统的机器是一台神舟的笔记本,i5 加一块 512G 的固态,出厂只有 Win10。当时的需求很朴素:课程要用 Linux 环境跑编译,Windows 下的虚拟机太吃内存,开个虚拟机风扇就像起飞。于是在一个周末,我把它格成了 Win10 + Ubuntu 双系统。结果第一次装完重启直接进了 Windows,第二次装完 Ubuntu 卡在紫屏,第三次装完能进系统但无线网卡没驱动。三个周末的代价换来一句总结:Win10 + Ubuntu 双系统安装的难点从来不在"点下一步"的那二十分钟,而在动手之前的判断和动手之后的收尾。这篇就把这几年的完整流程、踩过的坑和排查链路一次讲透,无论你是第一次给笔记本装 Linux 双系统,还是重装过一次但没搞明白原理,都能照着复现。
1. 双系统、虚拟机、WSL2 三条路的真实差距
在打开的磁盘管理界面之前,先花十分钟想清楚一件事:你到底需不需要一个真机双系统。我给身边同事做过统计,十个人里大概有六个的需求用虚拟机就能满足,剩下四个才是真正需要裸机 Linux 的。选错路线的代价是折腾一整天外加一块硬盘空间,选对了能省下好几年的麻烦。
1.1 三种方案摆在一起对比
把三种常见做法的关键维度列出来,你大概就能对号入座了。
| 维度 | 真机双系统 | 虚拟机(VMware/VirtualBox) | WSL2 |
|---|---|---|---|
| 性能损耗 | 无,直接跑在硬件上 | CPU 有虚拟化开销,图形性能差 | 接近原生,但只覆盖 Linux 内核层 |
| 磁盘占用 | 40G 起步,可自由分配 | 20G 起,动辄 60G+ | 几个 G,随用随长 |
| 硬件直通 | 完全支持 | USB/显卡直通配置麻烦 | 基本不支持,串口、外设受限 |
| 图形界面 | 完整桌面 | 完整但卡 | 需要额外配置 XServer |
| 系统崩溃影响 | 可能影响引导,需修复 | 沙箱内,删了重来 | 基本不影响 Windows |
| 适合场景 | 驱动开发、串口调试、CUDA、内核实验 | 学命令、跑服务、隔离测试 | 日常开发、命令行工具链 |
结论很直白:如果你只是想在 Linux 里跑gcc、cmake、docker或者写写 Python,WSL2 的性价比高得离谱,一条命令就能装完,还不用重启切系统。但如果你要碰串口设备、要装 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 还是传统 BIOS(Legacy)。2012 年之后出厂的机器基本都是 UEFI,但有些老机器被重装过,可能被改成了 Legacy 模式。
为什么这件事重要?因为两种模式下的启动盘制作方式、分区表格式、引导文件位置完全不同。UEFI 模式下,系统引导文件放在一个 FAT32 格式的 EFI 系统分区里(ESP),Ubuntu 的 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 的分区类型也要选 GPT;MBR 则选 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 和几个大模型框架,直接给 120G,Linux 下的依赖包体积比你想象的大得多,/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 或 Fn+F2,惠普是 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 系统分区 | 原有的不新建,或新建 512MB | fat32 | 存放引导文件,UEFI 必须有 |
| /(根分区) | 40G | ext4 | 系统和软件包 |
| swap | 16G(等于或略大于内存) | swap 区域 | 内存不足时的交换,也决定能否休眠 |
| /home | 剩余全部 | ext4 | 个人文件、配置、下载的东西 |
关于 EFI 分区,这里要分情况说。如果你的 Windows 已经建好了一个 EFI 分区,而且剩余空间足够(通常有 100MB,Ubuntu 的引导文件占几十 M),直接复用就行,不需要新建。但如果那个分区剩余空间紧张,或者你想让两个系统的引导互相独立(以后卸载 Ubuntu 更方便),就单独新建一个 512MB 的 EFI 分区,挂载点选/boot/efi。注意新建 EFI 分区需要先新建分区表还是直接用现有空间,取决于你的磁盘是 GPT 还是 MBR。
swap 的大小有个经验规则:不缺内存的机器给 8G 到 16G 就够日常用;如果你想用休眠功能(systemctl hibernate),swap 必须不小于内存容量。
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 Manager,Ubuntu 的 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_DEFAULT=0 # 0 是第一项,可以改成 "Windows Boot Manager" 这种名字 # 菜单等待时间,单位秒 GRUB_TIMEOUT=10 # 记住上次选择的那一项 GRUB_DEFAULT=saved GRUB_SAVEDEFAULT=trueGRUB_TIMEOUT=0会让菜单一闪而过直接进默认系统,看起来很爽,但我建议至少留 3 秒。原因是有时候系统更新出错需要进恢复模式,或者需要临时加内核参数(比如nomodeset),没菜单就得按住 Shift 键碰运气,很烦。
另一个常用的改动是把分辨率设低一点,避免某些老显示器在 GRUB 阶段花屏:GRUB_GFXMODE=1024x768。
6. 装完之后真正影响日常使用的六项配置
能进桌面只是开始。Ubuntu 装完的默认状态离"日常能干活"还差一段距离,中文、显卡、时间、文件互访这几件事如果不处理,用起来会一直别扭。这一章按重要性排序,都是装完必做的。
6.1 中文输入法
Ubuntu 自带的中文输入在 22.04 之后是 ibus 加 libpinyin,装完系统默认可能只有英文,需要手动加。路径是"设置 → 键盘 → 输入源 → 加号 → 汉语(中国)→ 智能拼音",加完用Super + Space切换。
如果你想要更接近 Windows 输入体验的候选词和词库,可以装 fcitx5:
sudo 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,先拿到 UUID:
sudo blkid # 然后在 fstab 里加一行,注意 UUID 和挂载点替换成实际值 UUID=XXXX-XXXX /mnt/win-data ntfs-3g defaults,uid=1000,gid=1000,umask=022 0 0umask=022这个参数决定权限,让普通用户也能读写。改完 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.list(Ubuntu 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 被覆盖了,或者某个变量定义有问题。
救回来的方法是切到 tty(Ctrl + 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也不行,可以试试acpi=off或者noapic,这两个是给一些主板 ACPI 实现有问题的机器用的。但要注意,acpi=off会导致电源管理失效、风扇狂转、无法关机,只能作为临时排查手段,别长期这么用。
想把这个参数永久加上,改/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 letter=Z exit然后进Z:\EFI\目录,删掉ubuntu文件夹。这一步做完,Z:盘还在,可以再进 diskpart 用remove letter=Z取消挂载,恢复成不可见的系统分区。
第三步是清理引导项。在管理员命令行里执行:
bcdedit /enum firmware # 找到描述里带 ubuntu 的那一项,记下它的 identifier bcdedit /delete {那一串 identifier}做完这三步,重启一次确认能正常进 Windows,然后再去磁盘管理里把之前腾出来的未分配空间合并回 C 盘或者新建分区。合并的话用磁盘管理的"扩展卷"就行,前提是未分配空间紧挨着目标分区。
8. 用了几年之后的一些体会
装过几十台机器之后,我对双系统的看法变了不少。最开始把它当成一个"技术挑战",总想着一次装好、配置完美;后来发现真正省时间的做法是先装一个能跑起来的最小系统,用上一周再逐步配置。上来就折腾驱动、输入法、主题、各种开发环境,中间任何一步出问题都会让你怀疑是安装本身出了错,排查范围一下变得很大。
另外一点是关于版本选择的心态。很多人纠结 22.04 还是 24.04,其实对日常使用来说差别没那么大,反而更要关注的是你的硬件是不是太新。新硬件配老内核容易出驱动问题,老硬件配新内核反而更稳。如果机器是三年前买的,22.04 LTS 是更保守的选择。
还有关于分区的一个建议:如果你以后打算反复重装系统(做实验、学发行版、给不同的项目配不同的环境),把/home单独分出来会极大减轻痛苦。重装的时候只格式化根分区,/home保留不动,你的浏览器书签、SSH 密钥、各种配置文件全都在,装完挂上去就能用,省下的是好几个小时的重配时间。这个习惯我坚持了很多年,每次都庆幸当初多分了一个区。