首页
登录 | 注册

(转贴)linux启动流程分析---bootloader启动内核过程

我分析的是2.4.19的内核版本,是xscale的平台,参考了网上很多有价值的帖子,也加入了自己的一些看法,

陆续总结成文字,今天是第一篇:

内核一般是由bootloader来引导的,通过bootloader启动内核一般要传递三个参数,

第一个参数放在寄存器0中,一般都为0,r0 = 0;

第二个参数放在寄存器1中,是机器类型id,r1 = Machine Type Number;

第三个参数放在寄存器2中,是启动参数标记列表在ram中的起始基地址;

bootloader首先要将ramdisk(如果有)和内核拷贝到ram当中,然后可以通过c语言的模式启动内核:

void (*startkernel)(int zero, int arch, unsigned int params_addr) = (void(*)(int, int, unsigned int))KERNEL_RAM_BASE;

startkernel(0, ARCH_NUMBER, (unsigned int)kernel_params_start);

其中KERNEL_RAM_BASE为内核在ram中启动的地址,ARCH_NUMBER是Machine Type Number,kernel_params_start是参数在ram的偏移地址。

这时候就将全力交给了内核。

 


相关文章

  • dmesg此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora.SUSE.openSUSE. 1dmesg [-c]  [-r]  [-n level]  [-s bufsize] 2选项 -c -r -s - ...
  • BootLoader 详解(1)
    https://www.cnblogs.com/ATMvip/archive/2013/08/07/3242627.html 1. Boot Loader的概念 BootLoader就是在操作系统内核运行前之前运行的一段小程序.通过这段小程 ...
  • BCC – 用于Linux性能监视,网络和更多的动态跟踪工具
    BCC(BPF编译器集合 )是用于创建足智多谋内核跟踪和操作程序一套功能强大的适当的工具和示例文件. 它采用扩展BPF( Berkeley包过滤器 ),最初被称为eBPF这是在Linux的3.15的新功能之一. BCC / BPF – 用于 ...
  • 1. Docker 这个容器包含下面的东西 A native Linux container format that Docker calls libcontainer. Linux kernel namespace: which prov ...
  • 微信公众号中看到的一篇文章,挺全的,想要走架构师这条路的程序员可以作为参考学习计划,个人感觉深度有余,广度不足. Java架构师主要需要做哪些工作呢? 1.负责设计和搭建软件系统架构(平台.数据库.接口和应用架构等),解决开发中各种系统架构 ...
  • 前面12节的课程,主要针对 Linux 内核中 GNU C 扩展的一些常用 C 语言语法进行了分析.GNU C 的这些扩展语法,主要用来完善 C 语言标准和编译优化.而通过 C 标准的发展过程我们又发现,对于一些编译器扩展的一些特性,或者其 ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.013 s.
苏ICP备12049786号-20