Вы можете догадаться из заголовка, что я идиот. Я разозлился на USB-ключ и попытался отформатировать его разделы с помощью dd
и /null, но вместо этого я удалил свои sda1
и sda2
разделы.
Я быстро понял свою ошибку и не выключил компьютер, поэтому моя ОС все еще работает.
У меня теперь есть только мой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
и sda2
? Могу ли я загрузить EFI? Что я могу сделать?
решение1
Люди делятся на две категории. Одни делают резервные копии. Другие уже делают резервные копии. Я считаю, что у вас есть резервная копия.
Вам необходимо пересоздать таблицу разделов в интерактивном режиме. fdisk
Если ваша ОС все еще запущена, вы можете получить границы разделов из памяти ядра.
Вот пример из моей рабочей системы (RHEL7 с UEFI):
# 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
Теперь вам нужно пересоздать потерянные разделы с этими границами с помощью interactive fdisk
. Не забудьте указать тип раздела.
После восстановления разделов необходимо проверить их файловые системы. Вы пишете, что /boot/efi пуст, но он должен быть пустым только в том случае, если вы НЕ используете UEFI. Вы можете попробовать восстановить его, переустановив grub2-efi-x64
пакет.
Видетьэтоттема для продолжения реставрации.
решение2
Я исправил свою ошибку. Сначала я сохранил все, что было для меня важно, и создал загрузочный USB-накопитель на всякий случай. Затем я использовал testDisk, и поскольку мои разделы не были перезаписаны, у меня не возникло проблем с восстановлением таблицы разделов и данных с помощью быстрого поиска (UEFI sda1 и swupdate sda2). Наконец, я проверил, что это сработало с помощью gparted, и перезагрузил систему.
Для вашего сведения, не делайте глубокий поиск с помощью testDisk на вашем диске и с вашего диска, он выдаст ошибку и сообщит вам, что на нем недостаточно места.
К счастью, все в порядке. Спасибо за помощь, ребята.