无U盘安装Ubuntu与Windows双系统:NVMe硬盘实战指南
1. 为什么选择无U盘安装双系统最近在给一台主力开发机做系统升级这台机器是WIN10系统配了一块1TB的NVMe固态硬盘。我的需求很明确需要一个原生的Linux环境来跑一些服务和开发工具但又不想完全放弃Windows的便利性比如偶尔处理文档或者打打游戏。虚拟机方案首先被排除了WSL2虽然方便但性能损耗和网络、文件系统的一些“隔阂感”在跑一些对I/O和网络延迟敏感的服务时体验还是不够纯粹。于是双系统成了最理想的选择。但问题来了手头没有现成的U盘也不想为了装个系统特意去买一个。这就引出了今天要聊的核心如何在只有一块NVMe硬盘的WIN10电脑上不借助U盘完成Ubuntu 22.04双系统的安装。你可能觉得这听起来有点“野路子”但实际操作下来这是一条非常高效、干净的路径。它绕过了制作启动盘、调整BIOS启动顺序这些传统步骤直接在Windows环境下利用硬盘本身的空间和现有的引导管理器完成Linux系统的部署。这对于NVMe硬盘用户尤其友好因为很多老旧的启动盘制作工具或BIOS对NVMe的支持并不完善用这种方法反而能规避不少潜在的兼容性问题。2. 核心原理Windows引导器与Linux的共舞要实现无U盘安装我们必须理解整个过程的基石Windows的引导加载程序通常是Windows Boot Manager如何与Linux的GRUB引导加载程序协同工作或者被后者接管。在传统的有U盘安装方式中我们是用一个外置的、包含Ubuntu安装镜像的U盘启动电脑这个U盘环境会直接识别硬盘并进行分区、安装系统、安装GRUB到硬盘的主引导记录MBR或EFI系统分区ESP。安装完成后GRUB会成为第一级引导管理器由它来提供菜单让我们选择启动Windows还是Ubuntu。而在无U盘方案中我们跳过了“从外部介质启动”这一步。核心思路是在Windows内部直接准备好Ubuntu的安装环境。这通常通过一个名为wubi-uefi的改良版工具或者更手动一点的方式将Ubuntu的ISO镜像文件“虚拟”成一个可启动的磁盘环境。但注意这里说的“虚拟”不是虚拟机而是利用Windows的引导机制来加载一个临时的Linux内核和初始化内存盘initrd从而进入一个类似Live CD的安装环境。利用Windows Boot Manager加载Linux安装环境。我们将Ubuntu安装镜像中的核心启动文件vmlinuz和initrd提取出来并在Windows的启动配置数据BCD中添加一个新的启动项。这个启动项指向这些Linux启动文件。这样在电脑开机时我们依然先进入Windows Boot Manager的菜单但其中多了一个“Install Ubuntu”的选项。选择它电脑就会加载Linux内核进入一个完全在内存中运行的Ubuntu安装程序。安装程序对硬盘进行操作。进入Ubuntu安装环境后接下来的分区、安装系统到指定分区等操作就和用U盘启动时完全一样了。关键在于最后一步将GRUB安装到哪里这是整个流程中最容易出错的一环。我们必须确保GRUB被安装到同一个ESP分区通常是Windows所在的EFI系统分区而不是整个硬盘/dev/nvme0n1或Linux的根分区/dev/nvme0n1pX。这样才能实现双系统引导。简单来说我们是在“欺骗”电脑让Windows的引导程序认为它要启动的是一个特殊的“Windows”项但实际上这个项加载的是Linux内核从而引导进入安装环境。整个安装过程安装程序对硬盘的读写是真实的、直接的所以安装出来的系统和用U盘安装的没有任何区别都是完整的“非虚拟机”原生系统。3. 前期准备分区、镜像与关键工具动手之前我们需要在Windows下完成几项关键的准备工作。这个过程需要仔细任何一步出错都可能导致后续安装失败甚至影响原有Windows系统。3.1 为Ubuntu腾出磁盘空间这是第一步也是基础。我们需要从现有的Windows磁盘中划分出一块未分配的空间给Ubuntu使用。打开“磁盘管理”在开始菜单右键点击“此电脑”选择“管理”然后选择“磁盘管理”。找到你的NVMe硬盘通常是磁盘0上面有C盘等分区。选择一个有足够空闲空间的卷通常是C盘右键点击并选择“压缩卷”。输入要压缩的空间量。对于Ubuntu 22.04桌面版建议至少分配50GB。如果你计划用它做开发或服务器建议100GB或更多。例如输入102400MB以获得约100GB的空间。点击“压缩”。完成后你会看到磁盘布局中出现一块黑色的“未分配”空间。切记到此为止不要在这个未分配空间上创建任何新卷就让它保持“未分配”状态Ubuntu安装程序会识别并利用它。注意压缩卷之前强烈建议对重要数据进行备份。虽然这个操作通常很安全但以防万一。另外如果磁盘上有不可移动的文件如页面文件、休眠文件可能无法压缩出预期的全部空间你可以尝试关闭休眠powercfg -h off在管理员命令提示符中运行和虚拟内存来释放空间。3.2 获取Ubuntu 22.04 LTS镜像前往Ubuntu官方网站下载Ubuntu 22.04.4 LTS的桌面版ISO镜像文件。建议选择“长期支持LTS”版本稳定性更有保障。下载完成后记住它的存放路径比如D:\Downloads\ubuntu-22.04.4-desktop-amd64.iso。3.3 安装并配置EasyBCD工具这是实现无U盘启动的关键工具。EasyBCD是一款强大的Windows启动项编辑软件我们需要用它来修改BCD添加一个启动Linux安装环境的入口。从NeoSmart Technologies官网下载EasyBCD个人非商业使用免费。安装并运行它。运行EasyBCD时如果弹出UAC提示请务必选择“是”它需要管理员权限来修改系统引导配置。在EasyBCD主界面点击左侧的“添加新条目”。切换到“便携式/外接存储介质”选项卡注意不是“Linux/BSD”选项卡那个是用于安装好后的系统引导。在“类型”下拉菜单中选择“ISO”。然后点击路径右侧的浏览按钮找到你刚才下载的Ubuntu 22.04 ISO文件。在“名称”字段中输入一个你喜欢的启动菜单项名称例如“Install Ubuntu 22.04”。最关键的一步确保勾选“从磁盘映像文件启动/EFI/BOOT/BOOTx64.EFI”。这个选项告诉EasyBCD这个ISO文件是一个支持UEFI启动的映像它会自动尝试定位ISO中EFI引导文件的位置。点击“添加条目”。完成上述操作后你可以点击左侧“编辑引导菜单”查看。正常情况下你会看到原有的“Windows 10”条目下方多了一个“Install Ubuntu 22.04”的条目并且有一个倒计时。这意味着下次重启电脑时在Windows启动管理器界面你就可以选择进入Ubuntu安装环境了。实操心得有些精简版或修改过的Windows系统可能缺少必要的文件或权限导致EasyBCD添加条目失败。如果遇到问题可以尝试以“管理员身份”运行EasyBCD或者检查系统是否禁用了BCD编辑功能。此外确保你的Windows系统是以UEFI模式安装的磁盘管理器中磁盘分区表显示为GPT这是现代NVMe硬盘的标配也是本方法的前提。4. 安装过程详解与分区方案设计准备工作就绪后重启电脑。在启动时你会看到Windows Boot Manager的菜单选择“Install Ubuntu 22.04”并回车。4.1 启动进入Ubuntu Live环境选择安装条目后系统会加载ISO中的文件经过一段时间的黑屏和代码滚动这是正常现象你将进入Ubuntu的GRUB菜单。这里通常直接选择“Try or Install Ubuntu”即可系统会继续加载最终进入Ubuntu的桌面Live环境。这个环境是完全运行在内存中的你可以先试用一下确认无线网卡、声卡等硬件基本被识别后再点击桌面上的“Install Ubuntu 22.04”图标开始安装。安装过程的前几步语言、键盘布局、更新和第三方软件按个人喜好选择即可。我通常会在“安装中下载更新”和“安装第三方显卡和Wi-Fi驱动”这两个选项上打勾这样安装过程会顺便把网络和显卡驱动搞定省去后续麻烦。当然如果你的网络环境不好可以不选更新。4.2 至关重要的“安装类型”选择来到“安装类型”这一步这是整个安装的核心也是最容易出错的地方。你会看到几个选项清除整个磁盘并安装Ubuntu绝对不要选这会格式化你的整个NVMe硬盘Windows和数据将全部消失。安装Ubuntu与Windows Boot Manager共存这个选项听起来很美好但对于无U盘安装方式经常不工作或导致引导问题。它试图自动配置但可能无法正确处理我们已经通过EasyBCD创建的复杂引导状态。其他选项我们必须选择这个这是手动分区的入口能给我们最大的控制权。点击“其他选项”然后点击“继续”。你会进入分区界面看到你的磁盘设备名称可能类似/dev/nvme0n1。下面会列出所有现有分区包括Windows的EFI系统分区类型为efi大小通常100-500MB、MSR保留分区、Windows的C盘类型为ntfs以及你之前压缩出来的那块“空闲空间”。4.3 手动创建Linux分区我们需要在“空闲空间”上创建几个必要的Linux分区。一个最基础且推荐的双系统分区方案如下EFI系统分区可选但强烈建议新建为什么Windows已经有一个EFI分区了理论上Ubuntu可以和它共用。但共用可能导致意外覆盖或冲突。为Ubuntu单独创建一个小的EFI分区是最干净、最安全的选择可以完全隔离两个系统的引导文件。操作选中“空闲空间”点击下方的“”按钮。大小512 MB(或 1 GB 更宽裕)。新分区的类型逻辑分区在GPT磁盘上主分区和逻辑分区区别不大通常选逻辑即可。新分区的位置空间起始位置。用于EFI系统分区。点击“确定”。交换空间swap为什么相当于虚拟内存。对于拥有8GB或以上物理内存的现代电脑交换空间的大小是一个有争议的话题。一种常见的建议是如果内存小于8GB交换空间设为内存的1.5-2倍如果内存大于8GB可以设置与内存等大或甚至更小如4GB-8GB主要用于休眠hibernate功能。如果你确定不用休眠甚至可以不要交换分区用交换文件swapfile代替但分区方式更传统。操作再次选中剩余的空闲空间点击“”。大小例如8192 MB(8GB)。类型逻辑分区。位置空间起始位置。用于交换空间。点击“确定”。根分区/为什么这是Ubuntu系统文件和安装的软件所在的位置。需要足够大的空间。操作选中剩余的空闲空间点击“”。大小分配剩余的大部分空间例如剩余的所有空间或留一部分给/home。类型逻辑分区。位置空间起始位置。用于Ext4 日志文件系统。挂载点选择/。点击“确定”。家目录分区/home可选但推荐为什么将用户数据文档、下载、配置等与系统文件分离。这样以后重装系统时可以格式化根分区/而保留/home分区个人数据得以保全。如果你在前面把大部分空间都给了根分区可以跳过这一步。操作如果你预留了空间在创建根分区后对最后的空闲空间点击“”。大小使用剩余所有空间。类型逻辑分区。位置空间起始位置。用于Ext4 日志文件系统。挂载点选择/home。点击“确定”。分区创建完成后你的分区列表应该类似下图具体大小和数量根据你的选择会有所不同/dev/nvme0n1p1 efi (Windows EFI分区) /dev/nvme0n1p2 ... (MSR保留分区) /dev/nvme0n1p3 ntfs (Windows C盘) ... /dev/nvme0n1pX efi (你新建的Ubuntu EFI分区 512MB) /dev/nvme0n1pY swap (交换分区 8GB) /dev/nvme0n1pZ ext4 / (根分区 70GB) /dev/nvme0n1pW ext4 /home (家目录分区 剩余空间)4.4 引导加载器安装位置成败的关键这是整个无U盘安装流程中最最最重要的一步无数双系统引导失败都源于此。在分区界面的最下方有一个“安装启动引导器的设备”下拉菜单。你必须在这里选择你为Ubuntu新建的那个EFI系统分区而不是默认的整个磁盘/dev/nvme0n1或Windows的EFI分区。错误选择/dev/nvme0n1安装程序可能会将GRUB安装到整个硬盘的引导扇区这可能会破坏Windows的引导导致只能进Ubuntu进不了Windows。有风险的选择Windows的EFI分区将GRUB安装到Windows的EFI分区如/dev/nvme0n1p1。这可以实现双系统引导但两个系统的引导文件混在一起未来Windows更新或修复引导时有可能覆盖或干扰GRUB。推荐选择新建的Ubuntu EFI分区例如/dev/nvme0n1pX具体分区号以你实际创建的为准。这是最干净、最安全的方式。GRUB会被安装到这个独立的分区。安装完成后我们需要通过一些方法让电脑从这个分区的GRUB启动或者让Windows Boot Manager链式加载它。请务必仔细核对设备名如nvme0n1pX和分区大小512MB确保选中了你新建的那个EFI分区。确认无误后点击“现在安装”然后按照提示设置时区、用户名密码等安装程序就会开始复制文件。这个过程大概需要10-30分钟取决于你的NVMe硬盘速度。5. 安装后引导修复与美化安装完成提示重启。点击“现在重启”电脑会关机然后尝试启动。这时你可能会遇到以下几种情况直接进入了Windows这是最常见的情况。因为电脑的默认启动项仍然是Windows Boot Manager它不知道新安装的Ubuntu的存在。直接进入了Ubuntu这可能是因为安装程序将GRUB设置为了第一启动项。但GRUB菜单里可能没有Windows选项或者有但点不进去。黑屏或报错可能引导配置有误。我们的目标是让GRUB成为最终的引导管理器并在GRUB菜单中同时出现Ubuntu和Windows的选项。5.1 进入Ubuntu系统由于现在可能直接进了Windows我们需要临时调整启动顺序。重启电脑在开机自检POST画面快速连续按你的电脑主板进入“启动菜单Boot Menu”的快捷键通常是F12、F11、Esc或Del因主板而异。在启动菜单里你应该能看到两个与Ubuntu相关的选项一个可能是以你硬盘命名的条目后面跟着“Ubuntu”。另一个可能是“Windows Boot Manager”。选择那个带有“Ubuntu”字样的条目。如果顺利这将启动你新建的Ubuntu EFI分区上的GRUB并进入Ubuntu系统。5.2 在Ubuntu中更新GRUB配置进入Ubuntu后打开终端CtrlAltT。我们需要更新GRUB的配置让它自动探测到硬盘上的Windows系统。sudo update-grub这条命令会运行一个脚本探测所有可用的操作系统并将其添加到GRUB的配置文件中。你应该能在输出信息中看到类似“Found Windows Boot Manager on /dev/nvme0n1p1”的字样这表明它已经找到了Windows。5.3 设置GRUB为默认启动项可选但推荐为了让电脑每次开机都自动进入GRUB菜单而不是直接进Windows我们需要在Ubuntu中安装一个工具来修改EFI启动顺序。sudo apt update sudo apt install efibootmgr安装完成后查看当前的启动顺序sudo efibootmgr -v输出会列出所有EFI启动项每个项有一个BootXXXX的编号如Boot0001,Boot0002。找到描述为“ubuntu”的项可能是Boot0003和描述为“Windows Boot Manager”的项可能是Boot0000。记住Ubuntu项的编号。然后将Ubuntu项设置为第一启动项假设Ubuntu是Boot0003sudo efibootmgr -o 0003,0000这条命令将启动顺序设置为先0003Ubuntu后0000Windows。这样下次重启时电脑就会先加载GRUB。5.4 处理时间不同步问题一个双系统的经典小问题是Windows和Ubuntu的系统时间不一致。这是因为Windows默认将硬件时钟RTC视为本地时间localtime而Linux类系统默认将其视为协调世界时UTC。这会导致从一个系统切换到另一个系统时时间显示错误8小时假设你在东八区。在Ubuntu中修复这个问题很简单让Ubuntu也使用本地时间即可timedatectl set-local-rtc 1 --adjust-system-clock然后再次检查状态timedatectl status你应该会看到“RTC in local TZ: yes”的提示。5.5 清理Windows中的临时安装入口现在双系统已经可以正常通过GRUB引导了我们可以回到Windows清理掉之前用EasyBCD添加的那个临时“Install Ubuntu 22.04”启动项避免启动菜单混乱。重启进入Windows。再次打开EasyBCD。点击“编辑引导菜单”选中“Install Ubuntu 22.04”那个条目然后点击右侧的“删除”按钮。点击“保存设置”。至此一个完整的、无需U盘的WIN10与Ubuntu 22.04双系统就安装并配置完成了。每次开机你会先看到GRUB的紫色菜单可以选择进入Ubuntu或者Windows。整个流程虽然步骤不少但每一步都有其明确的目的理解了背后的原理操作起来就会心中有数。这种方法特别适合手头没有U盘或者对传统U盘安装方式遇到NVMe兼容性问题感到头疼的用户。