高通8996启动流程-4. lk启动之mkbootimg工具

1.前言

Android在编译过程中会调用mkbootimg命令,mkbootimg是生成boo.img的命令,boot.img中包含了kernel, dtb, ramdisk等。

2. mkbootimg工具原理

我们通过查看安卓在编译过程中的输出信息可以看到如下:

/bin/bash -c "(out/host/linux-x86/bin/mkbootimg  --kernel out/target/product/G0335D/kernel --ramdisk out/target/product/G0335D/ramdisk.img --base 0x80000000 --pagesize 4096 --cmdline \"console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x237 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 cma=32M@0-0xffffffff initcall_debug log_buf_len=2M printk.time=1 buildvariant=userdebug\" --os_version 7.1.2 --os_patch_level xxxx-xx-xx  --output out/target/product/G0335D/boot.img 

也就是说mkbootimg会传递很多的参数,其中包含了–cmdline,对于XXX版型,其实它来源于:
device/xxx/XXXX/BoardConfig.mk文件的BOARD_KERNEL_CMDLINE变量
同时mkbootimg源码中也会读取kernel和ramdisk文件的大小,用来初始化hdr->kernel_size, hdr->ramdisk_size

那么mkbootimg该如何使用这些参数呢?实际它会把这些参数的信息填充到bootimg头部信息,下面我们一起来了解bootimg的头部信息包含哪些内容?假设以MSM8996平台使用的版本0(通过mkbootimg解包工具可以看到)为例:
在这里插入图片描述

所以–cmdline中的信息是保存到bootimg的header头部了,当通过mkbootimg工具解析boot.img时会解析boot.img的头部,从头部的cmdline部分取出保存的cmdline的信息

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值