网上关于这方面的资料比较少,如果有疏漏之处还请各位坛友指正。
固件是实现硬件功能的软件,是一种硬件的设计方法。通常的硬件设计制造完成后就难以修改,因此如果存在漏洞和故障就不容易解决。如果将硬件的部分功能通过软件的方式实现,就可以通过更简单的「软件升级」方式来改进功能。固件广泛存在于各种硬件之中,比如网卡、显卡、硬盘,另外电脑的BIOS也属于固件(BIOS的设置界面也叫firmware settings)。
固件的一种实现方法是用非易失性的存储器写入程序,需要更新的时候再单独把新版本的固件覆盖进去(这个俗称叫「刷」),由于使用的存储器或者硬件的设计不同,一些固件可以直接用软件系统更新,另一些可能需要专用的设备才能操作。另一种实现方法是硬件不保存固件,断电的时候就会清除(类似内存),每次开机的时候都由操作系统把固件重新写入设备。比较大型的硬件比如网卡、显卡更喜欢采用这种方式。因为这种设计的缘故有时候也会引发一些硬件问题(比如说直接启动一个系统和从另一个系统重启再进入系统,硬件的工作方式有可能会不一样,这是因为重启的时候操作系统可能不会覆盖已有的固件。所以「重启」和「关机再开机」是不一样的)。
为了支持各种设备的运行,Linux内核携带了相当大量的固件(可以在 /usr/lib/firmware目录找到他们)。其中的一些其实并不是开源的,这也是为什么一些人觉得Linux并不是100%自由。有些时候设备不工作也不是驱动的问题,而是缺少了相应的固件。想观察固件是否加载可以读取内核日志(虽然我觉得日志给的信息似乎也不全):journalctl -b -k --grep=firmware 或 sudo dmesg | grep firmware
/usr/lib/firmware
journalctl -b -k --grep=firmware
sudo dmesg | grep firmware
一点比较老的资料:https://wiki.ubuntu.com/Kernel/Firmware
一句话:固化的小系统
其实就是既不 soft ,也不 hard
其实就是 韧体 啦
学习了
Popular Ranking
Popular Events
网上关于这方面的资料比较少,如果有疏漏之处还请各位坛友指正。
固件是实现硬件功能的软件,是一种硬件的设计方法。通常的硬件设计制造完成后就难以修改,因此如果存在漏洞和故障就不容易解决。如果将硬件的部分功能通过软件的方式实现,就可以通过更简单的「软件升级」方式来改进功能。固件广泛存在于各种硬件之中,比如网卡、显卡、硬盘,另外电脑的BIOS也属于固件(BIOS的设置界面也叫firmware settings)。
固件的一种实现方法是用非易失性的存储器写入程序,需要更新的时候再单独把新版本的固件覆盖进去(这个俗称叫「刷」),由于使用的存储器或者硬件的设计不同,一些固件可以直接用软件系统更新,另一些可能需要专用的设备才能操作。另一种实现方法是硬件不保存固件,断电的时候就会清除(类似内存),每次开机的时候都由操作系统把固件重新写入设备。比较大型的硬件比如网卡、显卡更喜欢采用这种方式。因为这种设计的缘故有时候也会引发一些硬件问题(比如说直接启动一个系统和从另一个系统重启再进入系统,硬件的工作方式有可能会不一样,这是因为重启的时候操作系统可能不会覆盖已有的固件。所以「重启」和「关机再开机」是不一样的)。
为了支持各种设备的运行,Linux内核携带了相当大量的固件(可以在
/usr/lib/firmware
目录找到他们)。其中的一些其实并不是开源的,这也是为什么一些人觉得Linux并不是100%自由。有些时候设备不工作也不是驱动的问题,而是缺少了相应的固件。想观察固件是否加载可以读取内核日志(虽然我觉得日志给的信息似乎也不全):journalctl -b -k --grep=firmware
或sudo dmesg | grep firmware
一点比较老的资料:https://wiki.ubuntu.com/Kernel/Firmware