Eu tenho a seguinte configuração: Eu instalei o win7 ultimate em um dos disklabel (não gpt). Em algum espaço livre deixado no final do disco, eu instalei o Arch Linux. Eu instalei o grub no Arch Linux com estes comandos:
grub-install --target=i386-pc --disk-module=native /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
Eu tive que adicionar --disk-module=native
porque o Linux está no final de / sda, que é um grande disco (250G) e não seria carregado de outra forma.
O Linux inicializa corretamente, mas o Windows não inicializa e eu recebo o seguinte erro.
Windows has encountered a problem communicating with a device connected to your computer.
This error can be caused by unplugging a removable storage device such as an external USB drive while the device is in use, or by faulty hardware such as a hard drive or CD-ROM drive that is failing. Make sure any removable is properly connected and then restart your computer
If you continue to receive this error message, contact the hardware manufacturer
File: \Boot\BCD
Status: 0xc00000e9
Info: An expected I/O error has occurred
Para inicializar, eu tive que restaurar o MBR padrão do Win7 e instalar o grub em um pendrive USB separado para que eu ainda possa inicializar o Linux. Alguma sugestão sobre o que o erro de inicialização do Windows realmente significa e como evitá-lo? Eu não tinha nenhum dispositivo USB conectado quando tentei inicializar o Windows a partir do grub e recebi esse erro. Gostaria apenas de inicializar o Windows e o Linux com o mesmo MBR.
Claro que não é um disco corrompido, porque assim que eu corro ms-sys --mbr7 /dev/sda
para restaurar o Win MBR, o Windows ainda inicializa. É um disco de estado sólido novinho em folha e eu não tive nenhum outro problema com ele além de inicializar. BTW a opção de reparo de inicialização no disco de instalação do Windows não foi capaz de restaurar o Win MBR! Se não fosse pelo ms-sys linux eu teria que reinstalar todo o Windows apenas para restaurar um MBR ...
O Windows é um sistema ciumento para que, se você alterar o pequeno programa no MBR, ele não inicialize mais? Alguma solução alternativa?
PS: isso faz parte do meu grub.cfg que deve carregar o Windows. Foi gerado automaticamente pelo grub-mkconfig:
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 7 (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-1A30667530665831' {
insmod part_msdos
insmod ntfs
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 1A30667530665831
else
search --no-floppy --fs-uuid --set=root 1A30667530665831
fi
parttool ${root} hidden-
chainloader +1
}
### END /etc/grub.d/30_os-prober ###