¿Cómo desinstalo GRUB?

18

Un disco duro que utilizo solo para el almacenamiento de datos todavía tiene GRUB de instalaciones pasadas de Ubuntu.

¿Cómo puedo eliminar GRUB de él sin dañar el resto de los datos de la unidad?

Fondo

De vez en cuando muevo la unidad de datos entre computadoras con varias configuraciones de orden de arranque, así que me gustaría que sea no arrancable para evitar tener que acomodarlo en la configuración de BIOS de cada computadora.

Cuando enciendo una computadora cuando solo está conectada la unidad de datos, aparece lo siguiente:

error: no such device: fdf38dd4-9e9d-479d-b830-2a6989958503.
grub rescue> 

Puedo confirmar a partir de copias de seguridad antiguas de /etc/fstab que este fue el UUID de una partición raíz que he formateado recientemente y que ya no existe Aquí está la tabla de particiones del disco de datos y raw registro de inicio maestro .

Tenga en cuenta que no estoy interesado en soluciones alternativas que no responden a mi pregunta principal. Puedo pensar en varias formas de solucionar este problema, pero me molesta por principio que no sé cómo resolverlo directamente. Cada procedimiento de instalación debe tener un procedimiento de desinstalación de contraparte.

    
pregunta ændrük 04.05.2012 - 01:58

6 respuestas

24

Puede hacer que el dispositivo no sea de arranque simplemente haciendo que los primeros bytes del disco 0x00.

Normalmente (y esto es cierto para grub, grub2 y ntldr iirc), el primer byte de tu disco va a ser una instrucción x86 jmp. Esto ocurre incluso antes de la etiqueta de disco, porque al pasar la ejecución al dispositivo para arrancarlo, simplemente establece que la CPU aspire la información del dispositivo como código. Si tiene un código no válido, activa una interrupción y el BIOS maneja la excepción y va al siguiente dispositivo de arranque.

Por ejemplo, el comienzo de mi disco comienza con:

00000000  eb 63 90 d0 bc 00 7c fb  50 07 50 1f fc be 1b 7c  |.c....|.P.P....||

La primera parte es eb 63 que es Saltar para compensar 0x63 desde la IP actual (por lo que a 0x65).

00000060  00 00 00 00 ff fa 90 90  f6 c2 80 74 05 f6 c2 70  |...........t...p|
00000070  74 02 b2 80 ea 79 7c 00  00 31 c0 8e d8 8e d0 bc  |t....y|..1......|

La ejecución continúa desde aquí.

El final del sector se ve así:

000001b0  cd 10 ac 3c 00 75 f4 c3  ed db 96 d6 00 00 80 01  |...<.u..........|
000001c0  01 00 83 fe ff ff 3f 00  00 00 c1 07 a6 0e 00 fe  |......?.........|
000001d0  ff ff 83 fe ff ff 00 60  00 11 00 00 38 29 00 fe  |.......'....8)..|
000001e0  ff ff 82 fe ff ff 00 08  a6 0e 00 58 5a 02 00 00  |...........XZ...|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|

Si su disco está formateado como una tabla de partición MBR, solo necesita dos cosas para estar presente, la tabla de particiones que está en el desplazamiento 0x1be y la firma MBR, 55aa que se encuentra al final del sector en offset 0x1fe . 0x1be es decimal 446.

Lo siguiente (por supuesto) hará que el dispositivo no se pueda iniciar. Pero esto es lo que quieres. Si no desea que su dispositivo no pueda ser arrancado, no haga esto, mmm-kay? Supongo que su dispositivo es /dev/sdz , simplemente porque no muchas personas tienen /dev/sdz , y esto reduce el riesgo de que un novato idiota copie a ciegas los comandos de pegado.

Primero, copie el MBR en un archivo para una copia de seguridad.

sudo dd if=/dev/sdz of=/some/where/safe/preferably/not/on/dev/sdz/backup.mbr bs=512 count=1

Luego, haga una copia de ese archivo:

cp backup.mbr backup.mbr.test

A continuación, tenemos que crear un dispositivo de retroalimentación (para que los contenidos no se trunquen). Y aplicar los cambios en nuestro sector falso 0 como una prueba:

sudo losetup /dev/loop7 backup.mbr.test
sudo dd if=/dev/zero of=/dev/loop7 bs=446 count=1
sudo losetup -d /dev/loop7

