精选文章 linux 内核启动过程

linux 内核启动过程

作者:chuqingq 时间: 2021-07-06 09:11:31
chuqingq 2021-07-06 09:11:31
【摘要】
                     
 1 headers.S:bootsect_startbootsect_startstart2   (0)_start   (512)start_of_setupvoid main(void) : main.c 
 2 main.c:main->go_to_protected_modego_to_protected_mode() 
 pm.c: ...


1 headers.S:bootsect_start
bootsect_start
start2   (0)
_start   (512)
start_of_setup
void main(void) : main.c

2 main.c:main->go_to_protected_mode
go_to_protected_mode()

pm.c: -> protected_mode_jump->code32_start
 protected_mode_jump(boot_params.hdr.code32_start,
(u32)&boot_params + (ds() << 4));
跳转到header.S中定义的code32_start:
code32_start: # here loaders can put a different
# start address for 32-bit code.
#ifndef __BIG_KERNEL__
  .long 0x1000  #   0x1000 = default for zImage
#else
  .long 0x100000 # 0x100000 = default for big kernel
#endif
此处对应head_32.S

3 head_32.S:startup_32/decompress_kernel/jmp
startup_32
...
/*
 * Do the decompression, and jump to the new kernel..
 */
...
 call decompress_kernel
...
/*
 * Jump to the decompressed kernel.
 */
 xorl %ebx,%ebx
 jmp *%ebp

应该是跳转到了arch/i386/kernel/head_32.S

4 head_32.S:startup_32
ENTRY(startup_32)
...
ENTRY(initial_code)
 .long i386_start_kernel
...

head32.c:i386_start_kernel
void __init i386_start_kernel(void)
{
 start_kernel();
}

5 init/main.c:start_kernel
start_kernel()

勿删,copyright占位
您找到想要的结果了吗?
linux 内核启动过程
提交成功!非常感谢您的反馈,我们会继续努力做到更好
分享文章到微博
分享文章到朋友圈

上一篇:解决MyEclipse吃内存的方法

下一篇:配置JDK

您可能感兴趣

  • Linux服务器安装mysql

    下载和安装mysql源 先下载 mysql源安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm -bash...

  • centos设置开机启动

    在CentOS系统下,主要有两种方法设置自己安装的程序开机启动。 1、把启动程序的命令添加到/etc/rc.d/rc.local文件中,比如下面的是设置开机启动httpd。 #!/bin/sh## This scr...

  • Linux/Unix进程管理工具supervisor安装与配置

    Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自...

  • Linux和AIX系统查询内存百分比命令

    Linux操作系统下用free命令还是AIX系统下用svmon命令查看内存只显示总大小和空闲大小。 怎样清楚直观的显示内存占用百分比呢。我们借用sed命令的强大功能可以实现。代码命令如下: --Linux系统 --...

  • Linux 根据PID找到相应应用程序的运行目录

    1.找到运行程序的PID # ps aux | grep redis root 1210 0.0 0.0 103336 900 pts/0 S+ 09:32 0:00 grep redis root 1782 0.1 0.7 143924 7704 ? Ssl Aug30...

  • Python3 用pexpect进行ssh交互(附带python3在linux下安装)

    用pexpect import pexpect PROMPT = ['# ', '>>> ', '> ', '\$ '] def send_command(child, cmd): child.sendl...

  • Linux学习:基础命令(2)

    一、帮助命令 名称:man 描述:获得帮助信息 例:man ls  查看ls命令的帮助信息  man services  查看配置文件services的帮助信息  man -f  可以查看该命令所有的帮...

  • 嵌入式Linux开发——(六)系统时钟和定时器

    一、系统时钟和定时器 1)S3C2440 / S3C2410时钟体系     ①3种时钟:         A、FCLK: 用于CPU         B、HCLK: 用于AHB总线上设备,比如CPU核、存储控制器、中断控制器、LCD控 制器、DMA和USB主机模块等         C、PCLK: 用于APB总线上的设备,比如WATCHD...

CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。
linux 内核启动过程介绍:华为云为您免费提供linux 内核启动过程在博客、论坛、帮助中心等栏目的相关文章,同时还可以通过 站内搜索 查询更多linux 内核启动过程的相关内容。| 移动地址: linux 内核启动过程 | 写博客