<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>BIOS on KnightLi的博客</title>
        <link>https://knightli.com/tags/bios/</link>
        <description>Recent content in BIOS on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sun, 24 May 2026 00:51:13 +0800</lastBuildDate><atom:link href="https://knightli.com/tags/bios/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Above 4G Decoding 是什么？为什么多 PCIe 设备、NAS 扩展卡和大显存显卡建议开启</title>
        <link>https://knightli.com/2026/05/24/above-4g-decoding-pcie-mmio-bar-explained/</link>
        <pubDate>Sun, 24 May 2026 00:51:13 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/24/above-4g-decoding-pcie-mmio-bar-explained/</guid>
        <description>&lt;p&gt;&lt;code&gt;Above 4G Decoding&lt;/code&gt; 是主板 BIOS 里的一个底层 PCIe 资源分配选项。它常见于 NAS、小主机、工作站、多显卡主机、软路由、HBA / SATA 扩展卡和本地 AI 机器的调试过程中。&lt;/p&gt;
&lt;p&gt;简单说，它的作用是：允许 64 位系统把 PCIe 设备需要的 MMIO 地址空间，分配到 4GB 以上的物理地址范围。&lt;/p&gt;
&lt;p&gt;这句话听起来很底层，但它解决的问题很现实：当主板上插了显卡、NVMe、网卡、SATA 扩展卡、采集卡、HBA 等多个 PCIe 设备时，如果所有设备都挤在 4GB 以下的老地址空间里抢位置，就可能出现资源分配失败、设备不识别，甚至开机卡死。&lt;/p&gt;
&lt;h2 id=&#34;为什么会有-4gb-这个边界&#34;&gt;为什么会有 4GB 这个边界
&lt;/h2&gt;&lt;p&gt;4GB 边界来自 32 位时代的历史包袱。&lt;/p&gt;
&lt;p&gt;32 位地址空间最大只能寻址：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2^32 bytes = 4GB
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;现代电脑早就是 64 位 CPU 和 64 位操作系统，内存也经常是 16GB、32GB、64GB 甚至更多。但主板在开机自检和 PCIe 设备初始化时，仍然需要考虑旧式兼容性。很多 PCIe 设备的资源映射默认会先被安排在 4GB 以下的地址空间内。&lt;/p&gt;
&lt;p&gt;问题在于，4GB 以下的空间并不全是给内存用的。系统还要在里面划出一部分地址给硬件设备使用。&lt;/p&gt;
&lt;p&gt;这就是 &lt;code&gt;MMIO&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;mmio-是什么&#34;&gt;MMIO 是什么
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;MMIO&lt;/code&gt; 是 Memory-Mapped I/O，内存映射输入输出。&lt;/p&gt;
&lt;p&gt;CPU 不能像读写普通内存那样直接“摸到”PCIe 设备内部的寄存器和显存。它需要把设备的一部分寄存器、缓冲区或显存窗口映射到系统地址空间中。CPU 读写这段地址，就等于在和设备通信。&lt;/p&gt;
&lt;p&gt;可以粗略理解为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设备需要一块地址范围。&lt;/li&gt;
&lt;li&gt;主板给它分配一段系统物理地址。&lt;/li&gt;
&lt;li&gt;CPU 访问这段地址时，实际访问的是 PCIe 设备。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这块映射区域不是真的普通 RAM，而是硬件设备占用的地址窗口。&lt;/p&gt;
&lt;p&gt;在旧式默认配置下，很多设备的 MMIO 区域会被限制在 4GB 以下，常见就是 3GB 到 4GB 附近那段空间。设备少时通常没问题，设备一多就开始拥挤。&lt;/p&gt;
&lt;h2 id=&#34;bar-是什么&#34;&gt;BAR 是什么
&lt;/h2&gt;&lt;p&gt;每个 PCIe 设备都会通过 &lt;code&gt;BAR&lt;/code&gt; 向主板声明自己需要多少地址空间。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;BAR&lt;/code&gt; 是 Base Address Register，基地址寄存器。它的作用是告诉主板：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我需要一块 MMIO 空间，请给我分配一个地址范围。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;显卡、NVMe、SATA 控制器、网卡、HBA、USB 扩展卡都可能需要 BAR 空间。设备越多，占用的地址窗口越多。显卡这类设备还可能需要更大的映射空间。&lt;/p&gt;
&lt;p&gt;如果 4GB 以下可用 MMIO 空间不够，主板就可能无法给后插入的设备分配资源。&lt;/p&gt;
&lt;h2 id=&#34;不开启-above-4g-decoding-可能出现什么问题&#34;&gt;不开启 Above 4G Decoding 可能出现什么问题
&lt;/h2&gt;&lt;p&gt;如果关闭 &lt;code&gt;Above 4G Decoding&lt;/code&gt;，主板会更倾向于把 PCIe 设备资源塞进 4GB 以下的地址空间。设备少时看不出来，设备多时就可能出现问题。&lt;/p&gt;
&lt;p&gt;常见场景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一块独立显卡。&lt;/li&gt;
&lt;li&gt;一个或多个 NVMe SSD。&lt;/li&gt;
&lt;li&gt;一张 JMB585 / ASM1166 SATA 扩展卡。&lt;/li&gt;
&lt;li&gt;一张 2.5G / 10G 网卡。&lt;/li&gt;
&lt;li&gt;一个 Wi-Fi / 蓝牙模块。&lt;/li&gt;
&lt;li&gt;额外的 HBA、采集卡、USB 扩展卡。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些设备都要向主板申请 BAR / MMIO 地址空间。如果 4GB 以下空间被占满，主板可能会出现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;某张 PCIe 卡无法识别。&lt;/li&gt;
&lt;li&gt;BIOS 里看不到设备。&lt;/li&gt;
&lt;li&gt;Linux / Windows 里设备缺失或报资源错误。&lt;/li&gt;
&lt;li&gt;开机卡在 POST 阶段。&lt;/li&gt;
&lt;li&gt;黑屏或光标闪烁。&lt;/li&gt;
&lt;li&gt;多设备同时插入时才出问题，单独插每张卡又正常。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在 JMB585 SATA 扩展卡场景里，很多人会遇到插卡后主板卡在 BIOS 前，或者加了 NVMe、网卡后扩展卡突然不识别。除了 Option ROM、CSM、PCIe Gen 速率之外，PCIe 地址空间分配也是一个值得排查的方向。&lt;/p&gt;
&lt;h2 id=&#34;开启-above-4g-decoding-后发生了什么&#34;&gt;开启 Above 4G Decoding 后发生了什么
&lt;/h2&gt;&lt;p&gt;开启：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Above 4G Decoding = Enabled
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;等于告诉主板：允许把支持 64 位地址的 PCIe 设备 MMIO 资源，分配到 4GB 以上的地址空间。&lt;/p&gt;
&lt;p&gt;这样，PCIe 设备不必全部挤在 4GB 以下的小空间里。主板可以把部分设备的 BAR / MMIO 映射放到更高地址，减少资源冲突。&lt;/p&gt;
&lt;p&gt;对现代 64 位系统来说，这通常是合理配置。尤其是以下机器：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多盘 NAS。&lt;/li&gt;
&lt;li&gt;多网卡软路由。&lt;/li&gt;
&lt;li&gt;插了 SATA / HBA 扩展卡的小主机。&lt;/li&gt;
&lt;li&gt;多显卡工作站。&lt;/li&gt;
&lt;li&gt;AI 推理或训练机器。&lt;/li&gt;
&lt;li&gt;同时有独显、NVMe、采集卡、扩展卡的桌面主机。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的目标不是提升普通软件性能，而是让硬件资源分配更宽松。&lt;/p&gt;
&lt;h2 id=&#34;它和-jmb585--sata-扩展卡有什么关系&#34;&gt;它和 JMB585 / SATA 扩展卡有什么关系
&lt;/h2&gt;&lt;p&gt;JMB585 这类 SATA 扩展卡本身不一定需要很大的 MMIO 空间。但问题往往不是它单独需要多少，而是整台机器上所有 PCIe 设备一起抢地址空间。&lt;/p&gt;
&lt;p&gt;例如一台小主机里可能同时有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个 NVMe 系统盘。&lt;/li&gt;
&lt;li&gt;一个板载网卡。&lt;/li&gt;
&lt;li&gt;一个 Wi-Fi 模块。&lt;/li&gt;
&lt;li&gt;一张 JMB585 五口 SATA 扩展卡。&lt;/li&gt;
&lt;li&gt;可能还有独立显卡或其他控制器。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 BIOS 资源分配比较保守，JMB585 可能成为最后一个被初始化的设备。前面的设备已经占掉不少 4GB 以下资源，到它申请 BAR 时，主板就可能分配失败或进入异常状态。&lt;/p&gt;
&lt;p&gt;这时开启 &lt;code&gt;Above 4G Decoding&lt;/code&gt;，可以让主板把一部分设备资源安排到 4GB 以上，从而降低冲突概率。&lt;/p&gt;
&lt;p&gt;它不能修复坏卡，也不能解决所有 PCIe 链路训练问题，但在“多设备插满后才异常”的场景里非常值得尝试。&lt;/p&gt;
&lt;h2 id=&#34;它和-resizable-bar--sam-的关系&#34;&gt;它和 Resizable BAR / SAM 的关系
&lt;/h2&gt;&lt;p&gt;很多人是因为显卡性能设置才第一次见到 &lt;code&gt;Above 4G Decoding&lt;/code&gt;。例如 NVIDIA / AMD 显卡相关的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Resizable BAR&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Re-Size BAR&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ReBAR&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Smart Access Memory&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SAM&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它们和 &lt;code&gt;Above 4G Decoding&lt;/code&gt; 有关系，但不是同一个东西。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Above 4G Decoding&lt;/code&gt; 是基础条件。它允许 PCIe 设备的 MMIO 资源被分配到 4GB 以上。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Resizable BAR&lt;/code&gt; 是进一步的能力。传统情况下，CPU 访问显卡显存时，通常只能通过较小窗口分段访问，例如 256MB 级别的映射窗口。启用 ReBAR 后，CPU 可以一次性映射更大范围的显存，理论上能减少访问切换开销。&lt;/p&gt;
&lt;p&gt;很多主板要求先开启 &lt;code&gt;Above 4G Decoding&lt;/code&gt;，再开启 &lt;code&gt;Resizable BAR&lt;/code&gt;。所以可以理解为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Above 4G Decoding&lt;/code&gt;：先允许设备地址放到 4GB 以上。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Resizable BAR&lt;/code&gt; / &lt;code&gt;SAM&lt;/code&gt;：再允许显卡 BAR 窗口变大。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对 NAS 和 SATA 扩展卡来说，重点通常不是 ReBAR，而是前者提供的 PCIe 地址空间。&lt;/p&gt;
&lt;h2 id=&#34;开启它有什么副作用&#34;&gt;开启它有什么副作用
&lt;/h2&gt;&lt;p&gt;对现代 64 位 Windows、Linux、Ubuntu、Debian、TrueNAS、Proxmox 等系统来说，开启 &lt;code&gt;Above 4G Decoding&lt;/code&gt; 通常没有明显负面影响。&lt;/p&gt;
&lt;p&gt;但仍然要注意几个点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;老旧 32 位操作系统可能不适合开启。&lt;/li&gt;
&lt;li&gt;某些很老的 BIOS 或古董 PCIe 设备可能兼容性不好。&lt;/li&gt;
&lt;li&gt;修改 BIOS 后如果无法启动，可以清 CMOS 或恢复默认设置。&lt;/li&gt;
&lt;li&gt;如果启用了 ReBAR / SAM，还要确认显卡、主板、系统和驱动都支持。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在现代硬件和 64 位系统上，它通常是建议开启的底层良性配置，尤其是设备较多时。&lt;/p&gt;
&lt;h2 id=&#34;什么时候建议开启&#34;&gt;什么时候建议开启
&lt;/h2&gt;&lt;p&gt;以下情况建议开启 &lt;code&gt;Above 4G Decoding&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 64 位操作系统。&lt;/li&gt;
&lt;li&gt;主板上插了多张 PCIe 设备。&lt;/li&gt;
&lt;li&gt;有独立显卡，尤其是 4GB 以上显存的显卡。&lt;/li&gt;
&lt;li&gt;使用 JMB585、ASM1166、HBA、阵列卡、采集卡等扩展设备。&lt;/li&gt;
&lt;li&gt;组装多盘 NAS 或软路由。&lt;/li&gt;
&lt;li&gt;使用多显卡、AI 算力卡或本地大模型机器。&lt;/li&gt;
&lt;li&gt;插上某张 PCIe 卡后开机卡死、黑屏、光标闪烁。&lt;/li&gt;
&lt;li&gt;单独插设备正常，多设备一起插就异常。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你正在排查 JMB585 SATA 扩展卡 POST 阶段卡死，推荐把它和这些设置一起检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;关闭 &lt;code&gt;CSM&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;禁用不需要的 &lt;code&gt;Storage OpROM&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;将 PCIe 速率从 &lt;code&gt;Auto&lt;/code&gt; 或 &lt;code&gt;Gen3&lt;/code&gt; 改成 &lt;code&gt;Gen2&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;开启 &lt;code&gt;Above 4G Decoding&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;更换 PCIe 插槽。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;在-bios-里一般叫什么&#34;&gt;在 BIOS 里一般叫什么
&lt;/h2&gt;&lt;p&gt;不同主板厂商命名略有差异，常见名称包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Above 4G Decoding
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Above 4GB MMIO BIOS assignment
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Memory Mapped I/O above 4GB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;64-bit PCIe decoding
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PCI 64-bit Resource Handling
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常见位置包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Advanced&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PCIe Settings&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PCI Subsystem Settings&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Chipset&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;North Bridge&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;IO Ports&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Boot&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有些主板会把它和 &lt;code&gt;Resizable BAR&lt;/code&gt; 放在一起，有些则藏在高级 PCIe 或芯片组选项里。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Above 4G Decoding&lt;/code&gt; 的核心作用，是让主板可以把 PCIe 设备的 MMIO / BAR 地址空间分配到 4GB 以上。它解决的不是驱动问题，而是 BIOS / PCIe 资源分配层面的地址空间问题。&lt;/p&gt;
&lt;p&gt;对只有少量设备的普通电脑来说，它可能看起来无感。对多盘 NAS、多网卡软路由、插了 JMB585 / ASM1166 SATA 扩展卡的小主机、多显卡工作站、本地 AI 主机来说，它就很重要。&lt;/p&gt;
&lt;p&gt;如果你遇到插上 PCIe 扩展卡后卡 BIOS、黑屏、光标闪烁、设备不识别，或者多设备同时插入才出问题，&lt;code&gt;Above 4G Decoding = Enabled&lt;/code&gt; 是一个值得优先检查的 BIOS 设置。它不是万能药，但它能让现代 64 位硬件摆脱 4GB 以下地址空间的旧限制，减少 PCIe 资源冲突。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>PCIe 扩展卡插上后 BIOS 前光标闪烁卡死，该怎么排查</title>
        <link>https://knightli.com/2026/05/24/jmb585-sata-card-bios-post-blinking-cursor-troubleshooting/</link>
        <pubDate>Sun, 24 May 2026 00:46:52 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/24/jmb585-sata-card-bios-post-blinking-cursor-troubleshooting/</guid>
        <description>&lt;p&gt;如果 PCIe 扩展卡插上后，机器连 BIOS 界面都进不去，只停在黑屏或主板启动前的光标闪烁界面，这通常不是 Linux 驱动问题，而是更早阶段的硬件级卡死。&lt;/p&gt;
