Linux初探(5)--关于Bootloader

关于Bootloader


Bootloader分为Bootloader1和Bootloader2,一下简称BL1和BL2。

  1. Bootloader1可以放在四个地方:NAND, SD/MMC, eMMC, USB
  2. BL1在iROM上运行,因为iRAM上电就可以用,iRAM就是4412芯片内部的RAM,不用初始化就能用
  3. BL2是uboot的一部分,是uboot的前面一小段程序,也就是前14K,这前14K也是要在IRAM里面运行的,也就是说BL1和BL2都在IRAM里面运行。
  4. bootloader和手机的安全关系非常密切,如果能够控制BootLoader,iPhone的越狱,Android的root以及在手机安装第三方ROM都不成问题。所以要防止BootLoader被篡改
  5. 怎么保护BootLoader1?
    在上电启动IROM程序以后,加载BL1的时候,要对BL1进行多种安全检验,防止BL1是假的,然后BL1会对BL2进行各种检验,直至操作系统linux。
  6. BL1的结构
    在这里插入图片描述
    ①header中有两部分内容,number of sector 就是BL1的大小,checksum value就是累加和校验。就是说把整个BL1主体部分的内容累加和放到这里,然后实际计算下整个累加和,做对比,如果不对,就说明BL1是假的或错误的,不予执行。
    ② Encrypted BL1 Binary 部分 就是已经过加密的BL1代码。
    ③ Signature部分是客户和三星的公钥以及签名文件
    三重安全等级保护BL1
  7. BL2实际就是一个uboot,然后取出前14K就是了。
  8. BL1,BL2和UBOOT在EMMC里面的分布:
    在这里插入图片描述
  9. BL2的结构

在这里插入图片描述 最上面的那部分其实就是14K,然后下面是checksum(校验),signature(签名),padding(补齐16K)。BL2的主体部分没有加密但是下面有签名。另外uboot也是要补齐的,补齐到328K。 10. 开发板的BL1和BL2是没有经过secure boot的,但是本身是安全的,由三星提供。但是BL1不在对BL2进行secure认证了。开发板的BL1的名字是:E4412_N.bl1.SCP2G.bin 中间的N就是表示这个意思。E4412.TZ.SSCR.EVT1.1.bin 这个就是一个要求认证的BL1,它会对下级的BL2进行签名认证