Linux操作系统下关于引导和初始化的问题

http://tech.ddvip.com   2007年07月10日    社区交流

内容摘要:Linux操作系统下关于引导和初始化的问题

  (4)通过调用BIOS程序显示"Loading Linux"信息;

  (5)自举程序BIOS调用来加载的setup()函数,并把它放在起始地址为0x00090200的内存中;

  (6)自举程序BIOS调用加载剩余的内核程序,并将其放入起始地址为0x00010000或者0x00100000;

  (根据内核类型,对于小内核zImage放在 0x10000 ,大内核bzImage放在0x100000)

  此处是如何判断要加载的内核是什么的

  (7)然后,跳转到setup()函数.

  Setup()函数的功用

  Setup()函数可以在/linux-2.4.22/arch/i386/boot/setup.S文件中找到.

  Setup()函数代码是在完整的内核自举程序加载以后,才会跳到相应的函数代码处.在内核文件中,

  其偏移地址是0x200.这使得自举程序很容易找到这段代码,并将其拷贝到起始物理地址为0x00090200的

  内存中.

  这个Setup()文函数到底是做什么用的 在计算机时里,内核要正确地操作所有硬件就必需首先要检

  测到它们,并且以一种有序的方式进行初始化.Setup()函数初始化所有的硬件设备,从而为内核操作它创

  造了一个环境.

  但是,前面我们不是已经提到过BIOS会检测所有的硬件吗 虽然BIOS初始化了所有的硬件,但是Linux

  内核并不放心,它还要以自己的方式对所有的硬件进行初始化.Linux内核之所以要设计成这样,是为了

  增强可移植性和稳定性.这也是Linux内核要优于很多目前可用的Unix和类Unix内核的原因之一,并且

  也使得它在很多方面表现的非常出众.

  Setup()函数主要完成以下任务:

  (1)首先是检测系统可用内存的总量,它是通过BIOS程序来完成检测的;

  (2)设置键盘重复延迟时间和重复速度;

  (3)检测视频卡;

  (4)重新初始化硬盘控制器和硬盘参数;

责编:豆豆技术应用

正在加载评论...