当我在 GPT 分区上设置“隐藏”标志时,Windows 8.1 不会尊重它(Windows 会尝试堆积、抛出 UI 等)。但是,如果我从 diskpart.exe 设置“隐藏”标志,它会被尊重 - 这两个“隐藏”有什么不同吗?
我怎样才能在 Linux 中设置位,以便 Windows 能够尊重它?
GNU Parted 3.0
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
print
Model: LaCie P9220 (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 8001MB 8000MB fat32 SD_Recovery
2 8001MB 8101MB 101MB ext4 SD_OS hidden
3 8101MB 8201MB 99.6MB SD_Page hidden
4 8201MB 520GB 512GB ext4 SD_Data0 hidden
5 520GB 1000GB 480GB ext4 SD_Data1 hidden
和 Windows 中的同一磁盘
DISKPART> lis vol
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
...
Volume 7 E FAT32 Partition 7629 MB Healthy
Volume 8 H RAW Partition 96 MB Healthy
Volume 9 I RAW Partition 95 MB Healthy
Volume 10 J RAW Partition 476 GB Healthy
Volume 11 K RAW Partition 447 GB Healthy
DISKPART>
答案1
我不确定 parted 使用哪个属性位来定义隐藏分区,您需要查看源代码。但从您的经验来看,它肯定有所不同。
Microsoft 为 GPT 定义了以下分区属性:位 60 - 只读、位 62 - 隐藏、位 63 - 不自动挂载
有关详细信息,请参阅这篇维基文章。
那么在 Linux 上如何做到这一点?您可以查看 parted 文档,看看是否允许您为分区条目设置自定义属性位;如果不允许,则需要修改源代码以使其设置微软使用的位。
答案2
Parted 和 gdisk 在调用不同的 GPT 分区属性位方面有所不同:
少量 | 分开 | 磁盘分区 | 评论 |
---|---|---|---|
0 | 隐 | 系统分区 | 在 UEFI 规范中定义为“必需分区” |
1 | - | 隐藏 EFI | 在 UEFI 规范中定义为“无块 IO 协议” |
2 | 遗留启动 | 可引导传统 BIOS | 在 UEFI 规范中定义为“Legacy BIOS Bootable” |
60 | - | 只读 | 由微软定义 |
61 | - | - | 由微软定义作为“另一个分区的卷影副本” |
62 | - | 隐 | 由微软定义 |
63 | 自动挂载 | 不自动挂载 | 由微软定义 |
parted 中的其他“标志”与特定分区类型 GUID 相关
全局唯一标识符 | 分开 | 磁盘分区 |
---|---|---|
C12A7328-F81F-11D2-BA4B-00A0C93EC93B | 启动,尤其是 | EF00,EFI 系统分区 |
C12A7328-F81F-11D2-BA4B-00A0C93EC93B | - | 8300,Linux 文件系统 |
0657FD6D-A4AB-43C4-84E5-0933C84B4F4F | 交换 | 8200,Linux 交换 |
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 | 微软数据 | 0700,微软基础数据 |