曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4187|回复: 0
打印 上一主题 下一主题

[规则] 设备命名规则

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2014-9-30 10:40:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
grub4dos 对于常规设备有两种命名规则

一种是 (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是pd设备 、 0x23是ud设备)

0xa0 - 0xff 是提供给光盘镜像映射使用的(除特殊几个外,如 0x9f可能会是第一物理光驱)

注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 命令来确定。

注6:若 fbinst 启动,菜单中使用 grldr "grldr" 则 (bd)=(ud)

ls (ud)/ 将列出U盘UD区文件
ls (bd)/ 将列出U盘UD区文件

若fbinst启动,菜单中使用 buldr "grldr" 则 (bd)=(hd0,0)或(fd0,0)

ls (ud)/ 将列出U盘UD区文件
ls (bd)/ 将列出U盘可见区文件


其他一些规则:
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 设备启动)
其中,0x8280 是一个固定位置,从 0x8280~0x8283 这 4 个字节中存储着启动驱动器号,read 命令可以其读出。
所以, && 前面的这条命令的意思是,检查启动驱动器号是不是 hd0,是的话返回真,接着会执行 && 后面的 echo 语句




  1. checkrange 0x21 read 0x8280 && echo boot from pxe
复制代码

#本次启动为 pxe 启动
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 15:41 , Processed in 0.063743 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表