Я восстановил Windows7 с аварийного DVD, который пришел вместе с моим ноутбуком. Восстановление перераспределяет диск SSD по умолчанию, но я бы хотел это изменить. Точнее, после завершения восстановления разделы выглядят следующим образом:
root@ubuntu:~# fdisk -l /dev/sda
Device Boot Start End Blocks Id System
/dev/sda1 2048 419432447 209715200 27 Hidden NTFS WinRE
/dev/sda2 * 419432448 419637247 102400 7 HPFS/NTFS/exFAT
/dev/sda3 419637248 839067647 209715200 7 HPFS/NTFS/exFAT
Комментарии:
/dev/sda2
- это небольшой раздел сbootmgr
иBoot
.- Windows7 установлена в
/dev/sda3
, в которой нетbootmgr
в этом разделе.
Теперь я хотел бы скопировать Windows7 из /dev/sda3
в /dev/sda1
и сделать его загрузочным. Поскольку разделы имеют одинаковый размер, это очень просто в Linux:
root@ubuntu:~# dd if=/dev/sda3 of=/dev/sda1 bs=4096
После этого я изменил тип раздела:
Device Boot Start End Blocks Id System
/dev/sda1 2048 419432447 209715200 7 HPFS/NTFS/exFAT
/dev/sda2 * 419432448 419637247 102400 7 HPFS/NTFS/exFAT
/dev/sda3 419637248 839067647 209715200 7 HPFS/NTFS/exFAT
Затем я перезагрузился. Windows7 загружается из /dev/sda3
(который становится C:
:), а /dev/sda1
становится D:
Теперь я делаю загрузочную копию Windows7 (см. Переключение моего загрузочного диска Windows 7 с D на C с помощью BCDBoot и возможно ли скопировать все файлы Windows 7 с одного жесткого диска на другой?):
C:\> bcdboot d:\windows /s d:
Boot files successfully created.
C:\> bootsect /nt60 d: /mbr
Target volumes will be updated with BOOTMGR compatible bootcode.
F: (\\?\Volume{b6e65e71-6179-11e5-82c7-806e6f6e6963})
Successfully updated NTFS filesystem bootcode.
\??\PhysicalDrive0
Successfully updated disk bootcode.
Bootcode was successfully updated on all targeted volumes.
Двойная проверка:
C:\> bcdedit
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume2
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {current}
resumeobject {0b9ac05e-6182-11e5-b742-8dbb81fd6d74}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
Windows Boot Loader
-------------------
identifier {current}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7
locale en-US
inherit {bootloadersettings}
recoverysequence {0b9ac060-6182-11e5-b742-8dbb81fd6d74}
recoveryenabled Yes
osdevice partition=C:
systemroot \Windows
resumeobject {0b9ac05e-6182-11e5-b742-8dbb81fd6d74}
nx OptIn
C:\> bcdedit /store D:\Boot\BCD
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=D:
description Windows Boot Manager
locale en-us
inherit {globalsettings}
default {default}
resumeobject {f38db522-680d-11e5-829a-18f46ae2d7b0}
displayorder {default}
toolsdisplayorder {memdiag}
timeout 30
Windows Boot Loader
-------------------
identifier {default}
device partition=D:
path \windows\system32\winload.exe
description Windows 7
locale en-us
inherit {bootloadersettings}
osdevice partition=D:
systemroot \windows
resumeobject {f38db522-680d-11e5-829a-18f46ae2d7b0}
nx OptIn
detecthal Yes
После того, как я загрузил Linux и пометил раздел как загрузочный (это можно сделать в Windows, но я использую знакомые мне инструменты):
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 419432447 209715200 7 HPFS/NTFS/exFAT
/dev/sda2 419432448 419637247 102400 7 HPFS/NTFS/exFAT
/dev/sda3 419637248 839067647 209715200 27 Hidden NTFS WinRE
Содержимое /dev/sda1
следующее (двойная проверка):
root@ubuntu:~# ls -l /mnt/sda1
total 10749077
drwxrwxrwx 1 root root 4096 Sep 25 06:11 Boot
-rwxrwxrwx 1 root root 383786 Nov 20 2010 bootmgr
drwxrwxrwx 1 root root 0 Sep 23 21:50 Config.Msi
lrwxrwxrwx 2 root root 60 Jul 14 2009 Documents and Settings -> /mnt/sda1/Users
-rwxrwxrwx 1 root root 4717092864 Sep 23 21:50 hiberfil.sys
-rwxrwxrwx 1 root root 6289461248 Sep 23 21:50 pagefile.sys
drwxrwxrwx 1 root root 0 Jul 14 2009 PerfLogs
drwxrwxrwx 1 root root 4096 Sep 23 20:35 ProgramData
drwxrwxrwx 1 root root 8192 Sep 23 21:26 Program Files
drwxrwxrwx 1 root root 12288 Sep 23 21:12 Program Files (x86)
drwxrwxrwx 1 root root 4096 Sep 22 22:00 $Recycle.Bin
drwxrwxrwx 1 root root 20480 Sep 23 21:50 System Volume Information
drwxrwxrwx 1 root root 4096 Sep 23 21:05 Temp
drwxrwxrwx 1 root root 0 Sep 23 21:50 Update
drwxrwxrwx 1 root root 4096 Sep 22 21:58 Users
-rwxrwxrwx 1 root root 4112 Jul 19 2011 version
drwxrwxrwx 1 root root 24576 Sep 23 21:02 Windows
Выглядит хорошо. К сожалению, при загрузке у меня Bootmgr is missing. Press Ctrl+Alt+Del to restart
.
Я установил Grub в /dev/sda1
(перезаписывает загрузчик по умолчанию):
grub-install --force --no-floppy --boot-directory=/mnt/sda1/Boot /dev/sda1
со следующим /mnt/sda1/Boot/grub/grub.cfg
:
menuentry "Windows 7" {
insmod ntfs
insmod ntldr
ntldr (hd0,msdos1)/bootmgr
}
Grub правильно передал управление bootmgr
, но он постоянно загружается из /dev/sda3
. Когда я удаляю раздел /dev/sda3
, отображается начальный экран загрузки, но потом ничего не происходит (загрузка просто зависает).
Затем я установил ntldr
в /dev/sda1
(скопировал NTDETECT.COM
, NTLDR
из 64ntfile.zip) с "родным" загрузочным сектором:
C:\> bootsect /nt52 d:
и этот boot.ini
:
[Boot Loader]
timeout=30
Default=multi(0)disk(0)rdisk(0)partition(1)\Windows
[Operating Systems]
multi(0)disk(0)rdisk(0)partition(1)\Windows="Windows 7 (boot.ini)" /fastdetect
После загрузки отображается сообщение "Произошла ошибка чтения диска". Наверняка SSD-накопитель вряд ли выйдет из строя таким образом, поэтому я думаю, что проблема в загрузочном байт-коде / логике, которая не может правильно обрабатывать адресацию / расположение диска. Я установил Grub (как указано выше) с этим конфигом:
menuentry "Windows 7" {
insmod ntfs
insmod ntldr
ntldr (hd0,msdos1)/ntldr
}
и тогда я мог видеть мое меню относительно boot.ini
выше. Когда я продолжаю, компьютер перезагружается без каких-либо сообщений об ошибках (поэтому я попал в цикл).
Как решить проблему? Любое решение для загрузки Windows с 1-го раздела приветствуется.
Другие посты по теме, которые я осмотрел:
- Какая утилита может переместить мой загрузочный раздел Windows на другой жесткий диск?
- Создайте загрузочную BCD с нуля с помощью Bcdedit
- Должны ли параметры устройства и osdevice быть разделом boot или windows?
- Исправление Windows7 Bootmgr
- Могу ли я исправить ошибку 0xc0000225 без переустановки Windows?
PS: Никакие другие накопители или USB-накопители не подключены к ноутбуку при тестировании.