ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

无U盘安装Ubuntu 22.04:从硬盘启动安装程序的底层实践

无U盘安装Ubuntu 22.04:从硬盘启动安装程序的底层实践

1. 为什么我们还需要“无U盘”安装?

最近在折腾一台老笔记本,想给它装上Ubuntu 22.04 LTS。机器本身没有光驱,手头也找不到一个闲置的U盘。这听起来像是个死局,对吧?毕竟,无论是官方文档还是网上99%的教程,第一步都是“准备一个8GB以上的U盘,用Rufus或Ventoy制作启动盘”。但转念一想,机器里明明有一块完好的硬盘,为什么一定要依赖外部介质呢?这个看似简单的疑问,背后其实涉及对计算机启动流程的深度理解。

传统的U盘安装,本质上是在利用计算机的“可移动设备启动”功能。BIOS/UEFI固件会扫描所有连接的存储设备,寻找带有特定引导文件(如bootx64.efi)的FAT32分区,然后加载其中的操作系统安装程序。那么,如果我们能把安装程序需要的所有文件,直接放到硬盘的某个分区里,并让固件能够找到并启动它,理论上就绕过了对U盘的需求。这不仅仅是“没有U盘”的权宜之计,对于系统维护、批量部署,甚至是修复因引导损坏而无法启动的系统,都是一种更底层、更直接的方法。

我这次的目标很明确:在一块全新的(或已清空的)硬盘上,不借助任何U盘、光盘等外部介质,直接从硬盘本身启动Ubuntu 22.04的安装程序,并完成整个系统的安装。整个过程会涉及到分区操作、引导文件的手动部署、以及UEFI启动项的创建,听起来有点硬核,但一步步走下来,你会发现它比依赖工具更让你理解系统启动的脉络。

2. 核心原理:从硬盘启动安装程序的奥秘

要理解无U盘安装,我们必须先拆解从按下电源键到安装程序界面出现的完整链条。对于现代以UEFI模式启动的电脑,这个过程可以简化为以下几个关键步骤:

  1. 固件初始化:电脑加电,UEFI固件开始执行。它进行硬件自检,然后按照预设的启动顺序(通常是Windows Boot Manager、硬盘、U盘、网络)寻找可启动设备。
  2. 查找ESP:当轮到从硬盘启动时,UEFI固件会寻找硬盘上的EFI系统分区(ESP)。这是一个格式化为FAT32的小分区(通常100-500MB),里面存放了所有操作系统的引导加载程序。
  3. 加载引导加载程序:UEFI固件在ESP分区内,按照特定的路径(\EFI\BOOT\bootx64.efi\EFI\ubuntu\grubx64.efi等)查找并执行.efi文件。这个文件就是引导加载程序,比如GRUB 2。
  4. 引导加载程序的工作:GRUB 2会读取它的配置文件(通常是grub.cfg),根据配置去加载Linux内核(vmlinuz)和初始内存盘(initrd.img),并将控制权交给内核。
  5. 内核启动与安装程序:内核启动后,会挂载初始内存盘,其中包含了一个最小的根文件系统。对于Ubuntu安装镜像,这个最小系统就是Ubuntu Desktop Installer的Live环境。随后,安装程序被启动,图形界面出现。

那么,无U盘安装的“魔法”就在于:我们手动在目标硬盘上创建一个ESP分区和一个用于存放安装文件的分区,然后将Ubuntu ISO镜像中的所有必要文件提取到这两个分区中,并正确配置引导加载程序,使其能够启动这个“内置”的Live安装环境。

这里有一个关键点:我们并不是在安装系统,而是在部署一个可以从硬盘启动的安装环境。这个环境运行起来后,其安装程序的目标磁盘,恰恰就是它自身所在的这块硬盘。这听起来有点“自举”的味道,但实际上是可行的,因为安装程序在运行时,会重新划分磁盘空间,覆盖掉旧的(包括它自己启动所用的)分区,并建立全新的系统分区。

注意:这种方法会完全擦除目标硬盘上的所有数据。因为安装过程需要重新分区。请务必提前备份重要数据。如果你的硬盘上已有其他系统(如Windows),且你想保留它,请勿使用此方法,应改用传统的U盘安装进行双系统部署。

3. 前期准备:环境与工具盘点

虽然不用U盘,但我们仍然需要一个可以运行的操作系统环境来执行准备工作。这个环境可以是另一台电脑,也可以是虚拟机,甚至可以是目标电脑上现有的另一个操作系统(比如Windows)。我这里以在另一台Windows电脑上操作为例。

