新闻详情

新闻详情

首页 / 资讯中心 / 详情

无需U盘装Linux双系统:GRUB2 ISO引导与修复指南

发布时间:2026/9/18 20:30:36来源:尧图网络
无需U盘装Linux双系统:GRUB2 ISO引导与修复指南
前阵子朋友抱来一台笔记本说要装个Deepin结果翻遍家里找不到U盘又不想为这事专门跑一趟数码店。我看了眼机器里已经跑着Ubuntu 24.04就跟他说不用U盘这套系统自带的GRUB2引导器就能干这活把ISO文件直接变成虚拟光驱启动安装器和光盘启动几乎没有区别。后来我确实就用这个方法在几台不同年代的机器上反复验证过装Ubuntu、Deepin双系统都很稳。这篇文章就围绕“无需U盘装Linux双系统”这件事展开把原理、分区准备、菜单写法、安装器里的关键选项、以及装完引导出问题后的修复方法一次性讲清楚。适合手上已经有一个能正常开机的Linux系统、想再装第二个Linux的朋友如果你只有Windows我会在开头把这条路线怎么走也交代一下后面再按照“已有Linux”的主线走。全程不需要买U盘不需要光驱只要你有ISO文件。1. 不用U盘装的底层原理GRUB2的loopback把ISO变成虚拟光驱1.1 为什么Linux引导器能绕过U盘先说结论装系统本质上就是“把安装器的内核加载进内存让安装程序接管电脑”。U盘、光盘在这里只是安装器的载体并不是必需条件。Windows的引导器没有给你提供自由加载ISO的工具所以大家习惯性认为装系统必须做启动盘。但Linux的GRUB2引导器不一样它提供了一个loopback命令可以把一个ISO文件映射成一个块设备相当于在内存里模拟出一个“虚拟光驱”然后从这个虚拟光驱中读取内核文件再启动。举个生活化的例子GRUB2就像一个小型物流调度站U盘启动相当于调度站等一辆货车把货物送过来loopback则是调度站直接把仓库里的一个集装箱虚拟成货车把集装箱里的货吊出来用。货没变只是运输方式变了。整个流程拆开来看就是三件事GRUB2加载ISO文件里的内核和initrd镜像内核启动时通过iso-scan/filename或findiso这类参数找到刚才那个ISO文件并挂载为安装源安装器以为自己是从某个CD/DVD设备启动的正常进入图形安装界面。安装完成后GRUB2再把所有系统入口汇总到开机菜单里这就是“双系统共存”的核心逻辑。1.2 没有现成Linux系统时怎么先搭出第一个环境这里必须把边界说清楚loopback方案有一个前提就是电脑上已经有一个能进入GRUB菜单的Linux发行版。如果你手头只有Windows连一个Linux都没有那确实需要先想办法搞出第一个Linux环境。推荐两个思路用支持USB Mass Storage功能的安卓手机配合DriveDroid这类工具把手机模拟成启动盘先启动一个Ubuntu或Deepin的Live环境把系统装进硬盘。严格说这也是“介质”但至少不用专门买U盘。找办公室、机房、朋友机器上现成的Linux按本文的方案把ISO放过来直接在当前机器上引导安装。只要你成功装上了第一个Linux后面所有“再加一个系统”“修复引导”“卸载某个系统”的操作就都可以在系统之间互相救援不再需要U盘。这就是无U盘装机的完整闭环。2. 开工前先解决三个问题启动模式、空间、ISO放哪2.1 先确认电脑是BIOS还是UEFI很多人栽在双系统上不是装机失败而是压根没搞清自己是BIOS引导还是UEFI引导。这两种模式的分区规则、引导安装位置完全不一样后面对照做才不会翻车。在现有Linux终端里执行ls /sys/firmware/efi如果该目录存在且有内容说明当前是UEFI模式如果提示“No such file or directory”则是传统的BIOS/CSM模式。再用lsblk -f看一眼磁盘UEFI机器通常有一个vfat格式的EFI系统分区挂载在/boot/efiBIOS机器则没有。检查项BIOS传统/CSMUEFIls /sys/firmware/efi不存在目录存在磁盘分区表MBRfdisk显示dosGPT有EFI System Partition/etc/fstab无/boot/efi有ESP挂载项确定启动模式后再往下走。如果开了UEFI却想用BIOS方式引导老系统或者反过来拿MBR磁盘做UEFI引导会非常痛苦不建议折腾。2.2 给新系统腾出分区空间的正确姿势给第二个系统准备空间最好的情况是你已经留了一块未分配的空闲区域。用lsblk -f能直接看到“free”状态。如果没有空闲空间就需要从现有分区里压缩一部分出来推荐用GPartedsudo apt install gparted sudo gparted在图形界面里找到你要缩小的数据分区比如/home所在分区右键选择Resize/Move把新大小改成比原来小40GB左右然后Apply。压缩数据分区相对安全但有一个红线不要尝试在线缩小当前运行系统的根分区。因为根分区正被系统占用没有完全卸载的GParted操作有很大风险一旦断电或中断可能整个系统都起不来。如果机器只有一个根分区且没有其他数据分区最稳妥的办法还是先用Live环境或者另一台Linux从外部处理或者干脆买块新硬盘装上再走本文的无U盘安装流程。分区规划建议这样看Ubuntu桌面版正常使用建议至少25GBDeepin 20GB起步考虑到后续装软件、放缓存新系统分区直接给40GB比较舒服。你还可以把新系统也分成/和/home两个区但新手不追求数据隔离的话一个/分区就够了后面想迁移再调整。2.3 下载ISO并放在GRUB最省心的位置去Ubuntu官网或者Deepin官网下载目标系统的桌面版ISO。下载后建议先校验一下文件完整性避免安装进行到一半报“ISO文件损坏”sha256sum 下载的.iso对比官网发布的SHA256值一致再继续。ISO放在哪里很有讲究。GRUB读取ISO文件时要经过自己的驱动最省心的是放在ext4分区路径不要有中文和空格。个人习惯是建一个/opt/iso或~/iso目录把ISO丢进去。mkdir -p ~/iso mv ~/下载/ubuntu-24.04-desktop-amd64.iso ~/iso/ mv ~/下载/deepin-desktop-community-23-amd64.iso ~/iso/这一步有个小技巧顺手把ISO挂载看一下目录结构因为不同版本、不同发行版的引导文件路径不一样提前确认能省掉后面很多“卡死”的排查时间。mkdir -p /tmp/isomount sudo mount -o loop ~/iso/ubuntu-24.04-desktop-amd64.iso /tmp/isomount ls /tmp/isomountUbuntu桌面版会看到casper目录Deepin系会看到live目录。这两个目录就是稍后写启动菜单时要用到的路径。3. 手写GRUB菜单项给开机菜单加一个“安装Deepin/Ubuntu”入口3.1 修改40_customUbuntu与Deepin示例GRUB的实际配置文件是/boot/grub/grub.cfg但每次执行update-grub都会重新生成它所以不能直接改。发行版专门留了一个自定义扩展文件/etc/grub.d/40_custom这个文件的内容会被合并进生成的grub.cfg是放置自定义启动项的正规入口。用编辑器打开sudo nano /etc/grub.d/40_custom在文件末尾追加。Ubuntu Desktop 24.04的ISO菜单项写法menuentry Install Ubuntu 24.04 ISO { insmod part_gpt insmod ext2 set root(hd0,gpt2) loopback loop /iso/ubuntu-24.04-desktop-amd64.iso linux (loop)/casper/vmlinuz bootcasper iso-scan/filename/iso/ubuntu-24.04-desktop-amd64.iso quiet splash initrd (loop)/casper/initrd }注意set root(hd0,gpt2)这一行这里的(hd0,gpt2)指的不是系统所在分区而是ISO文件所在分区在GRUB里的编号。规则很简单Linux下的/dev/sda对应GRUB的hd0/dev/sdb对应hd1GPT分区表下/dev/sda2对应(hd0,gpt2)MBR分区表下则是(hd0,msdos2)或(hd0,2)。如果你的ISO放在/dev/sda3的/iso目录那就写成set root(hd0,gpt3)路径保持/iso/ubuntu-24.04-desktop-amd64.iso。Deepin Desktop 23的菜单项写法menuentry Install Deepin 23 ISO { insmod part_gpt insmod ext2 set root(hd0,gpt2) loopback loop /iso/deepin-desktop-community-23-amd64.iso linux (loop)/live/vmlinuz bootlive findiso/iso/deepin-desktop-community-23-amd64.iso quiet splash initrd (loop)/live/initrd.img }Deepin基于Debian的live体系引导文件在live目录下参数用bootlive findiso这个和Ubuntu的bootcasper iso-scan/filename是两套完全不同的方案。如果你用的是Deepin 20等更早版本目录同样是live如果以后换了新版务必先按2.3的方法挂载ISO看一眼确认vmlinuz和initrd.img的真实位置再填。3.2 修改完如何生效保存文件后执行sudo update-grub看到类似这样的输出就对了Found linux image: ... Found Ubuntu on /dev/sda6这时重启GRUB菜单里就会出现“Install Ubuntu 24.04 ISO”或“Install Deepin 23 ISO”这两个新条目。选择它就能进入对应系统的图形安装界面。有个细节容易被忽略Ubuntu 22.04之后的版本为了安全默认关闭了os-prober对新系统的自动探测很多人在装了第二个系统后发现GRUB菜单里没有新条目原因就在这。我先提前把这一步放出来编辑/etc/default/grub找到或添加一行GRUB_DISABLE_OS_PROBERfalse保存后再执行sudo update-grub。否则即使你从ISO装好了系统重启回来也找不到它的启动项。3.3 写错菜单后的急救GRUB命令行手动启动人总有手滑的时候万一40_custom里分区号写错、路径写错重启后可能直接进不了系统。别慌GRUB本身提供了一个敲命令行的地方可以从这里手动完成一次ISO启动。开机进入GRUB菜单时按c键进入GRUB命令行。先输入ls这会把GRUB能识别的所有磁盘和分区列出来类似(hd0) (hd0,gpt1) (hd0,gpt2)。用下面命令逐步确认分区内容ls (hd0,gpt2)/确认ISO所在目录后按顺序执行set root(hd0,gpt2) loopback loop /iso/ubuntu-24.04-desktop-amd64.iso ls (loop)/ ls (loop)/casper/ linux (loop)/casper/vmlinuz bootcasper iso-scan/filename/iso/ubuntu-24.04-desktop-amd64.iso quiet splash initrd (loop)/casper/initrd boot如果是Deepin ISO把最后三行换成linux (loop)/live/vmlinuz bootlive findiso/iso/deepin-desktop-community-23-amd64.iso quiet splash initrd (loop)/live/initrd.img boot这一套命令走通后系统一样能正常启动。它能用来救急也能用来验证你准备写进40_custom的参数是否正确。我建议每次都先在命令行跑一遍确认无误再写入文件这才是最稳的“傻瓜式”操作。4. 进入安装器后的关键操作分区、引导位置、卡屏急救4.1 手动分区的必选操作从ISO成功启动后安装器会进入一个图形引导界面。这里一定要选“试用(Try)”还是“安装(Install)”直接选安装就行但到“安装类型”这一步要小心。不少新手在这里被“清除整个磁盘”或“与Windows系统共存”给带沟里了。在现有Linux旁边装另一个系统的正确选择是“其他选项(Everything else / Something else / 手动分区)”不同发行版翻译略有差异但逻辑一致。进入手动分区界面后找到你在第二章腾出的那块空闲空间。对空闲空间执行“新建分区”建议分区格式选ext4挂载点选/大小就给整块空闲空间如果内存小于8GB再单独划一个8GB的swap分区内存够大或者不依赖休眠swap可以直接跳过。这里列一个常见双Linux分区方案直接照着操作即可分区用途大小挂载点/dev/sda1EFI系统分区500MB已有/boot/efiUEFI/dev/sda2旧系统根分区原样保留不动/dev/sda3新系统根分区40GB//dev/sda4数据交换分区可选自定/data/dev/sda5swap可选8GBswap手动分区的原则就一句话只动你新建的那个分区其他所有已存在分区一律不碰。尤其不要手贱去格式化原来的Ubuntu分区或Windows分区这辈子都别干这事。4.2 引导加载器位置UEFI和BIOS的区别这是全文最容易被忽略、也最容易导致“装完无法开机”的环节。安装器最后会问你“引导加载器安装到哪里”默认往往是/dev/sda也就是整块硬盘。多数时候这个默认值没问题但在多系统环境下并不推荐。我的建议分两种模式固件模式引导加载器安装位置原因UEFI/GPT已有ESP分区如/dev/sda1EFI各条目互相独立装到ESP不会覆盖旧系统BIOS/MBR新系统根分区如/dev/sda3不覆盖旧系统MBR后续统一交给主GRUB管理任意模式“不安装引导加载器”如果有完全交回旧系统GRUB最安全但装完必须回旧系统更新菜单为什么UEFI下反而可以放心因为UEFI的引导方式是“固件直接把某个EFI文件作为启动项”每个系统在ESP分区里都有自己的文件夹互不干扰。新系统装完后你只需要在开机启动菜单或efibootmgr里调整顺序就行。BIOS模式下则完全不同。MBR只有一个如果让新安装器把GRUB写到/dev/sda它可能会覆盖掉旧Linux或Windows的引导入口。我的做法是安装器引导加载器选择新系统的根分区比如/dev/sda3这样新系统自己在自己分区内有引导旧系统引导保持原样。装完后回到旧系统执行update-grub让旧的GRUB把新系统也收编进总菜单。这种“各自保存引导、最后由一个GRUB统一调度”的思路是双系统最不容易出问题的布局。4.3 安装器黑屏或卡死的临时处理从ISO进入安装器偶尔会遇到UEFI机器黑屏、或者卡在Deepin的logo界面迟迟进不去桌面。遇到这种情况先别怀疑ISO文件坏了大概率是显卡驱动不完全兼容live内核导致的。在GRUB菜单选中ISO启动项后按e键进入启动参数编辑找到包含quiet splash的那一行在末尾追加nomodeset然后按CtrlX或F10启动。这个参数让内核先不加载显卡的高分辨率驱动用基础显示模式把桌面跑起来安装完成进入正式系统后再恢复。Deepin部分版本还可以试试xforcevesa效果类似。如果加了参数还是卡住优先检查两个点findiso或iso-scan/filename的路径是否和实际完全一致包括大小写以及ISO文件所在分区是不是ext4。ISO放在NTFS分区虽然GRUB偶尔能读到但live系统启动后挂载NTFS的兼容性问题会明显增多产出各种奇怪问题不推荐。5. 装完重启找不到新系统从旧系统修复引导的完整链路5.1 第一步让os-prober找到新系统新系统装完重启后你可能会发现自己直接进了旧系统GRUB菜单里根本没有新系统的影子。这非常正常尤其是BIOS模式下你把引导写到了新系统自己的分区里。现在要做的就是让旧系统“发现”那个新系统。先确认os-prober已经在工作执行sudo apt install os-prober然后编辑/etc/default/grub确保有这么一行GRUB_DISABLE_OS_PROBERfalse接着sudo update-grub重点观察输出里有没有类似这样的行Found Deepin on /dev/sda3 Found Windows Boot Manager on /dev/sda1只要出现就说明新系统已经被GRUB菜单收录。重启后菜单里就会有对应条目。5.2 第二步grub-install重写引导的完整命令有些情况比较严重比如安装器在最后阶段直接报错说grub-install失败、或者两个系统的引导互相覆盖导致谁都无法启动。这时需要一个更底层的手段用任意一个还能开机的Linux系统对目标磁盘执行grub-install重写引导。确认启动模式后在终端执行对应命令。BIOS模式sudo grub-install /dev/sdaUEFI模式sudo grub-install --targetx86_64-efi --efi-directory/boot/efi --bootloader-idGRUB执行完都执行一次sudo update-grub。以我处理过的案例来看十个“进不去系统”里有八个靠这两条命令就能救活。如果当前启动的Linux和你要修复的系统不在同一块磁盘把/dev/sda换成目标磁盘比如/dev/nvme0n1但要确认哪块才是系统盘。可以用lsblk看一下各分区的挂载情况和大小来判断。再极端一点两个系统都进不去了手里又没有U盘。这时候可以借助另一个能启动的Linux系统比如电脑里任何一块还能开机的Linux或者手机做出来的临时引导环境挂载目标系统分区用chroot进到目标系统里修复sudo mount /dev/sda5 /mnt sudo mount /dev/sda1 /mnt/boot/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/sda update-grub exit这套命令相当于“进到病人家属身体里修他的病”是双系统互相救援的核心操作。装双系统的意义在这里体现得淋漓尽致。5.3 UEFI下启动项顺序用efibootmgr控制UEFI模式下还有一个常见问题两个系统都装好了开机却依旧直接进WindowsGRUB菜单死活不出现。这通常不是引导损坏而是启动顺序里GRUB排在了Windows后面甚至根本没被固件优先加载。重启时快速按F2、F12、Del等键进入固件启动菜单手动选择GRUB条目是一种办法。更省事的是在Linux里装一个efibootmgrsudo apt install efibootmgr sudo efibootmgr这个命令会把当前所有EFI启动项列出来像这样BootCurrent: 0000 BootOrder: 0000,0001,0002 Boot0000* ubuntu Boot0001* Windows Boot Manager想调整顺序让某个系统排到最前面例如让ubuntu进入优先级最高而你当前的BootOrder是0000,0001,0002保持就行如果顺序反了sudo efibootmgr -o 0000,0001-o后面的数字是启动项的十六进制编号按你希望的优先级依次写。这条命令配合上面5.2的grub-install基本能把UEFI下99%的引导问题解决。6. 双系统翻车现场整理从卡logo到卸载系统的处理办法6.1 卡在Deepin logo/黑屏的排查链路热搜里能看到“deepin显示deepin之后进不去桌面了”这种问题这也是我收到过最多的求助。碰到这种卡Logo的情况按顺序排查第一确认ISO路径参数。Deepin的findiso/路径/文件.iso中路径写错是最常见的卡Logo原因之一。注意这个路径是GRUBset root所指分区内的相对路径不是Linux系统里的绝对路径两者要区分开。第二加显卡兼容参数。按e编辑菜单项在quiet splash后添加nomodeset重新启动。NVIDIA独显机器尤其容易出现live环境黑屏这种情况加nomodeset后往往立竿见影。第三检查ISO文件本身。挂载ISO文件查看目录结构确认live/vmlinuz和live/initrd.img路径存在。如果下载的是测试版、预览版换正式版ISO通常能解决渲染、安装器崩溃等疑难杂症。另外提一句Deepin的logo界面是live系统在解压squashfs镜像后准备启动桌面的阶段。如果机器内存偏小这里也会停留得比较久耐心等两分钟不要误判为死机就强制重启。6.2 安装器报grub-install失败的常见原因安装进行到最后一步突然弹窗“安装引导加载程序失败”很多人会以为是整个安装白干了。实际上系统文件已经装进磁盘只是最后的引导没写进去。常见原因BIOS模式下安装器试图把GRUB写到整个/dev/sda但磁盘的MBR区域被某种保护机制锁定或者当前固件其实是UEFI模式却要求写BIOS引导UEFI模式下开启了Secure Boot新发行版的shim签名没被固件认可ESP分区被破坏或者没有格式化成功。处理办法就是6.1说过的安装器里选择“不安装引导加载器”然后回到现有Linux系统用5.2的grub-install命令手动把引导补写进去。Secure Boot导致的签名问题可以进固件设置临时关闭Secure Boot再装装完再决定是否要开回来。6.3 卸载双系统后修复另一侧引导折腾到最后总有人想卸掉其中一个系统。卸载Linux保留Windows先进入Windows的磁盘管理把Linux系统分区一个个删除变成未分配空间。删除后重启往往发现Windows也进不去了因为MBR里原本是GRUB在引导Windows。这时用Windows安装盘的恢复环境或任意一个可启动的Linux环境来修复。Windows环境里打开命令提示符执行bootrec /fixmbr bootrec /fixbootUEFI模式还可以用bcdboot C:\Windows /s S: /f UEFI其中C:是Windows所在分区S:是EFI系统分区盘符根据实际盘符调整。反过来卸载Windows保留Linux就简单多了。进入Linux用lsblk确认Windows分区编号删除对应分区后执行sudo update-grub此时GRUB菜单里Windows条目会自动消失不影响Linux启动。如果EFI分区里残留了Windows的引导文件想清理可以挂载ESP分区在EFI目录下删除Microsoft文件夹但要注意这不是必须操作删错了反而可能影响后续重装Windows。我自己在折腾双系统这条路上把上面所有坑基本都踩过一遍。现在每台装了双系统的机器我都会把efibootmgr、grub-install --targetx86_64-efi --efi-directory/boot/efi、update-grub这三条命令抄在手机备忘录里。引导出问题的时候只要当前还能进入任何一个能跑终端的Linux就照抄命令执行一遍大概率能活过来。这也是“无需U盘装系统”这事的完整逻辑不是彻底不依赖启动介质而是让系统与系统之间互为救援船把那张U盘从必备清单里划掉。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