&lt;p&gt;这个阶段操作系统还没有加载，所以 &lt;code&gt;pci=nomsi&lt;/code&gt;、&lt;code&gt;pcie_aspm=off&lt;/code&gt; 这类 Linux 内核参数完全帮不上忙。问题发生在 POST（加电自检）阶段，常见卡点包括 PCIe 链路训练、PCIe 资源分配、Option ROM 加载、Legacy / UEFI 兼容性冲突，或者扩展卡本身异常。&lt;/p&gt;
&lt;p&gt;换句话说：如果连 BIOS 都进不去，先不要急着改 Linux。要先让主板能完成自检。&lt;/p&gt;
&lt;h2 id=&#34;先理解这个故障意味着什么&#34;&gt;先理解这个故障意味着什么
&lt;/h2&gt;&lt;p&gt;正常开机时，主板会扫描 PCIe 设备，给设备分配 bus、I/O、MMIO 等资源，并决定是否加载设备自带的 Option ROM。某些 SATA 扩展卡、HBA、网卡、采集卡或转接卡会带有用于启动支持或设备初始化的固件，主板固件可能会尝试读取它。&lt;/p&gt;
&lt;p&gt;如果扩展卡、主板 BIOS、PCIe 插槽、电源、外接设备或 Option ROM 其中某一环不兼容，就可能卡在主板自检阶段。典型表现是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;黑屏，只剩光标闪烁。&lt;/li&gt;
&lt;li&gt;卡在主板 Logo 前后。&lt;/li&gt;
&lt;li&gt;按 &lt;code&gt;Del&lt;/code&gt;、&lt;code&gt;F2&lt;/code&gt;、&lt;code&gt;F11&lt;/code&gt;、&lt;code&gt;F12&lt;/code&gt; 无法进入 BIOS 或启动菜单。&lt;/li&gt;
&lt;li&gt;拔掉这张 PCIe 扩展卡后一切正常。&lt;/li&gt;
&lt;li&gt;换回原来的 NVMe、显卡、网卡后都能启动。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种情况可以理解为“主板还没来得及把控制权交给系统，就已经被这张卡卡住了”。&lt;/p&gt;
&lt;h2 id=&#34;哪些-pcie-扩展卡容易触发这个问题&#34;&gt;哪些 PCIe 扩展卡容易触发这个问题
&lt;/h2&gt;&lt;p&gt;这类 POST 卡死不只会出现在 JMB585 SATA 扩展卡上。凡是需要主板在开机阶段初始化、分配资源或加载 Option ROM 的 PCIe 设备，都可能触发类似问题。&lt;/p&gt;
&lt;p&gt;比较常见的设备包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JMB585、ASM1166 等 PCIe SATA 扩展卡。&lt;/li&gt;
&lt;li&gt;LSI / Broadcom HBA 或阵列卡。&lt;/li&gt;
&lt;li&gt;2.5G、10G、万兆电口或光口网卡。&lt;/li&gt;
&lt;li&gt;PCIe 转 M.2 / U.2 / SATA 转接卡。&lt;/li&gt;
&lt;li&gt;视频采集卡。&lt;/li&gt;
&lt;li&gt;USB 3.x 扩展卡。&lt;/li&gt;
&lt;li&gt;带 Option ROM 的老显卡、老 RAID 卡或服务器拆机卡。&lt;/li&gt;
&lt;li&gt;做工一般、固件魔改、EEPROM 异常的廉价 PCIe 卡。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些设备的问题不一定是“坏了”，也可能只是和当前主板 BIOS、插槽通道、PCIe 速率、启动模式或地址资源分配不兼容。&lt;/p&gt;
&lt;h2 id=&#34;为什么还没进系统linux-内核参数无效&#34;&gt;为什么还没进系统，Linux 内核参数无效
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;pci=nomsi&lt;/code&gt;、&lt;code&gt;pcie_aspm=off&lt;/code&gt;、&lt;code&gt;libata.force&lt;/code&gt; 这类参数都属于 Linux 内核启动参数。它们必须等内核加载后才会生效。&lt;/p&gt;
&lt;p&gt;而 BIOS 前光标闪烁、主板 Logo 前卡死、按键进不了 BIOS，说明系统还停在 POST 阶段。此时运行的是主板固件，不是 Linux 内核。换句话说，Linux 还没开始执行，自然也没有机会读取这些参数。&lt;/p&gt;
&lt;p&gt;所以这类故障的排查重点不是先改 &lt;code&gt;/etc/default/grub&lt;/code&gt;，而是先处理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BIOS / UEFI 启动模式。&lt;/li&gt;
&lt;li&gt;CSM / Legacy 兼容层。&lt;/li&gt;
&lt;li&gt;PCIe Option ROM。&lt;/li&gt;
&lt;li&gt;PCIe 链路训练。&lt;/li&gt;
&lt;li&gt;PCIe 地址空间和资源分配。&lt;/li&gt;
&lt;li&gt;扩展卡、插槽、供电和外接设备。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第一步拔掉扩展卡上的外接设备&#34;&gt;第一步：拔掉扩展卡上的外接设备
&lt;/h2&gt;&lt;p&gt;先做最低风险的排查：只保留 PCIe 扩展卡插在主板上，把接在扩展卡上的 SATA 数据线、外接设备线缆或硬盘供电先断开，让这张卡处于“不挂设备”的状态。&lt;/p&gt;
&lt;p&gt;然后开机测试：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果拔掉硬盘后能进 BIOS，说明扩展卡本身大概率没有把主板卡死，问题可能在某块硬盘、SATA 线、供电或启动盘识别上。&lt;/li&gt;
&lt;li&gt;如果仍然卡死，说明问题更可能在扩展卡和主板 PCIe / BIOS 兼容性上。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;为什么硬盘也可能导致 POST 卡死？有几种常见原因：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;某块硬盘的引导扇区或分区表异常，主板 BIOS 误判为启动盘后读取卡死。&lt;/li&gt;
&lt;li&gt;多块机械盘同时上电，电源瞬时电流不足，导致 SATA 控制器或硬盘异常。&lt;/li&gt;
&lt;li&gt;某根 SATA 线接触不良，导致控制器初始化阶段等待超时。&lt;/li&gt;
&lt;li&gt;某块硬盘本身健康状态很差，拖慢整条初始化流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果拔盘后能启动，可以再一块一块接回硬盘，找到具体是哪块盘或哪根线触发问题。&lt;/p&gt;
&lt;h2 id=&#34;第二步拔卡进-bios关闭-csm&#34;&gt;第二步：拔卡进 BIOS，关闭 CSM
&lt;/h2&gt;&lt;p&gt;很多 PCIe 扩展卡卡在 POST 阶段，和 CSM / Legacy 启动兼容层有关。&lt;/p&gt;
&lt;p&gt;CSM 是 Compatibility Support Module，用来让 UEFI 主板兼容旧式 Legacy 启动。问题在于，一些廉价 SATA 扩展卡或魔改卡可能带有老旧 Option ROM。主板在 CSM 模式下会尝试加载这些旧式启动固件，结果和现代 UEFI 固件发生冲突。&lt;/p&gt;
&lt;h2 id=&#34;csm-和-option-rom-为什么会卡住-post&#34;&gt;CSM 和 Option ROM 为什么会卡住 POST
&lt;/h2&gt;&lt;p&gt;POST 阶段主板会枚举 PCIe 设备，并判断这些设备是否带有可启动固件。很多老式存储卡、RAID 卡、HBA、网卡和 SATA 扩展卡会提供 Option ROM，用来让主板在操作系统启动前识别设备，甚至支持从这张卡启动。&lt;/p&gt;
&lt;p&gt;问题是，Option ROM 往往很依赖 BIOS 实现。有些扩展卡的 Option ROM 老旧、魔改、损坏，或者只在特定服务器主板上测试过。现代消费级主板在 CSM / Legacy 模式下尝试加载它时，就可能出现初始化死循环、黑屏、光标闪烁或键盘无响应。&lt;/p&gt;
&lt;p&gt;关闭 CSM、禁用 Storage OpROM 的目的，就是让主板不要在启动前尝试执行这张卡自己的启动固件。只要系统盘不接在这张扩展卡上，多数 NAS 和数据盘场景并不需要从扩展卡启动，交给 Linux / Windows 进入系统后再识别通常更稳。&lt;/p&gt;
&lt;p&gt;操作步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;关机断电，拔掉这张 PCIe 扩展卡。&lt;/li&gt;
&lt;li&gt;使用主板原有显卡、核显或已有启动盘开机，进入 BIOS。&lt;/li&gt;
&lt;li&gt;找到 &lt;code&gt;CSM&lt;/code&gt;、&lt;code&gt;Compatibility Support Module&lt;/code&gt; 或 &lt;code&gt;Legacy Boot&lt;/code&gt; 相关选项。&lt;/li&gt;
&lt;li&gt;将 CSM 设置为 &lt;code&gt;Disabled&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;启动模式尽量改成 &lt;code&gt;UEFI Only&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;保存 BIOS 设置并关机。&lt;/li&gt;
&lt;li&gt;重新插上 PCIe 扩展卡测试。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果关闭 CSM 后能正常过 POST，说明之前大概率是 Legacy Option ROM 或启动兼容层冲突。&lt;/p&gt;
&lt;h2 id=&#34;第三步禁用-pcie--storage-option-rom&#34;&gt;第三步：禁用 PCIe / Storage Option ROM
&lt;/h2&gt;&lt;p&gt;有些 BIOS 会提供更细的 Option ROM 控制项，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PCIe Option ROM&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Storage OpROM&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Mass Storage Controller Option ROM&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Launch Storage OpROM Policy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Option ROM Messages&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果能找到类似选项，可以把扩展卡所在插槽或存储控制器相关 Option ROM 设置为：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Disabled
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Do Not Launch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样做的意思是：不要尝试从这张扩展卡加载启动固件，只把它当成普通 PCIe 设备交给操作系统识别。&lt;/p&gt;
&lt;p&gt;如果你的系统盘不接在这张扩展卡上，而只是用它挂数据盘、NAS 盘、仓库盘、网卡或采集设备，那么通常不需要从这张卡启动。禁用它的 Option ROM 反而更稳。&lt;/p&gt;
&lt;h2 id=&#34;第四步强制-pcie-速率为-gen2-或-gen1&#34;&gt;第四步：强制 PCIe 速率为 Gen2 或 Gen1
&lt;/h2&gt;&lt;p&gt;JMB585 是常见的 PCIe SATA 控制器，很多卡标称走 PCIe Gen3 x2。但主板、转接卡、线材、槽位和扩展卡做工不够好时，PCIe 链路训练可能在 Gen3 阶段谈不拢，主板就会卡在等待设备完成初始化的阶段。&lt;/p&gt;
&lt;h2 id=&#34;pcie-gen3-链路训练失败是什么表现&#34;&gt;PCIe Gen3 链路训练失败是什么表现
&lt;/h2&gt;&lt;p&gt;PCIe 设备插上后，主板和设备会协商链路宽度和速率，例如 x1、x2、x4，以及 Gen1、Gen2、Gen3。这个过程叫 Link Training。&lt;/p&gt;
&lt;p&gt;如果设备、插槽、转接卡、主板走线或供电不稳定，双方可能在较高速率上无法完成协商。常见表现是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;插卡后卡在 BIOS 前黑屏或光标闪烁。&lt;/li&gt;
&lt;li&gt;主板 Logo 停很久，按键无响应。&lt;/li&gt;
&lt;li&gt;偶尔能启动，偶尔完全卡死。&lt;/li&gt;
&lt;li&gt;强制 PCIe Gen2 后恢复正常。&lt;/li&gt;
&lt;li&gt;换到另一个槽位后恢复正常。&lt;/li&gt;
&lt;li&gt;同一张卡在短槽、芯片组槽上能用，在 CPU 直连大槽上不稳定，或反过来。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是操作系统层面的“掉盘”，而是主板和设备还没完成 PCIe 链路初始化。强制 Gen2 / Gen1 的目的，是降低信号速率，牺牲一点理论带宽换稳定启动。&lt;/p&gt;
&lt;p&gt;更稳妥的做法是先让它降速：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;拔掉这张 PCIe 扩展卡。&lt;/li&gt;
&lt;li&gt;进入 BIOS。&lt;/li&gt;
&lt;li&gt;找到对应 PCIe 插槽的速率设置，例如 &lt;code&gt;PCIe Speed&lt;/code&gt;、&lt;code&gt;PCIe Link Speed&lt;/code&gt;、&lt;code&gt;Max Link Speed&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;把 &lt;code&gt;Auto&lt;/code&gt; 或 &lt;code&gt;Gen3&lt;/code&gt; 改成 &lt;code&gt;Gen2&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;如果 &lt;code&gt;Gen2&lt;/code&gt; 仍不稳定，再尝试 &lt;code&gt;Gen1&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;保存关机，重新插卡测试。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;对 SATA 机械盘来说，Gen2 x1 或 Gen2 x2 通常已经够用。稳定性优先时，不必执着 Gen3。&lt;/p&gt;
&lt;p&gt;如果 BIOS 没有提供 PCIe 速率设置，才考虑物理降速方案。有人会通过给扩展卡金手指部分引脚贴绝缘胶带，让卡退回 x1 模式，以此验证是否是第二条 PCIe lane 或高频信号质量导致卡死。这种方法有风险，容易贴错位置或造成接触问题，不建议作为第一选择。优先用 BIOS 降速。&lt;/p&gt;
&lt;h2 id=&#34;第五步开启-above-4g-decoding&#34;&gt;第五步：开启 Above 4G Decoding
&lt;/h2&gt;&lt;p&gt;如果主板上同时有 NVMe、显卡、无线网卡、HBA、采集卡或多个 PCIe 设备，BIOS 在 POST 阶段需要给它们分配地址空间和 MMIO 资源。老主板或资源分配策略比较保守的 BIOS，可能因为资源不足或地址冲突卡住。&lt;/p&gt;
&lt;p&gt;可以尝试开启：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Above 4G Decoding
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常见位置在 BIOS 的 &lt;code&gt;Advanced&lt;/code&gt;、&lt;code&gt;PCIe Settings&lt;/code&gt;、&lt;code&gt;PCI Subsystem Settings&lt;/code&gt;、&lt;code&gt;Chipset&lt;/code&gt; 或类似菜单下。&lt;/p&gt;
&lt;p&gt;它的作用是允许 PCIe 设备使用 4GB 以上的地址空间，有助于缓解多设备环境下的资源分配问题。虽然这个选项常被显卡直通、矿卡、HBA 和多 PCIe 设备场景提到，但对某些 SATA 扩展卡卡 POST 的情况也值得尝试。&lt;/p&gt;
&lt;h2 id=&#34;第六步换-pcie-插槽&#34;&gt;第六步：换 PCIe 插槽
&lt;/h2&gt;&lt;p&gt;不要只在一个槽位上反复试。不同 PCIe 插槽背后的通道来源可能不同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;靠近 CPU 的长槽通常是 CPU 直连，优先给显卡使用。&lt;/li&gt;
&lt;li&gt;一些短槽或第二条长槽可能来自芯片组 PCH。&lt;/li&gt;
&lt;li&gt;某些槽会和 NVMe、SATA、Wi-Fi 或其他设备共享通道。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果扩展卡插在 CPU 直连大槽上卡死，可以尝试插到芯片组引出的短槽或带宽较低的槽上。反过来也一样，如果 PCH 槽不稳定，也可以试试其他槽位。&lt;/p&gt;
&lt;p&gt;同时建议查看主板说明书，确认是否存在“插了某个 M.2 后某个 PCIe 槽失效”之类的共享规则。&lt;/p&gt;
&lt;h2 id=&#34;推荐的高效排查顺序&#34;&gt;推荐的高效排查顺序
&lt;/h2&gt;&lt;p&gt;如果你想尽快恢复启动，可以按这个顺序来：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;拔掉扩展卡上所有外接设备，例如 SATA 硬盘、U.2 盘、外接线缆，只留卡本体测试。&lt;/li&gt;
&lt;li&gt;如果仍卡死，拔卡进入 BIOS。&lt;/li&gt;
&lt;li&gt;关闭 &lt;code&gt;CSM&lt;/code&gt;，切到 &lt;code&gt;UEFI Only&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;禁用 &lt;code&gt;Storage OpROM&lt;/code&gt; 或相关 PCIe Option ROM。&lt;/li&gt;
&lt;li&gt;开启 &lt;code&gt;Above 4G Decoding&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;把对应 PCIe 插槽强制改成 &lt;code&gt;Gen2&lt;/code&gt;，不行再试 &lt;code&gt;Gen1&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;保存关机，重新插上 PCIe 扩展卡测试。&lt;/li&gt;
&lt;li&gt;如果能过 POST，再逐块接回硬盘。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这套路径优先处理最常见的两类问题：Legacy / Option ROM 冲突，以及 PCIe Gen3 链路训练不兼容。&lt;/p&gt;
&lt;h2 id=&#34;如何判断是卡坏了还是主板兼容性问题&#34;&gt;如何判断是卡坏了还是主板兼容性问题
&lt;/h2&gt;&lt;p&gt;如果做完上面步骤仍然卡在光标闪烁，还可以做两个交叉验证：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把这张扩展卡插到另一台电脑上测试。&lt;/li&gt;
&lt;li&gt;换一张确认正常的同类 PCIe 扩展卡插到当前主板上测试。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;判断逻辑可以这样看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同一张卡在多台电脑上一插就卡死：更像扩展卡本身有硬件或固件问题。&lt;/li&gt;
&lt;li&gt;这张卡只在当前主板卡死，换电脑正常：更像主板 BIOS、插槽通道、PCIe 速率或资源分配兼容性问题。&lt;/li&gt;
&lt;li&gt;当前主板换其他同类扩展卡正常：更支持原卡异常。&lt;/li&gt;
&lt;li&gt;当前主板换其他 PCIe 设备也不稳定：要怀疑主板插槽、供电、BIOS 设置或 PCIe 通道共享问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这张卡在多台电脑上一插就卡死，而其他扩展卡在当前主板正常，基本可以怀疑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;扩展卡 EEPROM / Option ROM 数据损坏。&lt;/li&gt;
&lt;li&gt;扩展卡存在短路或供电异常。&lt;/li&gt;
&lt;li&gt;金手指、焊点、晶振或电源芯片有硬件问题。&lt;/li&gt;
&lt;li&gt;卡的固件和多个主板 BIOS 都不兼容。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果它只在某一台主板上卡死，则更可能是主板 BIOS、插槽通道、PCIe 速率、CSM 或资源分配问题。&lt;/p&gt;
&lt;h2 id=&#34;不要把系统参数当成-bios-阶段解法&#34;&gt;不要把系统参数当成 BIOS 阶段解法
&lt;/h2&gt;&lt;p&gt;需要特别强调：只要机器还没进入 Linux，&lt;code&gt;pci=nomsi&lt;/code&gt;、&lt;code&gt;pcie_aspm=off&lt;/code&gt;、&lt;code&gt;libata.force&lt;/code&gt; 这类内核参数都不会生效。&lt;/p&gt;
&lt;p&gt;这些参数只能处理操作系统接管硬件之后的问题，例如 Linux 下掉盘、中断异常、PCIe ASPM 唤醒失败等。对于 BIOS 前光标闪烁、POST 阶段卡死，它们没有机会执行。&lt;/p&gt;
&lt;p&gt;所以这类问题的排障重点是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BIOS 设置。&lt;/li&gt;
&lt;li&gt;PCIe 链路训练。&lt;/li&gt;
&lt;li&gt;Option ROM。&lt;/li&gt;
&lt;li&gt;插槽和资源分配。&lt;/li&gt;
&lt;li&gt;扩展卡和硬盘的物理状态。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;PCIe 扩展卡插上后卡在 BIOS 前光标闪烁，本质上是 POST 阶段就被卡住。最常见的突破口是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;断开所有 SATA 硬盘，排除硬盘或供电诱因。&lt;/li&gt;
&lt;li&gt;关闭 CSM，切换到纯 UEFI。&lt;/li&gt;
&lt;li&gt;禁用 Storage / PCIe Option ROM。&lt;/li&gt;
&lt;li&gt;将 PCIe 速率从 Auto / Gen3 降到 Gen2 或 Gen1。&lt;/li&gt;
&lt;li&gt;开启 Above 4G Decoding。&lt;/li&gt;
&lt;li&gt;更换 PCIe 插槽测试。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这些都无效，并且这张卡在其他电脑上也会卡死，就要高度怀疑扩展卡本身硬件或固件损坏。对 NAS 和存储服务器来说，稳定性比参数漂亮更重要。遇到这类 POST 级卡死，优先让主板能稳定过自检，再谈 Linux 里的内核参数和驱动排查。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>铁威马 F2-220 安装飞牛 OS：F3 背板、NVMe 与 BIOS 模块注入</title>
        <link>https://knightli.com/2026/05/04/terramaster-f2-220-fnos-nvme-bios/</link>
        <pubDate>Mon, 04 May 2026 06:09:40 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/04/terramaster-f2-220-fnos-nvme-bios/</guid>
        <description>&lt;p&gt;这是一篇铁威马 F2-220 安装飞牛 OS 的实践记录。目标是替换原厂 TOS，并在 F2-220 已停止官方支持的情况下继续使用这台 NAS。过程中同时验证了 F3 背板在 F2-220 上的可用性，并解决了 BIOS 不能从 NVMe 启动的问题。&lt;/p&gt;
