为什么在 MBR 上安装 GRUB 不会破坏分区表?

Aka*_*tak 16 hard-drive mbr grub

我读到我的分区表存储在 MBR 中。并且写入操作是按扇区执行的,即,即使您只想更改扇区的几个字节,也需要覆盖扇区的整个内容。那么在MBR上安装GRUB时,为什么不破坏我的分区表?

use*_*686 32

软件读取原始扇区;在内存中更新它;然后写出更新的扇区。

在 Linux 上,这实际上是由操作系统本身完成的,所以 GRUB 不需要担心扇区——它可以只发出 440 字节的写入,操作系统将相应地读取/修改/写入整个 512 字节的扇区。(操作系统的工作抽象掉不方便的硬件细节。)但是如果操作系统不这样做,那么 GRUB 仍然可以自己做同样的读/修改/写事情。

这种“读/修改/写”模式不仅限于 MBR——它也是您能够更改文件中单个字节的方式,即使它们也存储在磁盘扇区中。操作系统将从磁盘读取相应的扇区,用您的更改更新它,然后写回新扇区。

  • 两个都。磁盘接口只有用于写入_整个_逻辑扇区的命令,因此操作系统必须对小于扇区的写入进行 r/m/w'd - 它实际上无法向磁盘发出字节级写入。(据我所知,至少对于 ATA 和 SCSI 来说是这样。)另一方面,如果您有一个具有 4K 物理扇区但仍模拟传统 512b 逻辑扇区的磁盘,那么是的,磁盘的固件将 r /m/w 当它需要处理模拟的 512b 写操作时,整个物理 4K 扇区。 (13认同)