一  : DOS 系统由三个文件组成  

IO.SYS  MSDOS.SYS  COMMAND.SYS

IO.SYS  : 提供 输入输出功能

MSDOS.SYS  : dos系统的内核

COMMAND.SYS : 提供DOS命令的解析执行

这些文件可能是隐藏的 , 要查看需要先修改文件属性使其可见,  命令: attrib -s -r -h c:\boot.ini

二 DOS操作系统引导过程:  
   
1. 加电->ROM   BIOS自检->对系统中的硬件进行正确性检查(热启动不检查)->设置Rom   Bios中断和参数。  
   
2. 自检通过后,自动执行Rom   Bios   中的ROM引导程序,INT19H.  
   
作用:利用BIOS中断调用INT13将引导盘中的DOS引寻扇区装到主存的0:7C00H开始区域。  
   
其实DOS系统文件不管是驻留在硬盘还是驻留在软盘,DOS的启动过程总是要经过以上几个阶段的。  
   
3. 如果是对于硬盘启动,则必需先执行硬盘主引导程序主引导程序将DOS扇区存放至内存0:7C00  
   
4. DOS引导程序执行   检查IO.sys,Msdos.sys是否存在   如果存在->BIOS   中断调用INT13H将IO.sys读入内存,控制权转交SYS_INT.  
   
5.  SYS_INT的执行   定位IO.sys并初始化。读入Msdos.sys文件并定位。调用DOS_INIT对内核进行初始化。处理config.sys文件,并读入command.com文件控制权转交CMD_INIT.  
   
6.  CM_INIT的执行   对command常驻、暂驻模块进行定位并初始化,执行Autoexec.bat(有的话),控制权转移给Command.com的暂驻模块,出现系统提示符,整个启动过程结束。

三  CONFIG.SYS中的命令:
注意:所有以HIGH结尾的命令(如DEVICEHIGH)表示将其调入UMB(上位内存),但有些这样的命令(如FILESHIGH)必须在MS-DOS 7.x版本中使用。

ACCDATE :指定对每一个驱动器是否记录文件最后被访问的日期。
用法:ACCDATE= 驱动器 1+|- [ 驱动器 2+|-]...
如:ACCDATE=C+ D+ E+将在C,D,E盘中记录文件最后被访问的日期。
此命令仅用于MS-DOS 7.x中。

BREAK :设置或清除扩展的CTRL+C检查。
用法:BREAK=ON|OFF

BUFFERS/BUFFERSHIGH :为指定数量的磁盘缓冲区分配内存。
用法:BUFFERS=磁盘缓冲区数量,[从属高速缓存中的缓冲区数量]

DEVICE/DEVICEHIGH :将指定的设备驱动程序装入内存。
用法:DEVICE/DEVICEHIGH 文件名 [参数]
其中,文件名是文件的完整路径,如C:/DOS/HIMEM.SYS。

DOS :用于DOS系统的配置,如是否使用HMA(高端内存区)等。
用法:DOS=[HIGH|LOW][,UMB|,NOUMB][,AUTO|,NOAUTO][,SINGLE]
其中,HIGH和LOW表示使用HMA或不使用HMA,UMB和NOUMB表示使用UMB或不使用UMB,AUTO或NOAUTO表示系统自动配置或不自动配置,SINGLE表示使用单一模式的DOS。其中,AUTO/NOAUTO和SINGLE仅用于MS-DOS 7.x中。

DRIVPARM :设置现有物理设备的参数。
注:此命令用得很少,我也没用过,所以暂时跳过。

FCBS/FCBSHIGH :指定可以同时打开的文件控制块 (FCB) 的数量。
用法:FCBS/FCBSHIGH=可以同时打开的FCB的数量。
注:由于FCB主要是在DOS 1.x中使用,对于高版本,所以可以让系统自动配置。

FILES/FILESHIGH :指定 可以同时访问的文件数量。
用法:FILES/FILESHIGH=可以同时访问的文件数量。
注:一般FILES/FILESHIGH的设置值在30左右比较合适。

INSTALL/INSTALLHIGH :用于加载TSR(内存驻留程序)。
用法:INSTALL/INSTALLHIGH=文件名 [参数]
如:INSTALLHIGH=C:/DOS/DOSKEY.COM /APPEDIT

LASTDRIVE/LASTDRIVEHIGH :指定可以访问的驱动器的最后有效的驱动器字母。
用法:LASTDRIVE=驱动器字母
如LASTDRIVE=F会将F设置成最后有效的驱动器字母。

NUMLOCK :指定启动时NUMLOCK指定灯是否打开。
用法:NUMLOCK=ON|OFF

REM :添加注解。
用法:REM [注解字符串]
注:注解中的字符串只是用来增加可读性,将不被执行。

SET :设计DOS环境变量。
用法:SET 变量=[变量值]

SHELL :指定DOS 使用的命令解释程序的名称和位置。
用法:SHELL=文件名 [参数]
注:文件名默认是COMMAND.COM,您也可以指定其它的文件,如4DOS.EXE等。

STACK/STACKHIGH :指定使用的堆栈数量。
用法:STACK/STACKHIGH=堆栈数量,每个堆栈的大小
注:通常指定的值是9,256,这个值可以满足大多数的需求。

SWITCHES :指定一些特殊选项。
用法:SWITCHES=[/W] [/F] [/K] [/N] [/E[:n]]

其它的是一些菜单配置命令,如MENUITEM,MENUCOLOR等。

一个config.sys文件:

[MENU]

MENUITEM=ST1,PRETEST

MENUITEM=ST2,MEMETEST

[COMMAND]

REM;;DEVICE=C:\HIMEM.SYS /testmem:off      //扩展内存管理程序

REM;;FILES=30

REM;;buffers=20

[ST1]

DEVICE=C:\IFSHLP.SYS

[ST2]

DEVICE=C:\GRUB.EXE --bypass --time-out=5  --CONFIG-FILE="reboot"

四 GRUB4DOS

GRUB的配置文件是MENU.LST ,可以在MENU.LST中指定加载的镜像档和加载方式.在autoexec.bat总运行grub命令就可以将镜像文件加载到内存并运行了.

一个menu.lst文件如下:

color blue/green yellow/red white/magenta white/magenta
timeout 30
default /default

title【01】 Memtest 420 !!!
fallback 1
find --set-root /mt420.iso
map /mt420.iso (0xff) || map --mem /mt420.iso (0xff)
map --hook
chainloader (0xff)
savedefault --wait=2

title 【02】 启动本机 Windows NT 系统
unhide (hd0,1)
hide (hd0,4)               //隐藏
find --set-root /ntldr
chainloader /ntldr
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd1,0)
chainloader +1

title 【03】back to dos
savedefault --wait=2
quit

//find :在所有存储空间上查找指定的文件或目录\文件

//map :映射文件,如果文件存储不联系则映射会失败,||则将文件加载到内存中

//0xFF :设备代码 。比如hd32=0xA0  ; hd0=0x80  ; fd0 =0x00 ;

//chainloader +1 :将控制权交给下一个 boot loader

 

五 GRUB指令引导windows:
GRUB> rootnoverify (hd0,0)
GRUB> chainloader +1
GRUB> boot

六 MemoryTest 86+ 编译

memorytest86+是在linux下编译的 ,生成的系统使用的也是linux内核.可以用notepad编辑源代码.

Vi 模式切换:

I:进入输入模式

Esc进入命令模式

:q! 退出不保存

su - : 切换到root权限

cd /tmp

cd memtest86_source

make -j4    //生成memtest.bin文件

sh ./makeiso.sh   //生成MT420.ISO文件

七 MemoryTest 86+ 重启问题:

memory test 中使用outb(0xfe,0x64); 命令重启 ,在intel 平台正常使用, 在AMD平台重启会当机. 改用outb(0x06, 0xcf9);   重启AMD和INTEL都没问题.

用注释来解释Use the so-called "PCI reset register", CF9,通过这个寄存器可以使系统hard reset

0xCF9 是IO Mapping 中的地址,所以可以用outb直接访问. 可以在ICH的datasheet中找到它,

 八 关于 0x64这个地址:

可以在 ICH10的datasheet中找到这个地址 . 串行中断SEIRQ

Serial Interrupt (D31:F0)
The ICH10 supports a serial IRQ scheme. This allows a single signal to be used to
report interrupt requests. The signal used to transmit this information is shared
between the host, the ICH10, and all peripherals that support serial interrupts. The
signal line, SERIRQ, is synchronous to PCI clock, and follows the sustained tri-state
protocol that is used by all PCI signals. This means that if a device has driven SERIRQ
low, it will first drive it high synchronous to PCI clock and release it the following PCI
clock. The serial IRQ protocol defines this sustained tri-state signaling in the following
fashion:
• S – Sample Phase. Signal driven low
• R – Recovery Phase. Signal driven high
• T – Turn-around Phase. Signal released
The ICH10 supports a message for 21 serial interrupts. These represent the 15 ISA
interrupts (IRQ0–1, 2–15), the four PCI interrupts, and the control signals SMI# and
IOCHK#. The serial IRQ protocol does not support the additional APIC interrupts (20–
23). //APIC is External Interrupt

KBC_LPC_EN — R/W. Keyboard Enable.
0 = Disable.
1 = Enables the decoding of the I/O locations 60h and 64h to the LPC interface

在winbond的SIO中也有提到. 所以应该是键盘中断吧.

 

 

 