&lt;p&gt;F3 背板原项目验证设备是 F2-221，平台为 J3355；F2-220 是 J1800 平台，兼容性没有现成结论。由于项目 fork 中已有 V1.1 版本，器件数量减少，成本和制作难度也下降，因此直接制作 V1.1 版本测试。&lt;/p&gt;
&lt;h2 id=&#34;打板和焊接&#34;&gt;打板和焊接
&lt;/h2&gt;&lt;p&gt;背板项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/arnarg/f3_backplane&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;arnarg/f3_backplane&lt;/a&gt;。打板使用的是 fork 中的 V1.1 版本，核心目标是保留原有 SATA 硬盘位，同时从背板接口引出 NVMe 固态位置。&lt;/p&gt;
&lt;p&gt;打板后拿到多块 PCB。焊接时遇到一个细节：一开始没有仔细看 BOM，焊完 M.2 后才发现 SATA 接口和常见接口不太一样。&lt;/p&gt;
&lt;p&gt;淘宝上没有找到原生完全合适的 SATA 接口，最后选择改现有接口：把针脚拔出并交换位置，再焊回板上，完成成品背板。&lt;/p&gt;
&lt;p&gt;这一段的关键结论是：F3 背板方案在 F2-220 上可以继续尝试，但 SATA 接口选型需要特别注意，不要直接按常见 SATA 连接器下单。&lt;/p&gt;
&lt;h2 id=&#34;接-vga-输出&#34;&gt;接 VGA 输出
&lt;/h2&gt;&lt;p&gt;F2-220 机器本身没有外露视频输出，但内部预留了 12 针 VGA 接口。需要购买主板内置 12Pin VGA 转接线，一端接机器内部 12 针排针，另一端通常是标准 DB15 VGA 母头，用来外接显示器。&lt;/p&gt;
&lt;p&gt;常见搜索关键词可以用“12Pin VGA 转接线”“主板 12 针 VGA 转接线”“2.0mm 12Pin 转 VGA”。购买前要按机器内部接口照片核对插头方向、针距和线序，不要只看“12Pin”字样下单。&lt;/p&gt;
&lt;p&gt;这一步对安装很关键。没有视频输出时，后续 BIOS 和安装过程会非常难排查。&lt;/p&gt;
&lt;h2 id=&#34;安装飞牛-os&#34;&gt;安装飞牛 OS
&lt;/h2&gt;&lt;p&gt;通过 Ventoy 启动飞牛 OS 安装程序。安装界面可以成功看到 NVMe 固态，说明背板和 NVMe 硬件链路是通的。&lt;/p&gt;
&lt;p&gt;但安装完成后拔掉启动盘，机器会重启到 BIOS 界面，不能正常进入飞牛 OS。BIOS 启动项里没有 NVMe 固态。把飞牛 OS 安装到 U 盘启动后，系统内又可以正常看到 NVMe。&lt;/p&gt;
&lt;p&gt;这个现象说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NVMe 硬件识别没有问题&lt;/li&gt;
&lt;li&gt;Linux 系统内可以访问 NVMe&lt;/li&gt;
&lt;li&gt;失败点在 BIOS 启动阶段&lt;/li&gt;
&lt;li&gt;F2-220 平台较老，原 BIOS 很可能没有 NVMe 启动模块&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;备份-bios&#34;&gt;备份 BIOS
&lt;/h2&gt;&lt;p&gt;此时已经可以用 U 盘启动飞牛 OS，而飞牛 OS 基于 Debian，因此可以在系统内用 &lt;code&gt;flashrom&lt;/code&gt; 备份和刷写 BIOS。&lt;/p&gt;
&lt;p&gt;刷 BIOS 有风险。最好准备编程器，避免刷坏后无法恢复。&lt;/p&gt;
&lt;p&gt;安装 &lt;code&gt;flashrom&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install flashrom -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;确认是否能识别 BIOS 芯片：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo flashrom -p internal
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;机器识别到的芯片信息类似：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Found Winbond flash chip &amp;#34;W25Q64.W&amp;#34; (8192 kB, SPI) mapped at physical address 0x00000000ff800000.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;备份原版 BIOS。注意命令中的芯片型号需要按自己的机器替换：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo flashrom -p internal -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;W25Q64.W&amp;#34;&lt;/span&gt; -r backup_factory.bin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;注入-nvme-模块&#34;&gt;注入 NVMe 模块
&lt;/h2&gt;&lt;p&gt;备份出的 BIOS 是一个 &lt;code&gt;.bin&lt;/code&gt; 文件。可以通过 WinSCP 把文件传到电脑上，再参考 B 站教程&lt;a class=&#34;link&#34; href=&#34;https://www.bilibili.com/read/cv4475152/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;《让老主板用上 Nvme 协议的固态》&lt;/a&gt;，把 NVMe 模块注入 BIOS 文件。&lt;/p&gt;
&lt;p&gt;处理完成后，再把修改后的 BIOS 文件传回飞牛 OS。&lt;/p&gt;
&lt;p&gt;这里不建议盲目套用别人的 BIOS 文件。不同机器、不同 BIOS 版本、不同 flash 芯片都可能有差异。更稳妥的做法是备份自己的原 BIOS，再基于自己的备份文件修改。&lt;/p&gt;
&lt;h2 id=&#34;刷写新-bios&#34;&gt;刷写新 BIOS
&lt;/h2&gt;&lt;p&gt;刷写命令如下。芯片型号、固件路径和文件名都要按实际情况替换：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo flashrom -p internal -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;W25Q64.W&amp;#34;&lt;/span&gt; -w /vol1/NEW_NVME.bin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;当输出中看到下面这行，表示校验通过：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Verifying flash... VERIFIED.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;刷写完成后，BIOS 启动项里可以看到 &lt;code&gt;PATA&lt;/code&gt; 项。对这类注入 NVMe 模块的老 BIOS 来说，NVMe 启动项经常会以 &lt;code&gt;PATA&lt;/code&gt; 形式显示。看到它，说明 BIOS 已经可以识别 NVMe 启动路径。&lt;/p&gt;
&lt;h2 id=&#34;结果&#34;&gt;结果
&lt;/h2&gt;&lt;p&gt;最终结果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;F3 背板 V1.1 在铁威马 F2-220 上可以识别 NVMe&lt;/li&gt;
&lt;li&gt;飞牛 OS 安装程序能看到 NVMe 固态&lt;/li&gt;
&lt;li&gt;原 BIOS 不能直接从 NVMe 启动&lt;/li&gt;
&lt;li&gt;给 BIOS 注入 NVMe 模块后，启动项出现 &lt;code&gt;PATA&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;机器具备从 NVMe 启动飞牛 OS 的条件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;实测反馈里也提到，这个 NVMe 通道速度只有 300MB/s 多。作为系统盘已经够用，不需要上很好的 SSD，甚至小容量傲腾也能满足需求。&lt;/p&gt;
&lt;h2 id=&#34;注意事项&#34;&gt;注意事项
&lt;/h2&gt;&lt;p&gt;这不是普通无风险教程，更像一次硬件和 BIOS 改造记录。真正动手前至少要注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;F2-220 和 F2-221 平台不同，不能把 F2-221 的结果直接等同于 F2-220。&lt;/li&gt;
&lt;li&gt;F3 背板需要打板和焊接，SATA 接口还可能需要改针脚。&lt;/li&gt;
&lt;li&gt;机器内部 VGA 接口需要合适的转接线，方便安装和排错。&lt;/li&gt;
&lt;li&gt;BIOS 刷写有变砖风险，最好提前准备编程器和原始备份。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;flashrom&lt;/code&gt; 命令里的芯片型号必须按自己机器识别结果填写。&lt;/li&gt;
&lt;li&gt;不要直接刷别人修改好的 BIOS，优先基于自己的备份注入 NVMe 模块。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这次记录的价值在于补上了 F2-220 的实测结果：F3 背板思路不仅限于 F2-221，F2-220 也有机会使用 NVMe 系统盘；真正的卡点不在 Linux 识别 NVMe，而在 BIOS 是否支持 NVMe 启动。&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;飞牛论坛实测帖：&lt;a class=&#34;link&#34; href=&#34;https://club.fnnas.com/forum.php?mod=viewthread&amp;amp;tid=55589&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;铁威马F2-220折腾飞牛OS过程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>详解 PCIe 通道拆分 bifurcation 的各种方式</title>
        <link>https://knightli.com/2026/05/02/pcie-bifurcation-modes/</link>
        <pubDate>Sat, 02 May 2026 08:29:32 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/02/pcie-bifurcation-modes/</guid>
        <description>&lt;p&gt;PCIe bifurcation 通常被翻译为 PCIe 通道拆分或分叉。它解决的问题很直接：一组来自 CPU 或芯片组的 PCIe Lane，到底应该作为一个宽链路使用，还是拆成多个窄链路分给不同设备。&lt;/p&gt;
