Linux开机加载新内核,linux-kernel – 为什么加载内核地址,ramdisk在启动时很重要?...
我正在处理
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在启动时很重要?...相关推荐
- linux开机引导进程是什么,Linux系统开机启动流程介绍
一.linux系统进程启动流程图: 二.简单概括描述linux系统从开机到登陆界面的启动过程 1.开机BIOS自检 2.MBR引导 3.grub引导菜单 4.加载内核 5.启动init进程 6.读取i ...
- linux开机系统进不去,Linux系统无法启动的解决办法
导致 Linux 无法启动的原因有很多,常见的原因有如下几种: 文件系统配置不当,如 /etc/inittab文件./etc/fstab 文件等配置错误或丢失,导致系统出现故障,以至于无法启动. 非法 ...
- linux开机自动启动数据库,mysql随linux开机自动启动
mysql随linux开机自动启动 一.方法一 利用mysql.server来制作启动程序,实质也是调用的mysqld_safe cp /usr/local/mysql/share/mysql/mys ...
- magenta内核与linux,谷歌将推出新操作系统Fuchsia:Magenta语言为内核
谷歌现在研发出来并且推出使用的系统有Chrome OS.Android和Chromecasts,这三者在操作系统的市场中占得份额很高,但是好像谷歌对此并不满意,因为有相关消息显示,谷歌正在研发新的操作 ...
- 西部数据硬盘支持linux,西部数据开发新的Linux文件系统“Zonefs” 支持在分区块设备上运行...
近些年来,从RISC-V体系结构位到存储增强功能,西部数据(Western Digital)在Linux内核方面做出了更大的贡献.最近几周,其一直在处理的最新代码就是全新的Linux文件系统. 不过, ...
- linux开机到登陆的流程图,Linux开机自动登录root,并启动应用程序
只需要修改etc目录下的inittab文件和init.d路径下的rcS文件. 在inittab文件中选择执行以下两句 #采用界面登陆 ::askfirst:/sbin/getty 115200 con ...
- linux系统如何挂载新硬盘,Linux系统挂载新硬盘操作流程
1.登录后输入fdisk -l命令看当前磁盘信息 2.可以看到除了当前的第一块硬盘外还有一块sdb的第二块硬盘,然后用fdisk /dev/sdb 进行分区 3.进入fdisk命令,输入h可以看到该命 ...
- linux开机自启服务命令,linux开机自启服务命令
重启Linux系统或重启ECS实例后,服务未自动开启.需要在服务器中手动开启或者配置服务开启自启动.本文以Linux系统的ECS实例为例. 方法一:手动开启服务 开启Nginx.Apache.PHP. ...
- linux开机自动挂载硬盘命令,Linux系统开机自动挂载硬盘分区
本文介绍如何在Linux系统上实现开机自动挂载硬盘分区.先说一下我的硬盘.我的笔记本有一块固态硬盘和一块机械硬盘.我将操作系统安装在固态硬盘上,文件都存放在机械硬盘里.所以每次我需要访问文件时,我都要 ...
- Linux进程里运行新代码,linux调度器源码分析 - 新进程加入(三)
中专门描述了copy_process()这个创建函数,而里面有一个函数专门用于进程调度的初始化,就是sched_fork(),其代码如下 int sched_fork(unsigned long cl ...
最新文章
- LeetCode实战:三数之和
- panel中html怎么写,在Panel上绘制Html表?
- 巴菲特如何滚雪球的?
- 从B站源码泄露事件入手,说一下团队协作中版本管理的安全意识
- java多线程框架 netty,JavaSocket编程之Netty框架线程模型
- C语言程序段的定义、实际应用分析
- 飞算(SoFlu)软件机器人——人人都是全栈架构师
- matlab幻方置乱,幻方置乱,magic scrambling,音标,读音,翻译,英文例句,英语词典
- 一个电商项目的功能模块梳理
- ABYY FineReader PDF软件最新15个人​版安装下载步骤教程
- [小物分享] “Cap-less”——烂笔头3088
- 写给理工科人看的乐理(四)和弦与调式
- 企业微信调试H5页面
- 《Artificial Intelligence in Finance》(AI金融, by Yves Hilpisch)台湾谢承熹Chenghsi Hsieh老师中文讲解
- 腾讯焦虑了,一向温文尔雅的马化腾也发脾气了
- 51nod1238(杜教筛)
- java力矩_机器人单关节力矩控制(前馈+反馈)
- [转] FileZilla Server超详细配置
- 凯利边带(Kelly Sidebands)
- Android 消息推送框架详解
热门文章
- 4、elasticsearch安装head插件
- 中国人工智能学会通讯——人工智能在各医学亚专科的发展现状及趋势 1.6 结束语...
- springMVC web项目 对访问数据库的用户名密码进行加密解密
- JVM堆内存监测的一种方式,性能调优依旧任重道远
- 坑爹的InetAddress getLocalHost函数
- 关于PPPOE拨号分配给用户32位掩码,且IP与网关相同的问题
- 【转】vista下SMB共享的解决办法
- SpringBoot中级篇-打包-第三方jar包
- Java 零注解文档生成工具—smart-doc,看完有替换swagger的冲动
- linux解压压缩命令