hexdump del archivo y asegúrese de que toda la tabla de particiones esté intacta:

sudo hexdump -C backup.mbr.test

Deberías ver algo como:

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 80 01  |................|
000001c0  01 00 83 fe ff ff 3f 00  00 00 c1 07 a6 0e 00 fe  |......?.........|
000001d0  ff ff 83 fe ff ff 00 60  00 11 00 00 38 29 00 fe  |.......'....8)..|
000001e0  ff ff 82 fe ff ff 00 08  a6 0e 00 58 5a 02 00 00  |...........XZ...|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200

Ahora, 0x1be es donde ve 80 en la salida hexadecimal, esto también puede ser 00 y seguir siendo válido. (Es el indicador "de arranque" en la tabla de particiones, puede dejarlo en blanco, porque la mayoría de los BIOS modernos lo ignoran por completo ...) El byte en 0x1bf aunque casi nunca será 0x00 (es más común 0x01 pero puede tomar otros valores) puede comparar esto con su backup.mbr para asegurarse de que no se cambie nada pasado 0x1be .

Una vez que esté satisfecho de haber aplicado el cambio correctamente, puede copiar directamente el archivo sobre la primera parte del disco. La razón por la que desea hacer el archivo en lugar de /dev/zero nuevamente es por seguridad contra errores tipográficos. Si accidentalmente omites count=1 , pasarás un mal momento, por lo que copiar un archivo nunca pasará más allá del EOF. Entonces es más seguro.

sudo dd if=backup.mbr.test of=/dev/sdz

El siguiente hexdump su disco para asegurarse de que los cambios tomaron como se esperaba.

hexdump -C /dev/sdz | head

Compare hasta 0x200 contra backup.mbr.test para asegurarse de que es lo que quiere.

Finalmente, si algo se estropea por alguna razón, simplemente copie la copia de seguridad del MBR en el disco a través de:

sudo dd if=backup.mbr of=/dev/sdz

Espero que esto ayude.

    
respondido por el OmnipotentEntity 26.07.2012 - 18:22
2

ADVERTENCIA: EXTREMADAMENTE PELIGROSO

Puede usar el comando dd desde el propio Linux (elimina la tabla de particiones):

 # dd if=/dev/null of=/dev/sdX bs=512 count=1

Simplemente elimine MBR, sin la tabla de particiones (vea el comentario a continuación):

# dd if=/dev/null of=/dev/sdX bs=446 count=1

Reemplaza /dev/hdX con el nombre real de tu dispositivo como /dev/hda . Use el comando fdisk -l para averiguar el nombre del dispositivo:

# fdisk -l

Fuente

  1. enlace
respondido por el Tachyons 04.05.2012 - 02:05
1

Mi experiencia con

sudo install-mbr -i n -p D -t 0 /dev/sda

es que desinstaló satisfactoriamente grub2 de /dev/sda (donde está instalado mi Windows 7), por lo que la primera parte de la pregunta "¿Cómo elimino grub de / dev / sda?" ha sido respondida.

Sin embargo, la segunda parte de la pregunta, que es "¿Cómo restauro el MBR de / dev / sda?" no se ha respondido porque el comando install-mbr no pudo restaurar el MBR. Como resultado, Windows no arranca más y el administrador de arranque de Windows informa un error sobre un MBR dañado y le pide al usuario que lo repare desde un CD de reparación de Windows.

    
respondido por el ubuntu-13.10 user 12.12.2013 - 07:14
1

Después de leer el artículo de Wikipedia sobre el tema, me gustaría proponer algunas soluciones adicionales:

  1. Cambiar el orden de arranque en el BIOS:)

  2. Lo mejor y más seguro: use fdisk para eliminar el indicador de "inicio" de cualquier partición en esa unidad. La mayoría de los MBR buscan una partición "de arranque" para cargar en cadena, así que esperaría que GRUB simplemente no haga nada si no hay tales particiones. No he probado, sin embargo.

    Si lo anterior no funciona, intente instalar un clon gratuito del código MBR estándar:

  3. Instala el paquete mbr y utiliza el comando install-mbr como este:

    sudo apt-get install mbr
    sudo install-mbr -i n -p D -t 0 /dev/sda
    

Créditos: CÓMO: recuperar el MBR de Windows utilizando el CD Ubuntu Live