&lt;p&gt;例如，一组 16 条 PCIe Lane 可以配置成 &lt;code&gt;x16&lt;/code&gt;，也可以拆成 &lt;code&gt;x8+x8&lt;/code&gt;，或者拆成 &lt;code&gt;x8+x4+x4&lt;/code&gt;。这就是主板上“一个显卡插槽跑满 x16”“两个显卡插槽各跑 x8”“一条显卡加两个 CPU 直连 M.2”的底层基础。&lt;/p&gt;
&lt;h2 id=&#34;pcie-lane-是什么&#34;&gt;PCIe Lane 是什么
&lt;/h2&gt;&lt;p&gt;PCIe 是串行总线。每个 Lane 由一组差分信号组成，可以理解为一条独立的高速数据通道。多个 Lane 绑定在一起后，就形成了更宽的链路：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/pcie-bifurcation-modes/pcie-lane-link.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;PCIe Lane 与链路宽度示意图&#34;
	
	
&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;链路宽度&lt;/th&gt;
          &lt;th&gt;常见用途&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x1&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;网卡、声卡、采集卡、USB 扩展卡&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x4&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;NVMe SSD、部分高速扩展卡&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x8&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;第二条显卡插槽、RAID 卡、网卡&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x16&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;主显卡插槽&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;PCIe 链路宽度通常按 2 的幂增长，所以常见的是 &lt;code&gt;x1&lt;/code&gt;、&lt;code&gt;x2&lt;/code&gt;、&lt;code&gt;x4&lt;/code&gt;、&lt;code&gt;x8&lt;/code&gt;、&lt;code&gt;x16&lt;/code&gt;。消费级主板上最常见的是 &lt;code&gt;x1&lt;/code&gt;、&lt;code&gt;x4&lt;/code&gt;、&lt;code&gt;x8&lt;/code&gt; 和 &lt;code&gt;x16&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;需要注意的是，物理插槽长度不等于实际链路宽度。一个看起来是 &lt;code&gt;x16&lt;/code&gt; 的长插槽，实际可能只接了 &lt;code&gt;x4&lt;/code&gt; 或 &lt;code&gt;x8&lt;/code&gt;；一个 M.2 插槽通常是 &lt;code&gt;x4&lt;/code&gt;，但它也要看是接 CPU 还是接芯片组。&lt;/p&gt;
