Linux内核加载过程

时间:2015-09-29 15:29:04

标签: linux linux-kernel

我正在阅读有关Linux内核加载过程的信息(只是为了理解整个序列),我对以下控件之间的转换特别怀疑:

  1. 引导加载程序和内核
  2. 内核和init进程
  3. 例如,在维基百科中,我发现了以下内容:

      

    加载的内核通常是一个图像文件,使用zlib压缩为zImage或bzImage格式。 头部的例行程序执行最少量的硬件设置,将图像完全解压缩到高内存中,并在配置时注意任何RAM磁盘。[3] 然后通过./arch/i386/boot/head和startup_32()

    执行内核启动

    我在这里有几个问题:

    1. 这个例程代表什么?
    2. 内存的哪一部分已加载?
    3. 是否已包含解压缩zImage的代码,或者此代码是否在另一个内存位置单独加载?
    4. 我继续在同一页面阅读,我发现了以下内容:

        

      ... start_kernel执行各种初始化函数。它设置中断处理(IRQ),进一步配置内存,启动Init进程(第一个用户空间进程),...

      我知道init是第一个创建的用户空间进程。以下问题的答案:

      How the init process is started in linux kernel?

      声明内核使用do_execve()调用。但是,正常execv系统调用的语义是覆盖调用进程(在这种情况下是内核?)bss,数据,文本和堆栈段与新进程中的那些,它没有返回即可。

      为什么在这种情况下确实会返回? (否则,如果它没有返回内核就不会继续它的启动过程)

      提前致谢,

0 个答案:

没有答案