受单片机和ARM7等小型CPU设备编程思维的影响,开始对嵌入式linux和PC中存在bootloader/BIOS的意义有了疑问
bootloader到底有没有必要存在呢?答案是:大部分情况下是有必要的。
首先,bootloader的作用是在硬件商店后运行的第一段软件代码,也叫引导加载程序,是在操作系统内核运行之前运行的一小段程序,这小段程序的作用一般是初始化硬件设备,比如内存啊,堆栈等等,从而将系统的硬件环境编程一种合适的状态,然后再引导加载操作系统,如linux或windows。
乍一看,其实挺有用,但这是一定必须的吗?显然不是,因为完全可以上电直接运行操作系统,当然这个操作系统的开头必须要包含上述bootloader的功能。这一点在单片机和ARM7中使用keil编程环境能理解。
但是,问题来了,如果我们想升级操作系统呢?我们想升级应用程序呢?这一点对于windows或者linux都是很常见的,如果没有bootloader,那么我们必须要找到烧写电脑或者CPU的烧写工具,事实上,这对于生产商来讲,都不是一件容易的事情。但是有bootloaer就很方便了,我们只需要将升级后的操作系统放到“硬盘”或nandflash中的某个位置,然后断电重启一下,bootloader就能在引导系统的同时,完成了对操作系统的升级。这样是不是很方便了。
后续,目前有一些手机厂家对bootloader“上锁”,这个就相当于是给bootloader引导上了把锁,升级的操作系统如果是自家的,自然是有“解锁”的钥匙的,但是是其他家的,那就不行了。