`
jackchen0227
  • 浏览: 146521 次
  • 性别: Icon_minigender_1
  • 来自: 帝都
社区版块
存档分类
最新评论

【zz】linux启动过程(2)-setup.S分析

 
阅读更多

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
  1.  

    1. 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

    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.css、jquery-ui.js下载

    《jQuery UI:深入理解与应用》 jQuery UI是基于JavaScript库jQuery的一个扩展,它提供了一系列丰富的用户界面组件,...然而,合理地配置和优化这两个文件,以适应项目需求和性能要求,也是开发过程中不可忽视的一环。

    ActivePerl-5.22.1.2201-MSWin32-x64-299574.msi

    ActivePerl-5.22.1.2201-MSWin32-x64-299574.msi

    postman 下载 Postman-win64-8.0.6-Setup.rar

    首先,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

    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内核补丁

    centos patch-2.7.1-12.el7_7.x86_64.rpm内核补丁

    sqlite-netFx451-setup-bundle-x86-2013-1.0.105.2.7z

    压缩包中的唯一文件"sqlite-netFx451-setup-bundle-x86-2013-1.0.105.2.exe"是一个可执行文件,很可能是安装程序。运行这个文件将引导用户完成SQLite驱动程序的安装过程,可能包括添加SQLite的.NET组件到开发环境中...

    windows-hadoop-2.7.7.zip

    总结,本文详细介绍了基于Windows 7和VS2015编译的Hadoop 2.7.7的安装和配置过程,包括winutils.exe和hadoop.dll的重要性,以及整个安装过程中涉及的文件和配置步骤。通过这样的实践,用户可以在Windows环境下搭建起...

    elrepo-release-6-8.el6.elrepo.noarch.rpm

    HLWjuemoDc5SX7hKHbB4zZ8D/jP+oMbqz+bDn8OZ2UuaGdxr+mHW8tzTdPjnEU8e hUt1ws8eBqn/gMfKvUBa8xFSILe8Ty99u+VjFbcRsdf0H6dRre9AdDVUz5oxzoPw gamA8mhPQvFh3wt9smtRUh5IoM2LiM1s5pGMLuYuvSnVUPArEnSfW6K5I6v7OarU 3...

    atguigu_springboot2_zz-master.zip

    《SpringBoot2深度解析——基于atguigu_springboot2_zz-master项目实践》 SpringBoot作为现代化Java开发的重要框架,极大地简化了Spring应用的初始搭建以及开发过程。本篇文章将深入探讨基于`atguigu_springboot2_...

    dogecoin-1.14.3-win64-setup-unsigned.exe

    dogecoin-1.14.3-win64-setup-unsigned.exe

    应用广泛的嵌入式操作系统——ZZ-Linux.pdf

    应用广泛的嵌入式操作系统——ZZ-Linux.pdf

    hadoop-eclipse-plugin-2.7.7.jar 插件下载

    基于win7+jdk1.8.0_191+eclipse4.8+ant1.10.5 编译,可以正常使用,已经试验!

    apache-hive-0.14.0-bin.tar

    hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射... 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。(搜索来的描述)

    bmap-wx.js

    微信小程序开发,基于百度地图API的天气预报小程序,可根据接口获取各个城市的天气信息,并通过界面很好的展示在用户面前,该小程序也具有很好的交互性,使用起来很方便。

    linux-2.6.35.tar.bz2

    linux-2.6.35.tar.bz2

    glibc-2.23.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 ...

    zz-zx-Learun.NetCore-master.zip

    它是一个开源的、跨平台的开发框架,支持Windows、Linux和macOS等操作系统。.NET Core SDK包含了编译器、运行时环境以及一系列用于构建应用程序的库,如ASP.NET Core用于Web开发,Entity Framework Core用于数据访问...

    jenkins2.150.1-1.1 centos redhat版RPM包

    jenkins2.150下载rpm安装包,安装yum localinstall ./jenkins-2.150.1-1.1.noarch.rpm 安装后执行rcjenkins start启动,端口8080

    Node.js-TerminalRendererforThree.jsThree.js的终端渲染器

    2. **Node.js**:是一个开放源代码、跨平台的JavaScript运行环境,用于在服务器端执行JavaScript代码,提供了丰富的模块和库来支持各种应用程序开发。 3. **终端渲染**:在没有图形用户界面的命令行环境下,通过文本...

Global site tag (gtag.js) - Google Analytics