Al leer el artículo de Wikipedia, tengo la impresión de que lo único que identifica al MBR es su firma que está al final del sector (bytes 510 y 511). Los primeros 446 bytes de MBR se supone que contienen instrucciones de la máquina. Se supone que el BIOS transfiere el control al gestor de arranque independientemente de los contenidos reales de los primeros 446 bytes, siempre que la firma MBR esté presente:

  

En computadoras IBM compatibles con PC, el firmware de arranque contenía   dentro del ROM BIOS carga y ejecuta el registro de inicio maestro. [14] ...   Por lo tanto, se espera que el comienzo del MBR contenga modo real   instrucciones del lenguaje de máquina. [14] El BIOS lee el MBR de la   dispositivo de almacenamiento en la memoria física, y luego dirige el   microprocesador al inicio del código de arranque.

     

Debido al tamaño restringido de la sección de código del MBR, por lo general   contiene solo un pequeño programa que copia código adicional (como   gestor de arranque) desde el dispositivo de almacenamiento a la memoria. El control es entonces   pasado a este código, que es responsable de cargar el real   sistema operativo.

     

...

     

La secuencia de arranque en el BIOS cargará el primer MBR válido que   encuentra en la memoria física de la computadora en la dirección 0x7C00. los   La última instrucción ejecutada en el código del BIOS será un "salto" a ese   dirección, para dirigir la ejecución al principio de la copia MBR. los   la validación primaria para la mayoría de las BIOS es la firma 0xAA55 en el extremo,   aunque un implementador de BIOS puede elegir incluir otros controles, tales   verificar que el MBR contiene una tabla de particiones válida sin   entradas que se refieren a sectores más allá de la capacidad informada del disco.

Por lo que entiendo que se supone que MBR siempre debe contener un gestor de arranque, y poner a cero los primeros 446 bytes no impedirá que el BIOS intente arrancar desde el disco, pero es probable que lo haga la computadora se cuelga mientras intentas ejecutar un código inválido.

ACTUALIZACIÓN: Además, este artículo sugiere que para que el disco se vea "no "arrancable" para BIOS, debe editar realmente la firma MBR en el y del sector (usando cualquier editor de disco). No estoy seguro si va a afectar al sistema operativo que ve la tabla de particiones en el disco ... pero al menos siempre puedes modificar esos bytes ...

    
respondido por el Sergey 04.05.2012 - 04:51
0

Otra solución más simple.

En mi caso tenía Debian Linux pero quería usar Mandriva, también funcionará para otros

Apague su pc, luego retire el disco que se inicia y no desea arrancar (que tiene grub)

Simplemente coloque un usb de arranque hecho de la mandriva iso u otra variante que desee instalar. Hay herramientas para hacer que las memorias USB de arranque de los archivos ISO utilicen Google. (O puede usar un instalador quemado desde CD rom)

Ahora, la mayoría de los instaladores de Linux le dan la opción de qué hacer, probar y usar para la evaluación o Linux portátil o ejecutar la instalación para instalarlo. En este punto, solo esperamos (mueva el cursor hacia abajo para que la pantalla espere pero no presione enter o haga clic con el mouse).

Solo recuerde en este punto que su USB / o / CDRom ha comenzado y se está ejecutando. ahora es el momento de volver a conectar el disco duro que hemos eliminado temporalmente espere un minuto (algunas bios requieren una pequeña espera un minuto es más que suficiente)

Continúe con el proceso de configuración, ya que la mayoría de los instaladores contienen herramientas de particiones, puede hacer lo que quiera. bueno, es una solución simple, me deshice de una vieja configuración de Linux simplemente como principiante

    
respondido por el peter 11.10.2012 - 22:11
0

Vieja pregunta, pero como me sucedió ayer, lo resolví así: apagué la computadora, desconecté físicamente el disco duro incriminado, comencé nuevamente la computadora, luego

~ $ sudo update-grub

Hecho esto, apagué la computadora, volví a conectar el disco duro y mi antigua partición de Windows 7, que ya no existía desde hace 2 años, no apareció finalmente.

Entiendo que esta es una solución práctica, pero funciona. Algún día borraré ese disco duro por completo, y cualquier rastro restante de GRUB desaparecerá.

    
respondido por el ElStellino 18.06.2016 - 15:31

Lea otras preguntas en las etiquetas