Un disco duro que uso solo para el almacenamiento de datos todavía tiene GRUB de instalaciones anteriores de Ubuntu.
¿Cómo puedo eliminar GRUB sin dañar el resto de los datos de la unidad?
Antecedentes
Ocasionalmente muevo la unidad de datos entre computadoras con varias configuraciones de orden de inicio, por lo que me gustaría que no se pueda iniciar para evitar tener que acomodarla en la configuración del BIOS de cada computadora.
Cuando enciendo una computadora mientras solo la unidad de datos está conectada, aparece lo siguiente:
error: no such device: fdf38dd4-9e9d-479d-b830-2a6989958503.
grub rescue>
Puedo confirmar por las copias de seguridad anteriores /etc/fstab
que este era el UUID de una partición raíz que reformateé recientemente y que ya no existe . Aquí está la tabla de partición de la unidad de datos y el registro de arranque maestro sin procesar .
Tenga en cuenta que no estoy interesado en soluciones alternativas que no respondan a mi pregunta principal. Se me ocurren 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 equivalente.
sfdisk -d /dev/sdb > sdb.out
.Respuestas:
Puede hacer que el dispositivo no sea de arranque simplemente haciendo que los primeros bytes del disco sean 0x00.
Típicamente (y esto es cierto tanto para grub, grub2 como ntldr iirc), el primer byte de su unidad será una instrucción jmp x86. Esto ocurre incluso antes de la etiqueta del disco, porque al pasar la ejecución al dispositivo para arrancarlo, simplemente configura la CPU para que absorba la información del dispositivo como código. Si tiene un código no válido, desencadena una interrupción y el BIOS maneja la excepción y pasa al siguiente dispositivo de arranque.
Por ejemplo, el comienzo de mi disco comienza con:
La primera parte es
eb 63
Saltar para compensar 0x63 de la IP actual (por lo tanto, a 0x65).La ejecución continúa desde aquí.
El final del sector se ve así:
Si su disco está formateado como una tabla de partición MBR, entonces solo necesita dos cosas para estar presente, la tabla de partición que está en el desplazamiento
0x1be
y la firma MBR,55aa
que ocurre al final del sector en el desplazamiento0x1fe
.0x1be
es decimal 446.Lo siguiente (por supuesto) hará que el dispositivo no se pueda arrancar. Pero esto es lo que quieres. Si no desea que su dispositivo no pueda iniciarse, no lo haga, ¿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 ciegamente los comandos de pegado.Primero, copie el MBR a un archivo para una copia de seguridad.
Luego, haga una copia de ese archivo:
A continuación, tenemos que crear un dispositivo de bucle invertido (para que los contenidos no se trunquen). Y aplicar los cambios en nuestro sector falso 0 como prueba:
hexdump
el archivo y asegúrese de que toda la tabla de particiones esté intacta:Deberías ver algo como:
Ahora,
0x1be
es donde se ve80
en la salida hexdumped, esto también puede ser00
y seguir siendo válido. (Es la bandera de "arranque" en la tabla de particiones, puede dejar solo, porque es completamente ignorada por la mayoría de los BIOS modernos ...) El byte a0x1bf
pesar de que casi se no ser0x00
(que es más comúnmente0x01
, pero puede tener otros valores) se puede comparar esto con subackup.mbr
para asegurarse de que no0x1be
se cambie nada pasado .Una vez que esté satisfecho de haber aplicado el cambio correctamente, puede copiar directamente el archivo en la primera parte del disco. La razón por la que desea hacer el archivo en lugar de
/dev/zero
otra vez es por seguridad contra errores tipográficos. Si omite accidentalmente,count=1
pasará un mal momento, copiar un archivo, por otro lado, nunca pasará el EOF, nunca. Entonces es más seguro.A continuación,
hexdump
su disco para asegurarse de que los cambios se realizaron como se esperabaCompare hasta
0x200
contrabackup.mbr.test
para asegurarse de que sea lo que desea.Finalmente, si algo falla por cualquier razón, simplemente puede copiar la copia de seguridad del MBR en la unidad a través de:
Espero que esto ayude.
fuente
count
se olvide, no usar directamente un nombre de dispositivo de bloque común, especificando que el archivo de copia de seguridad debe hacerse fuera del dispositivo que se está cambiando, un ejemplo de cómo se ve un borrado exitoso, cómo deshacerlo si lo arruinas. Me imagino que si tienes el conocimiento suficiente para saber a qué me refiero, puedes cortar los pequeños pasos y hacer todo esto en un solo comando. Pero no te voy a dar ese comando si todavía estás aprendiendo. ;)ADVERTENCIA: EXTREMADAMENTE PELIGROSO
Puede usar el comando dd desde el propio Linux (elimina la tabla de particiones):
Simplemente elimine MBR, sin la tabla de particiones (vea el comentario a continuación):
Reemplace
/dev/hdX
con el nombre real de su dispositivo como/dev/hda
. Use elfdisk -l
comando para averiguar el nombre del dispositivo:Fuente
fuente
touch testfile
,dd if=/dev/urandom of=testfile bs=512 count=1
,sudo losetup /dev/loop7 testfile
,sudo dd if=/dev/null of=/dev/loop7 bs=446 count=1
,sudo hexdump -Cv /dev/loop7
. Como puede ver,/dev/null
no es una fuente 0, es una fuente EOF.dd
no puede y no copiará nada de lo/dev/null
que necesite usar/dev/zero
. Segundo @Breakthrough, no es posible un comportamiento indefinido si el primer byte del sector 0 es0x00
. No sé por qué piensas eso.Mi experiencia con
es decir, que desinstaló con éxito grub2
/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 respondidoSin embargo, la segunda parte de la pregunta, que es "¿Cómo restauro el MBR de / dev / sda?" no ha sido respondido ya que el
install-mbr
comando no pudo restaurar el MBR. Como resultado, Windows ya no arranca y el administrador de arranque de Windows informa un error sobre un MBR dañado y le pide al usuario que repare desde un CD de reparación de Windows.fuente
Después de leer el artículo de Wikipedia sobre el tema, me gustaría proponer algunas soluciones adicionales:
Cambiar el orden de arranque en BIOS :)
La mejor y la más segura: se usa
fdisk
para eliminar el indicador de "arranque" de cualquier partición en esa unidad. La mayoría de los MBR buscan una partición "de arranque" para cargar en cadena, por lo que esperaría que GRUB simplemente no hiciera nada si no hay tales particiones. Aunque no lo he probado.Si lo anterior no ayuda, intente instalar un clon gratuito de código MBR estándar:
Instale el
mbr
paquete y use uninstall-mbr
comando como este:Créditos: CÓMO: Recuperar Windows MBR usando Ubuntu LIVE CD
Al leer el artículo de Wikipedia, tengo la impresión de que lo único que identifica al MBR es su firma, que se encuentra al final del sector (bytes 510 y 511). Se supone que los primeros 446 bytes de MBR contienen instrucciones de la máquina. Se supone que el BIOS transfiere el control al gestor de arranque independientemente del contenido real de los primeros 446 bytes, siempre que esté presente la firma MBR:
Entonces, entiendo 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 la computadora se bloquee al intentar ejecutar código no válido.
ACTUALIZACIÓN: Además, este artículo sugiere que para hacer que el disco parezca "no arrancable" para BIOS, en realidad debería editar la firma MBR en y del sector (usando cualquier editor de discos). Sin embargo, no estoy seguro de si afectará al sistema operativo al ver la tabla de particiones en el disco ... pero al menos siempre puede modificar esos bytes ...
fuente
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 arranca y que no desea arrancar (que tiene grub)
Simplemente coloque un usb de arranque hecho a partir de la iso de mandriva u otra variante que desee instalar, hay herramientas para hacer que los dispositivos de arranque usb de archivos iso usen google (o podría usar un instalador grabado desde cd rom)
Ahora, la mayoría de los instaladores de Linux le permiten elegir qué hacer, probar y reproducir / usar para evaluación o Linux portátil o ejecutar la instalación para instalarlo. En este punto, solo esperamos (mueva el cursor hacia arriba para que la pantalla espere pero no presione enter ni 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 eliminamos temporalmente, espere un minuto (algunas biografías requieren una pequeña espera por 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 que puede hacer lo que quiera. bueno, es una solución simple, me deshice de una configuración anterior de Linux simplemente como principiante
fuente
Antigua pregunta, pero como me sucedió ayer, lo resolví así: apagué la computadora, desconecté físicamente el disco duro incriminado, volví a encender la computadora, luego
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, finalmente no apareció.
Entiendo que esta es una solución realista, pero funciona. Un día borraré ese disco duro por completo, y cualquier rastro restante de GRUB desaparecerá.
fuente