尧图精选

VM虚拟机Operating System not found排查与系统安装

🕒 发布时间:2026/9/17 22:43:56 📁 来源:尧图网络
虚拟机开机跳出Operating System not found屏幕一片黑底白字很多人第一反应是系统装废了重装吧。我这些年帮人处理虚拟机问题这类报错占了相当大的比例而其中真正需要重装的不到三成。绝大多数情况下问题出在启动顺序、固件模式或者引导记录上改几个设置、敲几条命令就能救回来。这篇就把这个报错的来龙去脉讲透先搞清楚这句话是谁在什么环节喊出来的再按场景拆解根因然后给出可以直接照抄的修复命令最后附上一套从新建虚拟机到进入桌面的完整安装流程。不管你是刚接触虚拟化的新手还是装过几台机器的老手都能在这里找到对得上号的排查路径。关键词VM虚拟机、Operating System not found、系统安装。1. 先弄明白这句话是谁喊出来的从固件到引导加载器的接力过程1.1 “Operating System not found” 的真实出处很多人以为这句英文是操作系统在报错其实恰恰相反——这时候操作系统根本还没被启动起来。报错的源头是虚拟机的固件也就是 BIOS 或 UEFI。整个开机过程是一条接力链固件自检 → 按启动顺序挨个访问设备 → 找到可引导记录 → 把控制权交给引导加载器GRUB、Windows Boot Manager 等→ 引导加载器再去加载内核。Operating System not found出现在第二步和第三步之间固件翻遍了启动顺序里的所有设备没找到任何有效的引导记录于是停下来抱怨。理解这一点非常关键因为它直接决定了排查方向。既然系统还没被加载那你盯着系统内部的配置改是没用的——你连门都没进去。要查的是门口的事有没有可引导介质、启动顺序对不对、引导记录还在不在。这就是为什么重装往往是无效操作——如果分区表本来没问题你重装一遍引导记录装到了别的地方问题依旧。不同固件厂商对这句报错的措辞不太一样VMware 常见的就是Operating System not found物理机 BIOS 可能说No bootable device、Reboot and Select proper Boot deviceUEFI 环境下则可能提示找不到\EFI\BOOT\BOOTX64.EFI。措辞不同含义一致找不到能启动的东西。1.2 虚拟机里报这句话和物理机上有什么不同物理机上出现这个提示多半是硬盘坏了、引导扇区被病毒改了或者装系统时把引导写到了别的盘。虚拟机里的原因更人为一些也更集中因为虚拟机的硬件是软件模拟出来的你能控制的因素比物理机多得多。虚拟机特有的几个高发原因一是光驱压根没挂载 ISO或者挂了但没勾选启动时连接固件找不到安装盘也找不到硬盘上的系统自然报错二是固件类型选错了明明装的是 UEFI 启动的系统虚拟机却配成传统 BIOS或者反过来三是启动顺序把硬盘排到了后面安装盘还插着固件压根没去试硬盘四是安装到一半中断了系统只写了一半五是虚拟磁盘控制器类型和系统不匹配老系统认不出新控制器。还有一个容易被忽略的虚拟机刚从别的宿主机克隆或迁移过来硬件的 UUID 变了GRUB 里的设备引用对不上开机同样报类似的错。所以排查虚拟机这个问题心态上要把它当成硬件装配问题而不是软件故障从外到内一层层看。2. 按场景拆解五类最容易触发引导失败的根因2.1 没有可引导介质ISO 挂载状态和“启动时连接”这是新手遇到最多的坑没有之一。新建虚拟机时明明选了 ISO 镜像装完系统重启ISO 还挂在那里但启动时连接这个勾没打上或者反过来装完之后你手动把 ISO 从光驱里移除了而硬盘上的引导记录又没写成功。两种情况都会落到固件找不到可引导设备这个结局。排查这个特别快打开虚拟机设置看 CD/DVD 那一栏。设备状态里的已连接和启动时连接两个勾都要打上前者管当前是否挂载后者管开机自检时是否参与启动。ISO 路径也要确认没有被移动或删除有些人的镜像放在下载目录里清理磁盘时顺手删了虚拟机自然找不到。提示装完系统后建议把光驱的启动时连接取消勾选让虚拟机直接从硬盘启动可以避免每次开机都去读光驱、拖慢启动速度也能防止安装介质干扰引导。2.2 固件模式错配传统 BIOS 与 UEFI 的对应关系这一条是引来重装也救不回来的典型。传统 BIOS 和 UEFI 是两套完全不同的引导机制它们要求的分区表格式也不一样传统 BIOS 通常配MBR 分区表UEFI 通常配GPT 分区表。如果你把虚拟机的固件设成 UEFI但磁盘上是 MBR 分区表固件就找不到它要的 EFI 系统分区反过来固件是传统 BIOS磁盘上是 GPT那第一个扇区的引导记录也不是它认识的那种同样起不来。怎么判断当前虚拟机用的哪种固件在 VMware 里打开虚拟机设置看选项选项卡里的高级或者直接看虚拟机目录下的.vmx配置文件找firmware efi这一行有就是 UEFI没有或写着bios就是传统模式。更好的办法是在开机瞬间反复按F2或Esc进固件设置界面图形化、带鼠标操作的是 UEFI蓝底白字的文本界面是老 BIOS。固件类型分区表要求典型场景传统 BIOSMBR老系统、Windows 7 及以下、部分老 LinuxUEFIGPT含 EFI 系统分区Windows 10/11、现代 Linux 发行版混合情况通常不引导固件与分区表对不上时的报错现场2.3 分区表与引导记录的破坏如果介质挂载没问题、固件模式也对那就要怀疑引导记录本身出问题了。引导记录可以理解成系统的门牌号硬盘第一个扇区里的主引导记录MBR负责找到活动分区然后把控制权交给分区里的引导加载器。这块区域被写坏、被覆盖或者分区时根本没写进去开机就找不到门。在虚拟机里这个区域经常被以下几种操作破坏安装系统时手动分区把引导加载器装到了错误的盘上多系统共存时后装的系统覆盖了先装系统的引导用分区工具调整分区大小或激活状态动到了引导扇区克隆或扩容虚拟磁盘之后扇区偏移变了原来的引导记录指到了错误位置。判断的方法是用安装镜像进 rescue 模式或 Live 环境看看分区表结构是否完整、EFI 系统分区UEFI 场景或活动分区传统 BIOS 场景是否还在、里面的引导文件是否还在。这些后面第 3 节会给出具体的操作步骤。2.4 安装被中断留下的半成品系统安装过程中宿主机突然休眠、断电、你手动强制关机或者 ISO 读取出错导致安装卡死后被强行结束——这些都会留下一个半成品。系统文件只写进去一半引导记录也可能只写了一半重启后就是各种乱七八糟的报错Operating System not found是其中一种。怎么判断是不是这种情况看虚拟磁盘文件的大小。一个正常装完的 Windows 虚拟机磁盘文件通常几个 GB 到十几 GB如果装完只有几百 MB 甚至不到 1GB那基本可以确定是半成品。Linux 也是类似道理完整装完的根分区会明显大于一个初始最小安装。遇到半成品最省事的做法就是删掉重装别在残缺的分区上折腾修复浪费的时间远超重来一遍。重装前记得调整虚拟机的硬盘大小和内存分配给系统留足空间。2.5 磁盘控制器与虚拟硬件类型不兼容虚拟机里的硬盘和光驱有两种常见控制器IDE和SATA/SCSINVMe 也算这一类。老系统比如 Windows XP、早期的一些 Linux 旧内核只认识 IDE 控制器你给它配上 SATA 控制器安装程序可能都看不到硬盘或者装完了引导阶段不认识这个控制器报错退出。反过来新系统在 IDE 上通常也能跑但性能会打折扣。这也是为什么老机器在虚拟机里装系统时经常要在设置里把光驱和硬盘都改成 IDE 模式。判断方法是看虚拟机的编辑设置里硬盘和光驱挂载在哪个控制器下SCSI 还可以细分为 LSI Logic SAS、LSI Logic Parallel、BusLogic 几种不同类型对应不同的系统兼容性。3. 现场修复不同报错场景下的具体操作3.1 全新安装第一次开机就报错全新装的虚拟机第一次开机就报这个错先别急着怀疑镜像有问题按下面的顺序查基本五分钟内能定位。第一步确认虚拟机的固件类型和你要装的系统匹配。Windows 8 以前、大多数轻量 Linux 用传统 BIOS 更稳妥Windows 10/11、Ubuntu 20.04 以后的版本默认推荐 UEFI。第二步进虚拟机设置看光驱ISO 路径对不对、两个连接的勾有没有打上。第三步再进固件设置界面把启动顺序里的光驱提到第一位。这三步都不行再考虑镜像本身损坏重新下载校验哈希值。如果为了确认是不是安装介质的问题可以拿这个 ISO 在别的虚拟机里试一下或者用同样的设置换一个镜像试很快就能分辨问题出在介质还是设置上。3.2 装完重启后才开始报错这是最典型的引导记录问题现场。安装程序跑完、提示重启你重启之后系统起不来了说明系统文件写进去了但引导记录没写对。这种情况要分 Windows 和 Linux 用不同的修复思路我不建议直接重装因为数据都还在盘上。Windows 的修复思路是拿安装镜像启动进入修复计算机→疑难解答→命令提示符然后依次执行bootrec /fixmbr bootrec /fixboot bootrec /scanos bootrec /rebuildbcdfixmbr重写主引导记录fixboot重写分区引导扇区scanos扫描系统安装rebuildbcd重建引导配置数据。如果是 UEFI 模式引导丢了用bcdboot指定 Windows 目录和 EFI 分区bcdboot C:\Windows /s S: /f UEFI这里的C:是 Windows 所在分区S:是 EFI 系统分区盘符用diskpart里的list volume可以查到具体的盘符别照抄先确认。Linux 的修复思路是进 Live 环境把根分区挂载到一个临时目录再 chroot 进去重装 GRUBsudo mount /dev/sda2 /mnt sudo mount /dev/sda1 /mnt/boot/efi # UEFI 场景才需要且路径按实际情况 for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done sudo chroot /mnt grub-install /dev/sda update-grub exit传统 BIOS 场景不需要挂载 EFI 分区grub-install的目标写整块盘如/dev/sda而不是分区。执行完卸载退出、重启基本就能进系统。这套命令我在 Ubuntu、Debian、CentOS 系列上都用过逻辑一致只是分区设备名要按实际情况改。3.3 用得好好的虚拟机突然报错一台本来正常的虚拟机某天开机报错通常和你最近做的操作有关。回忆一下是不是给硬盘扩容了、把虚拟机文件移动到别的盘了、从别的机器克隆过来的、或者宿主机崩溃过一次导致虚拟机磁盘文件损坏了扩容和移动最常见。虚拟磁盘扩容之后如果系统内部的分区表和引导记录位置没同步更新引导就会错位虚拟机文件被移动、宿主机换了硬件GRUB 里按 UUID 引用的根分区地址找不到了同样起不来。修复方式和 3.2 节类似进救援环境重装引导、更新配置即可。如果是宿主机异常关机导致磁盘文件损坏情况可能更麻烦需要检查.vmdk文件完整性必要时用vmware-vdiskmanager之类的工具修复。这类工具的具体用法随版本变化操作前一定要先备份整个虚拟机目录把.vmdk、.vmx都完整复制一份再动手。3.4 修复完怎么确认真的好了修引导不是执行完命令就完事要验证两步一是能进系统二是重启之后还能进。很多人修完第一次能进重启又报错说明修复不彻底——可能引导装到了临时挂载点重启后挂载点消失就失效了。验证方法是进入系统后正常关机不是挂起再启动一次看看能不能顺利自检到系统。然后再重启一次两次都正常才说明引导记录真的写对位置了。Linux 下可以顺手看一眼/boot/grub/grub.cfg或者/boot/efi/EFI/目录确认引导文件确实在物理分区里而不是挂在临时内存上。修好之后建议立刻打一个快照把当前这个能正常启动的状态存下来。下次再出问题直接从快照恢复省得重新走一遍修复流程。快照是虚拟机相比物理机最大的优势用起来。4. 完整走一遍从新建虚拟机到进入桌面的安装流程4.1 建机之前的准备工作准备工作做不好安装过程必然磕磕绊绊。第一件事是确认宿主机剩余空间虚拟机磁盘建议留出至少 40GB 动态分配加上内存、快照占用的空间宿主机至少空出 100GB 比较从容。第二件事是下载系统镜像从官方渠道拿下完校验哈希值别用来路不明的镜像这是安全底线。第三件事是规划内存和 CPU。给虚拟机的内存不能超过宿主机物理内存的一半否则宿主机自己会卡到影响使用CPU 核心数也别贪多2 到 4 核对于日常学习和开发足够了。第四件事是确定固件类型和分区表方案这个前面讲过按你要装的系统来定装之前定好比装完改省事得多。4.2 新建向导里每一个选项的取舍新建虚拟机的向导看着简单其实每一步都有讲究我按顺序说一下。第一步选典型还是自定义我建议选自定义因为典型模式会把固件类型、控制器类型这些关键选项藏起来出问题时不好排查。第二步选择安装来源这里选稍后安装操作系统反而更干净让虚拟机先用一个空盘启动安装程序从零分区引导记录写得更规范如果你选安装程序光盘映像文件向导会自动挂载 ISO 并开启启动时连接方便但控制权少。第三步选客户机操作系统和版本这一步要选准VMware 会据此决定默认的控制器类型和固件模式选错了后面还得手动改。第四步命名和位置位置别放在系统盘根目录单独建一个文件夹管理将来备份、迁移都方便。第五步磁盘容量建议给 60GB 起步动态分配如果你追求磁盘性能且不在意空间占用可以选预分配但会立刻占用全部空间。最后一步自定义硬件里把内存、CPU 调一调确认 CD/DVD 挂载了 ISO 并勾选启动时连接网络适配器选 NAT 或桥接看需求。这一步全部检查到位后面安装就顺了。4.3 安装过程中的分区与引导配置安装程序启动后分区这一步是引导能不能成功的分水岭。Windows 安装时如果是全新空白盘直接选整块磁盘让它自动分区就行它会自动创建 EFI 系统分区或系统保留分区引导记录也会正确写入。如果你手动分区一定要注意别把引导相关的分区删了或者漏建。Linux 安装以 Ubuntu 为例推荐选清除整个磁盘并安装它同样会自动处理 EFI 分区。手动分区的朋友要记住UEFI 场景必须有一个EFI 系统分区通常 512MB 到 1GB挂载点/boot/efiFAT32 格式传统 BIOS 场景可以不单独分/boot但分了更稳。引导加载器的安装位置默认指向整块盘如/dev/sda别改成某个分区。安装过程中如果提示检测到主机启用了 Hyper-V 或虚拟化冲突之类的信息通常和宿主机的虚拟化功能抢占有关按提示处理或调整相关设置后重试。安装期间尽量别让宿主机休眠也不要在安装进度过半时强制关闭虚拟机前面说过半成品系统基本都是这么来的。4.4 装完之后的收尾检查清单系统装完、第一次进入桌面之后别急着开始用花两分钟做几项检查能避免后面踩坑。我习惯按下面这个清单过一遍。检查项目的操作方法拔掉 ISO 的启动时连接防止再开机读光驱虚拟机设置里取消 CD/DVD 的启动时连接立即创建快照保存干净系统状态右键虚拟机 → 快照 → 拍摄快照确认网络连通后续装软件、更新需要ping一下外网地址检查磁盘剩余空间防止后续操作空间不足df -hLinux或资源管理器Windows更新系统补丁修复安全漏洞系统自带更新或包管理器快照这一步尤其重要我见过太多人装完系统花了两小时配好环境结果某次误操作把系统弄坏了又没有快照只能从头再来。装完就拍一个配好环境再拍一个这是好习惯。5. 那些文档里不会写、但一定要知道的经验5.1 快照、克隆与硬盘变动埋下的雷快照方便但快照用多了会埋雷。快照并不是把当前状态复制一份那么简单它记录的是磁盘的增量变化。快照链拉得太长磁盘性能会下降而且一旦你把虚拟机目录里的文件手动挪动过快照链很容易断裂导致虚拟机起不来或者报了跟引导无关但同样让人头大的错误。更隐蔽的是克隆。用链接克隆快速复制几台虚拟机表面上省空间实际上它们共享基础磁盘一旦基础磁盘被修改或移动所有克隆体都可能出问题。而完整克隆如果是在系统运行时做的克隆出来的机器可能带有一份脏的文件系统状态开机也可能报Operating System not found。我给的经验是打快照前先关机克隆前先把虚拟机关机克隆之后第一次开机让系统自己检查一遍磁盘。硬盘扩容或虚拟机移动位置后如果是 Linux照着第 3 节的 chroot 方法重装一遍 GRUB 最省心别指望它自己适应。5.2 常见问题速查表排查了半天没头绪的时候翻一下这张表对号入座。报错现象大概率原因优先排查动作装完重启报 OS not found引导记录没写对检查固件与分区表是否匹配新建虚拟机开机就报错光驱没挂载 ISO看 CD/DVD 连接状态进固件设置看不到引导项启动顺序问题调整启动顺序把硬盘提前克隆/扩容后报错引导记录位置错位进救援环境重装引导报错附带宽窄不一的乱码磁盘文件可能损坏先备份再检查磁盘完整性老系统装不上或装完不启动控制器类型不兼容把硬盘光驱改成 IDE 试试这张表覆盖了我在实际中遇到的大部分情况但排错讲究的是逻辑不是背答案。每一条都要回到是什么让固件找不到引导记录这个根本问题上才能举一反三。5.3 一套可以长期沿用的排错习惯最后分享几个我养成的习惯比记住某条具体命令更有价值。第一动手前先备份。虚拟机文件不大出问题前把整个目录复制一份这个动作救过我无数次。第二改设置一次只改一个改完立刻测试这样才能知道是哪个改动起的作用一次改一堆成功了不知道为啥成功失败了也不知道是谁的锅。第三善用固件界面的启动菜单开机时按对应热键可以临时选择从哪个设备启动这个功能在排查阶段能帮你快速确认硬盘上的系统到底能不能被引导。第四给虚拟机命名和目录起有意义的名字ubuntu-2204-dev比新建虚拟机 1有用得多几个月后你还能一眼认出它是干嘛的。排错这件事没有捷径核心就是理解每一层在做什么然后一层层往下查。Operating System not found看着吓人拆开来看不过是固件没找到门而已门无非就是那几种——没装、装错位置、锁坏了。按这个思路走你迟早会形成自己的排查节奏遇到再陌生的报错也能从容下手。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →