无忧启动论坛

标题: grub4dos对于常规设备有两种命名规则 [打印本页]

作者: 有阴也有阳    时间: 2015-12-30 10:21
标题: grub4dos对于常规设备有两种命名规则
本帖最后由 有阴也有阳 于 2015-12-30 10:23 编辑

        一种是 (ud) , (pd) , (nd) , (hd) , (cd) , (fd) 六种直观设备命令,可以对 hd 、 cd 、 fd 三种设
备进行编号。


          ud 为 bean 原创的 fbinst 启动方式制作的隐藏分区

        pd 为 pxe device ,即pxe设备

        nd 为 network device ,网络驱动器,现已不常用

        hd 为 hard device ,磁盘类设备

        cd 为 cdrom device ,光驱类设备

        fd 为 floppy device ,软驱类设备

        编号规则见下方示例。


        另一种是以 0x0 至 0xff 的值来命名所有设备。(此值名为 驱动器号 )

        (书写菜单文件时驱动器号和设备名均使用小写字母,下列说明为美观使用大写字母)

        设备名   :     驱动器号

        fd0           :         0x0
        fd1           :         0x1
        ...
        pxe          :         0x21
        ud            :         0x23
        ...
        hd0          :         0x80
        hd1          :         0x81
        ...
        cd            :         0x9F (这个不一定正确,视bios而定)
        hd32        :         0xA0
        ...
        hd127      :         0xFF

        注1:0x0-0x7F是提供给软盘镜像的(除特殊几个外,如 0x21 、 0x23)

        注2:(hd32) 是一个 grub 驱动器,驱动器号和 (0xA0) 等价。

        如果一个虚拟驱动器被指定为一个大于或等于0xA0 的驱动器号,那么它将被视为是一个光盘。(即,是 2048 字节的大扇区)

        注3:(0xFF) 是最后一个CD/DVD设备 (如果用map命令映射(hd32)不工作的话请尝试用此参数)

        注4:使用 grub 设备时通常可以简写,如:

        (0) = (fd0)
        (1) = (fd1)
        ...
        (160) = (hd32)
        ...

        注5: 引用 不点 的说法:

        BIOS 数据区中软盘个数最多也就是 4。DOS 只能认到 2 个,一个是 A 盘,一个是 B 盘。find 只能可靠访问 BIOS
数据区所承认的软盘。如果试图访问未承认的软盘,则有可能出问题(例如死机)。自己虚拟的过多的软盘,不要指望
find 去查找。你可以用其它方法,例如 ls 命令来确定。

        同时还有对特殊设备的命名:

          ()             就是一对空括号,表示当前设备。

        (bd)         boot device ,通用写法,初始启动设备,可以使菜单更具通用性。注:使用configfile命令会改变启动设备。

        (md)         内存驱动器,实现了将整个内存作为一个磁盘驱动器来访问。(预留驱动器号 0xffff )

        注意: (md)只工作在支持BIOS中断int15/EAX=E820h的系统上。

        (rd)          随机存贮驱动器。(md) 设备访问内存是从物理地址 0 开始,而 (rd) 可以访问起始于任何基地址的内存。

        随机存贮器的基址与长度可以通过 map 命令指定。你甚至能够为(rd)驱动器指定一个BIOS驱动器号。

        比如:         map --ram-drive=0xf0         (注:默认的 (rd) 驱动器号是使用0x7F的软驱号)。

        如果 (rd) 是硬盘驱动器镜像,你应该用大于或等于0x80的值来改变它的驱动器号。

        (rd)+1这个标志始终代表文件,它包含存储在(rd)中的所有字节。

       示例:

        直观设备命名:

        1、硬盘及分区编号 从 0 开始

        (hd0) -第一硬盘
        (hd1) -第二硬盘
        (hd2) -第三硬盘
        等.

        特殊: (hd-1) -最后一块硬盘

        2、硬盘主分区编号从 0 开始至 3 结束,逻辑分区编号从 4 开始(MBR分区表)

        (hd#, 0) -第一主分区(在硬盘上#)
        (hd#, 1) -第二主分区(在硬盘上#)
        (hd#, 2) -第三主分区(在硬盘上#)
        (hd#, 3) -第四主分区(在硬盘上#)

        (hd#, 4) -第一逻辑分区(在硬盘上#)
        (hd#, 5) -第二逻辑分区(在硬盘上#)
        (hd#, 6) -第三逻辑分区(在硬盘上#)
        (hd#, 7) -第四逻辑分区(在硬盘上#)
        等.

        例:

        (hd0,0) -第一硬盘上的第一主分区
        (hd0,1) -第一硬盘上的第二主分区
        (hd2,3) -第三硬盘上的第四主分区

        (hd0,4) -第一硬盘上的第一逻辑分区
        (hd2,10) -第三硬盘上的第七逻辑分区
        (hd5,9) -第六硬盘上的第六逻辑分区

        (hd-1,0) -最后一块硬盘上的第一主分区
        注意:扩展分区属于主分区。如单硬盘上有五个分区, C 为第一主分区,D、E、F 为扩展分区上的逻辑分区,
G 也为主分区,则,C 区为 (hd0,0),D 区为 (hd0,4),E 区为 (hd0,5), F 区为 (hd0,6),G 区为 (hd0,2)。

        3、仿真CD/DVD设备编号为从(hd32)至(0xFF)

        (hd32) -第一虚拟CD/DVD设备
        (hd33) -第二虚拟CD/DVD设备
        (hd34) -第三虚拟CD/DVD设备
        ......
        (0xFF) -最后一个CD/DVD设备 (如果用map命令映射(hd32)不工作的话请尝试用此参数)

        4、物理CD/DVD设备编号从 0 开始

        (cd0) -第一CD/DVD设备
        (cd1) -第二CD/DVD设备
        等.

        5、软盘驱动器编号从 0 开始

        (fd0) -第一软盘驱动器
        (fd1) -第二软盘驱动器
        等.



        应用实例:

       1、通常可以使用设备编号来判断当前启动设备

        例:

        checkrange 0x80 read 0x8280 && echo boot from hdd
        #本次启动为从磁盘启动(本地磁盘和 USB-HDD 启动都将识别为 0x80 设备启动)

        checkrange 0x21 read 0x8280 && echo boot from pxe
        #本次启动为 pxe 启动

        2、高级用法(by zhaohj@wuyou):

        偏移                类型                内容

        410H                字                   该字保存与计算机连接的设备编码表,BIOS中断11H(设备测定)可返回此信息。

        位

        0          软驱安装标志,此位为0表示没有软驱。

        1          数字协处理器安装标志,此位为0表示未安装协处理器。

        3-2       系统板RAM的大小,适用于一些旧机型,PS2型未使用。(00=16K,01=32K,10=48K,11=64K)。

        5-4       初始显示方式。(00=AG,01=CGA-40,10=CGA-80,11=MDA-80)。

        7-6       软驱的数量,当位0为1时有效。(00=1,01=2,10=3,11=4)。

        -------------------

        说明bios最多允许4个软驱

        wenv calc aa=*0x410&1
        wenv check aa<>0 calc aa=*0x410>>6&0xf+1

        计算得到当前软驱数量

作者: lbw2007    时间: 2015-12-30 11:43
这些内容在grub4dos说明文档里都有




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3