Linux内核6.6 内存管理(14)代码导读——内存初始化
总:kernel启动
https://elixir.bootlin.com/linux/v6.6/source/init/main.c#L870
(按照数字大小是代码顺序,2.1是指2代表的函数里面,我想提到的第一个函数)
1.打印Kernel信息
https://elixir.bootlin.com/linux/v6.11/source/init/main.c#L924
其中linux_banner如下定义如下:
https://elixir.bootlin.com/linux/v6.6/source/init/version-timestamp.c#L28
实际打印信息如下
2.setup_arch
https://elixir.bootlin.com/linux/v6.11/source/arch/arm64/kernel/setup.c#L278
2.1 其中设置了cmdline参数
2.2 设备树初始化 setup_machine_fdt
https://elixir.bootlin.com/linux/v6.11/source/arch/arm64/kernel/setup.c#L169
2.2.1 dt memory和代码的匹配
此时我们可以看到它就是按照设备树的memory关键字进行匹配,比如
不过这里只是指定了起始地址,但是并未指定memory大小
下面还有根据设备树添加具体
2.2.2 dt compatible/model 和 代码 匹配
https://elixir.bootlin.com/linux/v6.11/source/arch/arm64/kernel/setup.c#L197
同样我们看一下设备树: