【问题标题】:About flashing boot image of Android关于安卓刷机启动镜像
【发布时间】:2012-09-20 20:28:10
【问题描述】:

我不熟悉 Android 内核编译过程。 但是我最近遇到了一个问题,很困扰我。

问题描述如下: 基于Android,我构建了自定义镜像,包括boot.img、system.img等。 然后我需要将这些图像闪存到物理设备才能启动到 Android 主屏幕。 在编译这些图像文件之前,我设置了一个新的内核命令行:

CONFIG_CMDLINE="root=/dev/mtdblock2 rw init=/init console=ttyS0, 115200 mem=128M uard_dma android"

编译完这些镜像后,我在vim中打开了boot.img,看到里面有如下字符串:

"root=/dev/mtdblock2 rw init=/init console=ttyS0, 115200 mem=128M uard_dma android"

但是当我将 boot.img 刷入设备时,我得到了不同的输出,如下所示:

**Kernel command line: console=ttyO2,115200n8 earlyprintk**

也就是说,我设置了内核命令行值,并且写入了boot.img,但是当 将 boot.img 闪存到设备中,我得到了不同的内核命令行值。

有人遇到过这个问题并解决了吗?
非常感谢您的帮助。
谢谢先进!

【问题讨论】:

    标签: android kernel


    【解决方案1】:

    引导加载程序会将命令行传递给内核。
    例如,如果使用 u-boot 引导加载程序,
    它将包含在 u-boot 变量 bootargs

    中

    这可以在引导加载程序提示符下进行验证。
    例如,如果设备正在使用 u-boot 引导加载程序。

    1. 通过串行提示将设备连接到您的 PC。

    2. 在您的 PC 上启动串行仿真器(minicom、teraterm、超级终端)。

    3. 打开设备电源。

    4. 按任意键可在引导加载程序阶段停止设备引导。

    5. 现在在 u-boot 提示符下输入以下命令:

      u-boot# printenv

    6. 这将列出所有 uboot 变量。注意变量 bootargs 的值。

    7. 这可以使用以下命令进行修改:

      u-boot# setenv bootargs ''

    8. 要在重新启动后保存此值,请使用以下命令:

      u-boot# saveenv

    其他引导加载程序也提供类似的功能。

    【讨论】:

    • 你的意思是我可以通过 u-boot bootloader 修改 bootargs 变量,我理解你的意思吗?
    • 奇怪的是我已经设置了启动的地方,但是启动内核时找不到地方,日志告诉我我指定的空间不存在。我现在的情况和这个问题类似:groups.google.com/forum/#!msg/android-porting/oTz-Ak_2nrQ/…
    • 如您分享的上述链接中所述,您需要在您的 bootargs(在 u-boot 中)更新文件系统所在的“root=”在设备上闪烁。
    • 你的意思是我指定的地方被u-boot覆盖了?所以我需要重置“root”值?
    • 是的。您可以尝试在 u-boot 中将“root=/dev/mtdblock2”添加到 bootargs 并保存并启动吗?...
    猜你喜欢
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    相关资源
    最近更新 更多