Recuperei o Windows7 do DVD de resgate, que veio junto com o meu laptop. A recuperação re-particiona a unidade SSD quanto aos padrões de fábrica, mas eu gostaria de mudar isso. Mais exatamente, após a conclusão da recuperação, as partições são as seguintes:
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
Comentários:
-
/dev/sda2
é uma pequena partição que tem bootmgr
e Boot
.
- O Windows7 está instalado em
/dev/sda3
, que não tem bootmgr
nessa partição.
Agora, gostaria de copiar o Windows7 de /dev/sda3
para /dev/sda1
e torná-lo inicializável. Como as partições têm o mesmo tamanho, isso é muito simples no Linux:
root@ubuntu:~# dd if=/dev/sda3 of=/dev/sda1 bs=4096
Depois disso, mudei o tipo de partição:
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
Então eu reiniciei. O Windows7 é inicializado a partir de /dev/sda3
(que se torna C:
) e /dev/sda1
se torna D:
. Agora faço a cópia do Windows7 inicializável (consulte Trocando meu disco de inicialização do Windows 7 de D para C com BCDBoot e É possível copiar todos os arquivos do Windows 7 de um HD para outro? ):
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.
Doublecheck:
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
Depois de ter inicializado o Linux e marcado a partição como inicializável (é possível fazer isso no Windows, mas uso as ferramentas com as quais estou familiarizado):
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
O conteúdo de /dev/sda1
é o seguinte (doublecheck):
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
Parece bom. Infelizmente, quando eu inicio, obtenho Bootmgr is missing. Press Ctrl+Alt+Del to restart
.
Eu instalei o Grub para /dev/sda1
(sobrescreve o carregador de inicialização padrão):
grub-install --force --no-floppy --boot-directory=/mnt/sda1/Boot /dev/sda1
com o seguinte /mnt/sda1/Boot/grub/grub.cfg
:
menuentry "Windows 7" {
insmod ntfs
insmod ntldr
ntldr (hd0,msdos1)/bootmgr
}
O Grub passou o controle para bootmgr
corretamente, mas ele é inicializado persistentemente a partir de /dev/sda3
. Quando eu removo a partição /dev/sda3
, a tela inicial de inicialização é mostrado, mas nada acontece (a inicialização apenas trava).
Em seguida, instalei o ntldr
no /dev/sda1
(copiado NTDETECT.COM
, NTLDR
do 64ntfile.zip ) com setor de inicialização "nativo":
C:\> bootsect /nt52 d:
e este 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
Após a inicialização, é exibido "Ocorreu um erro de leitura do disco". Certamente, é improvável que a unidade SSD falhe desse modo, portanto, acho que o problema está no código de bytes de inicialização / lógica que não pode manipular corretamente o endereçamento / layout da unidade. Eu instalei o Grub (como acima) com esta configuração:
menuentry "Windows 7" {
insmod ntfs
insmod ntldr
ntldr (hd0,msdos1)/ntldr
}
e depois pude ver meu menu como boot.ini
acima. Quando eu continuo, o computador reinicia sem nenhuma mensagem de erro (então eu entrei no loop).
Como consertar o problema? Qualquer solução para inicializar o Windows a partir da primeira partição é bem-vinda.
Outros posts sobre o assunto que inspecionei:
P.S .: Nenhuma outra unidade ou dispositivo USB está conectado ao notebook durante o teste.