LINUX.ORG.RU

[пишу с холодильника] восстановление таблицы разделов


1

2

Убил таблицу разделов. Нечаянно сделал

[golovin@archmagus ~]$ sudo dd if=image.iso of=/dev/sda
Перед тем, как заметил, что активно мигает светодиод не на целевом устройстве, прошло немного времени. Когда заметил:
^C289321+0 записей считано
289321+0 записей написано
 скопировано 148132352 байта (148 MB), 10,2396 c, 14,5 MB/c
Надеюсь, что затёр только раздел /boot, gparted показал это. Чувствую, перезагружусь - больше не загружусь.
Можно как-то восстановить все разделы без перезагрузки.

★★★★★

Вторую таблицу за сегодня затёр. С утра раздел с фильмами затёр, теперь ноут.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от athost

gpart:

Сканирование дисков с помощью gpart не обнаружило каких-либо файловых систем на этом диске.
Testdisk все разделы обнаружил. Сейчас делаю deeper search.

CYB3R ★★★★★
() автор топика

Чувствую, перезагружусь - больше не загружусь.

чертовски прав :]

redixin ★★★★
()

тащемта спасай данные пока ФС дышит, ибо ей кирдык

redixin ★★★★
()
Ответ на: комментарий от GotF

таблица уже делась

разделы никуда не денутся

sdio ★★★★★
()
Ответ на: комментарий от sdio
$ cat /proc/partitions
major minor  #blocks  name

   8        0  312571224 sda
   8        1     126976 sda1
   8        2   52428800 sda2
   8        3  258965504 sda3
   8        4    1048576 sda4
CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Информация о таблице разделов есть в /proc/partitions.

Вот мой пример:

cat /proc/partitions | grep sda
   8        0  312571224 sda
   8        1   81923436 sda1
   8        2          1 sda2
   8        5  230645173 sda5
konstantin@irc ~ $ /sbin/fdisk -l /dev/sda

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, всего 625142448 секторов
Units = секторы of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf74ef74e

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *          63   163846934    81923436    7  HPFS/NTFS/exFAT
/dev/sda2       163846935   625137344   230645205    5  Расширенный
/dev/sda5       163846998   625137344   230645173+   7  HPFS/NTFS/exFAT

Что бы не перезаписывать таблицу разделов наобум воспользуйтесь опцией -offset.

Её значение рассчитывайте так: номер сектора умножить на 512, к примеру для первого раздела в моём случае будет так:

mount -t ntfs-3g /dev/sda /mnt/ntfs -o ro,offset=32256

Вам придётся поискать, т.к. начало может быть не с 63 сектора, а с 2048-го, но число секторов вы знаете, так что найдёте.

Первый раздел вам думаю стоит пропустить, только учтите его границы.

Лучше сохраните куда-нибудь вывод /proc/partitions, перед записью новой таблицы разделов и перезагрузкой.

kostik87 ★★★★★
()
Ответ на: комментарий от PolarFox

хитрый_план.jpg
Ведь такая же история сегодня с утра приключилась. Но запороть два жёстких за один день - перебор.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от nickionn

А мне другое про него рассказывали:
Жил да был противный баг в ядре, но проявлялся только на жёстких новых (на 1991 год) моделей. Однажды кто-то спалил жёсткий, а Торвальдс очень удивился, когда вместо счёта получил патчик.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R
mount -t <fs_type> /dev/sda /mnt/sda2 -o ro,offset=$(((126976+63+1)*512))

Примерно так, если да то пишите в fdsik запись для второго раздела, начиная с сектора 126976+63.

Так же попробуйте с 2048 вместо 63 в случае не удачи.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

И ещё интересный вопрос: а сон/гибернация нормально сработают? Просто пробовать боюся.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Чтобы выйти из гебернации нужно сначала ядро загрузить, чтобы оно считало образ. А у тебя загрузчика-то нет...

Про сон - не знаю. Но, думаю, что тебе лучшее вообще не дышать на комп, так как sda1 у тебя вообще на птичьих правах и даже любая запись туда может навредить.

