Резервне копіювання MBR жорсткого диска і першого (скороченого) розділу в один файл зображення


2

Незважаючи на велику кількість Google, я не міг знайти відповіді на мою проблему.

Я - адміністратор Linux і хочу зробити резервну копію інсталяції Windows XP (але це може бути будь-яка інша ОС), розташованої на першому розділі жорсткого диска об'ємом 160 ГБ (який я скоротився до мінімального розміру, близько 4,8 ГБ), і MBR, в тому ж файлі. Мета полягає в тому, щоб мати один образ диска, який я міг би використовувати для перезапису нового жорсткого диска (наприклад, dd, якщо = / my / file.img з / / dev / sda) і використовувати gparted для збільшення розділу на новий диск Після цього розмір зображення буде таким же простим у використанні, як гібридні образи дисків Debian або Ubuntu для своїх живих систем (які можна писати безпосередньо на USB-накопичувачі з dd, але я хочу використовувати їх тільки на звичайних жорстких дисках).

Я вже знаю, як резервне копіювання / відновлення MBR або одного розділу з dd, але тепер я хотів би зробити резервну копію як в одному файлі.

Я ще нічого не спробував, але придумав два способи:

  1. Приєднайте (з котом, наприклад) як файли зображень MBR, так і файлів розділів в один файл зображення, але я не впевнений, що між ними немає нічого.

  2. Використовуйте опцію dd "count" для резервного копіювання жорсткого диска до кінця першого розділу, але тоді я не знаю, як розрахувати правильний розмір для завершення копіювання. Можливо, кількість байтів, скопійованих під час резервного копіювання розділу (який виводить dd після завершення) з 512 байтами для MBR, але знову ж таки, я не знаю структури даних жорстких дисків досить глибоко, щоб переконатися, що немає даних між ними я повинен додати до загальної кількості.

Резервне копіювання всього диска до розрідженого або стисненого файлу не є можливим, оскільки я хотів би мати можливість використовувати це зображення на диску меншому, ніж оригінальний (але більше, ніж скорочений розділ, звичайно).

Будь-яка порада буде оцінена, або підтвердженням того, що перший метод (або не буде) працювати, спосіб обчислення правильного числа для другого методу, або абсолютно інший метод для досягнення цієї мети, єдиним обмеженням є те, що як користувач Linux, я віддаю перевагу методу, який використовує лише базове програмне забезпечення, доступне на більшості дистрибутивів Linux, наприклад, dd або cat.

Відповіді:


2

Ваша опція № 2 повинна працювати. Наприклад, якщо fdisk або parted показує, що розділ Windows закінчується у секторі 9,375,000, можна зробити:

dd if=/dev/sda of=/path/to/winxp.img bs=512 count=9375001

(Зверніть увагу на додавання 1 до count значення, оскільки сектори нумеруються, починаючи з 0.) Щоб скопіювати це зображення на інший диск, потрібно зробити зворотне, і ви можете пропустити count і bs опції (хоча встановлення вище bs значення може підвищити продуктивність; мій приклад встановлює його до 4096, що є фізичним розміром сектора на нових дисках Advanced Format ():

dd if=/path/to/winxp.img of=/dev/sdb bs=4096

Копія закінчиться в кінці файлу. До тих пір, поки диск має не менше 9,375,001 сектора, все має працювати. На комп'ютері на основі BIOS завантажувач знаходиться в основному завантажувальному записі (MBR; перший сектор диска). Іноді додатковий код (наприклад, для GRUB або деяких типів програмного забезпечення для шифрування дисків) йде в секторах між MBR і початком першого розділу. Всі ці сектори існуватимуть у файлі резервної копії. Хоча теоретично можливо, що деякі програми зберігають дані за межами розділів на самому кінці диска, ця практика є незвичайною. Насправді, я не знаю нічого, що робить це, принаймні, на комп'ютері BIOS / MBR. (Нова таблиця розділів GUID або GPT, система перегородки зберігає резервну копію таблиці розділів в кінці диска. Таким чином, якщо ви хочете створити резервну копію диска GPT, вам потрібно або зробити щось більш складне або виконати операцію відновлення таблиці розділів після відновлення резервної копії.)

Зауважимо, що все це ігнорує той факт, що інсталяція Windows, як правило, дуже специфічна для машини. Якщо ви пересунете інсталяцію на новий комп'ютер, драйвери, ймовірно, не збігатимуться, і в кращому випадку вам доведеться перезавантажити півдюжини або десяток разів, коли Windows їх оновить. У гіршому випадку цей процес може зазнати невдачі. Є також питання серійного номера Windows.


1
Я хотів би залишити другий пункт. Установки Windows, як правило, не працюють добре при переході між різними пристроями. MS включає в себе спеціальну команду 'sysprep / oobe / generalize', яка видаляє інформацію про систему з інсталяції (ключі активації і т.д.), але навіть це не призведе до простого переходу між різними апаратними засобами. Таким чином, це може бути фатальним недоліком у виконанні того, що ОП хоче зробити.
Atari911

Отже, якщо я правильно розумію, основна "формула": запустити fdisk, перемкнути одиниці відображення на сектори, зауважити номер, де закінчується розділ, додати 1 і використовувати його як "count" номер для dd, розмір блоку - 512 ?
MoonSweep

1
Як бік, я усвідомлюю, що установка Windows, швидше за все, не працюватиме на різних апаратних засобах, але я вже успішно використовував sysprep на Windows XP на роботі раніше, щоб клонувати однакові машини і змінювати ключ активації, SSID домену тощо і т.д. в перший час завантаження. Я знаю, що такі образи дисків повинні бути, принаймні, специфічними для моделі, тому мені відомо про проблему. Але все одно спасибі за попередження :)
MoonSweep

The fdisk Опція, необхідна для показу секторів замість циліндрів -u.
Michael
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.