我的系统驱动器上意外使用的dd


0

想要将图像写入USB记忆棒时,我不小心将系统驱动器(macintosh hd)用作目标。使用的命令:

sudo dd if=/dev/zero of=/dev/rdisk1 bs=1024 count=1

disk1是Macinstosh HD的地方...(是的,我知道-facepalm :)

无论如何-2分钟后终止,因为没有任何反应,我意识到了自己的错误。令我惊讶的是,一切似乎仍然有效,分区仍然存在,仍然重新启动。

这是以下内容的输出:

$diskutil list:

/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage                         499.4 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           *499.1 GB   disk1
                                 Logical Volume on disk0s2

该命令intented到零出partion地图(的USB记忆棒)...描述这里

可以在USB记忆棒上运行,(幸运的是)在我的Macintosh硬盘上不起作用。但是我还是不明白为什么?说我中止了,我的意思是提交评论后,什么也没发生,没有输出,但是也没有新的提示。

时间机器备份可以恢复,仅此而已。我很好奇,想了解它

我是否还要担心丢失一些数据?


您应该在此之前确定考虑从Timemachine进行备份(例如1个小时)进行还原。现在没有人可以告诉您是否有数据被覆盖,或者只有免费的块。但是我也感到惊讶的是,一切仍然对您有效
bMalum 2015年

1
@bMalum,如果dd执行的实际命令是写入的命令,则无需从Time Machine还原任何内容,因为没有文件被覆盖,仅磁盘的前1K被覆盖,Time Machine不会修复被覆盖的内容在这种情况下。
user3439894 2015年

1
@ drummer23,不确定您的意思是“什么都没发生2分钟后中止”,因为dd您显示的命令实际上只需要花费一秒钟的时间即可完成,并且只会覆盖rdisk1的前1K。同样,具有Macintosh HD分区的系统磁盘通常是rdisk0,尽管它可以是rdisk1,因为OS X不能保证磁盘顺序。您确定rdisk1是系统磁盘吗?
user3439894 2015年

@ drummer23,我只是做了一些与您做的事情相同的测试,先备份前1024位,然后将零写入系统磁盘的前1024个字节。在我从dd备份中还原之前,我的绝对不会启动。因此,这显然对使用dd时rdisk1是否为系统磁盘提出了疑问,基于此测试,我会说它不是,因为它以后不应该能够启动。
user3439894 2015年

@ drummer23您在系统驱动器上使用经典存储分区布局还是核心存储分区布局?仅当您使用核心存储布局-但不使用融合驱动器时-Macintosh HD才会将disk1作为磁盘标识符。
klanomath

Answers:


2

您的主磁盘使用核心存储分区方案:

  • disk0是您的主系统磁盘。
  • disk1是驻留在disk0s2中的“虚拟”磁盘,其中包含在桌面上可见的Macintosh HD卷。

逻辑卷的前两个扇区仅包含零。

例子:

  1. disk2是3.1 TB Fusion Drive的核心存储卷池disk0s2(SSD)和disk1s2(HDD)池

    在此处输入图片说明

  2. disk2是驻留在disk0中的核心存储卷-Parallels VM(Yosemite)的64 GB磁盘映像

    在此处输入图片说明

使用您的命令,sudo dd if=/dev/zero of=/dev/rdisk1 bs=1024 count=1您很幸运,您刚刚用1024个零覆盖了1024个零。

因此,您不会丢失任何数据,并且可以继续使用Mac,而无需还原任何备份或重新安装系统。


1

应该会很好,并且您真的很幸运,因为您无法保存磁盘。我将首先分解您的dd命令:

dd if=/dev/zero of=/dev/rdisk1

将所有内容从零复制到/ dev / rdisk1(您的主磁盘,哎呀!)

bs=1024

设置要复制的块的大小。在这种情况下,您需要处理1Kb的块。接下来的这一点更重要。

count=1

此参数是保存整个磁盘的原因。将count设置为1时,您实际上告诉dd仅复制1个块。由于块大小为1Kb,全为零,因此dd命令会将驱动器的第一个千字节清零。

虽然我不知道驱动器第一个区域中的内容是什么,但我推测它包含驱动器结构信息。因此,我建议采取的措施是重新启动以恢复并启动磁盘实用程序,然后在系统驱动器上运行“修复磁盘”。


bs集作为bs=1024count=1然后仅1024 字节,其中转移不是1 MB。此外,如果它是1 MB与1 K,则可能会有问题。
user3439894 2015年

您应该会看到我最近对OP的评论。根据我所做的操作,Disk Utility无法修复磁盘,前1024个字节被零覆盖,因为一旦被覆盖,您将无法启动,甚至无法启动到Recovery HD,当在Disk Utility中的另一个系统下安装该磁盘时也无法修复。我必须还原由这些字节组成的dd备份,以使磁盘可用而无需诉诸第三方解决方案。我的测试还使人怀疑rdisk1是否实际上是系统磁盘。
user3439894 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.