你需要准备的东西如下:

  1. 目标电脑:需要安装Ubuntu 22.04的电脑。确保其启动模式为UEFI(而非传统的Legacy BIOS)。你可以在开机时按F2/Del等键进入BIOS/UEFI设置界面查看。
  2. Ubuntu 22.04 LTS ISO镜像:从Ubuntu官网下载最新的22.04.4 LTS桌面版镜像文件,例如ubuntu-22.04.4-desktop-amd64.iso
  3. 一个可运行的操作系统环境:用于处理ISO文件和硬盘。我使用的是Windows 11。
  4. 磁盘管理工具(Windows环境)
    • 磁盘管理:系统自带的工具,用于创建和格式化分区。
    • 7-Zip或类似解压软件:用于解压ISO镜像文件。
    • 管理员权限的CMD或PowerShell:用于执行一些高级磁盘操作。
  5. 一个可连接目标硬盘的方式
    • 方案A(推荐):使用硬盘盒或SATA转USB线,将目标硬盘作为外接移动硬盘连接到你的工作电脑上。这是最安全、最方便的方式,可以直观地在磁盘管理里操作。
    • 方案B:如果你的工作电脑就是目标电脑,且你愿意完全清空当前系统,那么可以直接在当前系统下操作目标硬盘(即电脑内的主硬盘)。这风险极高,操作前必须百分百确认数据已备份。

我强烈推荐方案A。将目标硬盘外接,意味着你可以在一个稳定的系统环境下,从容不迫地“雕刻”这块硬盘,完成后再将其装回目标电脑启动。这避免了在安装过程中因操作失误导致工作环境崩溃的风险。

4. 实战步骤:手把手雕刻你的启动硬盘

假设我们已经通过硬盘盒,将一块全新的(或已备份数据的)硬盘连接到了Windows电脑上。下面开始一步步操作。

4.1 分区规划与创建

首先,打开Windows的“磁盘管理”(在开始菜单搜索即可)。你应该能看到新连接的硬盘,显示为“未分配”空间。

我们的目标是创建两个必要的分区:

  1. EFI系统分区(ESP):用于存放UEFI引导文件。大小建议至少500MB,格式化为FAT32
  2. 安装文件分区:用于存放从Ubuntu ISO中解压出来的所有文件。这个分区需要足够大,能放下整个ISO(约4.5GB),并且为了方便,我们将其格式化为NTFS。FAT32不支持大于4GB的单个文件,而ISO里的filesystem.squashfs文件通常超过4GB,所以NTFS是更稳妥的选择。大小建议10GB以上。

操作步骤:

  1. 在磁盘管理中,右键点击目标硬盘的未分配空间,选择“新建简单卷”。
  2. 创建ESP分区
    • 向导中,指定卷大小:500 MB
    • 分配驱动器号(例如Z:)。
    • 格式化设置:文件系统选择FAT32,卷标可以设为ESP
    • 完成创建。
  3. 创建安装文件分区
    • 在剩余空间上右键,再次“新建简单卷”。
    • 指定卷大小:至少10240 MB(10GB)。
    • 分配驱动器号(例如Y:)。
    • 格式化设置:文件系统选择NTFS,卷标可以设为UBUNTU_INST
    • 完成创建。

完成后,你的磁盘管理器中应该能看到这块硬盘上有两个分区:一个约500MB的FAT32分区(ESP),和一个约10GB的NTFS分区。

4.2 提取与部署Ubuntu安装文件

接下来,我们需要把Ubuntu ISO镜像里的“精华”提取出来,放到刚创建的UBUNTU_INST分区里。

  1. 挂载ISO镜像:在Windows中,直接双击下载好的ubuntu-22.04.4-desktop-amd64.iso文件,Windows会将其挂载为一个虚拟光驱(例如E:盘)。
  2. 复制文件:打开这个虚拟光驱(E:),全选所有文件和文件夹,然后粘贴到我们刚才创建的UBUNTU_INST分区(Y:)的根目录下。这个过程可能需要几分钟。
  3. 处理引导文件:这是最关键的一步。我们需要让UEFI固件能够找到并启动这个安装环境。UEFI标准规定,在可移动介质(或被视为可移动的介质)上,它会自动寻找\EFI\BOOT\目录下的bootx64.efi文件。
    • UBUNTU_INST分区(Y:)中,进入\EFI\BOOT\目录。你应该能看到一个grubx64.efi文件(可能还有bootx64.efi,如果没有,grubx64.efi就是我们要的)。
    • 为了确保兼容性,我们复制这个grubx64.efi文件。
    • 打开ESP分区(Z:),在里面新建一个文件夹,命名为BOOT(大写小写均可,但建议大写)。进入BOOT文件夹,将刚才复制的grubx64.efi文件粘贴到这里,并重命名bootx64.efi
    • 现在,ESP分区的路径应该是Z:\EFI\BOOT\bootx64.efi。这个路径是UEFI固件在尝试从该硬盘启动时会主动扫描的“标准路径”之一。

至此,硬盘上的文件部署就完成了。你的UBUNTU_INST分区里是完整的Ubuntu安装镜像内容,而ESP分区里则放置了指向这些内容的“钥匙”(引导文件)。

4.3 配置GRUB引导(可选但推荐)

直接使用从ISO里提取的grubx64.efi和默认配置,在大部分情况下可以启动。但为了更高的成功率,特别是让引导程序能准确找到位于NTFS分区上的内核和镜像文件,我们最好手动调整一下GRUB的配置文件。

  1. 找到配置文件:在UBUNTU_INST分区(Y:)中,找到\boot\grub\目录,里面有一个grub.cfg文件。用记事本(或其他文本编辑器)打开它。
  2. 理解配置项:打开后,你会看到很多以menuentry开头的块,每个块定义了一个启动菜单项。我们需要关注的是其中用于启动Ubuntu安装程序(Live)的项。通常它包含linuxinitrd两行,指定了内核和初始内存盘的路径。
  3. 修改路径:默认的路径可能是(hd0,msdos1)(hd0,gpt1)这样的形式,这是GRUB对硬盘和分区的命名方式。我们需要将其修改为指向我们UBUNTU_INST分区所在的位置。
    • 首先,确定分区编号。在GRUB中,硬盘从0开始计数,分区从1开始。假设我们的硬盘是系统里的第二块硬盘(外接的这块),在GRUB里可能是hd1。我们的UBUNTU_INST分区是这块硬盘上的第二个分区(第一个是ESP),那么它就是hd1,gpt2(如果磁盘是GPT分区表)或hd1,msdos2(如果是MBR,但UEFI+GPT更常见)。
    • 找到类似下面的行:
      linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed maybe-ubiquity quiet splash --- initrd /casper/initrd
    • 我们需要在linux这一行的开头,加上分区信息。修改后可能像这样(注意,这只是一个示例,你的实际编号可能不同):
      linux (hd1,gpt2)/casper/vmlinuz file=/cdrom/preseed/ubuntu.seed maybe-ubiquity quiet splash --- initrd (hd1,gpt2)/casper/initrd
    • 如何确定(hdX,gptY)最稳妥的方法是在GRUB命令行里查看。但我们在Windows环境下无法运行GRUB。一个实用的方法是:先不修改,尝试启动。如果启动失败,通常会进入GRUB救援命令行。这时输入ls命令,会列出所有GRUB能识别的磁盘和分区,你可以根据分区大小和文件系统类型(ntfs)来判断哪个是你的UBUNTU_INST分区,记下它的标识符,然后重启回到Windows修改grub.cfg这是一个可能需要迭代一两次的过程。
  4. 保存文件:修改完成后保存grub.cfg

提示:对于大多数现代主板和标准的GPT分区表,即使不修改grub.cfg,GRUB也有很大概率能自动搜索到正确的分区并启动。你可以先尝试不修改进行启动,如果卡住或报错,再回来执行这一步。

5. 最终考验:从硬盘启动并安装

所有准备工作就绪后,关闭工作电脑,安全移除外接硬盘盒,将这块已经“雕刻”好的硬盘安装到目标电脑上,并连接好电源和数据线。

  1. 进入启动菜单:开机,立即按启动菜单键(通常是F12、F10、Esc,因主板而异)。在启动菜单中,你应该能看到两个与这块硬盘相关的选项:

    • 一个可能是硬盘本身的型号名称(如“WDC WD10EZEX-00”)。
    • 另一个可能是“UEFI: [硬盘型号]”或类似字样。选择那个明确带有“UEFI”字样的选项。这是告诉电脑从这块硬盘的UEFI引导路径启动。
  2. 见到GRUB菜单:如果一切顺利,几秒钟后,你应该会看到熟悉的紫色背景的GRUB引导菜单,上面有“Try or Install Ubuntu”、“Ubuntu (safe graphics)”等选项。这和用U盘启动看到的界面一模一样。这说明我们的硬盘引导成功了!

  3. 运行安装程序:选择“Try or Install Ubuntu”,系统会加载Live环境。进入桌面后,双击“Install Ubuntu 22.04 LTS”图标,开始安装。

  4. 关键的安装类型选择:在安装类型这一步,你会看到几个选项。这里需要格外小心!

    • 不要选择“安装Ubuntu,与Windows Boot Manager共存”之类的选项(如果显示的话),因为我们的硬盘上没有其他系统。
    • 推荐选择“清除整个磁盘并安装Ubuntu”。这正是我们想要的。安装程序会识别到这块硬盘上已有的ESP分区和存放安装文件的分区,并将它们一并清除,然后创建全新的、适合Ubuntu系统的分区结构(新的ESP、根分区、交换空间等)。
    • 当然,你也可以选择“其他选项”进行手动分区,但前提是你非常清楚自己在做什么。对于新手,直接“清除整个磁盘”是最简单安全的。
  5. 完成安装:接下来的步骤就和普通安装一样了:选择时区、键盘布局、创建用户等。按照提示操作即可。

  6. 重启:安装完成后,系统会提示重启。点击重启,并在重启过程中拔掉所有其他外部存储设备(如果有的话),确保电脑从新安装好的Ubuntu系统启动。第一次启动可能会进行一些初始配置,之后你就进入了全新的Ubuntu 22.04系统。

