Я пытаюсь создать резервную копию таблицы разделов 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
Предыдущий ответ был действительно близок; вы сделали резервную копию только таблицы разделов. Таблица разделов является ЧАСТЬЮ первого сектора. Другая вещь в первом секторе - это загрузчик.
Однако, если вы копируете точно первый сектор, а не точно свой / boot раздел, вы можете легко получить случаи, когда код в первом секторе переходит на адрес, на котором нет необходимого файла. В этом случае загрузите соответствующий носитель и переустановите загрузчик (я думаю, что у Ubuntu даже есть помощник для этого на своем носителе).
Вы пробовали подход более низкого уровня? Например, используя dd if=/dev/sdc of=mbr.sav bs=512 count=1
, который будет делать именно то, что вы ожидаете, то есть резервное копирование первых 512 байт жесткого диска на mbr.sav
? Чтобы восстановить резервную копию, инвертируйте if
и of
значения аргументов.