源码基于:Linux 5.4
约定:
- 芯片架构:ARM64
- CONFIG_ARM64_VA_BITS:39
- CONFIG_ARM64_PAGE_SHIFT:12
0. 前言
在bootloader 做好初始化工作后,将 kernel image 加载到内存后,就会跳到kernel 部分继续执行,跑的先是汇编部分的代码,进行各种设置和环境初始化后,就会跳到 kernel 的第一个函数start_kernel(),start_kernel() 完成内核系统的所有配置和初始化,其中 setup_arch() 是早期系统的配置和初始化工作。
该系列专栏,会通过源码的深入剖析来查看内存管理系统的原理。本文将会是这个系列专栏代码剖析的起点。
1. start_kernel 中内存管理代码流程
----start_kernel() // init/main.c
----setup_arch() // arch/arm64/kernel/setup.c
----early_fixmap_init() // arch/arm64/mm/mmu.c
----early_ioremap_init() // arch/arm64/mm/ioremap.c
----setup_machine_fdt()