Windows 在搞乱分区方案时如何不损坏 Linux 文件系统

Windows 在搞乱分区方案时如何不损坏 Linux 文件系统

我最近在一位朋友的系统上安装了 Manjaro Linux 和 Windows 10 双启动,使用安装程序中的默认双启动分区方案。昨天,Windows 决定进行自我更新(我猜是臭名昭著的 Creator's Update),而 Manjaro 无法启动。我指示朋友从 liveUSB 登录,这是sudo fdisk -l输出:

Disk /dev/nvme0n1: 238,5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: DBCB2883-9E10-40F3-8007-B1B409A79DF5

Dispositivo        Start      Fine   Settori   Size Tipo
/dev/nvme0n1p1      2048    206847    204800   100M EFI System
/dev/nvme0n1p2    206848    239615     32768    16M Microsoft reserved
/dev/nvme0n1p3    239616 123472110 123232495  58,8G Microsoft basic data
/dev/nvme0n1p4 497999872 500097023   2097152     1G Windows recovery environment
/dev/nvme0n1p5 123472112 497999871 374527760 178,6G Linux filesystem

Partition table entries are not in disk order.

请注意Partition table entries are not in disk order. :显然,现在有一个分区 ( /dev/nvme0n1p4),它在物理上位于主 Linux 分区 ( ) 之后/dev/nvme0n1p5,但在数字上位于主 Linux 分区 ( ) 之前。由于这看起来非常不标准,我猜 Windows 搞乱了分区表。

做了之后:

sudo mount /dev/nvme0n1p5 /mnt
sudo mount /dev/nvme0n1p1 /mnt/boot/efi
sudo grub-install --target=x86_64-efi --efi-directory=/mnt/boot/efi --bootloader-id=manjaro --boot-directory=/mnt/boot --recheck --debug

系统再次启动,似乎运行正常。

问题是:

鉴于 Windows 没有ext4我所知道的任何信息,它怎么可能弄乱分区表,但又不会损坏任何东西呢?它只是改变了“数字”分区顺序吗?它到底做了什么?

答案1

很可能它对分区没有做任何事情,但它只是重写了 EFI 启动以(尝试)使自己成为唯一/默认操作系统。当然,您知道,一旦您的磁盘上安装了 Windows 10,为什么还需要其他东西呢?

你的问题在我身上也发生过两三次,在不同的机器上,更新后,它们总是通过简单的更新或重新安装 GRUB2 就消失了。

我不认为对分区重新编号有什么坏处;如果他们不搞乱 Windows,我非常确信他们不会搞乱 GRUB/GRUB2。

但是,请务必在 Linux 分区上运行 e2fsck,以确保它没有被缩短 1 GB。如果里面的FS被标记为大于它应该包含的分区,因为后者被盲目地调整了大小(Windows足够的分区知识),当 Linux 覆盖恢复数据,或者 Windows“更新”恢复数据并覆盖 Linux ext4 决定放在那里的任何内容时,您可能会遇到麻烦。您可能需要:

  • 将1GB数据备份到Linux文件中,
  • 删除分区并将 Linux 分区重置为完整大小,
  • 缩小文件系统以留下 1GB 可用空间,
  • 重新创建分区,
  • 恢复备份

以适应这两种操作系统并让它们保持友好的关系。

相关内容