&lt;h2 id=&#34;bifurcation-在什么时候发生&#34;&gt;bifurcation 在什么时候发生
&lt;/h2&gt;&lt;p&gt;PCIe 设备初始化大致可以分成几个阶段：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;确定 PCIe bifurcation，也就是决定通道如何拆分。&lt;/li&gt;
&lt;li&gt;Root Port Training，训练链路速度和宽度。&lt;/li&gt;
&lt;li&gt;PCI 枚举，让系统发现各个设备。&lt;/li&gt;
&lt;li&gt;设置 PCIe 相关特性，例如电源管理、错误报告和超时控制。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;bifurcation 发生得很早。因为系统必须先知道一组 Lane 是一个 &lt;code&gt;x16&lt;/code&gt;，还是两个 &lt;code&gt;x8&lt;/code&gt;，或者几个 &lt;code&gt;x4&lt;/code&gt;，后续 Training 和设备枚举才知道该按几个 Root Port 去处理。&lt;/p&gt;
&lt;p&gt;如果 bifurcation 设置不对，常见现象包括：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;扩展卡只识别一块 SSD。&lt;/li&gt;
&lt;li&gt;插了转接卡后设备完全不出现。&lt;/li&gt;
&lt;li&gt;显卡链路宽度从 &lt;code&gt;x16&lt;/code&gt; 变成 &lt;code&gt;x8&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;BIOS 里看不到想要的拆分选项。&lt;/li&gt;
&lt;li&gt;主板说明书写着支持某种拆分，但只在特定插槽或特定 CPU 下生效。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;方式一hard-strap&#34;&gt;方式一：Hard Strap
&lt;/h2&gt;&lt;p&gt;Hard Strap 是硬件方式。主板通过固定引脚、电阻上下拉或线路连接，把 PCIe 拆分方式在硬件层面确定下来。&lt;/p&gt;
&lt;p&gt;这种方式常见于消费级桌面平台的 CPU 直连 PCIe 通道。例如 CPU 提供一组 &lt;code&gt;x16&lt;/code&gt; Lane，主板厂商可以按产品定位设计成：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;配置&lt;/th&gt;
          &lt;th&gt;典型用途&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x16&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;一条主显卡插槽&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x8+x8&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;两条显卡插槽&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x8+x4+x4&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;一条显卡插槽加两个 CPU 直连 M.2&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Hard Strap 的特点是稳定、简单、成本低。主板厂商在设计 PCB 时就确定了通道走向，用户后期通常不能在 BIOS 里自由改。&lt;/p&gt;
