Резервное копирование таблицы системных разделов
Я пытаюсь сделать резервную копию таблицы разделов Linux Ubuntu 10.04 LTS.
На самом деле я делаю тесты на виртуальных машинах (VirtualBox). У меня есть одна исходная система на виртуальном диске, другая виртуальная машина в качестве спасательной системы и другой пустой виртуальный диск того же размера, что и исходный системный диск.
Итак, запустив систему восстановления, я монтирую диск с исходной системой и использую эту команду для создания резервной копии таблицы разделов:
sfdisk /dev/sdb –d > /backup/sdb-part-table.sf
И файл генерируется и сохраняется с этим выходным сообщением:
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
Получив файл таблицы разделов, я размонтирую исходный диск и подключу резервный пустой диск.
Я пытаюсь использовать эту команду:
sfdisk /dev/sdb < /backup/sdb-part-table.sf
Затем я пытаюсь снова восстановить таблицу разделов, но выдает мне эту ошибку:
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdc: 265 cylinders, 255 heads, 63 sectors/track
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
Old situation:
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/sdc1 * 0+ 245- 246- 1973248 83 Linux
/dev/sdc2 245+ 265- 20- 155649 5 Extended
/dev/sdc3 0 - 0 0 0 Empty
/dev/sdc4 0 - 0 0 0 Empty
/dev/sdc5 245+ 265- 20- 155648 82 Linux swap / Solaris
New situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdc1 * 2048 3948543 3946496 83 Linux
/dev/sdc2 3950590 4261887 311298 5 Extended
/dev/sdc3 0 - 0 0 Empty
/dev/sdc4 0 - 0 0 Empty
/dev/sdc5 3950592 4261887 311296 82 Linux swap / Solaris
Warning: partition 1 does not end at a cylinder boundary
sfdisk: I don't like these partitions - nothing changed.
(If you really want this, use the --force option.)
Итак, наконец, я использую силу, чтобы сделать восстановление и, кажется, работает:
sfdisk --force /dev/sdb < /backup/sdb-part-table.sf
Получение этого результата:
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdc: 265 cylinders, 255 heads, 63 sectors/track
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
Old situation:
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/sdc1 * 0+ 245- 246- 1973248 83 Linux
/dev/sdc2 245+ 265- 20- 155649 5 Extended
/dev/sdc3 0 - 0 0 0 Empty
/dev/sdc4 0 - 0 0 0 Empty
/dev/sdc5 245+ 265- 20- 155648 82 Linux swap / Solaris
New situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdc1 * 2048 3948543 3946496 83 Linux
/dev/sdc2 3950590 4261887 311298 5 Extended
/dev/sdc3 0 - 0 0 Empty
/dev/sdc4 0 - 0 0 Empty
/dev/sdc5 3950592 4261887 311296 82 Linux swap / Solaris
Warning: partition 1 does not end at a cylinder boundary
Successfully wrote the new partition table
Re-reading the partition table ...
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
Но когда я перемещаю резервную копию в новую файловую систему, с которой все в порядке, система не запускается, у меня черный экран, как будто на машине с резервной копией нет установленной ОС, сравнительные таблицы разделов равны в рабочем источнике диск и в резервной копии не рабочий диск.
Резервное копирование Mbr уже сделано и установлено. Я пытался установить после и до восстановления таблицы разделов.
Итак, есть идеи, как я могу заставить это работать?
Заранее спасибо, и хорошей недели:D
2 ответа
Предыдущий ответ был действительно очень близок; Вы только создали резервную копию таблицы разделов. Таблица разделов - это PART первого сектора. Другая вещь в первом секторе - загрузчик.
Однако, если вы точно копируете первый сектор, а не свой раздел /boot, вы можете легко получить случаи, когда код в первом секторе переходит по адресу, который не имеет необходимого файла. В этом случае загрузите некоторые соответствующие носители и переустановите загрузчик (я думаю, что в Ubuntu даже есть помощник для этого на их носителе).
Вы пробовали подход более низкого уровня? Например, используя dd if=/dev/sdc of=mbr.sav bs=512 count=1
, который будет делать именно то, что вы ожидаете, то есть резервное копирование первых 512 байт вашего жесткого диска на mbr.sav
? Чтобы восстановить резервную копию, инвертировать if
а также of
Значения аргументов.