问题标签 [mbr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
347 浏览

floating-point - 如何将最小有界矩形标准化为正方形[10000] [10000]?

我有一个从http://www.rtreeportal.org/下载的空间数据集

MBR 是一个矩形,其值如下:

506364.3125 4583290.0 508388.09375 4584786.0 代表矩形的(x_low,y_low,x_high,y_high)。

如您所见,所有位置都由大浮点值协调。该空间中有近 20000 多个矩形。

我想将整个空间生成为面积为 [10000][10000] 的空间

所有 x 中最低的将变为 0

所有 x 中最高的将变为 10000

所有 y 中最低的将变为 0

y 中最高的将变为 10000

所有其他的 x 和 y 坐标都会相应地改变。怎么做?会有什么逻辑?

0 投票
1 回答
2999 浏览

java - 如何在 vmware Esx(i) server /Vcenter 中检测虚拟机磁盘是 GPT 还是 MBR

我需要找到一种方法来以编程方式确定来宾虚拟机磁盘是 GPT 还是 MBR 分区。我无法使用 vijava 或 Vddk api 来实现这一点。是否有任何其他 c++ 或 java 库可以帮助我实现这一目标。或者手动解析 MBR 是唯一可用的解决方案。

提前致谢,

蒂亚加拉詹 A.

0 投票
1 回答
85 浏览

boot - MBR 有什么要求才能加载?

我一直在尝试修改旧 U 盘的 MBR,从它启动,测试各种 BIOS 功能,等等......

但我似乎不明白 - BIOS 在决定从哪个设备启动时会寻找什么?显而易见的两个要求是:

  • 更改 BIOS 引导顺序,使其在连接时尝试从 USB 引导。
  • 在偏移量 0x1fe 处具有 MBR 签名 - 0x55aa。

出于某种原因,我的笔记本电脑只为我编写的一些 MBR 从 USB 启动,而对于其他一些它从主 HD 启动,忽略 USB。当然都是用 0x55aa 签名的。

为什么会这样?BIOS 还寻找什么?

0 投票
1 回答
1682 浏览

arm - 从树莓派中提取 MBR

我尝试从我的树莓派中提取 MBR(在 SDCARD 上加载了 raspbian),就像在任何 Linux 机器上一样。

但是,在执行fileon时,mbr.bin我收到以下消息:-

mbr.bin: x86 boot sector; partition 1: ID=0xc, starthead 130, startsector 8192, 114688 sectors; partition 2: ID=0x83, starthead 0, startsector 122880, 15400960 sectors, code offset 0xb8

为什么说它是一个x86 boot sector

[编辑] 我还在这里阅读了有关启动顺序的信息;树莓派甚至使用 MBR 吗?

0 投票
1 回答
335 浏览

c++ - 如何以编程方式区分虚拟机中的 GPT 动态磁盘和 GPT 基本磁盘

最近我必须找到一种方法来区分虚拟机使用的分区类型,从虚拟磁盘读取原始数据我能够通过检查偏移量 1C2(如果是 GPT 则为 EE)找到它,如果是 MBR 磁盘如果磁盘是动态的,则 1C2 处的偏移量为 42,对于基本磁盘,相同的 1C2 偏移量为 07,这意味着基本磁盘,现在如果它是 GPT 磁盘,我如何区分基本磁盘和动态磁盘。

提前致谢。

0 投票
1 回答
651 浏览

mbr - 如何在 Windows 8 上将 GPT 卷转换为 MBR

我的问题是转换GPT卷而不是磁盘。我找到了一些解决方案,但它们都是关于如何转换磁盘的。在我的 Windows 8 上,它具有disk 0. disk 07卷。我只想将一卷转换为disk 0. 我怎样才能做到这一点?

0 投票
1 回答
3571 浏览

bios - 如何在 VMDK 文件中找到 MBR 扇区?

我试图了解 vmware bios 在加载 MBR 之前如何找到它。

在物理硬盘中这很容易——MBR 位于第一个扇区。
但是.. VM 会发生什么?

我创建了 2 个虚拟机——在第一个 vmdk(上面安装了基于 linux 的系统)中,我在偏移量 0x2A0000 处找到了 MBR。
在第二个 vmdk 文件(安装了 Windows XP)中,我不止一次找到了 MBR——但我发现的所有偏移量都不能除以 512(扇区大小),这有点奇怪(就我而言知道,MBR 应该从扇区的开头开始 + vmdk 中的扇区大小为 512 字节 => MBR 的起始偏移量必须除以 512。如果我错了,请纠正我)。
所以我猜它们可能是备份的副本。不用说 xp .vmdk 中的@ offset 0x2A0000 没什么意思。

那么.. vmware 的 BIOS 如何找到 MBR?这个可配置参数在哪里\它是如何计算的?

附加信息:
- 两个 VMDK 都是 1 文件硬盘文件(并且可以增长到 40GB)。
他们服务的系统只使用它们(XP 使用 xp.vmdk,linux 使用 linux.vmdk,没有额外的 VMDK)。

- @Windows VM 我在 \.\PhysicalDrive0 上使用 WinHex 来获取 MBR。它看起来不错(签名等)。
- @Linux VM 我使用命令“dd if=/dev/sda of=mbr.bin bs=512 count=1”,然后查看十六进制字节以获取 MBR。我查看了它,它看起来很好(GRUB,最后签名等)。
从 VM 获取 MBR 后,我在每个对应的 .vmdk 文件中搜索主机 pc 中的 MBR(使用十六进制编辑器),并且偏移量如上所述。

任何帮助,将不胜感激。谢谢!

0 投票
0 回答
203 浏览

windows - NTFS - MBR 出现在卷的开头

我在从 NTFS 卷读取原始数据时遇到了一些问题。我已经使用 UNC 路径 ("\.\C") 打开了我的 C: 驱动器CreateFile,以便能够从中读取原始数据。

当我阅读第一个扇区时,我发现我正在阅读 MBR 扇区。C据我所知,卷(在本例中是我的驱动器)和物理驱动器(表示为)之间存在区别\\.\PhysicalDriveX

不同之处在于 MBR 仅位于物理驱动器的第一个扇区,而 Volume 代表一个逻辑驱动器(同一个硬盘驱动器内的一个或多个分区),因此从理论上讲,不应该读取它的第一个扇区, MBR(因为实际分区仅在 MBR 的分区表之后开始)。

对我来说更特别的是,当我期望在读取\\.\PhysicalDrive0(这是我的物理硬盘)的第一个扇区时获得 MBR 时,我只得到 NULL。

根据维基百科:

主引导记录 (MBR) 是一种特殊类型的引导扇区,位于已分区的计算机大容量存储设备(如固定磁盘或可移动驱动器)的开头

虽然我认为很清楚,但我附上了相关代码:

我将总结一下我的问题,是否有一个很好的解释,为什么从中读取扇区会导致读取 MBR,而从物理驱动器中读取却一无所获?

提前致谢。

0 投票
1 回答
190 浏览

assembly - 我可以使用什么环境来编写操作系统的二进制代码?

为了学习操作系统的引导,我用这种方式做了一些简单的测试:

  • 我安装 oracle virtualbox 并创建 hdd 磁盘

  • 我安装十六进制编辑器 HxD 并将代码写入此硬盘磁盘,打开显示此硬盘的文件

在第一个 512 字节扇区的末尾,我在 1FE 和 1FF 字节中写入 55 AA,

以及我从第一个扇区的第一个字节编写的其他代码。

通过这种方式,我必须从 HxD 中解除对 hdd 文件的阻止,因为在完成此操作之前,virtualbox 无法启动它。

我想用虚拟机或者其他真机(第二种方式不太方便),因为它创建了一个独立的开发环境。

我怎样才能更有效地进行学习引导(以及简单开发后)操作系统的测试?

0 投票
0 回答
142 浏览

c - 查找分区之间的间隙

我一直在研究如何找到 MBR 分区表中的条目之间的间隙。没有太多关于间隙查找算法的信息,因为它适用于使用谷歌的磁盘,所以看起来我必须想出自己的。我的研究得出以下结论:

  1. 通过启动 LBA (SLBA) 对分区表进行排序
  2. 将 SLBA 添加到 LBA 计数以创建结束 LBA (ELBA)
  3. 遍历表执行间隙 = 先前记录的 ELBA - 当前记录的 SLBA。
  4. 特例:第一条记录:gap = SLBA - 1
  5. 特例:最后一条记录:gap = 磁盘的最后 LBA - ELBA。

我意识到还有其他特殊情况,例如没有记录、一条记录等……但我现在不打算讨论。我提出的算法看起来不错吗?还是我在叫错树?

我确实有一些我编写的初步代码,如下所示,从定义开始:

uint8、uint16、uint32 和 uint64 数据类型基本上分别是 unsigned char、unsigned short、unsigned int、unsigned long long 的 typedef。

这段代码不完整,但这是我要使用的方向。