Hola.
Mi caso es el siguiente: tenía instalados windows7 y ubuntu 10.4.
El otro día tuve que instalar windows xp, y lo que ocurre al hacer esto es que el grub se pierde. Lo recuperé con el LiveCD de ubuntu. Hasta aquí todo bien.
Al hacer
sudo update-grub2 debería detectar todos los sistemas operativos pero no lo hace. Solo me detectaba el propio ubuntu y el windows xp.
El reparto del disco duro es el siguiente:
Código:
Disco /dev/sda: 320.1 GB, 320072933376 bytes
255 cabezas, 63 sectores/pista, 38913 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Tamaño de sector (lógico / físico): 512 bytes / 512 bytes
Tamaño E/S (mínimo/óptimo): 512 bytes / 512 bytes
Identificador de disco: 0x05750575
Dispositivo Inicio Comienzo Fin Bloques Id Sistema
/dev/sda1 * 1 10199 81923436 7 HPFS/NTFS
/dev/sda2 10200 38912 230637110 f W95 Ext'd (LBA)
/dev/sda5 10200 11620 11414119+ 83 Linux
/dev/sda6 11621 11754 1076323+ 82 Linux swap / Solaris
/dev/sda7 11755 16225 35913276 7 HPFS/NTFS
/dev/sda8 16226 38912 182233296 7 HPFS/NTFS
teniendo en sda1 windows7, en sda5 ubuntu10.4, en sda7 windowsXP y sda8 es una partición para datos.
Al inciar el PC aparece esto:
Código:
Ubuntu, con Linux 2.6.32-27-generic
Ubuntu, con Linux 2.6.32-25-generic
Ubuntu, con Linux 2.6.32-21-generic
Windows 7 (loader) (on /dev/sda1)
y si seleccionabamos la entrada de windows7 iniciaba el windows xp.
Si lo hacíamos con el Super Grub Disk hacía lo mismo.
El archivo grub.cfg que genera es este:
Código:
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
set saved_entry=${prev_saved_entry}
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z ${boot_once} ]; then
saved_entry=${chosen}
save_env saved_entry
fi
}
function recordfail {
set recordfail=1
if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi
}
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set 43feb22b-aa14-4693-9cd3-7edd8a687ff4
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=1024x768
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don't
# understand terminal_output
terminal gfxterm
fi
fi
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set 43feb22b-aa14-4693-9cd3-7edd8a687ff4
set locale_dir=($root)/boot/grub/locale
set lang=es
insmod gettext
if [ ${recordfail} = 1 ]; then
set timeout=-1
else
set timeout=6
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Ubuntu, con Linux 2.6.32-27-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set 43feb22b-aa14-4693-9cd3-7edd8a687ff4
linux /boot/vmlinuz-2.6.32-27-generic root=UUID=43feb22b-aa14-4693-9cd3-7edd8a687ff4 ro splash quiet vga=773 quiet splash
initrd /boot/initrd.img-2.6.32-27-generic
}
menuentry 'Ubuntu, con Linux 2.6.32-25-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set 43feb22b-aa14-4693-9cd3-7edd8a687ff4
linux /boot/vmlinuz-2.6.32-25-generic root=UUID=43feb22b-aa14-4693-9cd3-7edd8a687ff4 ro splash quiet vga=773 quiet splash
initrd /boot/initrd.img-2.6.32-25-generic
}
menuentry 'Ubuntu, con Linux 2.6.32-21-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set 43feb22b-aa14-4693-9cd3-7edd8a687ff4
linux /boot/vmlinuz-2.6.32-21-generic root=UUID=43feb22b-aa14-4693-9cd3-7edd8a687ff4 ro splash quiet vga=773 quiet splash
initrd /boot/initrd.img-2.6.32-21-generic
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows 7 (loader) (on /dev/sda1)" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set 04a4f853a4f84926
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
Como se puede ver, en root='(hd0,1)' está el windows7 pero a min me iniciaba windows xp.
Recuperé el inicio de windows7 con un CD de recuperación, y ahora en vez de iniciar el windowsxp inicia el windows7, como debería ser desde el principio. Pero ahora el problema es con el windowsxp.
He visto por aí que se puede modificar el 40_custom pero no se como hacerlo. He probado varias formas pero no me funcionan.
Yo lo edité de la siguiente forma:
Código:
menuentry "Windows XP Professional" {
insmod ntfs
set root=(hd0,7)
search --no-flopy --fs-uuid --set ea20306c2030423d
chainloader +1
}
pero no funciona. Al seleccionar la entrada del windowsxp queda un caracter "_" parpadeando.
Si alguien me pudiese dar la solución a esto le estaría muy agradecido :)
Gracias