3

У меня есть ноутбук с двойной загрузкой Windows 7 и Ubuntu, но он больше не загружается в Windows. Я уверен, что загрузочный сектор раздела Windows (начало раздела, а не MBR!) разорено. Как мне восстановить его из Linux?

(В ноутбуке нет привода DVD, и я бы предпочел не устанавливать USB для установки Windows, потому что в прошлый раз мне потребовалось несколько попыток. Кроме того, установщик Windows будет перезаписывать не только загрузочный сектор, но и MBR, убивая GRUB, поэтому мне придется впоследствии исправить Ubuntu.)


Подробности:

Структура разделов выглядит следующим образом:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              54   151129367    75564657    5  Extended
/dev/sda2       151129368   302247179    75558906    7  HPFS/NTFS/exFAT
/dev/sda3   *   302247180   312497351     5125086    c  W95 FAT32 (LBA)
/dev/sda4       312497352   312578243       40446   ef  EFI (FAT-12/16/32)
/dev/sda5             108     4194827     2097360   82  Linux swap / Solaris
/dev/sda6         4194882   151129367    73467243   83  Linux

sda1 - это расширенный раздел, содержащий Linux (sda4, sda5 и sda6). sda3 - это раздел восстановления (похоже, модифицированная Windows XP). sda2 - это раздел Windows 7 (NTFS). Я могу смонтировать его из Linux, и все, кажется, там.

Grub не может загрузиться в Windows 7. Меню загрузки содержит запись под названием “Windows” (обратите внимание на забавные кавычки), которая пытается загрузить (hd0,1) = sda1, конечно, безуспешно. Я могу вручную загрузить sda3, но в этом нет смысла.

Когда я пытаюсь загрузить sda2 (Windows 7), я получаю сообщение "NTLDR отсутствует". Это странно, потому что Windows 7 не использует NTLDR, но BOOTMGR. Я не помню, как это получилось (это случилось некоторое время назад), но я думаю, что какой-то инструмент восстановления, который я пробовал, установил неправильный загрузочный сектор в этом разделе. Вот как выглядит начало раздела:

$ sudo dd if=/dev/sda2 bs=512 count=1 | hd
00000000  eb 52 90 4e 54 46 53 20  20 20 20 00 02 08 00 00  |.R.NTFS    .....|
00000010  00 00 00 00 00 f8 00 00  36 00 d6 00 18 0d 02 09  |........6.......|
00000020  00 00 00 00 80 00 80 00  f3 df 01 09 00 00 00 00  |................|
[...]
00000170  b4 01 8b f0 ac 3c 00 74  09 b4 0e bb 07 00 cd 10  |.....<.t........|
00000180  eb f2 c3 0d 0a 41 20 64  69 73 6b 20 72 65 61 64  |.....A disk read|
00000190  20 65 72 72 6f 72 20 6f  63 63 75 72 72 65 64 00  | error occurred.|
000001a0  0d 0a 4e 54 4c 44 52 20  69 73 20 6d 69 73 73 69  |..NTLDR is missi|
000001b0  6e 67 00 0d 0a 4e 54 4c  44 52 20 69 73 20 63 6f  |ng...NTLDR is co|
[...]

Я должен сказать, что я пробовал update-grub и boot-repair безрезультатно. Grub установлен и работает правильно, что не так - загрузчик Windows, загружаемый Grub по цепочке. Что мне нужно, так это что-то вроде bootsect /nt60 C: для Linux или любой другой способ получить чистую копию загрузчика на моем разделе. Есть идеи?

1 ответ1

1

Забавно, как я так долго пробовал, и сразу после публикации здесь нашел решение. Я наткнулся на флешку Windows 7 Recovery USB.

  1. Загрузиться с флешки. Мне пришлось сделать холодную загрузку с флешкой в USB-порту, иначе ПК не узнал бы это. Затем я должен был сказать grub для загрузки с (hd1) .

  2. Диск восстановления может предложить починить вещи, но это не сработало для меня.

  3. Запустите командную строку и выполните следующие действия:

    Скопируйте загрузчик поверх. X: диск восстановления, C: раздел на ноутбуке.

    copy x:\windows\boot\pcat\bootmgr c:\bootmgr
    attrib +s +h c:\bootmgr
    

    Если это не сработает, вам, возможно, придется сначала удалить bootmgr:

    c:
    attrib -s -h bootmgr
    del bootmgr
    
  4. Правильно установите загрузчик. Из X:\windows\system32 вызов:

    bootsect /nt60 c:
    bootrec /fixboot
    

    Вторая строка для хорошей меры, не уверен, что это необходимо. Не делайте bootrect /fixmbr , так как это перезапишет GRUB.

Теперь это может работать, но если это не так, вам придется заново создать данные меню загрузки (BCD). Из подсказки восстановления:

attrib -s -h C:\boot
ren C:\boot C:\bootbak
bootrec /rebuildbcd

Теперь перезагрузитесь. Скажите grub загрузиться с (hd0,2) или любого другого раздела Windows, и он должен работать. После grub-update Windows 7 снова должна быть в меню.

Ресурсы:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .