Можно ли исправить ошибку 0xc0000225 без переустановки Windows?

16

У меня есть система с двойной загрузкой Gentoo Linux и Windows 7 с использованием GRUB2. На компьютере установлено четыре диска, а Windows установлена ​​на третий (последний) раздел диска № 2. Расположение дисков выглядит следующим образом:

|boot|-----------------home-----------------|-------------windows-------------|

( bootи homeэто разделы Linux) Это странная установка, но она всегда работала, пока я не решил сжать раздел Windows с помощью Gparted. Новый макет:

|boot|-----------------------home-----------------------|-------windows-------|

После внесения этих изменений в раздел, когда я выбираю опцию Windows в GRUB2 и она передает управление загрузчику Windows, я получаю сообщение об ошибке:

Диспетчер загрузки  

Windows Не удалось запустить Windows. Причиной может быть недавнее изменение оборудования или программного обеспечения. Решить проблему:   1. Вставьте установочный диск Windows и перезагрузите компьютер.   2. Выберите настройки языка и нажмите «Далее».   3. Нажмите «восстановить компьютер». Если у вас нет этого диска, обратитесь к системному администратору или компьютеру производитель за помощь.   Статус: 0xc0000225   Информация: Не удалось выбрать загрузку, поскольку требуемое устройство недоступно.

Я не особенно удивлен, что это происходит, но мне интересно, смогу ли я это исправить без переустановки Windows.

Я попытался загрузить компьютер с установочного DVD-диска Windows (в частности, DVD-диска обновления Windows 7). После того, как я выбрал язык и клавиатуру и нажал «Восстановить этот компьютер», экран «Параметры восстановления системы» не обнаружил мой раздел Windows . Я могу в любом случае нажать «Далее», а затем использовать Восстановление при загрузке, которое не может решить проблему , или попробовать инструменты командной строки, а именно bootrec(предложенные несколькими веб-сайтами) sfc, и chkdsk. Никто из них не имел значения; Я все еще получаю то же сообщение об ошибке. (См. Ниже для подробного вывода.)

Также, как предлагалось в аналогичных вопросах, я попытался использовать функциональность «Rebuild BS» (перестроить загрузочный сектор) в TestDisk , работающем под Linux и действующем в разделе Windows. Это также не изменило ошибку, которую я получаю.

Я не видел каких-либо признаков повреждения данных ни в одном из разделов, и накопители не пострадали от физического повреждения, поэтому вполне вероятно, что причиной этой ошибки является изменение структуры разделов. Я полагаю, что Windows должна иметь начальный сектор и / или размер раздела, хранящиеся где-то в своей файловой системе (реестре?), Предполагая, что в принципе это можно исправить, переместив пару байт в файл где-нибудь. Но какой файл? Или есть что-то более сложное?

Если это поможет, вот раздел конфигурации GRUB2, соответствующий Windows:

menuentry 'Windows 7 (loader) (on /dev/sdb3)' --class windows --class os $menuentry_id_option 'osprober-chain-1F9948EB30A986A0' {
        insmod part_msdos 
        insmod ntfs
        set root='hd1,msdos3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos3 --hint-efi=hd1,msdos3 --hint-baremetal=ahci1,msdos3  1F9948EB30A986A0
        else
          search --no-floppy --fs-uuid --set=root 1F9948EB30A986A0
        fi
        chainloader +1
}

Опять же, в идеале я ищу способ исправить это без переустановки Windows. Если это невозможно, то переустановка является приемлемым планом B, но я справлюсь сам.


Вот расшифровка моих сеансов командной строки при загрузке в среду восстановления с установочного DVD-диска Windows 7. Я удалил несколько пустых строк для удобства чтения. Следующее со всеми другими отключенными дисками :

>bootrec /fixmbr
The operation completed successfully,

>bootrec /fixboot
The volume does not contain a recognized file system.
Please make sure that all required file system drivers are loaded and that the volume is not corrupted.

>bootrec /scanos
Scanning all disks for Windows installations.
Please wait, since this may take a while...
Successfully scanned Windows installations.
Total identified Windows installations: 1
[1]  C:\Windows
The operation completed successfully.

>bootrec /rebuildbcd
Scanning all disks for Windows installations.
Please wait, since this may take a while...
Successfully scanned Windows installations.
Total identified Windows installations: 1
[1]  C:\Windows
Add installation to boot list? Yes(Y)/No(N)/All(A):y
The volume does not contain a recognized file system.
Please make sure that all required file system drivers are loaded and that the volume is not corrupted.

>sfc /verifyonly /offwindir=C:\Windows /offbootdir=C:\
Beginning system scan.  This process will take some time.
Windows Resource Protection did not find any integrity violations.

>chkdsk C: /F
The type of the file system is NTFS.
Volume label is windows.
CHKDSK is verifying files (stage 1 of 3)...
  313344 file records processed.
File verification completed.
  1684 large file records processed.
  0 bad file records processed.
  2 EA records processed.
  158 reparse records processed.
CHKDSK is verifying indexes (stage 2 of 3)...
  416370 index entries processed.
Index verification completed.
  0 unindexed files scanned.
  0 unindexed files recovered.
CHKDSK is verifying security descriptors (stage 3 of 3)...
  313344 file SDs/SIDs processed.
Security descriptor verification completed.
  51514 data files processed.
CHKDSK is verifying Usn journal...
  35406088 USN bytes processed.
Usn Journal verification completed.
Windows has checked the file system and found no problems.
 207510871 KB total disk space.
 104134880 KB in 251224 files.
    137304 KB in 51514 indexes.
         0 KB in bad sectors.
    423075 KB in use by the system.
     65536 KB occupied by the log file.
 102815612 KB available on disk.
      4096 bytes in each allocation unit.
  51877717 total allocation units on disk.
  25703903 allocation units available on disk.
Failed to transfer logged messages to the event log with status 50.

>diskpart
Microsoft DiskPart version 6.1.7600
Copyright (C) 1999-2008 Microsoft Corporation.
On computer: MININT-P92LVUL
DISKPART>list disk
  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          596 GB      0 B
DISKPART>select disk 0
Disk 0 is now the selected disk.
DISKPART>list part
  Partition ###  Type              Size     Offset 
  -------------  ----------------  -------  -------
  Partition 1    Primary             62 MB    31 KB
  Partition 2    Primary            398 GB    62 MB
  Partition 3    Primary            197 GB   398 GB

Когда я запускаю одни и те же команды со всеми подключенными дисками, вывод одинаков, за исключением того, что diskpartправильно отображаются все диски, и Dвместо этого указана буква диска для рассматриваемого раздела Windows C(поскольку у меня есть раздел данных NTFS на диске №1 ).

Я хотел бы отметить, что bootrec /fixmbrперезаписывает MBR диска # 2, заменяя MBR, помещенный туда GRUB2. Когда я пытаюсь загрузиться с этого диска, вместо сообщения 0xc0000225 я получаю сообщение «Отсутствует операционная система». Затем я могу загрузиться в Linux и использовать grub-installдля установки GRUB2 MBR, а затем выбор опции Windows в GRUB2 снова дает 0xc0000225.

Дэвид З
источник
Клонирование Windows часто требует манипуляций с разделами, которые нарушают процесс загрузки Windows - Windows не загружается, если раздел расположен на диске в другом месте, чем это было во время установки. Было бы неплохо использовать ваши выводы :)
Basilevs
@ ali786 хорошо, я бы лучше переустановил Windows, чем потратил 20 долларов на инструмент, чтобы решить эту проблему. Но в противном случае это был бы вариант. (Хотя я уже просматривал этот веб-сайт во время подготовки этого вопроса.)
David Z
Как насчет использования установочного диска и нажатия кнопки «Обновить сейчас» вместо выполнения чистой установки? Это своего рода переустановка, но вы сохраняете свои файлы.
Студия Rsya
1
@RsyaStudios Графический установщик не обнаруживает мою существующую установку Windows, поэтому я не думаю, что смогу это сделать.
Дэвид Z

Ответы:

11

В зависимости от используемого метода, некоторые вещи могут меняться в процессе:

Сведения о разделе : используйте activeв diskpart, чтобы снова активировать раздел.

Загрузочный сектор : инструмент bootsect можно использовать для восстановления загрузочного сектора. (например. bootsect /nt60 C:)

UUID раздела : изменяя положение и / или размер раздела, UUID изменяется; таким образом, недоступный UUID, сохраненный в BCD, не соответствует UUID вашего раздела. Чтобы это исправить, удалите и восстановите BCD следующим образом:

bcdedit /export C:\boot\bcd.backup
ren C:\boot\bcd C:\boot\bcd.old
bootrec /rebuildbcd
Тамара Вийсман
источник
Это оказалось правильной проблемой (и решением), но ваш совет по настройке раздела activeбыл реальным ключом. Мне нужно было сделать раздел активным, чтобы bootrecзнать, куда писать восстановленный BCD. Возможно, вы могли бы добавить это к ответу? (Мне не пришлось использовать bootsect, как оказалось.)
David Z
Обновил ответ, добавив мой комментарий; да, детали раздела были отсутствующим здесь.
Тамара Вийсман
"ren C: \ boot \ bcd C: \ boot \ bcd.old" дал мне ошибку. Должно быть "ren C: \ boot \ bcd bcd.old"
user4035
3

