固件,亦称“硬件专用软件”,是嵌入在硬件设备中的程序代码,它能确保硬件设备及其各项功能正常运作。固件会定期更新,以进行修复、添加或扩展功能,或提高设备与科技的兼容性。
许多设备依靠固件才能运行,包括电视、相机、移动设备、打印机、硬盘等等。固件位于设备的非易失性存储器中,即使设备关机,内容也能存储在其中。固件可以写入不同的存储器类型,包括随机存取存储器 (RAM)、只读存储器 (ROM)、可擦除可编程只读存储器 (EPROM) 和闪存。
固件通过多种重要方式帮助设备执行其预期功能,包括提供设备启动方式、如何与其他设备(如互联网路由器或遥控器)交互以及如何执行关键输入/输出 (I/O) 任务的指令。许多硬件设备制造商,如 Apple、LG Electronics、Microsoft 等,都会在产品中嵌入固件,使其功能类似于计算机的操作系统 (OS)。
据报道,“固件”一词最早由美国科学家 Ascher Opler 于 1967 年使用的,用来描述他所说的“介于硬件和软件之间的程序”1。如今,从 iPhone、Mac 或电视遥控器,到卫星和无人驾驶车辆上复杂的物联网 (IoT) 传感器,固件已成为许多设备的重要组成部分。尽管固件和软件很相似,但在评估是否符合业务需求时,仍存在值得考虑的重要差异。
固件对于我们在工作和个人生活中习以为常的设备(如个人电脑、智能手机、游戏机等)的正常运行至关重要。这些设备的大多数用户都熟悉固件,因为他们需要频繁地进行“固件更新”来保持设备的正常运行。
固件更新由计算机代码组成,通常用于修复可能影响设备性能的安全威胁,例如漏洞或黑客攻击。但它们也可以用于为设备添加新功能,例如使设备能够与新型媒体进行交互。固件更新的示例包括:为互联网路由器添加安全功能、改进串流视频应用的浏览功能,以及通过操作系统 (OS) 更新让计算机主板支持新类型的处理器。
由于如今大多数设备都已连接到 Internet,远程下载更新(“over the air”)已成为制造商发布固件更新的一种方式。大多数设备已将程序更新功能内置于固件中,用户仅需接收更新通知即可完成升级。其他设备仍然需要用户访问制造商的网站并下载必要的代码。固件更新的频率因设备类型而异。例如,智能手机通常将固件更新与软件更新结合使用,以确保手机及其底层操作系统正常运行。
由于固件的使用非常广泛,而且对许多重要设备的功能至关重要,它已成为黑客攻击的重要目标。依赖固件的硬件设备存在许多漏洞,因为它们经常使用相同的代码。例如,笔记本电脑,通常包含敏感的工作信息,依靠固件驱动其电池、声卡、显卡和摄像头等组件,因此成为攻击的理想目标。
固件黑客攻击通常涉及恶意软件部署,即故意编写代码,通过附着在固件上对计算机系统或用户造成伤害。常见的恶意软件类型包括勒索软件(劫持用户数据)、木马程序(伪装成合法程序以逃避检测)和间谍软件(窃取用户敏感信息)。黑客很少需要实际进入机器进行攻击,他们可以通过蓝牙或 Wi-Fi 连接远程访问,随着联网设备数量的增加,这种方式越来越流行。
固件安全功能不足可能导致敏感用户数据被盗或泄露,以及不法分子远程控制用户的计算机。例如,2024 年 6 月,Google 发布警告,称其 Pixel 固件问题使其容易受到攻击,而且目前还没有已知的修复方法2。
由于固件具有诸多优势,企业越来越意识到固件漏洞的风险,并正在采取更多措施防止其系统被利用。
性能提升,无需更换硬件:固件更新使设备能够获得新功能,而无需更改设备或其架构。许多固件更新都能改善设备底层代码的执行和指令时间,并有助于优化其性能。
改善用户体验:固件更新为用户提供了新的功能、计算机程序和函数,用于他们依赖的活动,例如通过物联网功能,用户可以在智能电视上查看账户余额、录制节目,并将智能冰箱与应用程序连接,了解要购买哪些食品。
更快解决问题:固件更新可以快速解决设备的许多常见问题,包括启动和处理时间、更多的多任务处理功能以及与外部设备的更好兼容性。
组件功能:固件更新有助于确保设备的所有外围组件(如智能手机上的扬声器和麦克风)按照设计的方式工作,使设备的性能达到最佳水平。
降低维修成本:及时更新设备固件有助于降低设备受程序错误影响的概率,避免未来进行故障修复或承担高昂的设备维修成本。
固件是在设备制造过程中安装到设备上的。首先,它促进作系统 (OS) 和设备硬件之间的通信。固件包含许多指令,这些指令对设备按设计方式运行至关重要。计算机的中央处理器 (CPU) 是将数据输入转换为信息输出的地方,它从计算机内存中检索并运行固件。
固件用于我们日常依赖的许多设备。其最常见的用例可能是在设备长时间不活动后将其唤醒。例如入睡后,当你醒来查看手机信息时,固件会帮助确保设备正常开机。为了在不使用信息时保留信息,设备会将固件存储在其“非易失性”存储器中。随着固件所需任务的复杂性增加,它逐渐具备了计算机硬件的一些特征,即使用闪存和基本输入/输出系统 (BIOS)。
除了固件使用和存储内存的方式发生变化外,用户可使用的固件类型也在不断进步。如今,固件可按其架构分为三个基本类别:
低级固件是设备硬件的固有部分,存储在 ROM 等非易失性只读芯片上,无法更新。依赖低级固件的设备使用的内存只能写入一次,并且永远不会重新编程。
高级固件是指因硬件复杂而无法更新的固件。在计算机中,高级固件包含在闪存芯片中,负责执行比低级固件更高级的任务。高级固件包含有关设备功能和各种组件交互方式的重要指令。
子系统固件包含在所谓的“嵌入式系统”中,它是为特定目的或任务而设计的硬件和软件的特定组合。子系统固件的复杂性和适应性与高级固件类似。与高级固件一样,子系统固件也很容易更新。
固件广泛应用于对数字化转型至关重要的各种设备中,因此在现代企业中有许多有用的应用。固件的一些更常见的商业用途包括:
个人计算机
个人计算机 (PC) 依靠固件在断电时保留关键数据,并依靠 BIOS 和统一可扩展固件接口 (UEFI) 规范来实现操作系统与固件之间的软件接口。这些功能嵌入在计算机系统板上的存储芯片中。此外,图形卡和视频卡等常用 PC 组件也依赖固件来运行。
数据存储设备
USB 驱动器、外置硬盘驱动器、闪存驱动器和其他便携式数据存储设备需要固件才能正常工作。固件内置于许多现代数据存储设备所依赖的闪存芯片中,并且可以轻松更新,这与内置于 ROM 或 EPROM 的固件不同。
智能手机
智能手机的运行在很大程度上依赖于固件。固件不仅能确保智能手机在长时间未使用后正常启动,还能确保关键组件能够按照设计预期进行相互交互。最后,在智能手机中,漏洞修复、安全功能和新功能都依赖于从互联网定期下载的固件更新才能正常运行。
汽车
近十年来,许多车辆都包含依靠固件执行关键任务的计算机。不同类型的固件被用于各种车辆系统,包括优化发动机性能和燃油效率的发动机控制单元 (ECU),以及辅助导航和连接到许多车载摄像头的日益复杂的信息和娱乐系统。
物联网 (IoT) 设备
物联网 (IoT) 是指由实体设备、车辆、电器和其他实体对象组成的网络,这些实体对象内嵌传感器、软件和网络连接,可以收集和共享数据。固件对于智能家电、无人驾驶车辆、更智能的城市和工厂等许多物联网技术用例至关重要。在物联网设备(如通过互联网传输数据的传感器)上,固件包含永久存储在硬件中的关键指令,使设备能够启动和关闭电源,收集、分析和传输数据等。
1. Firmware (link resides outside ibm.com), Wikipedia
2. Google Warns of Pixel Firmware Security Flaw Exploited as Zero-Day (link resides outside ibm.com), The Hacker News, June 13, 2024
IBM Cloud Infrastructure Center 是一款兼容 OpenStack 的软件平台,用于管理 IBM zSystems 和 IBM LinuxONE 上的私有云基础架构。
发现专为企业混合云和 AI 策略设计的服务器、存储器和软件。
查找适合企业的业务需求的云基础设施解决方案,并按需扩展资源。