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()
相关推荐
### Linux内核启动过程分析 #### 一、引言 随着技术的发展,Linux作为一个免费开源的Unix类操作系统,因其强大的功能、高效的性能以及良好的可移植性,在嵌入式系统乃至高性能服务器领域获得了广泛应用。理解Linux...
### Linux内核启动过程 #### 一、引言 Linux作为一个免费开源的Unix类操作系统,在全球范围内得到了广泛应用,从嵌入式系统到超级服务器均有其身影。Linux内核以其紧凑的结构、强大的功能、高效的性能以及优秀的可...
### Linux内核启动过程分析 #### 一、引言 随着技术的发展,Linux作为一个免费开源的操作系统,在嵌入式系统到高性能服务器等多个领域都获得了广泛的应用。Linux内核以其高效、稳定、可移植性强等特点备受青睐。...
### ARM Linux内核启动过程分析 #### 一、概述 ARM Linux内核启动过程是嵌入式系统开发中一个非常重要的环节。对于ARM平台来说,理解内核如何启动可以帮助开发者更好地掌握系统的初始化流程,这对于系统优化和故障...
Linux 内核启动过程和挂载 Android 根文件系统的过程归类 本文将详细介绍 Linux 内核启动过程和挂载 Android 根文件系统的过程,并对 Android 源代码中的文件系统部分进行浅析。 一、Linux 内核启动过程 Linux ...
### Linux内核启动过程详解 #### 一、概述 Linux内核启动是计算机启动过程中的一个关键步骤。当Bootloader完成必要的系统初始化之后,它会将控制权移交给Linux内核,随后内核开始一系列复杂的启动操作。这些操作...
Linux内核启动过程是操作系统运行的关键环节,尤其在嵌入式系统中,如S3C2410这样的微处理器平台上,理解这一过程对于开发者来说至关重要。S3C2410是由Samsung公司设计的一款ARM920T架构的处理器,广泛应用于各种...
### Linux内核启动过程及Android根文件系统的挂载 #### Linux内核启动流程概览 Linux内核的启动过程是一个复杂而有序的过程,涉及到多个关键步骤。为了更好地理解这一过程,我们将从架构特定的启动代码开始,逐步...
《基于PC_104平台Linux内核启动过程分析》 在嵌入式系统领域,尤其是在海洋自动观测系统中,基于PC/104平台的Linux内核启动过程的研究至关重要。这种技术结合不仅有助于实现我国海洋观测设备操作系统平台的自主化,...
1. Linux内核启动过程: Linux内核的启动流程是从汇编语言开始的,首先在`arch/arm/boot/compressed/head.S`中启动,执行解压缩操作,这是在`/arch/arm/boot/compressed/misc.c`的`Decompressed_kernel()`函数中...
Linux内核启动过程中,`start_kernel`函数扮演着至关重要的角色。它不仅完成了内核初始化的大量工作,还负责配置关键的硬件参数,确保操作系统能够正确地运行。通过细致地解析这些关键概念和步骤,我们能够更好地...
本资源讲述了ARM中Linux内核的启动过程,包括内核目录的详细内容,以及GNU C的扩充举例,详细讲解了Linux内核加载的过程。
zImage自解压过程是Linux内核启动过程中的一个重要步骤,涉及到Bootloader的准备、zImage的生成和工作原理、MMU的设置等方面。通过对zImage自解压过程的分析,可以更好地理解Linux内核的启动过程,并为后续的内核...
在Linux内核启动过程中,bootloader扮演着至关重要的角色。通常,bootloader会首先运行,然后根据特定的配置加载内核到内存中的特定地址。在ARM架构的系统中,bootloader通常会将内核的加载地址设为`KERNEL_RAM_BASE...