GRUB4DOS(九)常用设备类型及map命令用法示例
设备类型:
(fd0) 第一个软盘
(fd1) 第二个软盘
(hd0) 第一个硬盘
(hd1) 第二个硬盘
(hd-1) 最后一个硬盘
(hd) 最后一个硬盘之后的硬盘号码,创建新的虚拟硬盘时使用
(cd0) 第一个光驱,相当于 (hd32),由 cdrom --init 创建
(cd1) 第二个光驱,相当于 (hd33),由 cdrom --init 创建
由于 cdrom 的识别能力太低,同时市场上的光驱设备几乎全被U盘代替,所以 (cd?) 这种格式可能面临淘汰。
(hd0,0) 第一块硬盘的第一主分区
(hd0,4) 第一块硬盘的第一扩展分区
(hd-1,0) 最后一块硬盘的第一主分区,没有 (hd-2,0) 这种格式,也没有 (hd-1,-1) 这种格式。
(hd#,0) 第一主分区(在硬盘#上)
(hd#,1) 第二主分区(在硬盘#上)
(hd#,2) 第三主分区(在硬盘#上)
(hd#,3) 第四主分区(在硬盘#上)
(hd#,4) 第一逻辑分区(在硬盘#上)
(hd#,5) 第二逻辑分区(在硬盘#上)
(hd#,6) 第三逻辑分区(在硬盘#上)
(hd#,7) 第四逻辑分区(在硬盘#上)
(hd32) 第一个光驱
(hd33) 第二个光驱
(0xFF) 最后一个光驱(hd127)
() 当前磁盘
(bd) 初始启动设备(设备包括磁盘和驱动器)
(cd) 从光盘启动后,Grub4Dos 捕获到的启动光盘,如果不是从光盘启动,则没有 (cd) 设备
(ud) Fbinst 启动方式制作的隐藏分区
(pd) PXE 网络启动设备
(nd) 网络驱动器,现已不常用(nd 已经不存在了,已经被pd代替)
(md) 内存驱动器,实现了将整个内存作为一个磁盘驱动器来访问
(rd) 随机存贮驱动器。(md) 设备访问内存是从物理地址 0 开始,而 (rd) 可以访问起始于任何基地址的内存
以数字命名的设备:
fd0 - fd126 : 0x0 - 0x7E (软盘和虚拟软盘,排除 0x21 和 0x23)
pxe : 0x21 (网络启动设备)
ud : 0x23 (Fbinst 隐藏分区)
rd : 0x7F (随机存贮驱动器)
hd0 - hd30 : 0x80 - 0x9E (硬盘和虚拟硬盘)
cd : 0x9F (捕获到的启动光盘,这个不一定正确,视 bios 而定)
hd32 - hd127 : 0xA0 - 0xFF (光盘和虚拟光盘)
设备后面跟随 +1 表示将设备的第 1 个扇区当作一个单一的文件看待:
(hd0)+1 将整个硬盘的第一个扇区当作一个文件(共 1 个扇区)
(hd0,0)+1 将整个分区的第一个扇区当作一个文件(共 1 个扇区)
(fd0)+1 将整个软盘的第一个扇区当作一个文件(共 1 个扇区)
(cd0)+1 将整个光盘的第一个扇区当作一个文件(共 1 个扇区)
(md)+1 将整个内存的第一个扇区当作一个文件(共 1 个扇区)
(rd)+1 这个比较特殊,将指定内存的所有内容当作一个文件
[注意:(rd)+1 这个标志始终代表文件,它包含存储在 (rd) 中的所有字节。 ]
同样可以使用 +2、+3 等,表示将前 2 个或前 3 个扇区当作单一的文件看待:
(hd0)+2 将整个硬盘的前 2 个扇区当作一个文件(共 2 个扇区)
(hd0,0)+3 将整个分区的前 3 个扇区当作一个文件(共 3 个扇区)
(fd0)+5 将整个软盘的前 5 个扇区当作一个文件(共 5 个扇区)
(cd0)+10 将整个光盘的前 10 个扇区当作一个文件(共 10 个扇区)
(md)+32 将整个内存的前 32 个扇区当作一个文件(共 32 个扇区)
(rd)+2 将指定内存的前 2 个扇区当作一个文件(共 2 个扇区)
也可以使用类似 32+5 的方法:
(hd0)512+2 将整个硬盘的第 512 个扇区之后的 2 个扇区当作一个文件(共 2 个扇区)
(hd0,0)32+3 将整个分区的第 32 个扇区之后的 3 个扇区当作一个文件(共 3 个扇区)
(fd0)1+1 将整个软盘的第 2 个扇区当作一个文件(共 1 个扇区)
(cd0)128+1 将整个光盘的第 129 个扇区当作一个文件(共 1 个扇区)
(md)0+32 将整个内存的前 32 个扇区当作一个文件(共 32 个扇区)
(rd)0+1 等效于 (rd)+1,将指定内存的所有内容当作一个文件
关于 (rd) 设备:
(rd) 设备只是对内存区域的引用,(rd) 设备所引用的内存区域是不被保护的,你可以将 (rd) 理解为指向内存块的指针。在 Grub4Dos 中,很多东西都是自由的、无保护的、没有限制的,(rd) 就是其中之一。
(rd) 不是一个 int13 设备,而仅仅是一个 grub4dos 设备。在 grub4dos 里面,存在 (rd) 设备,但进入 DOS 以后,就没有 (rd) 设备了。
(rd)+1 始终表示 (rd) 设备的整个内容,而不是第一个扇区。
通过下面的地址可以获取 (rd) 设备的信息:
set /a rdnum=*0x82CC # (rd) 设备的设备号
set /a rdbase=*0x82D0 # (rd) 设备的起始地址
set /a rdsize=*0x82D8 # (rd) 设备的总长度
通过下面的方法可以自由设置 (rd) 设备的信息:
map --ram-drive=0xFF7F # 修改 (rd) 设备的设备号
map --mem --rd-base=50000 # 设置 (rd) 设备的起始地址
map --mem --rd-size=30000 # 设置 (rd) 设备的总长度
下面的命令仅仅修改了 (rd) 设备的信息:
map --mem /FILE (rd)
这里的 (rd) 指向了一块内存区域,这块内存区域中存放了 /FILE 文件的内容,但是这块内存是不被保护的,这块内存随时都可能被其他代码修改,甚至被 Grub4Dos 自身修改。
下面的命令也修改了 (rd) 设备的信息,但是 (rd) 指向的内存区域是受保护的,因为它和 (fd0) 重叠,而 (fd0) 是受保护的:
map --mem /FILE (rd)
map --mem /FILE (fd0)
map --hook
如果第一条命令和第二条命令交换一下顺序,那么结果就不一样了。
什么情况下需要使用 (rd) 设备?当你需要它的时候就去用它,如果你实在不知道什么时候需要用到 (rd),那么很简单,不要用它。
==============================
map --status
显示磁盘仿真的状态。
map /PE.ISO (0xFF)
map --hook
将 /PE.ISO 映射到 (hd127) 仿真磁盘,/PE.ISO 必须在磁盘中连续存放,不能有碎片。
map --mem /PE.ISO (0xFF)
map --hook
先将 /PE.ISO 加载到内存,然后再映射到 (hd127) 仿真磁盘,/PE.ISO 可以有碎片。
map --mem=-2880 /FLOPPY.IMG (fd0)
map --hook
先将 /FLOPPY.IMG 加载到内存,然后再映射到 (fd0) 仿真软盘,(fd0) 将占用至少 1440KB 的内存。
map --mem --top /PE.ISO (0xFF)
map --hook
将 /PE.ISO 加载到高端内存,然后再映射到 (hd127) 仿真磁盘,把镜像加载到高位内存就不能使用 gzip 压缩,两者不能同时实现。
在 grub4dos 中,内存在 3.25G 处被分成了高端内存和低端内存两端,镜像不能跨 3.25G 这个点。如果你的内存小于 3.25G,你就没有高端内存可用。
map --unmap=0xFF
map --rehook
卸载 (hd127) 仿真磁盘。不能使用 --unmap=(0xFF) 的方法卸载,--unmap= 后面必须是数字。
--rehook 用于停止仿真盘并释放内存,相当于 --unhook 然后 --hook(这样看来,map --unhook 命令似乎不会被单独使用了)
map --unmap=0,0x80,0xFF
map --rehook
卸载多个仿真磁盘。
map --unmap=0:0xFF
map --rehook
卸载所有仿真磁盘。
如果要通过设备名的方法卸载某个设备,可以这样做:
map (hd127) (hd127)
map --rehook
map --read-only /FLOPPY.IMG (fd0)
map --hook
(fd0) 只能读,不能写,防止 /FLOPPY.IMG 文件被破坏。
映射到仿真盘中的文件都是可以修改的,无论是 IMG、ISO、VHD 等,除非使用 --read-only 参数。
map --fake-write /FLOPPY.IMG (fd0)
map --hook
(fd0) 处于假写状态,可以写入数据,但并未记录到 (fd0) 上,防止 /FLOPPY.IMG 文件被破坏。
map --unsafe-boot /FLOPPY.IMG (fd0)
map --hook
这个参数不知道是什么作用,大概是允许修改 (fd0) 的引导扇区。
map ---disable-chs-mode /FLOPPY.IMG (fd0)
map --hook
禁用 (fd0) 的 CHS 访问功能。
map --disable-lba-mode /FLOPPY.IMG (fd0)
map --hook
禁用 (fd0) 的 LBA 访问功能。
map 命令还可以用来修改 (rd) 随机存储器的信息,上面已经说过了。
[注:其他 map 参数似乎不怎么常用,也不太理解其含义,这里就不总结了]
[注意:在map命令行中,(hdm,n)+1 式的写法被解释成代表整个(hdm,n)分区,而不仅仅是此分区的第一扇区。]
[注意:--unhook 的仿真盘,如果没有 --unmap,则在需要的时候会自动 --hook。]
==============================
关于 map 命令的磁盘交换:
# 打算把当前设备映射为(hd0)
map () (hd0)
# 打算把(hd0)映射为当前设备
map (hd0) ()
#开始执行映射
map --rehook
GRUB4DOS(九)常用设备类型及map命令用法示例相关推荐
- linux_命令行助手:(manpages supplement)/获取linux命令用法示例的若干辅助命令行工具(cheat/tldr/eg/manly)
文章目录 linux_命令行助手:(manpages supplement)/获取linux命令用法示例的若干辅助命令行工具(cheat/tldr) references 我的推荐(两个)
- kubectl全部命令用法示例
文章目录 1 kubectl命令总结 2 kubectl命令用法测试 create expose run set explain get edit delete rollout scale autos ...
- Linux 中 make 命令用法示例
概述:make命令描述源程序间相互关系并自动编译,用于执行makefile文件中的预先设定的命令,诸如编译.运行.删除等等,可大大提高效率.在较大规模的系统中,人们希望对其中某个或者某一些模块的修改不 ...
- linux chown 使用实例,chown命令_Linux chown命令用法示例详解
Linux chown命令用法介绍 chown命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组.用户可以是用户或者是用户ID,用户组 ...
- linux scp命令用法_Linux SCP命令用法示例
linux scp命令用法 Scp is an acronym for Secure Copy. It is used primarily for copying files over an ssh ...
- Java Map.forEach 用法示例
一般的集合 一般集合 List ,set 之类的直接使用 foreach 即循环遍历时,直接for 循环list 内每一个单个对象即可,对于Map 同时遍历key 与 value 除了一般的 entr ...
- Scala Array中_ filter map的用法示例
object S {def main(args: Array[String]): Unit = {println("scala")val arr: Array[Int] = Arr ...
- mshta命令用法示例(在dos命令弹出消息框)
JS: 复制代码代码如下: mshta vbscript:window.execScript("alert('hello world!');","javascript&q ...
- Linux常用60个命令用法
原文链接:Linux常用的60个命令用法 - Accwiz - 博客园 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在L ...
- linux who命令测试,Linux中的who命令详细示例
who是一个命令行实用程序,可打印当前登录用户的列表.它还可以显示当前的运行级别,上次系统引导的时间等.在本文中,我们解释展示了GNU coreutils软件包中捆绑的who命令用法示例. 如何使用w ...
最新文章
- Matlab数据类型学习图解
- 一、烧写最小linux系统
- UVA12113 Overlapping Squares重叠的正方形 暴力破解
- 高可用mysql笔记_MySQL笔记-高可用方案
- Activemq Jms 简单示例
- timeSetEvent的用法(一)
- C#继承(初始化基类,重写,重载)
- 带着身体在香港肤浅行走(一)
- 算法笔记(一)(教你系统学习基础算法)
- 牛X的规则引擎urule2
- 工控计算机+isa接口,研华工控机IPC-610系列可提供多个PCI、ISA总线
- Hadoop “Hello World” 示例
- 8086CPU寻址方式详解
- Linux内核学习路径
- gpg invalid解决方法
- 一个微信小程序开发示例
- linux运维工程师 倒班,运维人员值班制度
- C++设计模式实例讲解
- 在Mac上为其他设备开启代理
- 虾皮跨境店怎么上架产品?该如何操作?
热门文章
- 看漫画用什么软件最好?另外,好看的百合漫画有哪些?
- 2019年大学计算机二级考试报名,南通职业大学2019年秋季计算机二级考试报名通知...
- 【本周最新】qlv转mp4格式转换器 工具 软件
- 上海内推 | 微软亚洲研究院上海人工智能组招聘深度学习研究实习生
- python安装PIL模块
- cdrom是多媒体微型计算机,2011年计算机一级考试理论试题:多媒体
- 004-CentOS换清华源
- 百度服务器状态异常,百度抓取异常连接超时是什么意思
- PHP Session理解
- CSDN 创始人蒋涛:开源吞噬世界,得开发者得天下