尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

无U盘安装Ubuntu 22.04:基于Windows引导的硬盘启动方案详解

无U盘安装Ubuntu 22.04:基于Windows引导的硬盘启动方案详解 1. 项目概述告别U盘从硬盘直接启动Ubuntu安装程序每次想装个Linux第一反应是不是找U盘、下载镜像、再找个写盘工具这个流程我们太熟悉了但有时候手边就是没有合适的U盘或者U盘读写速度慢得让人抓狂。其实如果你的电脑里已经有一个能用的Windows系统完全可以把U盘这个“中间商”去掉直接从硬盘启动Ubuntu的安装镜像。这个方法听起来有点“硬核”但实际操作起来思路清晰、步骤明确而且安装速度往往比U盘快得多因为硬盘的读写性能远超普通U盘。“没有U盘纯硬盘安装Linux之Ubuntu 22.04”这个标题的核心就是利用现有的Windows系统环境将Ubuntu 22.04的ISO镜像文件配置成本地可启动的“安装源”然后通过修改Windows的启动管理器增加一个临时启动项来引导这个镜像从而完成整个系统的安装。这特别适合只有一块硬盘、不想额外购置启动盘或者追求极致安装速度的开发者、学生和爱好者。整个过程不依赖任何外部存储介质全部操作在本地完成安全可控。接下来我就把这次“无U盘安装”的完整流程、核心原理以及我踩过的坑毫无保留地分享给你。2. 方案选型与核心原理拆解2.1 为什么选择从硬盘安装在深入步骤之前我们得先搞清楚为什么可以跳过U盘。传统的U盘安装本质是计算机的固件如UEFI或传统的BIOS从U盘这个外部设备上读取一个可启动的镜像文件并运行其中的安装程序。而硬盘安装则是将这个“可启动的镜像文件”提前放置到你的内部硬盘上并“骗过”固件让它以为这个文件就在某个“外部设备”上从而引导启动。这里主要有两种主流技术路径GRUB2引导和Windows Boot Manager引导。GRUB2是Linux世界强大的引导程序功能丰富但配置相对复杂需要对GRUB命令行有一定了解。而利用**Windows Boot Manager通过bcdedit命令**来添加一个临时的、指向ISO文件的启动项对于已经熟悉Windows环境的用户来说门槛更低操作更直观且完成后可以轻松删除这个临时项不影响原有Windows启动。因此本次我们选择后者作为核心方案它的优势在于无需第三方工具全程使用Windows自带命令和Ubuntu官方镜像杜绝因第三方工具版本或兼容性导致的问题。操作可逆添加的启动项是临时的安装完成后可以简单清理系统启动环境干净。速度快硬盘的4K随机读写和持续读写速度远超U盘加载安装程序和解压系统文件的速度会有显著提升。2.2 核心组件GRUB4DOS与WIM镜像的妙用虽然我们主要依赖Windows的bcdedit但为了让Windows的引导器能够识别并启动Linux的ISO文件我们需要一个“翻译官”或“桥梁”。这就是GRUB4DOS项目中的grub4dos-for_iso组件。Linux的ISO通常包含一个名为casper的文件夹里面存放着完整的系统文件filesystem.squashfs和内核vmlinuz但Windows的引导器原生并不懂得如何直接加载它们。grub4dos-for_iso提供了一个极小的、可被Windows引导的grub4dos.iso或相关文件。它的作用是在Windows引导之后立即接管控制权然后由它来读取并引导我们放在硬盘上的Ubuntu ISO文件。你可以把它理解为一个“二级引导器”。我们配置Windows启动项指向这个“桥梁”再由“桥梁”去找到真正的“目的地”Ubuntu ISO。另一个关键点是Ubuntu 22.04的ISO文件中其引导核心已经采用了**WIMWindows Imaging Format**格式的启动镜像位于\boot\grub\efi.img或类似路径但实际我们关注的是\casper\initrd和\casper\vmlinuz。WIM格式是微软的一种镜像格式但GRUB4DOS和现代Linux引导器都能很好地支持从WIM中读取启动所需的内核和初始内存盘initrd。这为我们从硬盘引导提供了便利因为相关引导组件能直接定位并加载这些文件。3. 前期准备与关键步骤解析3.1 准备工作清单开始操作前请确保准备好以下三样东西缺一不可一个能正常启动的Windows系统Windows 10或11均可这是我们的操作基地。需要确保你有管理员权限。Ubuntu 22.04 LTS桌面版ISO镜像务必从 Ubuntu官网 下载官方版本确保文件完整性。下载后建议将其放在一个容易记住的路径例如D:\ubuntu-22.04-desktop-amd64.iso。千万不要放在中文或带有空格的目录下这可能导致引导失败。GRUB4DOS for ISO工具包我们需要其中的关键文件。你可以从SourceForge等开源平台搜索“grub4dos-for_iso”找到下载。下载后解压我们会用到里面的几个核心文件。注意在操作前强烈建议对你硬盘上的重要数据进行备份。虽然安装过程本身不会触及你的Windows数据分区如果你选择“其他选项”进行手动分区但任何对引导区的操作都有潜在风险。备份到云端或另一块物理硬盘上是好习惯。3.2 释放ISO文件与配置引导文件这一步的目的是将ISO文件“虚拟”地准备好并放置引导桥梁。第一步提取Ubuntu ISO中的引导文件我们并不需要解压整个ISO只需要其中两个核心的引导文件vmlinuz和initrd。它们位于ISO镜像内的casper文件夹中。在Windows下你可以使用任何一款压缩软件如7-Zip、WinRAR直接打开下载的.iso文件。导航到casper目录将vmlinuz和initrd两个文件提取出来放到硬盘的某个目录例如D:\ubuntu_boot\。这个目录将作为我们的引导文件仓库。第二步放置GRUB4DOS桥梁文件从下载的grub4dos-for_iso工具包中找到以下文件名称可能略有不同但功能类似grub.exe(或grub4dos.exe)menu.lst(GRUB的配置文件)可能还包括grldr等文件。 将这些文件也复制到刚才的D:\ubuntu_boot\目录下。第三步配置menu.lst文件用记事本建议使用Notepad或VS Code等代码编辑器打开D:\ubuntu_boot\menu.lst。这个文件告诉GRUB如何启动。我们需要在其中添加一个启动项指向我们硬盘上的Ubuntu ISO文件以及刚才提取的引导文件。找到文件末尾或清空后添加如下内容title Install Ubuntu 22.04 from HDD find --set-root /ubuntu-22.04-desktop-amd64.iso map /ubuntu-22.04-desktop-amd64.iso (0xff) map --hook root (0xff) kernel /casper/vmlinuz file/cdrom/preseed/ubuntu.seed maybe-ubiquity iso-scan/filename/ubuntu-22.04-desktop-amd64.iso quiet splash --- initrd /casper/initrd boot参数解析title: 启动菜单显示的名称。find --set-root /ubuntu...iso: 让GRUB自动搜索包含指定ISO文件的分区并将其设为根目录。map ...iso (0xff): 将整个ISO文件映射为一个虚拟光驱驱动器号0xff。kernel ...: 指定要加载的内核vmlinuz并传递关键参数。iso-scan/filename参数至关重要它告诉内核去哪里寻找ISO文件。initrd: 指定初始内存盘。boot: 执行启动。关键点你需要将示例中的ISO文件名替换为你实际下载的文件名并确保kernel和initrd指向的路径正确。在我们的配置中因为使用了map命令将ISO映射为根设备所以路径直接是/casper/...。3.3 修改Windows启动项BCD这是整个流程的核心步骤我们将为Windows启动管理器添加一个指向GRUB4DOS的入口。以管理员身份运行命令提示符CMD或PowerShell。在Windows搜索框输入cmd右键点击“命令提示符”选择“以管理员身份运行”。复制引导文件到系统分区为了确保启动管理器能可靠找到文件最好将D:\ubuntu_boot\下的grub.exe或grldr和menu.lst复制到系统盘通常是C盘的根目录。同时也把Ubuntu的ISO文件复制到C盘根目录以简化路径。当然你也可以保持原路径但后续命令中的路径需要写绝对路径如D:\ubuntu_boot\grub.exe且路径中不能有空格。使用bcdedit创建新启动项在管理员命令提示符中依次执行以下命令。请逐条执行并观察每条命令的反馈。# 创建一个新的引导条目并将其标识符复制到剪贴板后续命令会用到 bcdedit /create /d “Install Ubuntu 22.04” /application bootsector执行成功后会显示一串GUID如{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}。这就是新启动项的ID。下面的命令都需要用到这个ID我们假设它为{ID}。# 设置这个新条目的设备包含启动文件的分区和路径启动文件 bcdedit /set {ID} device partitionC: bcdedit /set {ID} path \grub.exe # 如果你的grub.exe不在C盘根目录例如在D:\ubuntu_boot\则路径应为 \ubuntu_boot\grub.exe # 将这个新条目添加到当前的引导菜单中 bcdedit /displayorder {ID} /addlast # 可选设置超时时间例如10秒方便你选择 bcdedit /timeout 10实操心得bcdedit命令对空格和引号非常敏感。命令中的引号是英文引号。{ID}必须替换为上一条命令创建的实际GUID。你可以先创建条目然后运行bcdedit /v来查看所有启动项的详细列表找到你刚创建的、描述为“Install Ubuntu 22.04”的条目并记下其完整的标识符。4. 安装流程实操与分区规划详解4.1 重启并启动安装程序完成上述所有配置后保存所有工作重启电脑。在Windows启动管理器界面你应该能看到一个新的选项例如“Install Ubuntu 22.04”。使用方向键选择它然后回车。接下来GRUB4DOS的界面会出现并加载我们配置的menu.lst。你应该能看到“Install Ubuntu 22.04 from HDD”这个选项选择它并回车。此时GRUB会开始加载ISO镜像并启动Ubuntu的安装环境。你会看到熟悉的Ubuntu启动画面之后就会进入Live CD桌面环境桌面上有“安装Ubuntu 22.04 LTS”的图标。注意事项如果在这一步黑屏、报错如“can‘t find /casper/vmlinuz”或“can‘t find /ubuntu-xxx.iso”说明menu.lst中的路径配置有误。你需要回到Windows下检查ISO文件是否放在了find命令能搜索到的位置最好是某个分区的根目录。menu.lst中的ISO文件名是否完全一致包括大小写在非Windows系统下大小写敏感。可以尝试在menu.lst的kernel行将iso-scan/filename的参数改为绝对路径例如/dev/sda1/ubuntu-22.04-desktop-amd64.iso这需要你知道ISO文件所在的分区设备名对新手较难。4.2 至关重要的分区方案设计进入安装程序后在“安装类型”这一步务必选择“其他选项”以便进行手动分区。这是硬盘安装中最关键、最容易出错的一步因为安装程序和你现有的Windows系统共享同一块物理硬盘。分区方案示例针对一块256GB SSD已安装Windows 假设你的磁盘在Windows下显示为/dev/sda。现有分区可能如下sda1: Windows EFI系统分区 (100MB, FAT32)sda2: Windows保留分区 (16MB)sda3: Windows的C盘 (NTFS, 约150GB)剩余未分配空间 (约100GB)我们的目标是在这100GB的未分配空间中创建Ubuntu所需的分区。一个典型且稳妥的双系统分区方案如下挂载点分区类型建议大小文件系统说明/boot/efi逻辑分区512MB - 1GBFAT32EFI系统分区。关键如果Windows是UEFI模式安装的它已经有一个EFI分区sda1。强烈建议直接复用这个已有的EFI分区不要新建在安装时选择/dev/sda1作为“用于EFI系统分区”的设备即可。swap逻辑分区物理内存的1-2倍 (如16GB内存给16-32GB)swap交换空间。如果内存足够大如32GB以上可以不给或给少量4-8GB用于休眠支持。/(根分区)逻辑分区剩余空间的70-80%(如70GB)EXT4系统文件和程序安装位置。必须要有。/home逻辑分区剩余的全部空间(如约30GB)EXT4用户数据目录。将/home独立出来以后重装系统时可以保留数据。分区操作步骤在安装程序的分区界面找到代表你硬盘未分配空间的那一行点击下面的“”号。首先创建swap分区选择“逻辑分区”、“空间起始位置”用于“交换空间”设置大小。然后创建/分区继续点击“”选择“逻辑分区”、“空间起始位置”挂载点选“/”文件系统“EXT4”设置大小。最后创建/home分区同上挂载点选“/home”文件系统“EXT4”使用剩余所有空间。最关键的一步——EFI分区处理在分区列表的最上方找到那个类型为“EFI系统分区”的小分区通常是/dev/sda1。点击它在下面的“用于”下拉框中选择“EFI系统分区”。不要格式化它这确保了Ubuntu的引导文件grub会安装到这个现有的EFI分区中与Windows共享从而实现双系统引导。重要警告在“安装启动引导器的设备”下拉菜单中务必选择这个EFI分区例如/dev/sda1而不是整个磁盘/dev/sda。如果选错可能会覆盖Windows的引导记录导致Windows无法启动。4.3 完成安装与后续清理设置好分区后继续完成用户名、密码、时区等常规设置然后开始安装。安装过程会从我们映射的“虚拟光驱”即硬盘上的ISO文件中读取数据速度非常快。安装完成后点击“现在重启”。计算机会重启。此时你会直接进入新安装的Ubuntu系统的GRUB引导菜单在这个菜单里你应该能看到Ubuntu和Windows两个选项。选择Ubuntu进入新系统选择Windows则回到原来的系统。回到Windows后的清理工作进入Windows后以管理员身份打开命令提示符。删除我们之前创建的临时启动项bcdedit /delete {ID} /f将{ID}替换为之前创建的那个GUID。如果不记得了先用bcdedit /enum all查看找到描述为“Install Ubuntu 22.04”的条目再删除。删除复制到C盘根目录或其它位置的grub.exe、menu.lst和Ubuntu ISO文件。可选删除D:\ubuntu_boot\等临时目录。至此一个完全从硬盘完成的Ubuntu 22.04双系统就安装好了。整个过程没有用到任何U盘或光盘。5. 常见问题与深度排查指南即使按照步骤操作也可能遇到一些问题。这里汇总了几个典型问题及其解决方案。5.1 启动时找不到ISO文件或引导失败这是最常见的问题症状是GRUB界面报错提示找不到文件。问题原因1menu.lst中文件路径或名称错误。排查仔细检查menu.lst中find命令后的ISO文件名是否与硬盘上的文件名完全一致包括.iso扩展名。Linux下区分大小写。解决确保ISO文件放在分区根目录。将menu.lst中的find --set-root /ubuntu-22.04-desktop-amd64.iso改为绝对设备路径尝试但这需要你知道分区信息例如find --set-root (hd0,msdos1)/ubuntu-22.04-desktop-amd64.iso适用于传统BIOS/MBR。对于新手最稳妥的方法是确保ISO在某个分区根目录且文件名正确。问题原因2GRUB4DOS版本或文件不匹配。排查某些老旧的GRUB4DOS版本可能对UEFI支持不佳或grub.exe文件损坏。解决重新从可靠来源下载最新版的grub4dos-for_iso工具包并替换所有文件。问题原因3安全启动Secure Boot未关闭。排查现代电脑UEFI固件默认开启安全启动它会阻止未经签名的引导程序如我们使用的GRUB4DOS加载。解决重启电脑进入UEFI/BIOS设置界面通常在启动时按F2、Del、F12等键找到“Secure Boot”选项将其设置为“Disabled”。保存并退出。这是安装大多数Linux发行版的必要前提。5.2 安装完成后无法进入Windows问题原因安装Ubuntu时“安装启动引导器的设备”选错了可能选成了整个磁盘/dev/sda而不是EFI分区/dev/sda1导致GRUB覆盖了Windows的引导管理器。解决这需要从Ubuntu Live环境即安装U盘或我们刚制作的硬盘安装环境进行修复。重新启动进入Ubuntu安装环境。打开终端挂载你的Ubuntu系统根分区和EFI分区。假设你的Ubuntu根分区是/dev/sda5EFI分区是/dev/sda1。sudo mount /dev/sda5 /mnt sudo mount /dev/sda1 /mnt/boot/efi使用chroot进入目标系统并重新安装GRUB到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/sda1 update-grub exit sudo umount -R /mnt重启通常GRUB菜单就能正确识别Windows了。5.3 安装过程中分区表显示异常或无法识别硬盘问题原因1磁盘模式为RSTIntel Rapid Storage Technology。排查常见于较新的笔记本电脑。RST是一种RAID模式Linux需要额外驱动才能识别。解决进入UEFI/BIOS设置将SATA模式从“RST”或“RAID”改为“AHCI”。注意修改前需要在Windows中提前做好设置否则改为AHCI后Windows会蓝屏无法启动。安全做法是先在Windows下以安全模式启动一次或通过注册表修改然后再到BIOS中更改模式。问题原因2NVMe硬盘驱动问题。排查极老的Linux内核可能对某些NVMe硬盘支持不佳。解决Ubuntu 22.04的内核较新一般没问题。如果遇到可以尝试在GRUB启动时在kernel行末尾添加nomodeset或pcinommconf等内核参数临时禁用某些功能来尝试安装安装完成后更新系统内核。6. 进阶技巧与性能优化建议成功安装只是第一步要让这个“无U盘”安装的系统用得更顺手这里有一些进阶建议。6.1 将安装镜像集成到本地GRUB菜单可选安装完成后你硬盘上的Ubuntu系统已经有了自己的GRUB。你可以修改Ubuntu系统中的GRUB配置永久添加一个从硬盘ISO启动安装程序的菜单项。这样以后想重装或者尝试其他版本连Windows的bcdedit都不需要了。在Ubuntu系统中编辑GRUB配置文件sudo nano /etc/grub.d/40_custom在文件末尾添加类似以下内容路径需要根据你的实际情况调整menuentry “Boot Ubuntu 22.04 ISO from HDD” { insmod part_gpt insmod ext2 set root‘hd0,gpt2’ # 假设ISO放在/dev/sda2分区根据实际情况修改 loopback loop /ubuntu-22.04-desktop-amd64.iso linux (loop)/casper/vmlinuz iso-scan/filename/ubuntu-22.04-desktop-amd64.iso quiet splash --- initrd (loop)/casper/initrd }注意set root这行需要指定正确的硬盘和分区号。hd0代表第一块硬盘gpt2代表GPT分区表的第二个分区如果是MBR则用msdos2。你可以通过lsblk命令查看分区情况。保存文件后更新GRUB配置sudo update-grub重启后在GRUB菜单中就能看到这个新选项了。6.2 利用Ventoy实现更灵活的硬盘多系统安装如果你觉得上述方法配置稍显复杂或者希望一个硬盘分区里能存放多个不同版本的Linux ISO并随时选择启动安装那么Ventoy是一个革命性的工具。它的思路更巧妙你只需要用Ventoy格式化一个独立的分区甚至可以是硬盘上的一个分区不一定是整个U盘。然后将任何ISO文件直接拷贝到这个分区里无需解压。通过配置启动项可以用GRUB也可以用Ventoy自带的引导来引导这个Ventoy分区。启动后Ventoy会显示一个菜单列出该分区里所有的ISO文件你可以选择任何一个直接启动。对于硬盘安装场景你可以在硬盘上划分一个30-50GB的独立分区用Ventoy格式化。把Ubuntu、Fedora、Arch等各种ISO扔进去。按照本文前面bcdedit的方法创建一个启动项指向Ventoy的引导文件通常是ventoy/ventoy_x64.efi。以后想装哪个系统重启选择这个启动项然后在Ventoy菜单里选对应ISO即可。这相当于在硬盘上创建了一个“万能安装盘”管理起来非常方便。6.3 安装后的性能与稳定性调优从硬盘安装的系统本质上和U盘安装的没有任何区别。但正因为安装过程更快你可能更早地进入系统配置阶段。这里有几个快速优化建议更换软件源安装后第一件事更换为国内镜像源如阿里云、清华源可以极大提升软件下载和更新速度。sudo sed -i ‘sarchive.ubuntu.commirrors.aliyun.comg’ /etc/apt/sources.list sudo apt update sudo apt upgrade -y安装必要驱动在“软件和更新”的“附加驱动”选项卡中检查并安装专有的显卡、无线网卡驱动以获得更好的性能和硬件兼容性。启用硬件加速对于Intel/AMD/NVIDIA显卡确保相应的VA-API或VDPAU驱动已安装以提升视频播放和图形处理效率。从硬盘安装Ubuntu不仅是一种在特定条件下的应急方案更是一种高效、可重复的系统部署思路。它让你对系统引导过程有了更深的理解从“插入U盘-下一步”的被动操作转变为主动配置引导链的掌控者。当你熟练之后甚至可以举一反三用类似的方法安装其他Linux发行版或者创建属于你自己的多合一系统维护工具箱。
返回列表