ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Windows 与 Ubuntu 双系统安装、分区规划与 GRUB 引导修复实战

Windows 与 Ubuntu 双系统安装、分区规划与 GRUB 引导修复实战 1. 动手之前先做决策双系统的三条路线与硬件账1.1 双系统、虚拟机、WSL 到底该怎么选我先说个结论如果你只是想在 Linux 下跑几条命令、写写脚本那双系统未必是最优解但如果你想长期把 Ubuntu 当主力开发环境用双系统的体验是虚拟机给不了的。虚拟机装 Ubuntu 的好处是零风险宿主 Windows 完全不受影响随时删掉重来。代价也很明显图形界面卡顿、编译大项目时 CPU 和 IO 都被虚拟层吃掉一截、显卡直通折腾成本极高。而 WSL2 走的是另一条路它本质是 Windows 内核上的一个轻量虚拟化层启动快、文件互访方便、终端体验接近原生但它终究不是一个完整的 Linux 发行版环境systemd 支持虽然已经有了内核模块、桌面环境、Docker 的部分特性仍会打折扣。双系统是唯一能让 Ubuntu 独占裸金属硬件的方案。我自己的情况是笔记本上留一个 Windows 分区应付网银、报税软件、某些只有 Windows 版的调试工具剩下时间全部待在 Ubuntu 里。开机选一下两边各自满血这就是双系统的核心价值。判断标准可以简单点会不会经常切来切去会的话虚拟机更顺手。有没有必须长时间跑的重负载任务有的话双系统。只是想学 Linux 命令、跑个 Python 脚本那 WSL2 就够了别给自己找麻烦。1.2 硬盘空间怎么算才不后悔这是最多人踩坑的地方。很多人装完三个月就开始骂自己当初只给了 50G。我给你一个我实测验算过的分配表按「Windows Ubuntu 各占一半」的思路来分区挂载点建议容量文件系统说明EFI 系统分区/boot/efi512MB已有则共用不必新建FAT32引导文件存放处Windows 已建 100~300MB交换空间swap内存 ≤8GB 给 1.5 倍内存 ≥16GB 给 8~16GBswap不用休眠的话可以给少一点或用 zram 替代根分区/60~100GBext4系统和软件包都在这别抠家目录/home剩余全部ext4代码、文档、下载都在这里关于根分区为什么给到 60G 起步我算给你看Ubuntu 24.04 全新安装大约占用 12~15Gsnap 包和系统更新会持续累积旧版本一年下来能吃掉十几 G再算上你可能要装的 CUDA 工具链单独就有 10G、Android SDK、Docker 镜像默认目录、几个大型 IDE60G 是安全线100G 才叫舒服。你完全可以把 /home 分得很大、根分区给足后面真不够了还有 LVM 或者迁移方案可以救。这里有个前提/home 单独分区。这是我从第一次装双系统就坚持的习惯。原因很简单将来要重装 Ubuntu 或者换发行版只需要格掉 / 和 swap把 /home 一挂所有配置、代码、密钥全都还在。这个操作的收益通常要在你第二次重装的时候才体会到。1.3 数据备份与不可逆操作的边界接下来这段话请认真读。双系统安装是有分区表损伤风险的操作虽然正常流程下很安全但一旦手滑选错磁盘整个硬盘的分区表都可能被覆盖。所以动手之前把 Windows 里重要的东西尤其是桌面、文档、OneDrive 没同步完的拷到移动硬盘或云端。注意桌面文件夹很多人放在 C 盘重装时最容易丢。记录一下 Windows 的产品密钥或者确认已经数字激活绑定账号万一后面引导结构乱了要重装 Windows你还能激活回来。笔记本插上电源别在 50% 电量以下动分区断电中断安装会让分区变成半残状态。确认磁盘上没有处于「动态磁盘」模式Windows 的动态磁盘 Linux 读不了需要先转回基本磁盘。还有一个容易被忽略的点如果 C 盘开了 BitLocker装 Ubuntu 前先挂起或关闭它。因为安装过程会改动引导顺序某些机型会触发恢复密钥输入输不出来就进不了系统了。挂起的方式是在控制面板里找 BitLocker 管理选「暂停保护」装完再恢复。2. 安装介质与固件设置90% 的失败卡在这一步2.1 镜像获取与启动盘制作镜像从 Ubuntu 官方站点下载选 LTS 版本最稳。截至我写这篇的时候24.04 LTS 是长期支持版本桌面版本 ISO 大概 5~6GB。别去那些来路不明的站点下镜像被改过的话后面装驱动、装软件都会出奇怪的问题。启动盘工具有两个方向可以走。Windows 上最省事的是 Rufus打开之后选中 ISO分区类型选 GPT、目标系统选 UEFI其余默认点开始等它写完就行。Rufus 会问你是「以 ISO 镜像模式写入」还是「DD 镜像模式写入」Ubuntu 的 Desktop 镜像两种都能用我一般选 ISO 模式因为这样 U 盘还能当普通存储用后期想换个镜像直接拖进去覆盖就行。如果手边只有 Linux 环境用 dd 更直接# 先确认 U 盘设备名千万别写错成硬盘 lsblk # 假设 U 盘是 /dev/sdb写入时不要加分区号 sudo dd ifubuntu-24.04-desktop-amd64.iso of/dev/sdb bs4M statusprogress oflagsync这里有个必须强调的坑of后面跟的是整块设备/dev/sdb不是分区/dev/sdb1。写错成硬盘设备名的话你的数据就没了。写完执行sync再拔。如果是给苹果电脑装双系统流程差异比较大需要额外的驱动处理而且近年苹果芯片机型对第三方系统支持很差建议先确认自己的机型是不是 Intel 处理器。2.2 引导模式与分区表的对应关系这一节是纯概念但不懂它你会在后面反复翻车。传统 BIOS 配 MBR 分区表UEFI 配 GPT 分区表这是两套体系。现代预装 Windows 10/11 的机器几乎都是 UEFI GPT。判断方法Windows 里Win R输入msinfo32看「BIOS 模式」是 UEFI 还是传统再看「分区样式」是不是 GPT。为什么这件事重要因为你的 U 盘必须用和硬盘相同的模式启动。如果硬盘是 UEFI GPT你却用 Legacy 模式引导了 U 盘会出现两种情况要么安装程序根本不识别你的硬盘分区要么装完之后引导写入位置不对重启直接进 Windows。具体现象是安装向导到分区那一步列表里只有你那块 U 盘看不到 SSD。遇到这个重启回固件设置把启动模式改成 UEFI Only同时关掉 CSM 兼容模块。2.3 进安装界面前必须改的几项固件设置开机狂按 F2、F12、Del各家不同联想是 F2 或 FnF2戴尔是 F2惠普是 F10进固件设置按下面的顺序检查Secure Boot安全启动Ubuntu 官方是支持它的可以保持开启。但如果你打算装 NVIDIA 闭源驱动或者某些 DKMS 模块安装过程中会弹出 MOK 管理界面让你设一个密码重启后还要进蓝色界面再输一遍完成注册。嫌麻烦可以先关掉装完再开。这是取舍不是必须。SATA 模式确认是 AHCI 而不是 RAID/Intel RST。如果 Windows 是在 RST 模式下装的直接改成 AHCI 会导致 Windows 蓝屏正确做法是先在 Windows 里用安全模式切换到 AHCI再装 Ubuntu。Fast Boot快速启动关掉。它在开机时跳过部分硬件初始化容易让 U 盘识别不稳定。Windows 侧的快速启动这个是系统里的不是固件的。控制面板 → 电源选项 → 选择电源按钮的功能 → 关闭「启用快速启动」。它会让 Windows 关机时处于混合休眠状态Linux 挂载 NTFS 分区时可能变成只读。启动顺序把 U 盘调到第一位或者用开机热键F12临时选启动项装完记得改回来。注意不同品牌固件的菜单名称差别很大「Fast Boot」在有些机器上叫「Quick Boot」有些藏在外设或启动子菜单里找不到就翻一遍所有 Tab。3. 手动分区的完整推演每个分区为什么这么切3.1 Windows 侧腾空间与碎片整理先把空间让出来。Windows 里右键「此电脑」→ 管理 → 磁盘管理找到 C 盘或者你打算压缩的那块盘右键选「压缩卷」。很多人这个时候会发现可压缩空间远小于预期比如 500G 的盘只能压出 30G。原因通常是三个文件碎片太多、系统保护还原点占用、pagefile.sys 和 hiberfil.sys 这些不可移动的系统文件卡在磁盘中间。处理思路关闭系统保护系统属性 → 系统保护 → 配置 → 禁用并删除已有还原点。临时关闭休眠和分页文件管理员命令行执行powercfg -h off分页文件在「高级系统设置 → 性能 → 高级 → 虚拟内存」里设为无重启后再压缩。如果还是压不出足够空间用第三方分区工具做无损调整但任何分区调整前都要先备份这类工具的失败率不高但也不是零。压缩完你会看到一块「未分配」空间。不用格式化它Linux 安装程序会自己认。有个细节如果未分配空间夹在两个分区中间Ubuntu 能正常使用但如果你后面要扩展某个分区位置就有讲究了。初次装双系统把未分配空间留在磁盘末尾最省事。3.2 EFI、swap、/、/home 的容量与文件系统选择重启进 U 盘选「Try or Install Ubuntu」一路到分区这一步停下。选**「其他选项」/「手动分区」**别选「与 Windows 共存」那个一键方案。一键方案看着方便实际上它会把整个未分配空间全吃掉也不会给你分 /home后期想调整很痛苦。然后在空闲空间上手动创建EFI 系统分区。先看看列表里有没有已经存在的 EFI 分区类型显示为 efi大小 100~300MB挂载点可能是 /boot/efi。如果有直接选中它点「更改」挂载点设成 /boot/efi千万不要勾选格式化那里面装着 Windows 的引导文件格了 Windows 就进不去了。如果原本没有极少数情况就新建一个 512MB 的 FAT32 分区挂到 /boot/efi。swap。用途是内存不够时把不活跃的页换出去以及休眠时保存内存镜像。如果你不用休眠16G 内存的机器给 8G 完全够8G 内存的机器建议给 8~12G。想省空间的话也可以只给 2G 然后开 zram# 安装 zram 工具压缩内存当交换用 sudo apt install zram-tools # 编辑配置把压缩算法设成 zstd占比 50% sudo nano /etc/default/zramswap # 修改 ALGOzstd、PERCENT50 sudo systemctl restart zramswap根分区 /。ext4 文件系统大小按前面表格给 60~100G挂载点选/勾选格式化。/home。ext4把剩下的全部给它挂载点选/home勾选格式化。如果你之前已经有 Linux 的 /home这里不要勾格式化挂载上去就行数据全在。引导器安装位置。这一项在手动分区界面的下方通常叫「安装启动引导器的设备」。选整块硬盘比如/dev/nvme0n1或/dev/sda不要选/dev/nvme0n1p1这种带分区号的。选分区的后果是引导项写进了 EFI 分区但没有注册到固件的启动列表里开机还是直接进 Windows。3.3 安装向导逐屏操作与引导器落点分区确认之后向导会问你所在时区、键盘布局、用户名密码。用户名建议用全小写字母不要带空格和中文因为 Linux 的家目录名会直接用它后面写路径、配 SSH、挂开发环境都会省心。密码这块虽然 Ubuntu 默认不禁止弱密码但既然这台机器会联网还是设个像样的。另外安装程序会问你要不要「登录时要求密码」笔记本我建议开台式机可以关掉省事。还有「使用 Active Directory 域」这种选项家用场景直接跳过。安装过程大概 10~25 分钟取决于 U 盘速度和硬盘类型。SSD 会快很多。期间屏幕会滚动一堆日志有一两行红字不一定是错误可能是硬件探测失败或者可选的固件缺失不用慌。到「安装完成是否重启」这一步点重启然后立刻拔掉 U 盘。不拔的话有些机器会又从 U 盘启动进入 Live 环境你会以为安装没成功。4. 第一次开机之后引导、驱动、输入法与开发环境4.1 GRUB 启动菜单的顺序、超时与主题重启之后你应该看到紫黑色的 GRUB 菜单里面有几项Ubuntu、Ubuntu 高级选项、Windows Boot Manager。如果直接进了 Windows 看不到菜单先别急着重装跳到第 5 节看排查方法。默认情况下 GRUB 会记住上次选中的系统超时 10 秒后自动进。要改的话编辑配置文件sudo nano /etc/default/grub几个常用参数GRUB_DEFAULT0默认第一项改成saved配合GRUB_SAVEDEFAULTtrue就是记住上次选择。GRUB_TIMEOUT10等待秒数改成 3 能加快开机改成 30 方便你慢慢挑。GRUB_TIMEOUT_STYLEmenu强制显示菜单有些配置下它会被设成 hidden 导致你看不到。GRUB_CMDLINE_LINUX_DEFAULTquiet splash这一行是内核参数后面调显卡、调亮度问题经常动它。改完必须执行sudo update-grub否则改动不生效。执行的时候它会自动扫描磁盘输出里能看到Found Windows Boot Manager on /dev/nvme0n1p1这样的行看到它就说明 Windows 被正确识别了。如果想把 Windows 调到第一项不用改配置直接改GRUB_DEFAULT为 Windows 那一项的序号从 0 开始数或者用12这种子菜单语法。我一般保持 Ubuntu 在第一位因为这是主力系统。4.2 显卡驱动、Secure Boot 与 MOK 注册第一次进桌面你可能会发现分辨率不对、外接显示器不亮、风扇狂转。这基本是 NVIDIA 独显没装官方驱动导致的。Ubuntu 自带的 nouveau 开源驱动日常够用但跑游戏、跑 CUDA、跑视频编码就力不从心。装驱动的标准动作# 看硬件推荐哪个版本 ubuntu-drivers devices # 自动安装推荐版本 sudo ubuntu-drivers autoinstall # 或者指定版本 sudo apt install nvidia-driver-550也可以走图形界面软件和更新 → 附加驱动选带 proprietary 字样的那一项。装完重启。这里有个 Secure Boot 的坑要单独说。如果你在固件里开着 Secure Boot安装 NVIDIA 驱动时会弹出 MOK 管理界面让你设置一个一次性密码。设完之后重启会进入一个蓝底白字的界面选 Enroll MOK → Continue → 输入刚才那个密码 → Reboot。如果你在这个界面直接跳过了驱动就不会被加载nvidia-smi会报找不到设备。补救办法是重新执行安装命令MOK 界面会再出来一次。提示MOK 界面出现的时机很短如果 BIOS 设置里把快速启动开着可能一闪而过。这也是前面让你关掉 Fast Boot 的原因之一。4.3 换源、输入法、微信与常用工具链系统装好第一件事是换软件源。默认源在国内访问速度不稳定换成国内镜像站能快好几倍。图形界面在「软件和更新 → Ubuntu 软件 → 下载自」里选命令行改的话# 先备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 24.04 之后源配置拆到了 /etc/apt/sources.list.d/ubuntu.sources sudo nano /etc/apt/sources.list.d/ubuntu.sources把里面的http://archive.ubuntu.com/ubuntu或http://cn.archive.ubuntu.com/ubuntu替换成清华、中科大、阿里云这些镜像站的域名即可改完sudo apt update。注意 24.04 用的是 deb822 格式字段名和老的 sources.list 不一样别照抄旧教程。中文输入法Ubuntu 默认预装了 IBus用拼音也能用但词库和候选质量一般。想换成 Fcitx5 中文输入法引擎的话sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk3 fcitx5-frontend-qt5装完在「区域和语言 → 管理已安装的语言」里把键盘输入法系统改成 fcitx5重启后添加拼音。别忘了在~/.pam_environment或者系统环境变量里配好GTK_IM_MODULE、QT_IM_MODULE、XMODIFIERS三个变量否则部分应用里输入法调不出来。这是我在 Ubuntu 上折腾输入法折腾最久的一个点。微信的话Linux 版客户端已经能用了至少文件传输和基本聊天没问题但一些小程序、视频通话功能体验不如 Windows 版。我的做法是这类必须用完整功能的软件切回 Windows 用它Linux 侧只做开发。开发环境按需装。通用的几样# 构建工具链 sudo apt install build-essential git curl wget # Docker sudo apt install docker.io docker-compose-v2 sudo usermod -aG docker $USER # 加完要重新登录才生效 # Python sudo apt install python3-pip python3-venv用 Docker 的话记得换镜像加速地址写在/etc/docker/daemon.json里{ registry-mirrors: [https://你的加速地址] }写完sudo systemctl restart docker。加速地址从各家云厂商的容器镜像服务页面获取这里不展开。5. 出问题怎么办五类高频故障的排查实录5.1 开机直接进 Windows看不到 GRUB这是最典型的问题概率大概三成。原因通常是固件的启动顺序里 Windows Boot Manager 排在 ubuntu 前面或者安装时引导器写到了错误的位置。第一步进固件设置翻启动顺序看有没有「ubuntu」这一项。有的话调到第一位问题解决。没有的话说明引导项根本没注册成功需要从 Live USB 修复。修复流程是这样的# 用 U 盘启动进 Try Ubuntu打开终端 sudo fdisk -l # 找到 Ubuntu 根分区比如 /dev/nvme0n1p5 sudo mount /dev/nvme0n1p5 /mnt # 挂载根分区 # 如果是 LVM 或者加密分区这一步会更复杂需要先激活卷组 sudo mount /dev/nvme0n1p1 /mnt/boot/efi # 挂载 EFI 分区 # 绑定必要的运行时目录 sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys # 切入目标系统 sudo chroot /mnt # 重新安装引导 grub-install /dev/nvme0n1 update-grub exit sudo rebootgrub-install后面跟的必须是整块磁盘不带分区号。这一步做完重启启动菜单就该回来了。如果你嫌手敲麻烦社区有个叫 Boot-Repair 的工具可以做图形化修复sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt install boot-repair跑一遍推荐修复。不过我还是建议你把上面的 chroot 流程走一遍理解原理之后遇到变种问题才能自己判断。5.2 Windows 大版本更新后 Ubuntu 引导消失Windows 每年一两次大版本更新更新过程会重建 BCD 引导把固件启动顺序里的第一项重置回 Windows Boot Manager。表现和上面一样直接进 Windows看不到 GRUB。解决办法有两条路。一条是上面说的 Live USB 修复重新执行grub-install效果最彻底。另一条更快直接在 Windows 里用命令行把 Ubuntu 加回启动项:: 管理员权限打开 CMD 或 PowerShell bcdedit /enum firmware输出里会列出所有固件启动项找到描述为 ubuntu 的那一条记下它的 identifier然后用bcdedit /set {fwbootmgr} displayorder {刚才那个GUID} /addfirst这样 ubuntu 就排到第一位了。这个方法不用重启进 U 盘适合应急。提示如果bcdedit /enum firmware里根本没有 ubuntu 项说明 EFI 分区里的引导文件也丢了那就只能走 Live USB 重新grub-install。5.3 时间差 8 小时、磁盘只读、无法关机这三个问题看着不相干其实都和系统协作有关系。时间差 8 小时Windows 默认把硬件时钟当本地时间Linux 默认当 UTC两边一打架就差时区偏移量。两种修法改 Linux 或改 Windows选一个别两边都改。改 Linux 的话timedatectl set-local-rtc 1 --adjust-system-clock timedatectl # 确认输出里有 RTC in local TZ: yes改 Windows 更推荐因为不影响 Linux 在多台机器间的行为reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1 /f执行完重启 Windows以后硬件时钟按 UTC 走两边一致。NTFS 分区只读进 Ubuntu 后挂载 Windows 分区只能读不能写或者报错说分区被占用。根源通常是 Windows 的快速启动没关关机时它把分区标记成「正在使用中」。关掉快速启动或者用ntfsfix处理一下sudo ntfsfix /dev/nvme0n1p3但注意ntfsfix只是清掉脏标记治标不治本根本方案还是关快速启动。无法关机点了关机之后卡在 Logo 或者黑屏不灭灯。这个一般是内核和固件 ACPI 兼容问题。可以试试在 GRUB 里加内核参数acpiforce或者更常见的是加rebootbios。改/etc/default/grub里的GRUB_CMDLINE_LINUX_DEFAULT加完记得update-grub。还有一个偏方是sudo swapoff -a sudo systemctl poweroff如果能关掉说明是 swap 卸载卡住了。5.4 安全卸载 Ubuntu 的完整步骤不想用了想彻底清掉流程是反着来一遍备份 /home。挂到别的机器或者移动硬盘上拷出来别指望卸载后还能找回。确认固件启动顺序切回 Windows。先在固件里把 Windows Boot Manager 设成第一项别等删完了再发现进不了系统。Windows 里删除 Ubuntu 分区磁盘管理或者diskpart把根分区、swap、/home 那几个删掉扩展回 C 盘或者其他分区。注意不要删 EFI 分区。清理 EFI 分区里的引导文件。EFI 分区通常不显示盘符可以用diskpart给它临时分配一个盘符然后删掉里面的EFI\ubuntu整个目录。这一步做完固件的启动列表里那个 ubuntu 项就成了死链可以一并用bcdedit /delete删掉。修复 Windows 引导指向。如果删完之后开机进了恢复界面说明 Windows 引导也受影响了用安装 U 盘启动进修复模式命令行bcdboot C:\Windows /s S: /f UEFI这里S:是那个临时分配的 EFI 分区盘符C:是 Windows 所在分区按实际情况替换。这句话会重建 Windows 引导基本能救回来。我在实际操作中的体会是卸载比安装更需要提前规划。装机的时候脑子清醒分区划得清楚卸载的时候往往是因为系统已经出问题了才想清掉这时候更容易慌一慌就容易删错东西。所以我还是建议装的时候就给 Ubuntu 一个独立分区别用 LVM 加密将来无论是修还是删都简单得多。另外一个小技巧如果你只是暂时不想用 Ubuntu完全不用卸载把固件启动顺序设成 Windows 优先就行磁盘空间留着过阵子想回来直接切比重新装一遍省事多了。
返回列表