[Feelings & Sharing] 【小知识】什么是固件(firmware)
Tofloor
poster avatar
enforcee
deepin
2023-04-22 18:24
Author

网上关于这方面的资料比较少,如果有疏漏之处还请各位坛友指正。

blush

固件是实现硬件功能的软件,是一种硬件的设计方法。通常的硬件设计制造完成后就难以修改,因此如果存在漏洞和故障就不容易解决。如果将硬件的部分功能通过软件的方式实现,就可以通过更简单的「软件升级」方式来改进功能。固件广泛存在于各种硬件之中,比如网卡、显卡、硬盘,另外电脑的BIOS也属于固件(BIOS的设置界面也叫firmware settings)。

固件的一种实现方法是用非易失性的存储器写入程序,需要更新的时候再单独把新版本的固件覆盖进去(这个俗称叫「刷」),由于使用的存储器或者硬件的设计不同,一些固件可以直接用软件系统更新,另一些可能需要专用的设备才能操作。另一种实现方法是硬件不保存固件,断电的时候就会清除(类似内存),每次开机的时候都由操作系统把固件重新写入设备。比较大型的硬件比如网卡、显卡更喜欢采用这种方式。因为这种设计的缘故有时候也会引发一些硬件问题(比如说直接启动一个系统和从另一个系统重启再进入系统,硬件的工作方式有可能会不一样,这是因为重启的时候操作系统可能不会覆盖已有的固件。所以「重启」和「关机再开机」是不一样的)。

为了支持各种设备的运行,Linux内核携带了相当大量的固件(可以在 /usr/lib/firmware目录找到他们)。其中的一些其实并不是开源的,这也是为什么一些人觉得Linux并不是100%自由。有些时候设备不工作也不是驱动的问题,而是缺少了相应的固件。想观察固件是否加载可以读取内核日志(虽然我觉得日志给的信息似乎也不全):journalctl -b -k --grep=firmwaresudo dmesg | grep firmware

一点比较老的资料:https://wiki.ubuntu.com/Kernel/Firmware

Reply Favorite View the author
All Replies
明天会更好
deepin
2023-04-22 18:40
#1

一句话:固化的小系统

Reply View the author
(´◓Д◔`)
deepin
2023-04-22 20:56
#2

其实就是既不 soft ,也不 hard

其实就是 韧体 啦

tail

Reply View the author
晚秋(lateautumn)
Moderator
2023-04-23 07:52
#3

学习了kissing_heart

Reply View the author