&lt;p&gt;它的缺点也很明显：灵活性差。一旦主板布线定下来，除非重新设计 PCB，否则不能把一个只做 &lt;code&gt;x16&lt;/code&gt; 的插槽变成 &lt;code&gt;x4+x4+x4+x4&lt;/code&gt;。所以很多消费级主板即使 CPU 理论上支持拆分，BIOS 里也未必给出相关选项。&lt;/p&gt;
&lt;p&gt;对普通用户来说，Hard Strap 最直观的影响是：主板能不能支持 PCIe 拆分，首先看主板设计，不是只看 CPU 参数。
&lt;img src=&#34;https://knightli.com/2026/05/02/pcie-bifurcation-modes/image.png&#34;
	width=&#34;1008&#34;
	height=&#34;506&#34;
	srcset=&#34;https://knightli.com/2026/05/02/pcie-bifurcation-modes/image_hu_9da109a68bf2083b.png 480w, https://knightli.com/2026/05/02/pcie-bifurcation-modes/image_hu_ca9e4232e5981219.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;12代CPU的bifurcation&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;199&#34;
		data-flex-basis=&#34;478px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;方式二soft-strap&#34;&gt;方式二：Soft Strap
&lt;/h2&gt;&lt;p&gt;Soft Strap 是软件配置方式，但它并不一定等于 BIOS 菜单里的用户选项。很多时候，这类配置写在 BIOS 镜像或平台描述区域中，由主板厂商在出厂前设置好。&lt;/p&gt;
&lt;p&gt;芯片组下面的 PCIe Root Port 经常采用类似方式。主板厂商根据实际布线，把某些 Root Port 配成独立 &lt;code&gt;x1&lt;/code&gt;，或者组合成 &lt;code&gt;x2&lt;/code&gt;、&lt;code&gt;x4&lt;/code&gt;。这些设置通常在 BIOS 镜像中固定，刷入后随平台初始化生效。&lt;/p&gt;
&lt;p&gt;Soft Strap 的特点是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;不需要改 PCB 就能调整部分配置。&lt;/li&gt;
&lt;li&gt;配置通常在早期初始化阶段生效。&lt;/li&gt;
&lt;li&gt;修改后一般需要重新刷写 BIOS 或至少重启。&lt;/li&gt;
&lt;li&gt;用户界面里不一定暴露相关选项。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这也是为什么有些主板的硬件看起来接线类似，但不同 BIOS 版本或不同厂商设置下，PCIe 插槽、M.2 插槽和板载设备的分配方式会有差异。&lt;/p&gt;
&lt;p&gt;不过，Soft Strap 仍然不是万能的。它只能在硬件布线允许的范围内调整，不能凭空把没有连接到某个插槽的 Lane 分给它。&lt;/p&gt;
&lt;h2 id=&#34;方式三wait-for-bios&#34;&gt;方式三：Wait For BIOS
&lt;/h2&gt;&lt;p&gt;Wait For BIOS 是更灵活的方式。平台在 PCIe Training 之前等待 BIOS 写入相关寄存器，由 BIOS 决定某组 Lane 最终拆成什么宽度。&lt;/p&gt;
&lt;p&gt;这种方式常见于可扩展性更强的平台，例如工作站、服务器或部分 Xeon 平台。因为这些平台提供的 Lane 数量更多，插槽组合也更复杂，如果全部靠硬件固定，会大幅降低主板适配能力。&lt;/p&gt;
&lt;p&gt;Wait For BIOS 的优势是灵活：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;BIOS 可以提供 &lt;code&gt;x16&lt;/code&gt;、&lt;code&gt;x8+x8&lt;/code&gt;、&lt;code&gt;x8+x4+x4&lt;/code&gt;、&lt;code&gt;x4+x4+x4+x4&lt;/code&gt; 等选项。&lt;/li&gt;
&lt;li&gt;同一张主板可以适配不同扩展卡。&lt;/li&gt;
&lt;li&gt;更适合多 NVMe 转接卡、PCIe 背板、服务器 Riser 卡等场景。&lt;/li&gt;
&lt;li&gt;用户可以根据设备数量和带宽需求调整。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;它的代价是平台和 BIOS 必须配合。CPU 或芯片组要支持对应拆分，主板布线要符合拆分方式，BIOS 也要把选项做出来。缺少其中任何一环，用户都可能看不到可用的 bifurcation 设置。&lt;/p&gt;
&lt;h2 id=&#34;常见拆分组合&#34;&gt;常见拆分组合
&lt;/h2&gt;&lt;p&gt;不同平台支持的组合不一样，但常见拆分方式大致如下：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/pcie-bifurcation-modes/pcie-bifurcation-modes.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;PCIe bifurcation 常见拆分方式&#34;
	
	
&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;原始链路&lt;/th&gt;
          &lt;th&gt;常见拆分&lt;/th&gt;
          &lt;th&gt;典型用途&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x16&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;x16&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;单显卡&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x16&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;x8+x8&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;双显卡、显卡加高速扩展卡&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x16&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;x8+x4+x4&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;显卡加两块 NVMe SSD&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x16&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;x4+x4+x4+x4&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;四盘 NVMe 转接卡&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x8&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;x4+x4&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;双盘 NVMe、双口高速扩展&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x4&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;x2+x2&lt;/code&gt; 或多个 &lt;code&gt;x1&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;较少见，取决于平台支持&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;在 DIY 场景里，最常见的需求是把一个 &lt;code&gt;x16&lt;/code&gt; 插槽拆成 &lt;code&gt;x4+x4+x4+x4&lt;/code&gt;，配合四盘 M.2 转接卡使用。这里要特别注意：便宜的无芯片转接卡只是把插槽物理转接成多个 M.2，它本身不会负责拆分 PCIe 通道。&lt;/p&gt;
