miércoles, 3 de febrero de 2010


El primer articulo lo voy a dedicar a la eliminación de un gestor de arranque. Hace poco tiempo me tope con un equipo donde estaba instalado el gestor de arranque gag (argg) y queria eliminarlo para instalar el lilo. La verdad es que con reinstalar el lilo a través de un live cd seria suficiente (este tema ya le tratare en otro articulo), pero queria ver si se podia eliminar de otra manera, como el antiguo format mbr x). La solución pasa por utilizar el comando dd, o como lo llama mi gran amigo y mentor en linux, "la motosierra". La mbr es el sector 0 del disco duro, es un sector de 512 bytes donde se incluye el gestor de arranque y la tabla de particiones (¡ Todo lo que entra en un sector¡ un poco más y da para meter un windows 7). En realidad, el gestor de arranque se ubica en los primeros 446 bytes del sector, de manera que solo necesitamos borrar esa información para borrar el gestor. El gestor de arranque simplemente pasa el control a la partición activa, aunque existen gestores más elaborados que pasan el control a un programa instalado en otros sectores. Esto que parece tan facil, si se piensa bien no lo es tanto, ya que no es un fichero de ninguna partición lo que queremos borrar. Acceder para borrar una ubicación física del disco no seria posible si no fuese por el comando dd.
El comando dd realiza una copia exacta entre ficheros, pudiendo indicarle la longitud de la copia. Ok...¿y esto para que me sirve? A primera vista de poco, pero si tenemos en cuenta que en linux un disco duro se trata como un fichero de bloques la cosa cambia. La sintaxis de dd es la siguiente:
dd if=nombredelorigen of=nombredeldestino
¿sencillo no?. De manera que podriamos hacer lo siguiente suponiendo que nuestro disco es sda

dd if=/dev/zero of=/dev/sda

stop¡¡¡ sencillo si que es.. pero con este comando nos cargamos la mbr, con la tabla de particiones incluidas, y de paso escribimos todo el disco con ceros para no poder recuperar nada de información. Vamos, que hay que escribir con ceros un poquito del disco, no todo. Para borrar solo los primeros 446 haremos lo siguiente:

dd if=/dev/zero of=/dev/sda bs=1 count=446

bs indica el tamaño de bloque, en nuestro caso 1 byte
count indica la cantidad de bloques, en nuestro caso 446
Otra manera de conseguir lo mismo seria con bs=446 y count=1 , asi tambien borrariamos solamente los primeros 446 bytes del disco.
Con esto borramos el gestor de arranque dejando la tabla de particiones intactas. Bien, una vez hecho esto no podemos arrancar nuestro equipo desde el disco duro, pero mantenemos la tabla de particiones intacta. Ahora para arrancar tenemos dos opciones:
1º) Con el cd de instalación de Windows dar a la opción de reparar y ejecutar el comando fixmbr. Con esto reinstalamos el cargador normal de la mbr que arrancara desde la partición activa del disco duro.
2º) Instalar un gestor de arranque como lilo o grub que permita arrancar desde diferentes particiones diferentes sistemas operativos.

Total, que lo explicado aqui es una manera de cargarse el sector de arranque de la mbr para luego repararlo. Si, es una tonteria, pero ayuda a entender mejor como funciona el arranque.

1 comentarios:

Nesto Rock dijo...

Muy buena explicación, hoy se algo más ;) ... muchas gracias.