miércoles, 24 de abril de 2013

Grub2 cargar Windows XP en el segundo Disco Duro

Hoy traigo algo que muchas veces necesitamos en el trabajo, y es como casi siempre trabajamos con clonaciones y demás, si tenemos 2 disco duros y en uno tenemos la imagen de un Linex (debian) ( que se lo hemos añadido en un disco duro ide viejo) y el otro el Windows XP (este es el original que es sata), por lo que tenemos 2 discos, uno IDE y otro SATA, para no estropear el arranque del Windows que tenemos en la bios le he dicho que arranque primero el Linux (disco IDE) y luego el Windows (disco SATA) el grub lo he instalado en el disco IDE.

Por lo que tenemos en el hd0 (ide) el linux y tenemos el grub instalado que sera el sda y en el hd1(sata) el windows que es el sdb.



Ahora arrancamos el linux.

1.- Veremos en el fichero /boot/grub/device.map tenemos puesto los disco duro de la siguiente forma, lo vemos por la marca y el modelo del sico
(hd0)   /dev/disk/by-id/ata-IC35L040AVVN07-0_VNP214B2SZEKEE DISCO IDE
(hd1) /dev/disk/by-id/ata-MAXTOR_STM3160812AS_9LS3BCFC Disco  SATA
o también lo podemos ver de la siguiente forma
(hd0)    /dev/sda
(hd1)   /dev/sdb

2.- Tendremos que crear el fichero que es habitual para la carga de otro sistema en el grub, que lo solemos llamar 11_windows en el directorio /etc/grub.d/

#!/bin/sh -e
cat << EOF
menuentry "Windows XP" {
     set root=(hd1,1)
     drivemap -s hd0 hd1
     chainloader (hd1,1)+1
}
EOF 

Le damos permiso de ejecucion

chmod +x /etc/grub.d/11_windows

y ahora actualizamos el grub

update-grub2

El problema que tenemos es que por la filosofía de Windows necesita que este instalado en el primer disco duro y en la primera partición, y como le hemos dichos en la bios que ahora el disco duro de windows es el segundo disco duro (sdb) tenemos que indicarle en el grub que el el windows esta en la primera para ello lo hacemos con el comando drivemap y diciendole que el hd0 ahora es el hd

Si queremos que el windows sea el primero en arrancar y añadir un poco más de tiempo en la pantalla del grub modificaremos el fichero /etc/default/grub este es el que maneja los parametros del grub.
En las primeras lineas tenemos lo necesario
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
# linexedu background
GRUB_BACKGROUND=/usr/share/backgrounds/grub.png
Cambiamos el GRUB_DEFAULT por la posición donde se encuentre nuestro windows en el menu del grub empezando a contar desde cero (en mi caso es el 4) y añadimos más tiempo (segundos) en el  GRUB_TIMEOUT, por lo que quedara de la siguiente forma:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=4
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

Ejecutamos ahora otra vez comando de : update-grub2

No hay comentarios:

Publicar un comentario