FreeRTOS在STM32上的深度移植与实战避坑指南 2026/9/18 21:12:41

FreeRTOS在STM32上的深度移植与实战避坑指南

1. 为什么FreeRTOS移植不是“点几下就完事”,而是STM32开发者绕不开的成年礼你打开CubeMX,新建一个STM32F103C8T6工程,勾选RCC、SYS、GPIO,再点开Middleware标签页——FreeRTOS图标赫然在列。鼠标悬停,提示写着“Enabl…

阅读更多 →
球面邻域匹配度:量化打车难的时空诊断模型 2026/9/18 21:12:41

球面邻域匹配度:量化打车难的时空诊断模型

简介:本资源是一份面向数学建模初学者与竞赛参与者的实战型分析报告,聚焦“互联网”背景下城市出租车资源配置优化这一典型交通管理问题,旨在通过数据建模解决“打车难”这一现实痛点。报告基于2015年成都真实时空数据,构建了以“…

阅读更多 →
变压器绕组变形试验详解:从FRA曲线到Python量化诊断 2026/9/18 21:12:41

变压器绕组变形试验详解:从FRA曲线到Python量化诊断

简介:变压器绕组变形试验培训PPT课件是一份面向变电检修、运维及电气试验人员的专业培训资源,针对110kV及以上电力变压器绕组变形检测方法进行了系统梳理。包内共1个PPT,单份课件体积仅707KB,方便直接下载使用。课件共37页&#x…

