Wiifefs 실행 취소 --all --force /dev/sda? /dev/sda

Wiifefs 실행 취소 --all --force /dev/sda? /dev/sda

운영 체제: Debian uname -aBullseye

Linux backup-server 5.10.0-5-amd64 #1 SMP Debian 5.10.24-1 (2021-03-19) x86_64 GNU/Linux

나는 방법을 찾고 있어요실행 취소wipefs주문하다:

wipefs --all --force /dev/sda? /dev/sda

이전 구조는 다음과 같습니다.

fdisk -l /dev/sda

Disk /dev/sda: 223.57 GiB, 240057409536 bytes, 468862128 sectors
Disk model: CT240BX200SSD1  
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: gpt
Disk identifier: 8D5A08BF-0976-4CDB-AEA2-8A0EAD44575E

Device       Start       End   Sectors   Size Type
/dev/sda1     2048   1050623   1048576   512M EFI System
/dev/sda2  1050624 468860927 467810304 223.1G Linux filesystem

그리고 명령의 출력은 다음과 같습니다 wipefs(여전히 내 터미널에 있음).

/dev/sda1: 8 bytes were erased at offset 0x00000052 (vfat): 46 41 54 33 32 20 20 20
/dev/sda1: 1 byte was erased at offset 0x00000000 (vfat): eb
/dev/sda1: 2 bytes were erased at offset 0x000001fe (vfat): 55 aa
/dev/sda2: 2 bytes were erased at offset 0x00000438 (ext4): 53 ef
/dev/sda: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
/dev/sda: 8 bytes were erased at offset 0x37e4895e00 (gpt): 45 46 49 20 50 41 52 54
/dev/sda: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa

기사를 찾았을 수도 있어요https://sysbits.org/,지금 바로: https://sysbits.org/undoing-wipefs/

인용하겠습니다닦음그리고실행 취소거기에서 나는 그것이 정상적인지 알고 싶었고 내 서버에서 안전하게 할 수 있는지 알고 싶었지만 아직 서버를 다시 시작하지 않았고 그 이후로 문제를 해결하는 방법을 찾으려고 노력했습니다.지옥철자 오류:

  1. 닦음부분

    wipefs -a /dev/sda
    
    /dev/sda: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
    /dev/sda: 8 bytes were erased at offset 0x3b9e655e00 (gpt): 45 46 49 20 50 41 52 54
    /dev/sda: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa
    
  2. 실행 취소부분

    echo -en '\x45\x46\x49\x20\x50\x41\x52\x54' | dd of=/dev/sda bs=1 conv=notrunc seek=$((0x00000200))
    echo -en '\x45\x46\x49\x20\x50\x41\x52\x54' | dd of=/dev/sda bs=1 conv=notrunc seek=$((0x3b9e655e00))
    echo -en '\x55\xaa' | dd of=/dev/sda bs=1 conv=notrunc seek=$((0x000001fe))
    
    partprobe /dev/sda
    

가능한 대체 솔루션

방금 testdiskSSD 드라이브에서 이것을 실행하여 많은 파티션을 찾았지만 다음 두 개만 원본과 일치했습니다.

TestDisk 7.1, Data Recovery Utility, July 2019
Christophe GRENIER <[email protected]>
https://www.cgsecurity.org

Disk /dev/sda - 240 GB / 223 GiB - CHS 29185 255 63

     Partition                  Start        End    Size in sectors

 1 P EFI System                  2048    1050623    1048576 [EFI System Partition] [NO NAME]
 2 P Linux filesys. data      1050624  468860927  467810304

Write(파티션 구조를 디스크에 쓰기) 할 수 있나요/해야 하나요 ? 그렇지 않다면 왜 안 됩니까?

답변1

다행스럽게도 wipefs실제로 닦은 부분이 인쇄됩니다.

이것들,

wipefs -a /dev/sda
/dev/sda: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
/dev/sda: 8 bytes were erased at offset 0x3b9e655e00 (gpt): 45 46 49 20 50 41 52 54
/dev/sda: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa

echo -en '\x45\x46\x49\x20\x50\x41\x52\x54' | dd of=/dev/sda bs=1 conv=notrunc seek=$((0x00000200))
echo -en '\x45\x46\x49\x20\x50\x41\x52\x54' | dd of=/dev/sda bs=1 conv=notrunc seek=$((0x3b9e655e00))
echo -en '\x55\xaa' | dd of=/dev/sda bs=1 conv=notrunc seek=$((0x000001fe))

전반적으로 나는 합리적인 것 같습니다.

그러나 오프셋은 귀하의 경우와 다릅니다!에서 얻은 값을 사용해야 합니다 wipefs.

