Linux 的启动过程

来源:本站
导读:目前正在解读《Linux 的启动过程》的相关信息,《Linux 的启动过程》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《Linux 的启动过程》的详细说明。
简介:文章简单介绍了linux的启动过程

一.BootLoader

功能简单描述,屏蔽所有中断,初始化GPIO,初始化SDRAM,拷贝BootLoader到SDRAM中,加载内核映像文件,跳转到C程序,初始化串口,初始化以太网,等待外部输入,无外部输入,跳转到内核入口处。有外部输入,进入BootLoader模式,进行命令解释循环。

a) 部分头文件

处理器PXA255的地址空间为线性地址空间,处理器各部分寄存器是模块化的,可定义各功能模块的基地址,通过基地址加偏移地址的方式访问各功能寄存器。

config.h

SRAM(FLASH)的基地址为:0x0000000

SARM(FLASH)的地址大小为:0x02000000(32M)

DRAM(SDRAM)的基地址为:0xA0000000

DRAM(SDRAM)的地址大小为:0x020000000×2(64M)

Start_xscale.h

中断控制器的基地址:INTERRUPT_CONTROL_BASE―0x40D00000

时钟管理控制器的基地址:CLOCK_MANAGER_BASE-0x41300000

通用GPIO的基地址:GPIO_BASE-0x40E00000

内存控制器的基地址:MEM_CTL_BASE-0x48000000

b) 内存分配脚本文件

ld-xscale – ELF文件格式

c) 汇编语言初始化部分

d) C语言代码部分

二.内核代码部分

a) 汇编语言部分

2.4.18-rmk7-pxa1-XSBasearcharmkernelhead-armv.S文件根据2.4.18-rmk7-pxa1-XSBaseincludelinuxautoconf.h文件的配置执行相关的操作,设置处理器的模式,查询处理器的类型,创建页表等操作后跳转到2.4.18-rmk7-pxa1-XSBaseinitmain文件的start_kernel处

b) 内核入口部分

C语言代码部分对系统作第二次初始化

内核加锁

输出Linux版本信息(printk(linux_banner))

设置与体系结构相关的环境(setup_arch())

提取并分析核心启动参数(从环境变量中读取参数,设置相应标志位等待处理,(parse_options(

使用"arch/alpha/kernel/entry.S"中的入口点设置系统自陷入口(trap_init())

使用alpha_mv结构和entry.S入口初始化系统IRQ(init_IRQ())

核心进程调度器初始化(包括初始化几个缺省的Bottom-half,sched_init())

时间、定时器初始化(包括读取CMOS时钟、估测主频、初始化定时器中断等,time_init())

控制台初始化(console_init())

模块初始化init_modules()

剖析器数据结构初始化(prof_buffer和prof_len变量)

核心Cache初始化(描述Cache信息的Cache,kmem_cache_init())

延迟校准(获得时钟jiffies与CPU主频ticks的延迟,calibrate_delay())

内存初始化(设置内存上下界和页表项初始值,mem_init())

创建和设置内部及通用cache("slab_cache",kmem_cache_sizes_init())

创建页cache(内存页hash表初始化,pageable_cache_init())

检查体系结构漏洞(对于alpha,此函数为空,check_bugs())

SMP机器其余CPU(除当前引导CPU)初始化(对于没有配置SMP的内核,此函数为空,smp_init())

启动init过程(创建第一个核心线程,调用init()函数,原执行序列调用cpu_idle() 等待调度,rest_init())

三.文件系统部分

文件系统与内核相联系,在内核的配置中menuconfig中的General Setup中的配置

根据根文件系统下的linuxrc脚本文件可知,它启动了init, init进程是系统所有进程的起点,内核在完成核内引导以后,即在本线程(进程)空间内加载init程序,它的进程号是1。

init程序需要读取/etc/inittab文件作为其行为指针,inittab按照initdefault启动runlevel 3。进入rc3.d目录。在rc3.d目录下有一系列以S开始的文件,表示启动的意思,如果以K字母开头,表示Kill的意思。而这些以S开始的文件会链接到其他的脚本文件,会执行相关的链接的脚本文件。如:

rc.sysinit,network,pcmcia等脚本文件。

在init执行完成以后,会执行/bin/login文件,确认用户名以及密码以后,把控制权交给shell,进入shell命令,执行相关的配置文件.profile等,最后$出现在虚拟终端上,整个启动过程结束。

提醒:《Linux 的启动过程》最后刷新时间 2024-03-14 01:05:23,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《Linux 的启动过程》该内容的真实性请自行鉴别。