Введение
В этой статье будет описываться восстановление linux разделов, а именно её таблицы, восстановление загрузчика grub2. Итак представим такую проблему, мы решили поставить Windows, и после установки не обнаруживаем каких либо разделов с linux, так же при загрузки с жесткого диска мы можем видеть что то типа «can’t load, no system installed».
Что делать?
Первым делом нужно чтобы не было никакой записи на жесткий диск, во избежание потери информации. С windows можно восстановить при помощи Partition Magic, но это нам не интересно.
Под рукой нужно всегда иметь любой лайв сд дистрибутив с предустановленным грубом и нужными утилитами для восстановления, это : testdisk, gpart, fdisk. Их существует достаточно много, но я привел более распространенные.
Первым делом смотрим какие у нас есть разделы:
sudo fdisk -l
Если есть разделы которые нормально монтируются но там исчезла половина фаилов, то следует их примонтировать в режиме только для чтения, делается так:
mount -r /dev/вашраздел
Восстановление таблицы разделов
Предполагается что мы потеряли где то там пару разделов, и нам надо их востановить. На мой взгляд лучше всего использовать для этого testdisk.
Запускаем testdisk
sudo testdisk- Нас первым делом спросят про логирование, его лучше врубить чтобы потом было что смотреть.
- Выбираем винт на котором потерялись разделы
- Показывает сектора
- Выбераем тип таблицы, я выбрал intel
- Теперь нам дают выбор действий, особо ничего трогать не стоит, запускайте Analyze, testdisk проанализирует структуру разделов
- Вам представлена структура разделов, жмем Quick Search
- Опа, у меня он нашел мои потерянные 2 раздела! Жмем enter для продолжения
- Ну и осталось применить все изменения, жмем write. Отвечаем «да» на вопрос «Записать таблицу разделов?» и ждем пока всё закончиться, у меня возился около часа.
Монтировать почему то сразу не получилось, но после ребута всё встало на свои места.
Восстановление поврежденного раздела
Симптомы следующие: не под каким пинком не монтируется. В этом случае может помочь fsck. E У меня фаиловая система ext4 поэтому выглядит восстановление так:
sudo fsck.ext4 /dev/sda5
Не знаю как для остальных фс, но для ext2 — fsck.ext2, ext3 — fsck.ext3
После восстановления должно всё работать.
Восстановление grub 2
Разделы мы все восстановили, теперь осталось восстановить груб если на восстановленных разделах был Linux, ну может и параллельно windows, не важно.
Первым делом узнаем на каком разделе у нас Linux, у меня это /dev/sda6 (узнаем свой раздел – sudo fdisk -l)
Теперь нам нужен корневой раздел, монтируем его:
sudo mount /dev/sdb6 /mnt
После монтируем папку /dev нашей live системы как /dev нашего корневого раздела
sudo mount --bind /dev /mnt/dev
И папку /proc как /proc корневого раздела
sudo mount --bind /proc /mnt/proc
Далее входим под рутом где корень является /mnt
sudo chroot /mnt /bin/bash
Теперь можно ставить груб на нужный жесткий диск(обратите внимание что жесткий диск, а не его раздел). У меня это /dev/sda
grub-install /dev/sda
Если были ошибки, то:
grub-install --recheck /dev/sda
Всё, мы восстановили разделы с linux и возможно windows, и восстановили загрузчик.
Если grub не нашел windows
Бывает… Открываем /boot/grub/grub.cfg
sudo nano /boot/grub/grub.cfg
И вписываем это там где прописываются все системы:
### BEGIN /etc/grub.d/30_os-prober ### menuentry "Винда" { insmod ntfs set root='(hd0,1)' search --no-floppy --fs-uuid --set 1C2B2F8447DD8DB0 drivemap -s (hd0) ${root} chainloader +1 } ### END /etc/grub.d/30_os-prober ###
меняем только uuid моего раздела -1C2B2F8447DD8DB0 , на свой, узнать uuid можно так:
ls -l /dev/disk/by-uuid