6. 疑难杂症与排错指南

即使步骤清晰,在实际操作中也可能遇到各种问题。下面是一些常见故障及排查思路:

问题1:开机后直接跳过,进入原有系统/报错“No bootable device”。

  • 可能原因1:启动顺序不对。电脑仍然从旧硬盘或网络启动了。重启进入BIOS/UEFI设置,将我们制作好的这块硬盘的UEFI启动项调整到第一位。
  • 可能原因2:引导文件路径或格式错误。确认ESP分区确实是FAT32格式,并且bootx64.efi文件确实位于\EFI\BOOT\目录下。路径和文件名必须完全正确,包括大小写(在FAT32上通常不区分,但最好保持一致)。
  • 可能原因3:UEFI安全启动(Secure Boot)阻止。某些主板默认开启Secure Boot,可能会阻止未签名的.efi文件运行。尝试进入BIOS/UEFI设置,暂时关闭Secure Boot,然后保存重启。

问题2:看到GRUB命令行(grub>),或显示“error: file/casper/vmlinuznot found”。

  • 可能原因:GRUB找不到内核文件。这就是我们前面提到的grub.cfg中路径配置问题。在grub>命令行下,你可以进行手动引导来验证和定位问题。
    • 输入ls命令,列出所有磁盘和分区,例如(hd0) (hd0,gpt1) (hd0,gpt2) ...
    • 使用ls (hd0,gpt2)/这样的命令来查看各个分区下的文件,寻找哪个分区下有/casper/vmlinuz文件。找到后记下该分区的标识符,例如(hd0,gpt2)
    • 然后手动输入命令启动(注意替换XY为你的实际值):
      set root=(hdX,gptY) linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed quiet splash initrd /casper/initrd boot
    • 如果能成功启动进入Live环境,则证明是路径问题。你需要重启回到准备环境(Windows),修改UBUNTU_INST分区中\boot\grub\grub.cfg文件里的路径。

问题3:启动过程中卡在某个画面(如紫屏、黑屏、日志滚动停止)。

  • 可能原因1:显卡驱动问题。这在Ubuntu安装中很常见。在GRUB菜单界面,不要直接按回车,而是按e键进入编辑模式。找到以linux开头的那一行,在行末quiet splash后面,先添加一个空格,然后加上nomodeset。接着按Ctrl+XF10启动。这会使用基础显示模式,通常能绕过显卡驱动问题。
  • 可能原因2:文件损坏。重新下载Ubuntu ISO镜像,并确保复制文件过程没有中断。可以计算一下ISO文件的SHA256校验和,与官网对比。

问题4:安装程序在分区时报错,或无法识别磁盘。

  • 可能原因:磁盘分区表残留或冲突。如果你之前在这块硬盘上反复试验过,可能会有残留的GPT或MBR信息冲突。一个彻底的方法是使用Windows的diskpart命令或Linux下的gdisk/fdisk工具,完全清除磁盘。在Windows管理员权限的CMD中:
    diskpart list disk select disk N (N是你的目标硬盘编号,务必选对!) clean (这个命令会清除磁盘上所有分区和分区表信息,数据全丢!)
    执行clean后,磁盘会变成一块“原始”的未初始化磁盘。然后你需要重新回到“磁盘管理”,将其初始化为GPT磁盘,并重新执行第4章的分区和文件部署步骤。

整个无U盘安装的过程,更像是一次对计算机启动原理的亲手实践。它剥离了像Rufus、Ventoy这样的自动化工具带来的便利层,迫使你去接触ESP分区、引导文件、GRUB配置这些底层概念。一旦成功,你获得的不仅仅是一个新系统,更是一种对“系统如何从无到有”的深刻理解。这种理解,在日后系统崩溃、引导修复时,会成为你手中最有效的工具。

返回列表