Linux

dd 圖像太大無法恢復

  • April 30, 2017

我用 dd 做了一張圖片

sudo dd if=/dev/sda of=/path_to_external_drive/backup.img

現在我想在所有分區掛載順利後恢復系統。當我做

sudo dd if=backup.img of=/dev/sda

在嘗試啟動系統之前,我沒有收到任何錯誤消息。

我收到以下錯誤消息,sudo fdisk -l因為我想看看為什麼 BIOS 沒有找到任何分區。

分區 1 不在物理扇區邊界開始

所以我從我的 live 棒上嘗試了 Disk Image Writer,但它說圖像太大了 41 kB。

這怎麼會發生,我該如何解決?除了購買新的 SSD 之外,還有其他方法可以恢復系統嗎?

fdisk -l 備份.img:

備份.img 的 fdisk -l fdisk -l /dev/sda:

GPT PMBR size mismatch (976773247 != 976773167) will be corrected by w(rite).

Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x635f93a2

Device     Boot Start       End   Sectors   Size Id Type
/dev/sda1           1 976773247 976773247 465.8G ee GPT

Partition 1 does not start on physical sector boundary.

gdisk -l /dev/sda:

GPT fdisk (gdisk) version 1.0.1

Warning! Disk size is smaller than the main header indicates! Loading
secondary header from the last sector of the disk! You should use 'v' to
verify disk integrity, and perhaps options on the experts' menu to repair
the disk.
Caution: invalid backup GPT header, but valid main header; regenerating
backup header from main header.

Warning! One or more CRCs don't match. You should repair the disk!

Partition table scan:
 MBR: protective
 BSD: not present
 APM: not present
 GPT: damaged

****************************************************************************
Caution: Found protective or hybrid MBR and corrupt GPT. Using GPT, but disk
verification and recovery are STRONGLY recommended.
****************************************************************************

Disk /dev/sda: 976773168 sectors, 465.8 GiB  
Logical sector size: 512 bytes  
Disk identifier (GUID): 8DC2A4AA-C369-4ED8-B876-DCE0418A1BD0  
Partition table holds up to 128 entries  
First usable sector is 34, last usable sector is 976773214  
Partitions will be aligned on 2048-sector boundaries

Total free space is 4157 sectors (2.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name  
  1            2048          923647   450.0 MiB   2700  Basic data partition  
  2          923648         1128447   100.0 MiB   EF00  EFI system partition  
  3         1128448         1161215   16.0 MiB    0C01  Microsoft reserved ...  
  4         1161216       669571071   318.7 GiB   0700  Basic data partition  
  5       669571072       960290815   138.6 GiB   8300  
  6       960290816       976771071   7.9 GiB     8200  

您的圖像文件比磁碟大 40KB(976773248 - 976773168 個扇區)。它不能dd將整個圖像保存到磁碟。我猜您的 dd 命令顯示了一些警告,例如“沒有剩餘空間”之類的。

但是你有運氣。最後一個(第 6 個)分區只是一個交換分區。您可以使用gdisk and mkswap調整最後一個分區的大小並更正分區表:

$ gdisk /dev/sda

  1. 刪除最後一個分區
  2. 修復gpt分區表(應該自動完成)
  3. 重新創建最後一個分區(會比以前小一點)

然後格式化新的交換分區:

$ mkswap /dev/sda6

關於互動gdisk使用的注意事項:

我無法真正預測gdisk /dev/sda會向您展示什麼。鍵入“h”尋求幫助。鍵入“d”,然後鍵入“6”以刪除最後一個分區。“n”和“6”重新創建最後一個分區。退出並使用“w”寫入您的更改。gdisk 不會寫入任何內容,除非您使用“w”退出。如果不確定,您可以隨時通過“q”或“ctrl-c”退出/取消。

引用自:https://unix.stackexchange.com/questions/362225