[Boot]Kernel启动

platform:RK3399
OS:Android 7.1
Kernel:4.4
参考:
1.Younix 《Android启动流程分析》

概述

Uboot最后阶段通过do_bootm_linux跳转到内核,此时内核开始运行,uboot任务完成。之后内核会完成一系列的初始化和注册,最终启动init进程(pid=1)和kthreadd(pid=2),并进入idle.

整体介绍

在这里插入图片描述

start_kernel

函数名 定义目录 简介
lockdep_init() kernel/locking/lockdep.c 初始化运行时锁校验器
set_task_stack_end_magic kernel/fork.c
smp_setup_processor_id() arch/arm64/kernel/setup.c
debug_objects_early_init() lib/debugobjects.c 初始化哈希桶并将静态对象池对象链接到轮询列表中
boot_init_stack_canary() arch/arm64/include/asm/stackprotector.h
cgroup_init_early() kernel/cgroup.c
local_irq_disable() include/linux/irqflags.h
boot_cpu_init() init/main.c
page_address_init() mm/highmem.c 初始化页地址hash链表
setup_arch(&command_line) arch/arm64/kernel/setup.c
mm_init_cpumask(&init_mm) include/linux/mm_types.h
setup_command_line init/main.c 保存command line
setup_nr_cpu_ids() kernel/smp.c
setup_per_cpu_areas() mm/percpu.c
smp_prepare_boot_cpu() arch/arm64/kernel/smp.c
build_all_zonelists mm/page_alloc.c 初始化所有build_zonelists
page_alloc_init() mm/page_alloc.c 注册page_alloc_cpu_notify
parse_early_param() init/main.c
jump_label_init() kernel/jump_label.c
setup_log_buf(0) kernel/printk/printk.c
pidhash_init() kernel/pid.c 初始化pid hash表(16~4096)
vfs_caches_init_early() fs/dcache.c dchche/inode init
sort_main_extable() kernel/extable.c exception table
trap_init() arch/arm64/kernel/traps.c register_break_hook
mm_init() init/main.c 内核内存分配器
sched_init() kernel/sched/core.c 初始化任务调度器
preempt_disable() include/linux/preempt.h barrier()
idr_init_cache() lib/idr.c
rcu_init() kernel/rcu/tree.c
trace_init() kernel/trace/trace.c
context_tracking_init() kernel/context_tracking.c
radix_tree_init() lib/radix-tree.c
early_irq_init() kernel/irq/irqdesc.c
init_IRQ() arch/arm64/kernel/irq.c irqchip_init()
tick_init() kernel/time/tick-common.c
rcu_init_nohz() kernel/rcu/tree_plugin.h
init_timers() kernel/time/timer.c
hrtimers_init() kernel/time/hrtimer.c 初始化高精度定时器
softirq_init() kernel/softirq.c
timekeeping_init() kernel/time/timekeeping.c 初始化时钟源和公共时效值
time_init() arch/arm64/kernel/time.c
sched_clock_postinit() kernel/time/sched_clock.c
perf_event_init() kernel/events/core.c
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值