安装程序显示 “No hard drives have been found”,不等于硬盘为空,也不等于应该立即改成 IDE 模式。现代机器可能使用 SATA/AHCI、NVMe、Intel VMD/RST、主板或硬件 RAID、HBA,虚拟机还可能使用 VirtIO/SCSI/NVMe 控制器。应先确定磁盘在哪一层消失,再做一项可撤销的改变。
数据安全边界: 本文只做只读识别与诊断,不提供分区、格式化、清除 RAID 元数据或写入磁盘的命令。在看见正确的型号、容量和序列号并完成可恢复备份之前,不要点击 “Erase disk”、创建分区表或初始化 RAID。
Table of Contents
先判断“找不到”发生在哪一层
| 层次 | 应当看到的证据 | 看不到通常表示 | 下一步 |
|---|---|---|---|
| UEFI/BIOS 或 RAID 管理器 | 物理盘,或 RAID 控制器导出的逻辑盘 | 供电、插槽、线缆、固件设置、盘体或阵列问题 | 停止安装;查设备厂商手册与硬件状态 |
| PCI/平台控制器 | SATA、AHCI、NVMe、VMD、RAID、SCSI 或 VirtIO 控制器 | 固件隐藏/禁用设备、虚拟硬件未挂载,或平台问题 | 核对固件/虚拟机清单,不改磁盘内容 |
| Linux 内核块设备 | /dev/sdX、/dev/nvmeXnY、/dev/mapper/... 等 |
内核或驱动不支持、模块未加载、签名受阻、固件/控制器模式不兼容 | 查内核日志、驱动绑定与安装镜像支持范围 |
| 安装器存储页面 | 与内核相同的目标盘或逻辑卷 | 安装器筛选、多路径/RAID 组装、加密或安装器缺陷 | 保存日志,查发行版的专用存储说明 |
| 分区和文件系统 | 已有分区可识别 | 加密、损坏或不支持的元数据 | 这不是“硬盘未检测”;不要格式化来诊断 |
如果固件本身看不到磁盘,换安装镜像通常无效。如果内核已经看到正确块设备,盲目切换 AHCI、IDE 或 VMD 反而会增加风险。
改设置以前的停止线
- 对所有需要保留的数据做可验证、可恢复的备份;RAID 不是备份。
- 记录磁盘的型号、容量、序列号、当前控制器模式、RAID/VMD 配置和启动模式;拍摄固件原始设置。
- 双启动 Windows 时,先在 Windows 中确认 BitLocker 状态,并把恢复密钥保存在该电脑之外的安全位置。微软说明,某些固件变更前应暂停 BitLocker,以免下次启动进入恢复模式;验证完成后恢复保护。
- 安排维护窗口,确保有恢复介质、设备厂商说明和恢复原设置的路径。
- 一次只改一项。如果现有系统不能启动,立即恢复原设置,不要继续叠加变化。
下面这些操作不属于检测步骤:mkfs、wipefs、创建新分区表、初始化磁盘、删除/重建阵列、清除控制器元数据。本文故意不提供其命令。
建立只读证据
使用仍受支持的发行版当前安装镜像,并按发行版的签名/校验和说明验证镜像。先进入 Live、Rescue 或安装器 shell,不开始安装。下面的命令不会主动格式化磁盘:
uname -a
cat /proc/cmdline
mokutil --sb-state
sudo lspci -nnk
sudo lsblk --paths --output NAME,TYPE,SIZE,MODEL,SERIAL,TRAN,FSTYPE,MOUNTPOINTS
cat /proc/partitions
lsmod
sudo dmesg --level=err,warn
sudo dmesg | grep -i -E 'ahci|ata|nvme|vmd|raid|scsi|virtio|firmware|module|signature|secure'
某些精简安装环境没有 mokutil,或限制读取 dmesg;这本身不是磁盘故障。保存命令、发行版版本、ISO 校验值、内核版本、机器/主板型号和时间。对外分享日志前,遮盖序列号、WWID、主机名、用户名、网络地址及其他资产标识。
阅读证据时按顺序判断:
lspci -nnk完全没有相关控制器:回到固件或虚拟机配置层。- 控制器存在但
Kernel driver in use为空,或日志报告不支持/缺少固件:查发行版和硬件厂商对该准确型号、发行版版本与架构的支持。 - 日志出现模块签名、密钥或锁定错误:按 Secure Boot 分支处理,不要随意下载
.ko文件。 lsblk已出现正确的磁盘,但安装器没有:检查安装器日志、专用存储/多路径/RAID 页面及已知问题,不要改控制器模式来“碰碰运气”。lsblk只有安装 U 盘:用型号和传输类型确认,避免把 U 盘误认为目标盘。
如果镜像带有 nvme-cli,可以补充运行:
sudo nvme list
没有这个命令不需要在安装环境中临时安装未知软件;lsblk、PCI 绑定和内核日志已经能建立主要证据。
按存储拓扑排查
SATA 与 AHCI
现代 Linux 通常以 AHCI 使用 SATA 盘。2011 年常见的“切到 Compatibility/IDE”只适用于特定旧硬件和旧安装器,不是当前默认方案。先用较新的、受支持的安装镜像;只有设备厂商或发行版针对该准确型号明确要求时,才考虑兼容模式。
改变 SATA 模式会改变现有操作系统看到启动盘的方式。双启动机器必须先完成备份、BitLocker 门槛和 Windows 侧的控制器迁移准备;如果 Windows 报 INACCESSIBLE_BOOT_DEVICE,恢复原控制器模式并停止安装排障。
NVMe
NVMe 盘可能直接暴露给操作系统,也可能位于 VMD、RAID 或其他平台控制器之后。固件看见 NVMe 型号而 Linux 只看见 VMD/RAID 控制器时,应查该机器和发行版对该拓扑的支持,不应因为 /dev/nvme0n1 不存在就判断盘已损坏。
先更新到该发行版当前安装介质或厂商支持的固件版本,并记录升级前后状态。固件升级本身有断电和 BitLocker 恢复风险,必须按厂商流程执行,不应作为无证据的第一步。
Intel VMD/RST 与固件 RAID
VMD/RST 可能把单盘或阵列通过控制器呈现。Canonical 当前文档明确警告:关闭 RST 或从 RST 改为 AHCI 可能破坏阵列可访问性,也可能让现有 Windows 无法启动。
安全顺序是:
- 确认这是普通单盘、缓存/Optane、固件 RAID,还是企业管理的阵列。
- 检查受支持的新安装镜像能否直接识别。
- 如果必须双启动,严格使用发行版和设备厂商针对该型号的 RST-to-AHCI 流程;先备份、准备恢复密钥并验证回滚。
- 改一项设置后,先验证原 Windows/现有系统仍能正常启动,再回到 Linux 安装器。
- 对真实 RAID,不要关闭控制器、拆散成员盘或新建逻辑盘;交由阵列管理员按备份和恢复计划处理。
硬件 RAID 通常要先在控制器中存在健康的逻辑盘,操作系统才会看见一个安装目标。创建或重建逻辑盘可能清除数据,因此不属于本文的安全诊断步骤。
虚拟机
确认虚拟磁盘确实已挂载、未标记为只在另一快照/虚拟机中使用,并记录虚拟控制器类型。现代虚拟环境常用 VirtIO、SCSI、SATA 或 NVMe;不要把“改成 IDE”当通用修复。
不要删除已有虚拟磁盘。若要区分驱动问题和原盘问题,可在关机和快照/备份后,添加一个明确为空、容易按容量识别的测试盘;验证后移除测试盘,不改变原盘链或快照关系。
安装镜像、内核与驱动
优先使用发行版仍支持的当前点版本镜像,并验证其签名和校验和。旧 ISO 的内核可能早于控制器;“磁盘在新 Live 镜像可见、旧镜像不可见”是强证据,但仍不授权写盘。
只有发行版、硬件厂商或可信控制器厂商明确说明需要时,才加载与准确发行版、版本、内核、架构和控制器 ID匹配的官方驱动更新介质。Red Hat 的当前安装文档也把驱动更新定义为可选、仅在确有需要时使用。
Secure Boot 开启时,附加内核模块可能因签名不被信任而拒绝加载。保留 Secure Boot 是默认选择;获取发行版或厂商签名的匹配驱动,并检查日志。不要把永久关闭 Secure Boot 或强制加载未知模块当作首选修复。
BitLocker、加密与“盘存在但内容不可见”
BitLocker 会使未解锁内容对 Linux 安装器不可读;这与固件或内核完全看不到磁盘不同。Canonical 说明,某些并排安装流程无法在 BitLocker 启用时安全映射 Windows 数据。
- 想保留 Windows:停止安装,按当前 Ubuntu/微软文档和你的 Windows 版本处理 BitLocker;先验证备份与恢复密钥。
- 想覆盖整个 Windows:只有数据所有者明确接受不可恢复的数据删除,且再次核对目标磁盘后,才在安装器中选择破坏性路径。
- 企业设备:BitLocker、Secure Boot、VMD/RST 和固件策略可能由组织管理,应联系管理员,不要规避策略。
- LUKS、硬件加密盘和其他加密同理:能看到块设备却不能读取内容,不是加载存储驱动的理由。
一个变化、一个验证、一个回滚点
| 尝试 | 成功证据 | 失败或停止条件 | 回滚 |
|---|---|---|---|
| 换用已验证的当前安装镜像 | 同一固件配置下出现正确磁盘 | 仍无控制器/块设备 | 回到原介质;保留日志比较 |
| 使用官方匹配驱动更新 | 控制器绑定预期驱动,磁盘按型号/容量出现 | 签名失败、版本不符、异常 I/O | 移除驱动介质,重启干净环境 |
| 按官方流程从 RST/VMD 改为 AHCI | 原系统和 Linux 都能正确识别 | Windows 不启动、阵列/缓存警告、盘数变化 | 立即恢复记录的原固件设置 |
| 调整虚拟控制器 | 测试盘和目标盘映射符合预期 | 快照链、磁盘路径或启动盘含糊 | 关机并恢复虚拟机快照/原控制器 |
| 固件更新 | 厂商发布说明覆盖该问题,更新后证据改善 | 型号/版本不匹配、供电或恢复条件不足 | 使用厂商支持的恢复路径;不要强刷 |
磁盘出现后仍要做最后一道门槛:比较型号、序列号、容量、现有分区和预期安装目标;让另一位操作者复核更好。只有完成备份并明确接受写入后,才离开本文的只读诊断阶段。
什么时候应该停止并升级处理
- 固件看不到盘,或出现介质错误、掉盘、重复控制器重置、I/O 错误。
- RAID 降级、外来配置、缓存未落盘,或成员盘数量不符。
- 设备属于公司/学校,固件、BitLocker 或 Secure Boot 受管理。
- 唯一数据副本在目标盘上,或恢复密钥/备份未经验证。
- 需要未知来源驱动、关闭安全策略、拆盘或写入元数据才能继续。
此时应保存去标识化证据,联系设备厂商、发行版支持、存储管理员或数据恢复专业人员。
当前官方资料
- Ubuntu 安装镜像完整性验证
- Ubuntu Desktop 安装教程
- Ubuntu:安装时的 Intel RST
- Ubuntu:让 Windows 改用 AHCI
- Ubuntu:安装时的 BitLocker
- Microsoft:BitLocker 恢复流程
- Red Hat Enterprise Linux 10:安装期间更新驱动
- Red Hat Enterprise Linux 10:安装器存储设备与硬件 RAID
- Linux 内核:模块签名机制
历史原文存档(2011,仅供考证)
存档说明: 以下是
source_export的完整可见正文,仅规范化了行尾空白;未作删节或安全/隐私替换。它保留了当年的 IDE 兼容模式建议、旧发行版举例和措辞,不是当前操作指南。链接位于纯文本代码块中,不会作为操作入口。
解决:安装linux时出现:No hard drives have been found
Table of Contents
Toggle
- [问题描述](https://blog.lazying.art/en/html/computer_internet/unix_linux/429/%e5%ae%89%e8%a3%85linux%e6%97%b6%e5%87%ba%e7%8e%b0%ef%bc%9ano-hard-drives-have-been-found.html/#%E9%97%AE%E9%A2%98%E6%8F%8F%E8%BF%B0)
- [原因分析](https://blog.lazying.art/en/html/computer_internet/unix_linux/429/%e5%ae%89%e8%a3%85linux%e6%97%b6%e5%87%ba%e7%8e%b0%ef%bc%9ano-hard-drives-have-been-found.html/#%E5%8E%9F%E5%9B%A0%E5%88%86%E6%9E%90)
- [解决方案](https://blog.lazying.art/en/html/computer_internet/unix_linux/429/%e5%ae%89%e8%a3%85linux%e6%97%b6%e5%87%ba%e7%8e%b0%ef%bc%9ano-hard-drives-have-been-found.html/#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88)
- [虚拟机](https://blog.lazying.art/en/html/computer_internet/unix_linux/429/%e5%ae%89%e8%a3%85linux%e6%97%b6%e5%87%ba%e7%8e%b0%ef%bc%9ano-hard-drives-have-been-found.html/#%E8%99%9A%E6%8B%9F%E6%9C%BA)
- [实体机](https://blog.lazying.art/en/html/computer_internet/unix_linux/429/%e5%ae%89%e8%a3%85linux%e6%97%b6%e5%87%ba%e7%8e%b0%ef%bc%9ano-hard-drives-have-been-found.html/#%E5%AE%9E%E4%BD%93%E6%9C%BA)
- [方案1](https://blog.lazying.art/en/html/computer_internet/unix_linux/429/%e5%ae%89%e8%a3%85linux%e6%97%b6%e5%87%ba%e7%8e%b0%ef%bc%9ano-hard-drives-have-been-found.html/#%E6%96%B9%E6%A1%881)
- [方案2](https://blog.lazying.art/en/html/computer_internet/unix_linux/429/%e5%ae%89%e8%a3%85linux%e6%97%b6%e5%87%ba%e7%8e%b0%ef%bc%9ano-hard-drives-have-been-found.html/#%E6%96%B9%E6%A1%882)
## 问题描述
安装linux时出现:
No hard drives have been found.
You probably need to manually choose device drives for the installation to succeed.
Would you like to select drives now?
## 原因分析
如果你是在本身机器上安装,需要把硬盘接口设置成IDE的;如果你是用虚拟机的话必须创建一个IDE硬盘。
## 解决方案
### 虚拟机
虚拟机默认创建的硬盘是SCSI的。
具体操作:
在虚拟机里把现在的scsi硬盘删除,然后再添加一个ide硬盘就可以了。
### 实体机
#### 方案1
找你的 SATA 驱动,在安装时载入 SCSI 的地方载入 SATA 驱动。不过前提是你的 Linux 系统是特殊的一些版本,基本都是服务器专用版本,因为新版本的内核自带 SATA 驱动,所以一把厂家只提供特殊需要的一些系统版本,一般都只有 RHEL 4/5 系列,SUSE 企业版两个。另外还需要你的主板是特殊的主板,一般都是服务器专用主板(就是一个主板价格顶上一台家用机的那种)。
#### 方案2
打开主板 SATA 的兼容模式(有的叫传统模式),但这样如果你的 Windows 系统是 SATA 状态下面安装的,它会变得不能使用,听说需要重装,但也不绝对。但这样 SATA 的性能优势全无,听说也不能打开 DMA 来加速硬盘的读写。但性能损失多少不知道。
具体操作
按F1(或F2、ESC)进入BIOS,Config–>SATA–>Compatibility[或IDE]
