我希望 Truecrypt 像往常一样询问 Windows XP 的密码,但是使用标准的 [ESC] 选项,在选择该选项时,即通过 Escape 键,我希望它找到(未加密的)Ubuntu 安装的 grub。
我已经在 Toshiba NB100 上网本的 120Gb 硬盘驱动器上安装了 Windows XP,然后分区为 Ubuntu 10.04 腾出空间,并在 Windows XP 安装后安装。
当我加密 Windows XP 时,Truecrypt 将覆盖主引导记录 (MBR) 中的 grub 条目,我相信 (?) 并且我将无法再在 XP 和 Ubuntu 之间进行选择。所以我需要把它恢复回来。
我在 Ubuntu 论坛和其他地方搜索了相当广泛的答案,但还没有找到涵盖所有可能性、场景和错误消息的完整答案,否则他们谈论的是旧版 GRUB 而不是 GRUB2。Ubuntu 10.04 使用 GRUB2。
我的设置:
分区:
我知道 Truecrypt 引导加载程序在启动时会替换 GRUB,因为我已经在另一台笔记本电脑上尝试过它。
我希望引导加载程序屏幕看起来像往常一样:
真密码
输入密码:
(或 [ESC] 跳过)
密码适用于 …
我收到了这条消息:
此磁盘包含不匹配的 GPT 和 MBR 分区:/dev/sda
Clonezilla 的常见问题解答说:
您可能已经安装了带有 GPT 分区表的操作系统,然后通过安装另一个带有 MBR 分区表的操作系统来覆盖磁盘。MBR 分区表编辑器,例如 fdisk、sfdisk 或 cdisk 不知道 GPT,因此它会覆盖 GPT 分区表的一部分,但没有完全清除其余部分。因此,这就是您收到此类消息的原因。
如果您确定您正在运行的操作系统使用的是 MBR 分区表,而不是 GPT 分区表,您可以运行 sudo sgdisk -z /dev/sdx (将 /dev/sdx 替换为您的磁盘名称,例如 /dev/sda 用于第一个硬盘驱动器)清理 GPT 分区表,同时保留 MBR 分区表。//注意// 请谨慎使用上述命令。它可能会破坏硬盘驱动器上的所有内容。
我先安装了 Mac,然后安装了 Windows,然后用 Chameleon Boot Loader 替换了默认的 MBR 启动管理器。
这是分区表:
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *1.0 TB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_HFS macintosh 69.3 GB disk0s2
3: Apple_HFS mavericks 180.0 GB disk0s3
4: Microsoft …Run Code Online (Sandbox Code Playgroud) 尝试转换为 GPT 时,出现此错误:
PS C:\WINDOWS\system32> mbr2gpt /validate /disk:0 /allowfullos
MBR2GPT: Attempting to validate disk 0
MBR2GPT: Retrieving layout of disk
MBR2GPT: Validating layout, disk sector size is: 512 bytes
Disk layout validation failed for disk 0
Run Code Online (Sandbox Code Playgroud)
这是diskpart信息:
PS C:\WINDOWS\system32> diskpart
Microsoft DiskPart version 10.0.17134.1
Copyright (C) Microsoft Corporation.
On computer: DESKTOP-74HKFD4
DISKPART> list disk
Disk ### Status Size Free Dyn Gpt
-------- ------------- ------- ------- --- ---
Disk 0 Online 2794 GB 0 B
DISKPART> sel disk 0 …Run Code Online (Sandbox Code Playgroud) 我目前安装了 Windows 7 家庭高级版,我最近刚刚安装了 Linux Mint,它已经用 GRUB 替换了我的 MBR。
有什么方法可以恢复正常的 Windows 7 引导加载程序并有第二个选项来引导我的 Linux Mint?
MBR 分区表支持 4,294,967,295 个扇区的“分区大小”。假设标准的 512 字节扇区,这意味着总限制为 2,199,023,255,040 字节 = 2TiB,或略低于 2.2TB。
一些来源将此称为“分区大小”:
因为主引导记录 (MBR) 磁盘上的分区表仅支持最大 2TB 的分区大小...
...而其他人将其称为卷或磁盘的总容量,并坚持必须将其格式化为 GPT 以克服该限制:
为了让操作系统完全支持容量超过 2 TB(2 TB,或 2 万亿字节)的存储设备,必须使用 GUID 分区表 (GPT) 分区方案初始化设备。
考虑到以上几点:
2TiB 限制是分区限制还是总磁盘/卷限制?如果是前者,是否可以通过在磁盘上创建更多小于 2TiB 的分区来增加磁盘的可用空间?如果没有,为什么不呢?
鉴于 2TiB 限制基于传统的 512 字节扇区,并且增加扇区大小会显着增加最大分区大小,为什么升级到 GPT 是绕过限制的标准建议,因为只需格式化就可以更轻松地解决问题具有更高的扇区大小?是否有理由不采用这种方法?
注意,我已经花了好几个小时阅读了当前在 SU 内外的信息,这意味着我已经消化了 Google 上的大部分最佳结果,但无法在 SU 上找到这些问题的答案他们,这就是我在这里问的原因。出于这个原因,我的目标是避免简单地引用这些结果的答案,主要是从对技术工作原理有很好理解的人那里寻找答案。
出于测试目的,我需要在 Windows7 测试主机上调整 MBR:我想删除主引导代码,但将分区表保留在其中。
以下 Linux 命令是否执行此操作,还是清除了整个 MBR,包括分区表?
dd if=/dev/zero of=/dev/hda bs=512 count=1
Run Code Online (Sandbox Code Playgroud)
谢谢你。
我刚买了一个新的 2TB 磁盘驱动器,打算用作外部驱动器(通过 eSATA 连接)。当我启动计算机时,它可以很好地识别驱动器,但是当我进入磁盘管理时,弹出窗口告诉我必须初始化该驱动器,并且必须在 MBR 和 GPT 布局之间进行选择。
该驱动器将主要用于 Windows 7 计算机(x86 和 x64)以及 Windows Vista x64 计算机(出现消息的计算机)。
我不打算在该驱动器上创建多个分区,因为它应该只是一个数据存储磁盘。
我应该选择哪种分区布局,MBR 还是 GPT?该对话框本身建议在驱动器 >= 2TB 或基于 Itanium 的计算机上使用 GPT,但我想确保我稍后能够在其他计算机上访问该驱动器。
它是非常诱人的,我在这里去夸大其词有关的GParted和Linux,但我会尽我所能来避免它。:)
为什么 GParted 声称我的磁盘已损坏和 GPT,而磁盘工具认为一切正常?
我在磁盘 (NTFS) 上唯一的分区上有 Windows 7 x64,并且绝对没有问题——我从来没有遇到过任何问题,我运行了 CheckDisk 以确保。
为什么 GParted 会这样?
(我打算在 AskUbuntu 上发布此内容,但由于 GParted 并不仅限于 Ubuntu,因此我将其发布在这里。我使用的是 Ubuntu 11.04 x64 的启动盘。)
我在格式化 C: 驱动器之前备份了所有重要数据,但在重新安装 Windows 后无法读取备份驱动器。屏幕截图后提供了更多详细信息。
此外
如您所见,该系统中有三个物理磁盘:
- 1TB 系统 (C:) 驱动器。
- 0.5TB 基本 MBR 磁盘 (D:) 用于一般存储。
- 3TB 基本磁盘和单个 3TB GPT 分区 (E:) 用于一般存储。
由于 D: 驱动器没有足够的可用空间,我使用 3TB GPT E: 驱动器在格式化之前从 C: 驱动器备份我需要的所有内容。
3TB E: 驱动器在安装时使用 Windows 7 Ultimate x86 的磁盘管理 GUI 初始化为 GPT 并格式化为 NTFS。但是,在格式化 C: 驱动器并安装 Windows 8 Enterprise x64 后,我遇到了上面屏幕截图中显示的“GPT 保护分区”问题。右键菜单中的几乎所有选项都是灰色的,所以我什至不知道从哪里开始。
我在互联网上发现了很多有趣的想法,但没有一个真正适合我的情况。
如果我的理解是正确的,那么 2TB 的“保护”分区是 GPT 系统模拟的假分区。这个想法是,如果你的系统不能读取 GPT,而只能读取 MBR,它会看到这个假的 2TB MBR 分区,所以你不会不小心格式化它,认为它是空的——因此是“保护性的”。
这引出了我的主要问题:
- 为什么 Windows 8 Enterprise x64 无法读取 …
我的理解是MBR是512字节。前440 个字节(根据实现的不同,给出或取几个字节)包含引导加载程序/引导程序代码区域。其余字节包含有关分区表的信息。
如果我将磁盘的 MBR 清零...
# Zero out the MBR
dd if=/dev/zero of=/dev/sdX bs=1 count=512
Run Code Online (Sandbox Code Playgroud)
然后,使用fdisk将分区表写入/dev/sdX...
# Create a 2GiB partition starting at 2048 (default).
fdisk /dev/sdX
...
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier ...
...
(fdisk) n
(fdisk) p
(fdisk) 1
(fdisk) 2048
(fdisk) +2G
(fdisk) w
Run Code Online (Sandbox Code Playgroud)
然后读回前 440 个字节......
dd if=/dev/sdX bs=1 count=440
Run Code Online (Sandbox Code Playgroud)
第一个440 …
mbr ×10
gpt ×5
hard-drive ×3
partitioning ×3
grub ×2
windows ×2
boot ×1
clone ×1
clonezilla ×1
editing ×1
gparted ×1
linux ×1
linux-mint ×1
multi-boot ×1
ntfs ×1
parted ×1
truecrypt ×1
windows-10 ×1
windows-7 ×1
windows-8 ×1
windows-xp ×1