II、实模式下的初始化
实模式下的初始化,主要是指从内核引导成功后,到进入保护模式之前系统所做的一些处理。在内 核源码中对应的程序是
/Arch/i386/boot/setup.S;以下部分主要是针对此文件进行的分析。这部分的分析主要是要弄懂它的处理流程和
INITSEG(9000:0000)段参数表的建立,此参数表包含了很多硬件参数,这些都是以后进行保护模式下初始化,以及核心建立的基础。
1.
几个其它相关文件:
<1> /Arch/i386/boot/bootsect.S
<2> /include/linux/config.h
<3> /include/asm/boot.h
<4> /include/ asm/segment.h
<5> /include/linux/version.h
<6> /include/linux/compile.h
2.
实模式下的初始化过程分析:
INITSEG(9000:0000)段参数表:(参见Include/linux/tty.h)
参数名
|
偏移量(段址均为0x9000)
|
长度Byte
|
参考文件
|
PARAM_CURSOR_POS |
0x0000 |
2 |
Arch/i386/boot/video.S |
extended mem Size |
0x0002 |
2 |
Arch/i386/boot/setup.S |
PARAM_VIDEO_PAGE
|
0x0004 |
2 |
Arch/i386/boot/video.S |
PARAM_VIDEO_MODE |
0x0006 |
1 |
Arch/i386/boot/video.S |
PARAM_VIDEO_COLS |
0x0007 |
1 |
Arch/i386/boot/video.S |
没用 |
0x0008 |
2 |
Include/linux/tty.h |
PARAM_VIDEO_EGA_BX |
0x000a |
2 |
Arch/i386/boot/video.S |
没用 |
0x000c |
2 |
Include/linux/tty.h |
PARAM_VIDEO_LINES |
0x000e |
1 |
Arch/i386/boot/video.S |
PARAM_HAVE_VGA |
0x000f |
1 |
Arch/i386/boot/video.S |
PARAM_FONT_POINTS |
0x0010 |
2 |
Arch/i386/boot/video.S |
PARAM_LFB_WIDTH |
0x0012 |
2 |
Arch/i386/boot/video.S |
PARAM_LFB_HEIGHT |
0x0014 |
2 |
Arch/i386/boot/video.S |
PARAM_LFB_DEPTH |
0x0016 |
2 |
Arch/i386/boot/video.S |
PARAM_LFB_BASE |
0x0018 |
4 |
Arch/i386/boot/video.S |
PARAM_LFB_SIZE |
0x001c |
4 |
Arch/i386/boot/video.S |
暂未用① |
0x0020 |
4 |
Include/linux/tty.h |
PARAM_LFB_LINELENGTH |
0x0024 |
2 |
Arch/i386/boot/video.S |
PARAM_LFB_COLORS |
0x0026 |
6 |
Arch/i386/boot/video.S |
暂未用② |
0x002c |
2 |
Arch/i386/boot/video.S |
PARAM_VESAPM_SEG |
0x002e |
2 |
Arch/i386/boot/video.S |
PARAM_VESAPM_OFF |
0x0030 |
2 |
Arch/i386/boot/video.S |
PARAM_LFB_PAGES |
0x0032 |
2 |
Arch/i386/boot/video.S |
保留 |
0x0034--0x003f |
|
Include/linux/tty.h |
APM BIOS Version③ |
0x0040 |
2 |
Arch/i386/boot/setup.S |
BIOS code segment |
0x0042 |
2 |
Arch/i386/boot/setup.S |
BIOS entry offset |
0x0044 |
4 |
Arch/i386/boot/setup.S |
BIOS 16 bit code seg |
0x0048 |
2 |
Arch/i386/boot/setup.S |
BIOS data segment |
0x004a |
2 |
Arch/i386/boot/setup.S |
支持32位标志④ |
0x004c |
2 |
Arch/i386/boot/setup.S |
BIOS code seg length |
0x004e |
4 |
Arch/i386/boot/setup.S |
BIOS data seg length |
0x0052 |
2 |
Arch/i386/boot/setup.S |
hd0 参数 |
0x0080 |
16 |
Arch/i386/boot/setup.S |
hd0 参数 |
0x0090 |
16 |
Arch/i386/boot/setup.S |
PS/2 device 标志⑤ |
0x01ff |
1 |
Arch/i386/boot/setup.S |
* 注
: ① Include/linux/tty.h : CL_MAGIC and CL_OFFSET here
-
- Include/linux/tty.h :
unsigned char rsvd_size; /* 0x2c */
unsigned char rsvd_pos; /* 0x2d */
③ 0表示没有APM BIOS
④ 0x0002置位表示支持32位模式
⑤ 0表示没有,0x0aa表示有鼠标器
http://hi.baidu.com/sunblackshine/blog/item/8f928ac5983978a18326ac75.html
分享到:
相关推荐
oracle客户端instantclient-linux.x64-12.2.0.1.0,包含instantclient-basic-linux.x64-12.2.0.1.0、instantclient-sdk-linux-12.2.0.1.0、instantclient-sqlplus-linux-12.2.0.1.0
《jQuery UI:深入理解与应用》 jQuery UI是基于JavaScript库jQuery的一个扩展,它提供了一系列丰富的用户界面组件,...然而,合理地配置和优化这两个文件,以适应项目需求和性能要求,也是开发过程中不可忽视的一环。
ActivePerl-5.22.1.2201-MSWin32-x64-299574.msi
首先,Postman的安装与下载:提供的“Postman-win64-8.0.6-Setup.rar”是一个适用于Windows 64位操作系统的压缩包文件。用户需要先解压该文件,然后运行其中的“Postman-win64-8.0.6-Setup.exe”安装程序,按照提示...
hbase hbck2修复工具hbase-operator-tools-1.0.0.1.0.0.0-618-bin.tar.gz,hbase1版本的hbck已经不支持修复命令,hbase2.1版本需要用这个新版的工具
centos patch-2.7.1-12.el7_7.x86_64.rpm内核补丁
压缩包中的唯一文件"sqlite-netFx451-setup-bundle-x86-2013-1.0.105.2.exe"是一个可执行文件,很可能是安装程序。运行这个文件将引导用户完成SQLite驱动程序的安装过程,可能包括添加SQLite的.NET组件到开发环境中...
总结,本文详细介绍了基于Windows 7和VS2015编译的Hadoop 2.7.7的安装和配置过程,包括winutils.exe和hadoop.dll的重要性,以及整个安装过程中涉及的文件和配置步骤。通过这样的实践,用户可以在Windows环境下搭建起...
HLWjuemoDc5SX7hKHbB4zZ8D/jP+oMbqz+bDn8OZ2UuaGdxr+mHW8tzTdPjnEU8e hUt1ws8eBqn/gMfKvUBa8xFSILe8Ty99u+VjFbcRsdf0H6dRre9AdDVUz5oxzoPw gamA8mhPQvFh3wt9smtRUh5IoM2LiM1s5pGMLuYuvSnVUPArEnSfW6K5I6v7OarU 3...
《SpringBoot2深度解析——基于atguigu_springboot2_zz-master项目实践》 SpringBoot作为现代化Java开发的重要框架,极大地简化了Spring应用的初始搭建以及开发过程。本篇文章将深入探讨基于`atguigu_springboot2_...
dogecoin-1.14.3-win64-setup-unsigned.exe
应用广泛的嵌入式操作系统——ZZ-Linux.pdf
基于win7+jdk1.8.0_191+eclipse4.8+ant1.10.5 编译,可以正常使用,已经试验!
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射... 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。(搜索来的描述)
微信小程序开发,基于百度地图API的天气预报小程序,可根据接口获取各个城市的天气信息,并通过界面很好的展示在用户面前,该小程序也具有很好的交互性,使用起来很方便。
linux-2.6.35.tar.bz2
in GNU/Linux systems, as well as many other systems that use Linux as the kernel. The GNU C Library is primarily designed to be a portable and high performance C library. It follows all relevant ...
它是一个开源的、跨平台的开发框架,支持Windows、Linux和macOS等操作系统。.NET Core SDK包含了编译器、运行时环境以及一系列用于构建应用程序的库,如ASP.NET Core用于Web开发,Entity Framework Core用于数据访问...
jenkins2.150下载rpm安装包,安装yum localinstall ./jenkins-2.150.1-1.1.noarch.rpm 安装后执行rcjenkins start启动,端口8080
2. **Node.js**:是一个开放源代码、跨平台的JavaScript运行环境,用于在服务器端执行JavaScript代码,提供了丰富的模块和库来支持各种应用程序开发。 3. **终端渲染**:在没有图形用户界面的命令行环境下,通过文本...