ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

无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模式启动的电脑这个过程可以简化为以下几个关键步骤固件初始化电脑加电UEFI固件开始执行。它进行硬件自检然后按照预设的启动顺序通常是Windows Boot Manager、硬盘、U盘、网络寻找可启动设备。查找ESP当轮到从硬盘启动时UEFI固件会寻找硬盘上的EFI系统分区ESP。这是一个格式化为FAT32的小分区通常100-500MB里面存放了所有操作系统的引导加载程序。加载引导加载程序UEFI固件在ESP分区内按照特定的路径\EFI\BOOT\bootx64.efi或\EFI\ubuntu\grubx64.efi等查找并执行.efi文件。这个文件就是引导加载程序比如GRUB 2。引导加载程序的工作GRUB 2会读取它的配置文件通常是grub.cfg根据配置去加载Linux内核vmlinuz和初始内存盘initrd.img并将控制权交给内核。内核启动与安装程序内核启动后会挂载初始内存盘其中包含了一个最小的根文件系统。对于Ubuntu安装镜像这个最小系统就是Ubuntu Desktop Installer的Live环境。随后安装程序被启动图形界面出现。那么无U盘安装的“魔法”就在于我们手动在目标硬盘上创建一个ESP分区和一个用于存放安装文件的分区然后将Ubuntu ISO镜像中的所有必要文件提取到这两个分区中并正确配置引导加载程序使其能够启动这个“内置”的Live安装环境。这里有一个关键点我们并不是在安装系统而是在部署一个可以从硬盘启动的安装环境。这个环境运行起来后其安装程序的目标磁盘恰恰就是它自身所在的这块硬盘。这听起来有点“自举”的味道但实际上是可行的因为安装程序在运行时会重新划分磁盘空间覆盖掉旧的包括它自己启动所用的分区并建立全新的系统分区。注意这种方法会完全擦除目标硬盘上的所有数据。因为安装过程需要重新分区。请务必提前备份重要数据。如果你的硬盘上已有其他系统如Windows且你想保留它请勿使用此方法应改用传统的U盘安装进行双系统部署。3. 前期准备环境与工具盘点虽然不用U盘但我们仍然需要一个可以运行的操作系统环境来执行准备工作。这个环境可以是另一台电脑也可以是虚拟机甚至可以是目标电脑上现有的另一个操作系统比如Windows。我这里以在另一台Windows电脑上操作为例。你需要准备的东西如下目标电脑需要安装Ubuntu 22.04的电脑。确保其启动模式为UEFI而非传统的Legacy BIOS。你可以在开机时按F2/Del等键进入BIOS/UEFI设置界面查看。Ubuntu 22.04 LTS ISO镜像从Ubuntu官网下载最新的22.04.4 LTS桌面版镜像文件例如ubuntu-22.04.4-desktop-amd64.iso。一个可运行的操作系统环境用于处理ISO文件和硬盘。我使用的是Windows 11。磁盘管理工具Windows环境磁盘管理系统自带的工具用于创建和格式化分区。7-Zip或类似解压软件用于解压ISO镜像文件。管理员权限的CMD或PowerShell用于执行一些高级磁盘操作。一个可连接目标硬盘的方式方案A推荐使用硬盘盒或SATA转USB线将目标硬盘作为外接移动硬盘连接到你的工作电脑上。这是最安全、最方便的方式可以直观地在磁盘管理里操作。方案B如果你的工作电脑就是目标电脑且你愿意完全清空当前系统那么可以直接在当前系统下操作目标硬盘即电脑内的主硬盘。这风险极高操作前必须百分百确认数据已备份。我强烈推荐方案A。将目标硬盘外接意味着你可以在一个稳定的系统环境下从容不迫地“雕刻”这块硬盘完成后再将其装回目标电脑启动。这避免了在安装过程中因操作失误导致工作环境崩溃的风险。4. 实战步骤手把手雕刻你的启动硬盘假设我们已经通过硬盘盒将一块全新的或已备份数据的硬盘连接到了Windows电脑上。下面开始一步步操作。4.1 分区规划与创建首先打开Windows的“磁盘管理”在开始菜单搜索即可。你应该能看到新连接的硬盘显示为“未分配”空间。我们的目标是创建两个必要的分区EFI系统分区ESP用于存放UEFI引导文件。大小建议至少500MB格式化为FAT32。安装文件分区用于存放从Ubuntu ISO中解压出来的所有文件。这个分区需要足够大能放下整个ISO约4.5GB并且为了方便我们将其格式化为NTFS。FAT32不支持大于4GB的单个文件而ISO里的filesystem.squashfs文件通常超过4GB所以NTFS是更稳妥的选择。大小建议10GB以上。操作步骤在磁盘管理中右键点击目标硬盘的未分配空间选择“新建简单卷”。创建ESP分区向导中指定卷大小500 MB。分配驱动器号例如Z:。格式化设置文件系统选择FAT32卷标可以设为ESP。完成创建。创建安装文件分区在剩余空间上右键再次“新建简单卷”。指定卷大小至少10240 MB10GB。分配驱动器号例如Y:。格式化设置文件系统选择NTFS卷标可以设为UBUNTU_INST。完成创建。完成后你的磁盘管理器中应该能看到这块硬盘上有两个分区一个约500MB的FAT32分区ESP和一个约10GB的NTFS分区。4.2 提取与部署Ubuntu安装文件接下来我们需要把Ubuntu ISO镜像里的“精华”提取出来放到刚创建的UBUNTU_INST分区里。挂载ISO镜像在Windows中直接双击下载好的ubuntu-22.04.4-desktop-amd64.iso文件Windows会将其挂载为一个虚拟光驱例如E:盘。复制文件打开这个虚拟光驱E:全选所有文件和文件夹然后粘贴到我们刚才创建的UBUNTU_INST分区Y:的根目录下。这个过程可能需要几分钟。处理引导文件这是最关键的一步。我们需要让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的配置文件。找到配置文件在UBUNTU_INST分区Y:中找到\boot\grub\目录里面有一个grub.cfg文件。用记事本或其他文本编辑器打开它。理解配置项打开后你会看到很多以menuentry开头的块每个块定义了一个启动菜单项。我们需要关注的是其中用于启动Ubuntu安装程序Live的项。通常它包含linux和initrd两行指定了内核和初始内存盘的路径。修改路径默认的路径可能是(hd0,msdos1)或(hd0,gpt1)这样的形式这是GRUB对硬盘和分区的命名方式。我们需要将其修改为指向我们UBUNTU_INST分区所在的位置。首先确定分区编号。在GRUB中硬盘从0开始计数分区从1开始。假设我们的硬盘是系统里的第二块硬盘外接的这块在GRUB里可能是hd1。我们的UBUNTU_INST分区是这块硬盘上的第二个分区第一个是ESP那么它就是hd1,gpt2如果磁盘是GPT分区表或hd1,msdos2如果是MBR但UEFIGPT更常见。找到类似下面的行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。这是一个可能需要迭代一两次的过程。保存文件修改完成后保存grub.cfg。提示对于大多数现代主板和标准的GPT分区表即使不修改grub.cfgGRUB也有很大概率能自动搜索到正确的分区并启动。你可以先尝试不修改进行启动如果卡住或报错再回来执行这一步。5. 最终考验从硬盘启动并安装所有准备工作就绪后关闭工作电脑安全移除外接硬盘盒将这块已经“雕刻”好的硬盘安装到目标电脑上并连接好电源和数据线。进入启动菜单开机立即按启动菜单键通常是F12、F10、Esc因主板而异。在启动菜单中你应该能看到两个与这块硬盘相关的选项一个可能是硬盘本身的型号名称如“WDC WD10EZEX-00”。另一个可能是“UEFI: [硬盘型号]”或类似字样。选择那个明确带有“UEFI”字样的选项。这是告诉电脑从这块硬盘的UEFI引导路径启动。见到GRUB菜单如果一切顺利几秒钟后你应该会看到熟悉的紫色背景的GRUB引导菜单上面有“Try or Install Ubuntu”、“Ubuntu (safe graphics)”等选项。这和用U盘启动看到的界面一模一样。这说明我们的硬盘引导成功了运行安装程序选择“Try or Install Ubuntu”系统会加载Live环境。进入桌面后双击“Install Ubuntu 22.04 LTS”图标开始安装。关键的安装类型选择在安装类型这一步你会看到几个选项。这里需要格外小心不要选择“安装Ubuntu与Windows Boot Manager共存”之类的选项如果显示的话因为我们的硬盘上没有其他系统。推荐选择“清除整个磁盘并安装Ubuntu”。这正是我们想要的。安装程序会识别到这块硬盘上已有的ESP分区和存放安装文件的分区并将它们一并清除然后创建全新的、适合Ubuntu系统的分区结构新的ESP、根分区、交换空间等。当然你也可以选择“其他选项”进行手动分区但前提是你非常清楚自己在做什么。对于新手直接“清除整个磁盘”是最简单安全的。完成安装接下来的步骤就和普通安装一样了选择时区、键盘布局、创建用户等。按照提示操作即可。重启安装完成后系统会提示重启。点击重启并在重启过程中拔掉所有其他外部存储设备如果有的话确保电脑从新安装好的Ubuntu系统启动。第一次启动可能会进行一些初始配置之后你就进入了全新的Ubuntu 22.04系统。6. 疑难杂症与排错指南即使步骤清晰在实际操作中也可能遇到各种问题。下面是一些常见故障及排查思路问题1开机后直接跳过进入原有系统/报错“No bootable device”。可能原因1启动顺序不对。电脑仍然从旧硬盘或网络启动了。重启进入BIOS/UEFI设置将我们制作好的这块硬盘的UEFI启动项调整到第一位。可能原因2引导文件路径或格式错误。确认ESP分区确实是FAT32格式并且bootx64.efi文件确实位于\EFI\BOOT\目录下。路径和文件名必须完全正确包括大小写在FAT32上通常不区分但最好保持一致。可能原因3UEFI安全启动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)。然后手动输入命令启动注意替换X和Y为你的实际值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。接着按CtrlX或F10启动。这会使用基础显示模式通常能绕过显卡驱动问题。可能原因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配置这些底层概念。一旦成功你获得的不仅仅是一个新系统更是一种对“系统如何从无到有”的深刻理解。这种理解在日后系统崩溃、引导修复时会成为你手中最有效的工具。
返回列表