/null로 dd한 후 UEFI 파티션 복구/재설치

/null로 dd한 후 UEFI 파티션 복구/재설치

제목만 봐도 내가 바보인 걸 짐작할 수 있겠나? USB 키에 화가 나서 a 및 /null 을 사용하여 해당 파티션을 포맷하려고 했지만 dd대신 sda1sda2파티션을 삭제했습니다.

나는 내 실수를 재빨리 깨닫고 컴퓨터를 종료하지 않았으므로 내 OS는 여전히 실행 중입니다.

나에겐 이제 나만의sda3

brw-rw---- 1 root disk 8, 0 Jun  6 19:40 /dev/sda
brw-rw---- 1 root disk 8, 3 Jun  6 19:40 /dev/sda3

cat내가 fstab얻는 다면

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/mint--vg-root /               ext4    errors=remount-ro 0       1

# /boot was on /dev/sda2 during installation
UUID=f16adf40-841d-48de-afb6-bdbe66bd6eae /boot           ext2    defaults        0       2

# /boot/efi was on /dev/sda1 during installation
UUID=2008-2EBF  /boot/efi       vfat    umask=0077      0       1
/dev/mapper/mint--vg-swap_1 none            swap    sw              0       0

나는 약간 길을 잃었고 아직 UEFI, GRUB가 어떻게 작동하는지, 어떻게 fstab작동하는지 이해하지 못했다고 말해야 합니다.

그렇게 하면 ll /boot비어 있지 않습니다.

-rw-r--r--  1 root root  1249214 Dec 11 15:36 abi-4.4.0-104-generic
-rw-r--r--  1 root root  1243479 Dec  2  2016 abi-4.4.0-53-generic
-rw-r--r--  1 root root   190517 Dec 11 15:36 config-4.4.0-104-generic
-rw-r--r--  1 root root   189877 Dec  2  2016 config-4.4.0-53-generic
drwxr-xr-x  2 root root     1024 Jun 23  2017 efi/
drwxr-xr-x  5 root root     1024 Apr 17 23:05 grub/
-rw-r--r--  1 root root 48667470 Apr 18 07:27 initrd.img-4.4.0-104-generic
-rw-r--r--  1 root root 48377536 Jan  6 14:59 initrd.img-4.4.0-53-generic
drwx------  2 root root    12288 Jun 23  2017 lost+found/
-rw-r--r--  1 root root   182704 Jan 28  2016 memtest86+.bin
-rw-r--r--  1 root root   184380 Jan 28  2016 memtest86+.elf
-rw-r--r--  1 root root   184840 Jan 28  2016 memtest86+_multiboot.bin
-rw-------  1 root root  3887726 Dec 11 15:36 System.map-4.4.0-104-generic
-rw-------  1 root root  3874377 Dec  2  2016 System.map-4.4.0-53-generic
-rw-------  1 root root  7104112 Dec 11 15:36 vmlinuz-4.4.0-104-generic
-rw-r--r--  1 root root  7065648 Dec 13  2016 vmlinuz-4.4.0-53-generic

그러나 ll /boot/efi비어 있습니다.

2개의 파티션을 다시 마운트하거나 다시 생성해야 합니까 sda1? sda2EFI를 다운로드할 수 있나요? 어떡해?

답변1

사람들은 두 부류로 나뉜다. 백업을 만들고 있는 중입니다. 다른 사람들은 이미 백업을 하고 있습니다. 나는 당신이 백업을 가지고 있다고 믿습니다.

대화형을 통해 파티션 테이블을 다시 만들어야 합니다. fdisk 아직 OS가 실행 중이라면 커널 메모리에서 파티션 경계를 얻을 수 있습니다.

다음은 내 작업 시스템(UEFI가 포함된 RHEL7)의 예입니다.

# fdisk -l /dev/sda 

Disk /dev/sda: 300.0 GB, 299966445568 bytes, 585871964 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
Disk label type: dos
Disk identifier: 0x000a146c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      526335      262144   83  Linux
/dev/sda2          526336     1050623      262144    6  FAT16
/dev/sda3         1050624   585871359   292410368   8e  Linux LVM

복원 방법 아래에 느슨한 /dev/sda1 및 /dev/sda2 정보가 있습니다. 경계 정보가 있는 파일을 찾습니다.

# find /sys -name start
/sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda1/start
/sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda2/start
/sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda3/start
....

sda1커널 메모리에서 파티션 블록 시작

# cat /sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda1/start
2048

sda1커널 메모리의 파티션 끝 블록

echo end $((
$(cat /sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda1/size) \
+ \
$(cat /sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda1/start) \
- 1 \
))
end 526335

sda2커널 메모리에서 파티션 블록 시작

# cat /sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda2/start
526336

sda2커널 메모리의 파티션 끝 블록

echo end $((\
$(cat /sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda2/size)\
+ \
$(cat /sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda2/start)\
- 1 \
))
end 1050623

이제 대화형 fdisk. 파티션 유형을 설정하는 것을 잊지 마십시오.

파티션을 복원한 후에는 해당 파일 시스템을 확인해야 합니다. /boot/efi가 비어 있다고 쓰고 있지만 UEFI를 사용하지 않는 경우에만 비어 있어야 합니다. 패키지를 다시 설치하여 복원을 시도할 수 있습니다 grub2-efi-x64.

보다이것복원을 계속할 주제입니다.

답변2

내 오류를 수정했습니다. 우선 나에게 중요한 모든 것을 저장하고 만약을 대비해 부팅 가능한 USB를 만들었습니다. 그런 다음 testDisk를 사용했는데 파티션을 덮어쓰지 않았기 때문에 빠른 검색(UEFI sda1 및 swupdate sda2)을 사용하여 파티션 테이블과 데이터를 복구하는 데 아무런 문제가 없었습니다. 마침내 gparted와 작동하는지 확인하고 시스템을 재부팅했습니다.

참고로 디스크와 디스크에서 testDisk를 사용하여 심층 검색을 수행하지 마십시오. 버그가 발생하여 공간이 충분하지 않다고 알려줍니다.

다행히 모든 것이 괜찮습니다. 도움을 주셔서 감사합니다.

관련 정보