有人可以解释一下 Linux 操作系统补丁、Linux 内核补丁与固件升级或 BIOS 升级之间的区别吗?
答案1
微码
微代码更新是来自 CPU 制造商的文件,该文件被馈送到您的实际物理 CPU 并对其内部最低级别的编程进行更改。因为它在如此低的级别上生效,所以微代码更新通常不是持久的:每次处理器在硬件级别上电或重置时,都需要重新加载微代码更新。微代码更新往往针对特定的 CPU 品牌和型号。
固件更新/升级
固件更新更改/替换特定硬件单元内的一些持久存储的程序代码,这些代码通常涉及以某种方式操作该硬件。 BIOS 或 UEFI 更新是固件更新的特例:BIOS/UEFI 是处理系统启动方式、检测主板上集成的各种附加卡和设备并为它们分配硬件资源、配置的固件。低级电源管理并提供操作系统引导加载程序将使用的基本输入/输出功能。
BIOS/UEFI 更新/升级可以包含嵌入其中的微代码更新:这样,微代码将在启动过程的早期阶段应用,以确保操作系统始终使 CPU 处于以下状态:至少适用于它的特定微代码级别,并且没有软件可以再利用旧的“坏”微代码版本。
修补
在这种情况下,这个词修补正确地指的是不包含正在更新的内容的完整副本,而仅包含更改的部分的更新。有一个工具可以应用补丁,即采用旧版本和为其制作的补丁,并使用它们生成与补丁创建者所拥有的版本完全相同的新版本。
这最初只是一种最小化更新大小的方法,但对于专有操作系统,它还允许操作系统供应商在基本上不受限制地分发更新的同时获得操作系统报酬:这要么是不可能的,要么至少是非常难以接受的为特定操作系统发布的全套补丁,并从中组装操作系统的未经许可的副本,就像一个巨大的拼图游戏。
在软件开发中,补丁对于开发人员之间的沟通非常有用:源代码补丁文件将以人类可读的方式准确描述更改的内容,因此使用同一事物的两个开发人员可以准确地向对方展示他们所做的修改通过根据更改创建补丁来实现特定的目标。
随着现代互联网速度和存储设备容量的增加,对已经以二进制形式存在的固件或软件的更新通常不再作为补丁发布:更常见的是提供完全替换原始软件包或固件文件的新软件包或固件文件。尽管如此,有些人可能仍然会谈论固件补丁或者操作系统补丁。这可能是因为他们正在处理这个术语修补相当于更新,或者因为他们在软件开发层面思考。
例如,当发现固件错误时,对其进行修复很可能会以修补应用于固件的源代码,然后生成新的二进制固件更新从修改后的源代码中提取文件只是一个无聊、机械、可重复的过程;该补丁实际上是更新中“有趣的部分”。
操作系统补丁与内核补丁
当有人在谈论“Linux 操作系统补丁”而没有具体指定要修补哪些工具或库时,他们很可能在谈论新的.rpm
或.deb
类似的包文件,这些文件完全替换了相应包的旧版本,因此“更新”或“升级” “可能是更准确的术语。这样的软件包可用于更新/升级操作系统的特定部分:特定工具、用于特定目的的一组工具或特定系统服务。
对于“内核补丁”来说也是如此,但演讲者也有可能实际上正在参与内核开发并谈论内核源代码的补丁。或者他们可能会关注特定内核更新的“有趣部分”:修复某些错误或引入新功能的源代码补丁。
答案2
A固件或者BIOS补丁是来自硬件或CPU制造商的代码,安装到硬件的可写内存中,并通过关机存储在硬件中。它们可能会进入主板、显卡、CPU 本身或其他设备。关闭电脑并不会删除它们。
Linux 操作系统的补丁、Linux核心或其他操作系统被写入驱动器,无论是固态硬盘(“SSD”)或硬盘驱动器(“硬盘”)。
每次电脑启动时,它们都会从驱动器中检索,并在电脑关闭时从电脑的 RAM 中删除。 (无论如何,这就是 PC 的设计;有一些偷偷摸摸的方法可以在断电后检索内存内容,但这超出了您的问题范围。)
大多数人所说的“Linux”是内核加上所有软件包,使其成为使用计算机完成工作的实用工具,或者编写使用计算机完成工作的脚本或程序(这里包括“娱乐”) 、游戏和多媒体,作为一份工作)。有些人称之为GNU/Linux,以区分 Just The Kernel (Linux) 和分布('发行版')与所有这些包。