Вобщем буду молиться за тебя (:

P. S. когда-то вручную прописывал таблицу жестких дисков с помощью diskedit (кто помнит такую утилитку из norton utilites). Удачно. Но больше не хочу.

Вобщем, перепиши на листочек выхлоп cat /proc/partitions, потом эксперементируй.

Удачи!

Kroz ★★★★★
()
Ответ на: комментарий от CYB3R

а торвальдс когда-то вместо модема на жесткий позвонил.

Восстановил?

Так он полностью удалил mimix с компьютера.

ymuv ★★★★
()

Чувствую, перезагружусь - больше не загружусь.

А ты не перегружайся(: . В некоторых аптайм по год-два, а в течении года можно в знакомых винт попросить и перебросить все, а топом и переустановить систему.

Может есть старые выхлопы fdisk (может где-то на ЛОР-е завалялись)?

ymuv ★★★★
()
Ответ на: комментарий от CYB3R

Потому что она не знает, что нет ни таблицы разделов, ни sda1, ни начала sda2. Либо спасайте sda2+ (sda1 уже не спасти) TestDisk-ом, либо переносите данные на внешний винт.

RussianNeuroMancer ★★★★★
()
Ответ на: комментарий от Kroz

P. S. когда-то вручную прописывал таблицу жестких дисков с помощью diskedit (кто помнит такую утилитку из norton utilites). Удачно. Но больше не хочу.

Помню, из-под какого-то DOSовского hex-редактора восстанавливал таблицу разделов из бэкапа. Бэкап тот был на бумажке. Еще помню, как уничтоженный суперблок FAT воссоздавал вручную при помощи здравого смысла, консультаций по телефону и такой-то матери.

Сурове были времена.

geekless ★★
()

Однажды тоже затер таблицу разделов, сколько не востанавливал, как-то криво оно выходило. Решил начать «новую жизнь»

zibert ★★★
()
Ответ на: комментарий от zibert

Я тоже решил найти флешку, куда сброшу пароли и явки, а потом переустановить всё целиком. Сейчас установил арч меньше, чем за полчаса (и случилось моё случайное боевое крещение). Ноутбук проживёт до первого Kernel Panic (главное, чтобы не завтра, а то в школе что-нибудь оторвут). Благо, что ядро загружено официальное, а не самопальное.
P.S. Верующие, можете за него помолиться.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Пробуйте то, что я вам описал, как только найдёте границы разделов «нарисуйте» новую таблицу разделов, ни чего сложного в этом нет.

Если не можете сами найти то вот скрипт на perl`е:

#!/usr/bin/perl -w
for ($sector = 0; ; $sector++)
{
$offset = $sector * 512;
$cmd = "mount /dev/sdb /mnt/tmp -t <fs_type> -o ro,offset=$offset";
`$cmd`;
print "sector: $sector offset: $offset\n";
die "partition found @ offset $offset!" if ($? == 0);
}

Но начинать тут здесь я думаю нужно не с '$sector = 0', а примерно с сектора под номером 126976+63 или просто 126976.

Вместо <fs_type> указывайте тип 2, 3, затем 4 раздела и изменяйте '$sector =' указывая на примерные границы следующего раздела, третий раздел будет 52428800+126976, для 4 раздела номер сектора, с которого начинать поиск примерно будет: 52428800+126976+258965504. Не забывайте указывать тип раздела.

Предварительно создайте точку монтирования /mnt/tmp.

После нахождения границ раздела перед поиском границ следующего раздела не забывайте размантировать /mnt/tmp.

Когда найдёте границы 2,3 и 4 разделов запускайте fdisk, именно fdisk и указывайте что будете создавать основной раздел, затем номер раздела 2, указывайте номер сектора, с которого он начинается, вы его найдёте скриптом, затем вас спросят число блоков укажите размер, который в выводе partitions, для второго раздела он будет 52428800 и так далее, затем создавайте запись 3-его основного раздела.

Не забудьте указать тип.

Всё должно получиться. Зачем переустанавливать систему ?

Это бред и подход «виндузятника».

kostik87 ★★★★★
()

Неужели так трудно напрячь поиск. Таких тем, именно после оттдэдэшивания изошника на диск целая куча в дженерал!

imul ★★★★★
()
Ответ на: комментарий от kostik87

Да я это сделал в первую очередь. Другое дело, что у меня затёрся первый раздел, подмонтированный /boot и часть второто (/). Файлы-то уже не восстановить? Ядро лежало в /boot.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Скачайте пакет с ядром, создайте запись про первый раздел в таблице разделов, создайте на нём файловую систему, поставьте туда grub и положите файл ядра на него.

Введите в поиске здесь: http://www.archlinux.org/packages/ 'linux kernel'

Найдите вашу версию ядра. Узнать версию загруженного ядра можно командой

$ uname -r

Создание файловой системы :

# mkfs.ext2 /dev/sda1 -m 0
или
# mkfs.ext3 /dev/sda1 -m 0

Монтирование раздела:

mount /dev/sda1 /boot

Установка grub : ArchWiki GRUB2 (Русский) Установка загрузчика

Дальше распаковывайте скачанный архив с ядром:

tar -xJf linux-<version>-<rev>-<arch>.pkg.tar.xz

И копируете файл ядра в /boot.

Насчёт initrd не скажу, как-то в Archlinux оно генерируется, в крайнем случае можно сделать всё через chroot, если не найдёте как собрать initrd и его нет в пакете.

Загружаетесь с любого livecd диска, монтируете разделы:

mkdir /mnt/root
mount /dev/sdaX /mnt/root
mount /dev/sda1 /mnt/root/boot
mount /dev/sdaY /mnt/root/home или как там у вас.
mount -o bind /dev /mnt/root/dev
mount -t proc none /mnt/root/proc
chroot /mnt/root

И здесь уже ставите обычным способом пакет с ядром.

kostik87 ★★★★★
()
Ответ на: комментарий от CYB3R

Если повреждён второй раздел смысла нет, можете восстановить тогда /home и прочие разделы с данными., если они вам важны.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Хомяк спас уже. Второй раздел запорот совсем чуть-чуть, но это критично.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от kostik87

А пакман сказал:

WARNING: /boot appears to be a seperate partition but is not mounted.
         You probably just broke your system. Congratulations.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

1. Создайте запись для первого раздела в partition table.
2. umount -l /boot
3. mkfs.ext3 -m 0 /dev/sda1
4. mount /dev/sda1 /boot # или mount /boot, если он у вас в /etc/fstab прописан, хотя должен.

А дальше pacman ... тра-та-та.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Издеваются: 'Вы, наверное, просто сломали вашу систему. Поздравляем.' ))

kostik87 ★★★★★
()
Ответ на: комментарий от amorpher

Ну чего, начинать с экспериментиров и учебы тоже надо когда-то.

You probably just broke your system. Congratulations.

Pacman, you make my day!

observer ★★★
()
Ответ на: комментарий от anonymous

Когда мой диск поломался у меня не было никаких проблем со восстановлением. Выкинул, купил новый, поставил систему, самые важные файлы вытащил из облака. И все. Никаких проблем.

Pidgin ★★
()
Ответ на: комментарий от Pidgin

Именно сегодня ноут всё-таки перезагрузился. Теперь просто загружусь с флешки и запишу grub2.

CYB3R ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.