共 1 篇文章

标签:Linux 内核启动 start kernel

Linux内核启动流程之start_kernel问题-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Linux内核启动流程之start_kernel问题

Linux内核启动流程之start_kernel问题  更新时间:2024年01月11日 10:22:11   作者:嵌入式Linux系统开发   这篇文章主要介绍了Linux内核启动流程之start_kernel问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教 目录 Linux内核启动流程start_kernel 参考注释 总结 Linux内核启动流程start_kernel 参考注释 目录:/init/main.c asmlinkage __visible void __init __no_sanitize_address start_kernel(void) { char *command_line; char *after_dashes; set_task_stack_end_magic(&init_task);/*设置任务栈结束魔术数,用于栈溢出检测*/ smp_setup_processor_id();/*跟 SMP 有关(多核处理器),设置处理器 ID*/ debug_objects_early_init();/* 做一些和 debug 有关的初始化 */ init_vmlinux_build_id(); cgroup_init_early();/* cgroup 初始化,cgroup 用于控制 Linux 系统资源*/ local_irq_disable();/* 关闭当前 CPU 中断 */ early_boot_irqs_disabled = true; /* * Interrupts are still disabled. Do necessary setups, then * enable them. * 中断关闭期间做一些重要的操作,然后打开中断 */ boot_cpu_init();/* 跟 CPU 有关的初始化 */ page_address_init();/* 页地址相关的初始化 */ pr_notice("%s", linux_banner);/* 打印 Linux 版本号、编译时间等信息 */ early_security_init(); /* 系统架构相关的初始化,此函数会解析传递进来的 * ATAGS 或者设备树(DTB)文件。会根据设备树里面 * 的 model 和 compatible 这两个属性值来查找 * Linux 是否支持这个单板。此函数也会获取设备树 * 中 chosen 节点下的 bootargs 属性值来得到命令 * 行参数,也就是 uboot 中的 bootargs 环境变量的 * 值,获取到的命令行参数会保存到 command_line 中 */ setup_arch(&command_line); setup_boot_config(); setup_command_line(command_line);/* 存储命令行参数 */ /* 如果只是 SMP(多核...

技术分享