有人能解释一下Linux操作系统补丁、Linux内核补丁、固件升级和BIOS升级之间的区别吗?
发布于 2019-04-04 06:40:05
微码更新是来自CPU制造商的一个文件,它提供给您实际的物理CPU,并对其内部、最低级别的编程进行更改。因为它在如此低的级别上生效,所以微码更新通常不会持久:每次处理器启动或在硬件级别重置时,都需要重新加载微码更新。微代码更新往往非常特定于特定的CPU制造和模型。
固件更新会更改/替换特定硬件单元中的一些持久存储的程序代码,这些代码通常以某种方式处理该硬件的操作。BIOS或UEFI更新是固件更新的特例: BIOS/UEFI是处理系统启动方式、检测集成在主板上的各种插件和设备并为它们分配硬件资源、配置低级别电源管理和提供操作系统引导程序将使用的基本输入/输出功能的固件。
BIOS/UEFI更新/升级可以包括嵌入其中的微码更新:这样,微码将在启动过程的早期阶段应用,以确保操作系统总是将CPU置于至少包含应用于它的特定微码级别的状态,并且没有软件能够再利用旧的“坏”的微代码版本。
在这种情况下,“修补程序”一词恰当地指的是一个更新,该更新不包括正在更新的事物的完整副本,而仅包括已更改的部分。有一个工具可以应用修补程序,即使用旧版本和为其制作的修补程序,并使用它们生成一个与补丁的创建者完全相同的新版本。
这最初只是将更新的大小降到最低的一种方法,但有了专有操作系统,它还允许OS供应商在基本不受限制地分发更新的同时为操作系统付费:不可能或者至少很难从一个特定的操作系统中获取发布的全部补丁,并从他们那里组装一个未经许可的操作系统副本,就像一个巨大的拼图拼图。
在软件开发中,补丁在开发人员之间的通信中很有用:源代码补丁文件将准确地描述以人类可读的方式更改的内容,因此两个处理同一件事情的开发人员可以通过根据更改创建补丁来向对方展示他们所做的具体修改以实现特定的目标。
随着现代互联网的速度和存储设备的容量,对已经以二进制形式出现的固件或软件的更新通常不再以补丁的形式发布:提供一个新的软件包或一个固件文件来完全取代原来的版本要普遍得多。然而,有些人可能还在谈论固件补丁或OS补丁。这可能是因为他们将修补程序视为等同于更新的术语,或者是因为他们在软件开发级别上进行思考。
例如,当发现固件错误时,用于固件的修补程序很可能作为应用于固件源代码的修补程序开始其生命,然后从修改后的源代码生成新的二进制固件更新文件只是一个枯燥、机械、可重复的过程;修补程序实际上是更新的“有趣部分”。
当有人在谈论"Linux补丁“而没有具体说明正在修补的工具或库时,他们最可能谈论的是完全取代旧版本的相应包的新.rpm、.deb或类似的包文件,因此”更新“或”升级“可能是一个更准确的术语。此类包可用于更新/升级操作系统的特定部分:特定工具、用于特定目的的一组工具或特定的系统服务。
对于“内核修补程序”,这也可能是正确的,但也有可能是演讲者实际上参与了内核开发,并讨论了内核源代码的补丁。或者,他们可能会关注某个特定内核更新的“有趣部分”:一个修复某些bug或引入新特性的源代码补丁。
https://unix.stackexchange.com/questions/510367
复制相似问题