阅读更多 →
RAG系统工程实战:从检索增强到可信可溯的生产级落地 2026/9/18 21:12:41

RAG系统工程实战:从检索增强到可信可溯的生产级落地

1. 这不是“加个检索”那么简单:RAG早已脱离玩具阶段,进入系统工程深水区你搜“RAG实战”,刷出来的90%内容还在教你怎么用LangChain加载PDF、调个OpenAI API、跑通一个能回答“公司年报里提到多少次‘数字化转型’”的demo。这就像十年前教人…

阅读更多 →
中国地面气候日值数据集V3.0处理指南:缺测值与格式陷阱详解 2026/9/18 21:12:41

中国地面气候日值数据集V3.0处理指南:缺测值与格式陷阱详解

干过中国地面气候日值数据集(V3.0)的人,多少都经历过这种崩溃瞬间:明明从数据网下载了标准化产品,跑出来的气温曲线却直接飙到三千多摄氏度,降水序列里无缘无故出现一条四位数毫米的“极端暴雨”。我最早处理这批数据的时候&#…

阅读更多 →
SAP-BW数据抽取配置实战:从ECC到BW链路详解 2026/9/18 21:09:41

SAP-BW数据抽取配置实战:从ECC到BW链路详解

简介:SAP BW配置及操作手册V1.3以PDF文档形式呈现,面向SAP BW实施顾问、数据仓库开发与运维人员,系统梳理源系统设置、Datasource创建、DSO与Transformation配置、TransferProcess抽取处理等核心流程,并讲解ETL过程、InfoArea/Inf…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