&lt;p&gt;如果主板不支持 &lt;code&gt;x4+x4+x4+x4&lt;/code&gt;，这种转接卡通常只能识别第一块 SSD。想在不支持 bifurcation 的主板上使用多盘卡，需要带 PCIe Switch 芯片的扩展卡，但这类卡成本高得多。&lt;/p&gt;
&lt;h2 id=&#34;bifurcation-和-pcie-switch-的区别&#34;&gt;bifurcation 和 PCIe Switch 的区别
&lt;/h2&gt;&lt;p&gt;bifurcation 是把上游已有的 Lane 拆给多个下游端口。它不增加 Lane 数，只改变分配方式。&lt;/p&gt;
&lt;p&gt;PCIe Switch 则像一个 PCIe 交换芯片。它可以把一个上游链路连接到多个下游设备，让系统看到更多设备。它也不凭空增加上游带宽，但可以解决“主板不支持通道拆分仍要接多设备”的问题。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/pcie-bifurcation-modes/pcie-switch-vs-bifurcation.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;PCIe bifurcation 与 PCIe Switch 对比&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;两者差异可以这样理解：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方案&lt;/th&gt;
          &lt;th&gt;是否需要主板支持 bifurcation&lt;/th&gt;
          &lt;th&gt;成本&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;无芯片 M.2 转接卡&lt;/td&gt;
          &lt;td&gt;需要&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
          &lt;td&gt;主板支持 &lt;code&gt;x4+x4+x4+x4&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;带 PCIe Switch 的扩展卡&lt;/td&gt;
          &lt;td&gt;不一定需要&lt;/td&gt;
          &lt;td&gt;高&lt;/td&gt;
          &lt;td&gt;主板不支持拆分但需要多设备&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;所以买多 M.2 扩展卡前，要先看主板 BIOS 是否支持对应拆分。如果只写“支持 PCIe x16 插槽”，并不代表它支持四盘同时识别。&lt;/p&gt;
