了解物联网固件
固件是一种写入硬件设备的软件,作用是对应用和各项系统功能实施控制。固件中包含底层代码,这些代码能够帮助软件实现对硬件的操作。运行固件的设备称为嵌入式系统,嵌入式系统的硬件资源在存储能力以及内存等方面往往具有诸多限制。
固件通常由 bootloader、内核、文件系统以及其他资源组成。
在嵌入式操作系统中,BootLoader,加载引导程序,是系统加电后运行的第一段软件代码,是在操作系统内核运行之前运行。首先系统加电后bootloader对嵌入式系统硬件进行初始化使之先运行起来,然后将嵌入式操作系统映像加载到内存中并跳转过去。BootLoader 可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。当 bootloader 启动内核之后,文件系统就完成了加载。
固件可以采用的文件系统类型有很多,有时候根据设备的区别也会采用某些专有文件类型,常见的文件系统类型有 SquashFS、cramFS、JFFS2、YAFFS2以及ext2等。从渗透测试的角度出发,可以把文件系统看作是存储配置文件、服务、账户口令、散列值、应用程序代码以及启动脚本的地方。