오프셋 값(0x3b9e655e00 대 0x37e4895e00)을 기준으로 해당 디스크는 사용자 디스크보다 약간 큽니다(~256GB 대 ~240GB). 해당 값을 사용하면 디스크 끝에 있는 백업 GPT가 손상된다는 의미입니다. 첫 번째 복사본이 손상되지 않는 한 모든 파티션 도구는 이를 다시 쓸 수 있어야 하므로 이는 중요하지 않습니다.

그러나 그 반대가 사실이고 디스크 크기 내에 있는 잘못된 오프셋을 사용하면 결국 드라이브의 임의 부분을 덮어쓰게 됩니다. 안좋다.

또한 파일 시스템의 매직 넘버도 올바른 위치에 있어야 합니다.


VFAT 이미지로 지우기 및 실행 취소를 테스트하고 버전을 읽기 전에 머리에 다음과 같이 썼습니다.

printf "$(printf '\\x%s' 46 41 54 31 36 20 20 20)" |
  dd bs=1 conv=notrunc seek=$(printf "%d" 0x00000036) of=test.vfat

이는 단일 wipefs출력 라인에 대한 것입니다(다른 출력 라인에도 반복).

test.vfat: 8 bytes were erased at offset 0x00000036 (vfat): 46 41 54 31 36 20 20 20

시작 부분에 중첩된 printf를 사용하면 출력을 수동으로 변경하지 않고도 출력을 복사하여 붙여넣을 수 wipefs있습니다 .46 41 54 31...\x46\x41\x54\x31...

다시 말하지만, 올바른 오프셋에 올바른 값을 입력하도록 주의해야 합니다!

추가 자동화가 그다지 나쁘지는 않을 수도 있지만 관련된 위험을 고려하면 광범위한 테스트 없이 이와 같은 스크립트를 공개적으로 릴리스하는 것을 꺼릴 것입니다.

가능하다면, 장난을 치기 전에 디스크 내용의 복사본을 만드십시오.

답변2

내 질문에취소wipefs, 저는 Recreate Partition 을 사용하기로 선택했습니다 testdisk. 측정 가능한 시간이 걸리기 때문에(단순히 클릭하는 것이 아니라) 이를 피하는 것이 좋습니다. Write그렇게 하기 전에 두 파티션을 다시 확인해야 했습니다. testdisk구조를 읽어 보겠습니다. 계속해서 읽어 보았습니다. 일부 디렉토리 - 꽤 괜찮아 보였습니다.


내가 생각하지 못한 것은 기본 파일 시스템이었습니다.틀림없이지금은 시작되지 않았습니다.

나는 라이브 Linux Mint에서 GParted의 사진을 찍었습니다.

알 수 없는 파일 시스템 - GParted


명령의 전체 출력은 다음과 같습니다 wipefs.

/dev/sda1: 8 bytes were erased at offset 0x00000052 (vfat): 46 41 54 33 32 20 20 20
/dev/sda1: 1 byte was erased at offset 0x00000000 (vfat): eb
/dev/sda1: 2 bytes were erased at offset 0x000001fe (vfat): 55 aa
/dev/sda2: 2 bytes were erased at offset 0x00000438 (ext4): 53 ef
/dev/sda: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
/dev/sda: 8 bytes were erased at offset 0x37e4895e00 (gpt): 45 46 49 20 50 41 52 54
/dev/sda: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa

삭제된 콘텐츠를 실행 취소하려면 다음을 수행하세요.

먼저, 내 Ext4 파티션은 다음과 같습니다.

echo -en '\x53\xef' | dd of=/dev/sda2 bs=1 conv=notrunc seek=$((0x00000438))
partprobe /dev/sda2

이제 설치가 가능하고 모든 파일을 읽을 수 있습니다.

2. 내 EFI 파티션:

echo -en '\x46\x41\x54\x33\x32\x20\x20\x20' | dd of=/dev/sda1 bs=1 conv=notrunc seek=$((0x00000052))
echo -en '\xeb' | dd of=/dev/sda1 bs=1 conv=notrunc seek=$((0x00000000))
echo -en '\x55\xaa' | dd of=/dev/sda1 bs=1 conv=notrunc seek=$((0x000001fe))
partprobe /dev/sda1

재부팅하고 서버에 SSH로 연결했는데 이제 문제가 없습니다.

답변3

그냥 "쓰기"(파티션 구조를 디스크에 쓰기)를 눌러도 되나요?

모든 파티션이 나열된 경우에만 해당됩니다.

파티션 테이블 복구

만약에모든 파티션 나열그리고이 경우에만,에서 확인됨쓰다Enter, y 및 확인을 누릅니다.

이제 파티션이 파티션 테이블에 등록되었습니다.

관련 정보