&lt;h2 id=&#34;选购和排查建议&#34;&gt;选购和排查建议
&lt;/h2&gt;&lt;p&gt;如果你想使用 PCIe bifurcation，可以按这个顺序确认：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;查 CPU 或平台是否支持目标拆分方式。&lt;/li&gt;
&lt;li&gt;查主板说明书，看目标插槽是否支持 &lt;code&gt;x8+x8&lt;/code&gt;、&lt;code&gt;x8+x4+x4&lt;/code&gt; 或 &lt;code&gt;x4+x4+x4+x4&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;进入 BIOS，确认是否有 PCIe bifurcation、PCIe lane configuration、slot configuration 之类选项。&lt;/li&gt;
&lt;li&gt;确认扩展卡是无芯片转接卡，还是带 PCIe Switch 的卡。&lt;/li&gt;
&lt;li&gt;确认设备插满后是否会和 M.2、SATA、板载网卡等共享通道。&lt;/li&gt;
&lt;li&gt;进系统后用工具查看实际链路宽度和设备枚举情况。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果扩展卡只能识别一块盘，优先检查 BIOS 拆分选项。如果 BIOS 没有相关设置，大概率不是驱动问题，而是主板没有把这组 Lane 拆给多个设备。&lt;/p&gt;
&lt;p&gt;如果设备都能识别，但速度不对，再检查链路 Training。线材、转接卡质量、插槽走线、PCIe 版本和设备兼容性，都可能导致链路从 Gen4 降到 Gen3，甚至降到更低。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;PCIe bifurcation 的本质，是在 PCIe 初始化早期决定 Lane 的组织方式。Hard Strap 靠硬件固定，Soft Strap 靠平台配置，Wait For BIOS 则由 BIOS 在训练链路前动态设置。&lt;/p&gt;
&lt;p&gt;对普通装机用户来说，最重要的结论有三点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;x16&lt;/code&gt; 物理插槽不等于一定能拆成多个 &lt;code&gt;x4&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;无芯片多 M.2 转接卡必须依赖主板 bifurcation。&lt;/li&gt;
&lt;li&gt;是否支持拆分，要同时看 CPU、主板布线和 BIOS 选项。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;理解这些之后，再看主板规格表里的 &lt;code&gt;x16&lt;/code&gt;、&lt;code&gt;x8+x8&lt;/code&gt;、&lt;code&gt;x4+x4+x4+x4&lt;/code&gt;，就不会只停留在插槽长度上，而能判断它到底能不能满足实际扩展需求。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