Возможно, вы вызвали проблему, слишком сильно уменьшив раздел Windows.

В Windows есть несколько неподвижных файлов, которые сторонний продукт может решить перенести. В будущем вы должны использовать Windows Disk Manager для изменения размера своих разделов, так как он не сломает диск. Также рекомендуется сначала отключить и очистить корзину, отключить файл подкачки и режим гибернации, чтобы свести к минимуму количество специальных файлов Windows, а также запустить дефрагментатор, который сжимает все файлы к началу диск.

Тем не менее, вы можете сделать Repair Install, чтобы исправить Windows 7 . Эта легкая форма установки исправит вашу установленную Windows 7 и сохранит ваши учетные записи, данные, программы и системные драйверы. В связанной статье подробно описан процесс со скриншотами. Возможно, вам придется иметь дело с некоторым разрушением загрузочного сектора GRUB2.

Если Repair Install не работает, то Gparted уничтожил ваш раздел Windows. Я надеюсь, что у вас есть резервная копия в этом случае, так как в противном случае вам, возможно, придется прибегнуть к утилитам восстановления данных .

harrymc
источник
Ах, это было намеренно. Я попытался сначала использовать Windows для изменения размера раздела, после очистки корзины и дефрагментации (хотя забыл отключить специальные файлы), но он не смог уменьшить размер раздела так, как мне было нужно. Я попробую ремонтную установку и посмотрю, работает ли она. Если нет, то я могу смонтировать раздел Windows из Linux и скопировать любые полезные файлы в другой раздел, поэтому мне не придется прибегать к восстановлению данных.
Дэвид Z
Глядя на это сейчас, я вижу, что ремонтную установку можно выполнить только из Windows, так что это мне не поможет.
Дэвид Z
Вы можете сделать это, используя Windows 7 SP1 DVD / USB. Подробности в статье выше.
harrymc
1
Нет не могу В статье явно (несколько раз) прямо сказано, что для выполнения ремонтной установки вам необходимо уже использовать Windows; кроме того, я попробовал это, и это не позволит мне использовать опцию обновления при загрузке с DVD.
Дэвид Z
Удастся ли Linux смонтировать диск, и можете ли вы увидеть файловую систему и особенно развернуть папку Windows и даже скопировать из нее файлы? Можете ли вы загрузить Windows DVD в DOS и посмотреть диск? Попробуйте также отключить любое возможное устройство от компьютера.
harrymc
1

У меня была похожая проблема (тот же код ошибки 0xc0000225) на моем компьютере, когда я пытался перейти на Windows 10

Проблема возникла из-за пустого раздела EFI, который все еще оставался на одном из моих дисков. При загрузке компьютер находит 2 раздела EFI: один из моей основной ОС, а другой соответствует старой ОС, которую я удалил несколько месяцев назад (я перешел со своего первого жесткого диска на SSD и отформатировал все)

Может быть, это тоже ваша проблема. У меня есть 2 решения для вас, надеюсь, это работает:

  • На панели управления управляйте компьютером, найдите бесполезный раздел EFI и удалите его.
  • Запустите ваш компьютер с поддержкой установки Windows (вы можете сделать это, загрузив мастер на веб-сайте Microsoft), запустите программу установки, дополнительные настройки, и, когда она представит вам все тома, найдите раздел EFI и удалите его.

Я также переустановил Windows, но если вы удалите плохой раздел EFI, этого будет достаточно

С тех пор больше никаких проблем при загрузке, мой компьютер мог установить W10 и т.д ...

Извините, если я не дам вам точные названия вещей, на которые вы должны нажать, моя ОС на французском языке ^^

Ziiik
источник
-1

Добавление ответа здесь, потому что это страница, которая показала для меня, и ответ, который мне был нужен:

0xc0000225 также может быть вызвано отключением поддержки ACPI APIC в BIOS (как указано в этом BIOS). Я отключил его при исправлении проблем с приостановкой в ​​Ubuntu, но Windows в этом случае требует, чтобы он был включен.

Это также вызвало сбой установки cd / usb, восстановление с той же ошибкой, поэтому с Windows ничего нельзя было сделать, пока она не была включена.

0xc0000225 произошел во время обновления Windows 10 Creators, но не загружался обратно в Windows до тех пор, пока не отключил настройку в BIOS, так что похоже, что это было вызвано обновлением, но на самом деле это не так! Tricky!

CmosBattery
источник