Я вчора провів усі дослідження, і нарешті зміг зробити завантаження Windows XP. Це має бути дещо схожим і для інших ОС. Але операція - це все, але не банально.
Оскільки це небезпечна операція, рекомендую створити резервну копію дорогоцінних даних.
Ось такі кроки:
Підготовка
У випадку, коли Windows XP потрібно змусити його забути поточні параметри букви диска та розділів, тому вам потрібно видалити всі значення з клавіші HKEY_LOCAL_MACHINE / MountedDevices на віртуальній машині перед переміщенням. Ядро відновить його при наступному перезавантаженні. На віртуальних машинах Linux це означає фіксацію fstab після міграції.
Монтаж зображення VDI
Ви не можете просто скопіювати весь VDI в розділ, оскільки він містить і MBR. Вам потрібно скопіювати лише віртуальний розділ, тому спочатку потрібно знайти спосіб монтажу VDI.
Вам потрібен nbd
драйвер і qemu-nbd
команда. У Ubuntu це в qemu-kvm
пакеті.
Спочатку завантажте драйвер nbd:
# modprobe nbd
Це має зробити деякі nbd
пристрої в /dev
.
Потім встановіть VDI:
# qemu-nbd -c /dev/nbd0 path_to.vdi
Це повинно зробити /dev/nbd0p1
, /dev/nbd0p2
, і /dev/nbd0p3
т.д. для всіх віртуальних розділів. Вони можуть бути змонтовані, як і будь-які звичайні пристрої.
Міграція розділу
Використовуйте dd
для цього, демонтуйте обидві секції перед операцією:
# dd -if=<nbd_device> -of=<real_partition>
напр .:
# dd -if=/dev/nbd0p3 -of=/dev/sda4
Робота dd
безшумно, це може зайняти кілька хвилин, навіть півтори години. Під час операції ви можете відкрити термінал і використовувати, fdisk -l
щоб побачити, як все йде добре.
ОНОВЛЕННЯ:
Мабуть, nbd не є надійним рішенням. Це може спричинити помилку вводу-виводу та призвести до відмови DD. Крім того, наступна спроба не вдається негайно. Ви також можете спробувати створити VMDK з неочищеного диска за допомогою цієї команди (під Linux):
$ VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sda
Вам потрібно бути в disk
групі, щоб змусити її працювати. Потім додайте цей vmdk до віртуальної машини як вторинний жорсткий диск, а потім використовуйте Live Linux ISO до dd
розділу.
Виправлення завантажувального сектору розділу NTFS
Це хакітська частина.
Ми майже готові, але Windows XP не завантажиться, тому що нам потрібно встановити кількість прихованих секторів файлової системи при зміщенні 0x1C
. В основному це декілька секторів до розділу NTFS. Ми можемо отримати це число з fdisk -ul
команди. start
Поле вихідних станів , який сектор даний розділ починається, яка в основному число секторів до розділу. Тому дістаньте число звідти, перетворіть його в шістнадцятковий, використовуючи, наприклад, gcalctool.
Відкрийте розділ hexedit
таким чином:
# hexedit /dev/sda4
Потім запишіть кількість прихованих секторів у невеликому ендіантному порядку при 1C
зміщенні. Маленький ендієць означає: 0xABCDEFGH
буде GH EF CD AB
. Якщо шістнадцяткове число коротше, ніж 8 цифр, передуйте його нулю.
Закінчивши, збережіть його та вийдіть (Ctrl + X).
Налаштування GRUB
Ви повинні сказати GRUB, щоб він безпосередньо завантажував цей розділ, для GRUB додайте такий запис у меню:
title Microsoft Windows XP Professional
root (hd0,3)
savedefault
makeactive
chainloader +1
Де (hdX, Y)
ідентифікує розділ. X - 0 для жорсткого диска за замовчуванням, 1 для /dev/sda
, 2 для /dev/sdb
і т.д. Y - номер розділу. 0 за /dev/sda1
, 1 за /dev/sda2
тощо.
Це має бути подібним і для GRUB2, але для записів меню використовується трохи інший синтаксис.
Заключні штрихи
Новий розділ NTFS готовий до завантаження. Але вам все-таки потрібно трохи зламати, щоб дістатися до робочого столу Windows XP. Для інших систем можуть знадобитися різні хаки. Спочатку boot.ini потрібно виправити.
[boot loader]
timeout=1
default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
Відповідно встановіть номер розділу. Я встановив його на / dev / sda4. Отже номер розділу повинен бути 3.
Можливо, вам доведеться виправити запис реєстру MountedDevices в реєстрі, якщо Windows застигне прямо перед екраном входу.
Реєстр є у <path to windows>/system32/config/system
вас, ви можете переглянути його chntpw
. Це може бути проблемою, якщо лист вашого системного накопичувача не є C. Оскільки chntpw
можливості запису в реєстр досить обмежені, вам потрібно виправити резервний копію та використати гексидатор, як-от ghex2. У моєму випадку вам потрібно знайти \DosDevices\C:
та замінити C іншою літерою диска F
.
Після цього ви зможете дістатись до робочого столу, тепер вам потрібно полювати на всіх драйверів, але це виходить за рамки цього підручника.
Джерела
Переміщення Windows XP на інший розділ
Встановіть VDI під Linux