grub4dos 加载 MEMTEST+86相关推荐

  1. GRUB4DOS加载ISO启动光盘完美解决方案

    正常情况下如果用GRUB4DOS加载ISO文件进入WINPE或者安装原版系统会出现找不到光驱或者直接蓝屏,现在有了完美解决方法了.下面我给大家介绍下用GRUB4DOS加载WINPE.ISO文件. 1. ...

  2. ASM:《X86汇编语言-从实模式到保护模式》第13章:保护模式下内核的加载,程序的动态加载和执行...

    ★PART1:32位保护模式下内核简易模型 1. 内核的结构,功能和加载 每个内核的主引导程序都会有所不同,因为内核都会有不同的结构.有时候主引导程序的一些段和内核段是可以共用的(事实上加载完内核以后 ...

  3. PyTorch数据加载处理

    PyTorch数据加载处理 PyTorch提供了许多工具来简化和希望数据加载,使代码更具可读性. 1.下载安装包 • scikit-image:用于图像的IO和变换 • pandas:用于更容易地进行 ...

  4. Swift - 表格图片加载优化(拖动表格时不加载,停止时只加载当前页图片)

    列表的单元格中包含有图片在开发中很常见.通常我们可以直接在tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIn ...

  5. 【Spring源码分析系列】bean的加载

    前言 以 BeanFactory bf  = new XmlBeanFactory(new ClassPathResource("beans.xml"));为例查看bean的加载过 ...

  6. AngularJS 初始化加载流程

    一.AngularJS 初始化加载流程 1.浏览器载入HTML,然后把它解析成DOM. 2.浏览器载入angular.js脚本. 3.AngularJS等到DOMContentLoaded事件触发. ...

  7. vue router按需加载

    1 import Vue from 'vue' 2 import Router from 'vue-router' 3 4 Vue.use(Router); 5 //按需加载,当渲染其他页面时才加载其 ...

  8. iOS开发UI篇—懒加载

    iOS开发UI篇-懒加载 1.懒加载基本 懒加载--也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了, ...

  9. VS2015 Cordova实现WebView加载页面进度条(Android)

    因为使用Cordova做app时,加载页面没有进度条,用户无法感知打开进度,故加入进度条,具体实现如下: 1.  如果项目没有生成过apk,需先生成一次,这样在项目下面才会出现platforms/an ...

  10. android 视频的缩略图 缓存机制和 异步加载缩略图

    在这次的工作开发项目中,涉及到一个视频缩略图的视频列表:这个在大家看来,制作视频缩略图就是两行代码就搞定的事.确实是这样的,百度一下,每个帖子都知道制作视频缩略图的方法,在这里确实也是一样的,但是我要 ...

最新文章

  1. Spring Cloud Alibaba 学无止境:下一代微服务架构的规划与展望
  2. Azure恢复服务-使用Windows Backup备份到云端
  3. iphone无线服务器未响应,iPhone无线充电断断续续或无法充电是什么原因?
  4. 免费科研数据集大搜索,来源于互联网~
  5. (React 框架)React技术
  6. Android开发之EditText输入框限制输入数字和字母的实现方式
  7. MongoTemplate.findById查不到数据的一种情况:由写入时未指定_id造成的
  8. docker~学习笔记索引
  9. 如何画出频谱图 matlab
  10. 启动 Tomcat 遇到 Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 问题,已解决
  11. 计算机之父的童年故事教案,《计算机之父的童年故事》教学设计
  12. hive 查询表Wrong FS: hdfs://node1/user/hive/warehouse/test1.db, expected: hdfs://node1.zjn.cn:8020/
  13. 耦合度如何降低耦合度
  14. MAC电脑关机卡住黑屏菊花转圈的解决方法
  15. ubuntu编辑只读文件_Ubuntu linux vim 修改只读文件 修改Apache2端口号 ports.conf
  16. NVIDIA边缘端设备(nano、tx2、xavier等)查看安装的jetpack版本
  17. 零死角玩转stm32中级篇2-IIC总线
  18. 美国医院开始用大数据预测谁会生病
  19. java计算机毕业设计绿色生活基于PS、DW的绿色环保宣传网站源程序+mysql+系统+lw文档+远程调试
  20. Codeforces Round #633 (Div. 2) C.Powered Addition

热门文章

  1. Landsat 8数据介绍
  2. transcad安装教程_北京道亨线路软件SLCAD3.0
  3. UrlRewrite 的配置和使用总结
  4. 辐射4核能选项用计算机失败,辐射4NMM安装framework失败解决方法一览_游侠网
  5. Windows11系统引导修复(因EasyBCD误删win11启动)
  6. ca盘显示无证书_ca证书提示没有正确的安装驱动程序
  7. uniapp实现电子签名
  8. android studio 单元测试详解
  9. grads插值_GrADS第6章变量和函数讲课.ppt
  10. 3d max morpher教程