全面解析Linux 内核 3.10.x - start_kernel()

From: 全面解析Linux 内核 3.10.x - 本文章完全基于MIPS架构

赶得早,不如赶得巧 - 古语

start_kernel

前几年穿越题材很火爆,如神话,,步步惊心等,可是这些剧都有一些共性,那就是总是穿越到了过去! 为什么穿越一定要到过去呢?在我看来无非就是觉得回到过去题材丰富,因为在中国科幻题材很难火爆,题材有限!换言之就是,中国人总是喜欢活在过去,我祖上怎样怎样..我去年买了个表啊!在看看国外人家穿越基本都是现在穿到未来,未来穿到现在!就这么任性的穿来穿去,很少有穿越到过去的!美国人都在拯救世界,中国人希望穿越到过去征服世界!总是那么喜欢意淫!言归正传..
为什么要管start_kernel叫隧道之门呢,这个函数是承前启后将前辈BIOS or Boot的棒接过来后,进行了完美的变身,因为这才是被称之为操作系统的第一个函数!在这个函数后,所有操作系统的特性进行完全展开!这个世纪最伟大的操作系统之一Linux 就这么的映入眼帘!让我们开启操作系统的灵魂kernel的大门吧!
另外我建议你去买一本Linux 内核修炼之道 - 任老师的书,特别棒!

一、start_kernel 函数

start_kernel

asmlinkage void __init start_kernel(void)
{
    char * command_line;
    extern const struct kernel_param __start___param[], __stop___param[];

    /*
     * Need to run as early as possible, to initialize the
     * lockdep hash:
     */
    lockdep_init();
    smp_setup_processor_id();
    debug_objects_early_init();

    /*
     * Set up the the initial canary ASAP:
     */
    boot_init_stack_canary();

    cgroup_init_early();
    /*关闭当前CPU的中断*/
    local_irq_disable();
    early_boot_irqs_disabled = true;

/*
 * Interrupts are still disabled. Do necessary setups, then
 * enable them
 */
    /*引导CPU初始化*/
    boot_cpu_init();
    /*页表地址初始化,使用链表串起来*/
    page_address_init();
    /*内核第一条打印信息*/
    pr_notice("%s", linux_banner);
    /*体系架构初始化函数*/
    setup_arch(&command_line);
    mm_init_owner(&init_mm, &init_task);
    mm_init_cpumask(&init_mm);
    setup_command_line(command_line);
    /*每CPU初始化*/
    setup_nr_cpu_ids();
    setup_per_cpu_areas();
    smp_prepare
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值