Linux操作系统下关于引导和初始化的问题
http://tech.ddvip.com 2007年07月10日 社区交流
内容摘要:Linux操作系统下关于引导和初始化的问题
(5)检测一个MCA;
(5)检测一个PS/2定点设备(鼠标总线);
(6)检测高级电源管理器(APM)BIOS支持;
(7)检测内核在内存中的位置,如果在低地址0x00010000,就将其移到高地址0x00001000,如在高地
址则不做任何移动;
(8)设置设备中断描述表(IDT)和全局描述表(GDT);
(9)如已经有了浮点单位(FPU),则重置之;
(10)重新调用程序中断控制器;
(11)通过设置cr0状态寄存器的PE位,把CPU从"实模式"切换到"保护模式";
(12)跳转到stratup_32( )汇编语言函数.
因为在内核中不能做BIOS调用,内存信息由setup通过INT 0X15 来加以查询,并根据获得的信息生
成一张物理内存构成图,称为e820图,再通过参数块传给内核,使内核知道系统中内存资源的配置.因为
在做int 0x15来查询内存构成是要把调用参数之一设置成0xe820,所以叫e820图.
l 第一个stratup_32( )函数
在启动过程中要用到两个stratup_32( )函数,虽然它们都是汇编语言函数,但是却是两个完全不同
的函数.我们这里所说的函数包含在/usr/src/linux-2.4.2/arch/i386/boot/compressed/head.S文件里.
Setup()文件执行后,这个函数就被加载到物理地址为0x00100000或者物理地址为0x00001000的内存中(取
决于内核是载入高或者低内存).
当执行这个函数时,会执行以下的操作:
(1)初始化段寄存器和一个临时栈.
(2)内核中没有初始化的数据都用0填充.它是通过symbols _edata和 _end来识别的.
(3)执行decompress_kernel( )函数.这个函数用于对Linux内核解压缩.这个时候,屏幕上将显示
"Uncompressing Linux……"信息.解压缩完成后,就会显示"OK, booting the kernel"信息.现在有
责编:豆豆技术应用
- Linux/Unix 新闻
- Linux/Unix 入门
- Linux/Unix 命令
- Linux/Unix 安装
- Linux 嵌入式系统
- Linux/Unix 编程
- Linux/Unix 管理
- Linux/Unix 桌面
- Linux/Unix 内核
- Linux/Unix 软件
- SCO Unix
- NetBSD
- OpenBSD
- Redhat/Fedora Linux
- 手机
- Linux/Unix find 搜索命令
- Linux/Unix vi 命令
- Linux/Unix kde 桌面环境
- Linux/Unix GNOME 桌面环境
- Linux/Unix Make 命令
- Linux/Unix crontab 命令
- Linux/Unix ext3 文件系统
- Linux/Unix 文件系统详解
- Linux/Unix ADSL 拨号设置
- Linux/Unix GRUB 配置及应用
- Linux/Unix nfs配置
- Linux/Unix 硬件信息查看及管理
- Linux/Unix 优化
- Linux/Unix 交换分区Swap管理及应用
- Linux/Unix 用户管理
- Linux/Unix Ramdisk
- Linux/Unix 密码恢复管理
- Linux/Unix 文件删除恢复
- Linux/Unix fdisk分区
- Linux/Unix lvs负载均衡管理
- Linux/Unix root用户
- Linux/Unix 集群
- Linux/Unix 日志
- 更多Linux/Unix专题……