我正在处理

android boot.img,它是压缩内核,ramdisk和dtb的组合.我从uboot的串行控制台日志中看到了启动过程,这是引发我好奇心的部分

CPU: Freescale i.MX6Q rev1.2 at 792 MHz

CPU: Temperature 27 C

Reset cause: POR

Board: MX6-SabreSD

I2C: ready

DRAM: 1 GiB

PMIC: PFUZE100 ID=0x10

MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2

No panel detected: default to Hannstar-XGA

Display: Hannstar-XGA (1024x768)

In: serial

Out: serial

Err: serial

check_and_clean: reg 0, flag_set 0

Fastboot: Normal

flash target is MMC:1

Net: FEC [PRIME]

Normal Boot

Hit any key to stop autoboot: 3 2 1 0

boota mmc1

kernel @ 14008000 (7272352)

ramdisk @ 15000000 (869937)

fdt @ 14f00000 (44072)

## Booting Android Image at 0x12000000 ...

Kernel load addr 0x14008000 size 7102 KiB

Kernel command line: console=ttymxc0,115200 init=/init video=mxcfb0:dev=hdmi,1920x1080M@60,bpp=32 video=mxcfb1:off video=mxcfb:off video=mxcfb3:off vmalloc=256M androidboot.console=ttymxc0 consolebalank=0 androidboot.hardware=freescale cma=384M

## Flattened Device Tree blob at 14f00000

Booting using the fdt blob at 0x14f00000

Loading Kernel Image ... OK

Using Device Tree in place at 14f00000, end 14f0dc27

switch to ldo_bypass mode!

Starting kernel ...

内核的地址是14008000,ramdisk 15000000,fdt 14f00000.

我发现这些值保存在boot.img标头中,当我手动弄乱这个值时,即使实际内容没有被修改,图像也不会启动.

为什么这个地址如此重要?为什么必须是这些价值观?为什么不是其他价值?

我自己的一个猜测是:

这些加载地址值在内核中是硬编码的,所以如果我在boot.img头中更改它,它将导致副作用.为了阐述我自己的理论,将内核加载到’modified’load addr不会有问题.但是当实际执行这些行时,它将导致严重的问题,因为这些代码被修复以使用正确的“加载器”.

我的理论错了吗?如果是这样,如果你能纠正我,我将不胜感激.

Linux开机加载新内核,linux-kernel – 为什么加载内核地址,ramdisk在启动时很重要?...相关推荐

  1. linux开机引导进程是什么,Linux系统开机启动流程介绍

    一.linux系统进程启动流程图: 二.简单概括描述linux系统从开机到登陆界面的启动过程 1.开机BIOS自检 2.MBR引导 3.grub引导菜单 4.加载内核 5.启动init进程 6.读取i ...

  2. linux开机系统进不去,Linux系统无法启动的解决办法

    导致 Linux 无法启动的原因有很多,常见的原因有如下几种: 文件系统配置不当,如 /etc/inittab文件./etc/fstab 文件等配置错误或丢失,导致系统出现故障,以至于无法启动. 非法 ...

  3. linux开机自动启动数据库,mysql随linux开机自动启动

    mysql随linux开机自动启动 一.方法一 利用mysql.server来制作启动程序,实质也是调用的mysqld_safe cp /usr/local/mysql/share/mysql/mys ...

  4. magenta内核与linux,谷歌将推出新操作系统Fuchsia:Magenta语言为内核

    谷歌现在研发出来并且推出使用的系统有Chrome OS.Android和Chromecasts,这三者在操作系统的市场中占得份额很高,但是好像谷歌对此并不满意,因为有相关消息显示,谷歌正在研发新的操作 ...

  5. 西部数据硬盘支持linux,西部数据开发新的Linux文件系统“Zonefs” 支持在分区块设备上运行...

    近些年来,从RISC-V体系结构位到存储增强功能,西部数据(Western Digital)在Linux内核方面做出了更大的贡献.最近几周,其一直在处理的最新代码就是全新的Linux文件系统. 不过, ...

  6. linux开机到登陆的流程图,Linux开机自动登录root,并启动应用程序

    只需要修改etc目录下的inittab文件和init.d路径下的rcS文件. 在inittab文件中选择执行以下两句 #采用界面登陆 ::askfirst:/sbin/getty 115200 con ...

  7. linux系统如何挂载新硬盘,Linux系统挂载新硬盘操作流程

    1.登录后输入fdisk -l命令看当前磁盘信息 2.可以看到除了当前的第一块硬盘外还有一块sdb的第二块硬盘,然后用fdisk /dev/sdb 进行分区 3.进入fdisk命令,输入h可以看到该命 ...

  8. linux开机自启服务命令,linux开机自启服务命令

    重启Linux系统或重启ECS实例后,服务未自动开启.需要在服务器中手动开启或者配置服务开启自启动.本文以Linux系统的ECS实例为例. 方法一:手动开启服务 开启Nginx.Apache.PHP. ...

  9. linux开机自动挂载硬盘命令,Linux系统开机自动挂载硬盘分区

    本文介绍如何在Linux系统上实现开机自动挂载硬盘分区.先说一下我的硬盘.我的笔记本有一块固态硬盘和一块机械硬盘.我将操作系统安装在固态硬盘上,文件都存放在机械硬盘里.所以每次我需要访问文件时,我都要 ...

  10. Linux进程里运行新代码,linux调度器源码分析 - 新进程加入(三)

    中专门描述了copy_process()这个创建函数,而里面有一个函数专门用于进程调度的初始化,就是sched_fork(),其代码如下 int sched_fork(unsigned long cl ...

最新文章

  1. LeetCode实战:三数之和
  2. panel中html怎么写,在Panel上绘制Html表?
  3. 巴菲特如何滚雪球的?
  4. 从B站源码泄露事件入手,说一下团队协作中版本管理的安全意识
  5. java多线程框架 netty,JavaSocket编程之Netty框架线程模型
  6. C语言程序段的定义、实际应用分析
  7. 飞算(SoFlu)软件机器人——人人都是全栈架构师
  8. matlab幻方置乱,幻方置乱,magic scrambling,音标,读音,翻译,英文例句,英语词典
  9. 一个电商项目的功能模块梳理
  10. ABYY FineReader PDF软件最新15个人​版安装下载步骤教程
  11. [小物分享] “Cap-less”——烂笔头3088
  12. 写给理工科人看的乐理(四)和弦与调式
  13. 企业微信调试H5页面
  14. 《Artificial Intelligence in Finance》(AI金融, by Yves Hilpisch)台湾谢承熹Chenghsi Hsieh老师中文讲解
  15. 腾讯焦虑了,一向温文尔雅的马化腾也发脾气了
  16. 51nod1238(杜教筛)
  17. java力矩_机器人单关节力矩控制(前馈+反馈)
  18. [转] FileZilla Server超详细配置
  19. 凯利边带(Kelly Sidebands)
  20. Android 消息推送框架详解

热门文章

  1. 4、elasticsearch安装head插件
  2. 中国人工智能学会通讯——人工智能在各医学亚专科的发展现状及趋势 1.6 结束语...
  3. springMVC web项目 对访问数据库的用户名密码进行加密解密
  4. JVM堆内存监测的一种方式,性能调优依旧任重道远
  5. 坑爹的InetAddress getLocalHost函数
  6. 关于PPPOE拨号分配给用户32位掩码,且IP与网关相同的问题
  7. 【转】vista下SMB共享的解决办法
  8. SpringBoot中级篇-打包-第三方jar包
  9. Java 零注解文档生成工具—smart-doc,看完有替换swagger的冲动
  10. linux解压压缩命令