Como desinstalo o GRUB?

18

Um disco rígido que eu uso apenas para armazenamento de dados ainda tem o GRUB de instalações passadas do Ubuntu.

Como posso remover o GRUB sem prejudicar o resto dos dados da unidade?

Antecedentes

Ocasionalmente, movo a unidade de dados entre computadores com várias configurações de ordem de inicialização, portanto, gostaria que fosse não inicializável para evitar a necessidade de acomodá-la nas configurações de BIOS de cada computador.

Quando eu ligo um computador enquanto apenas a unidade de dados está conectada, aparece o seguinte:

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

Posso confirmar, a partir de backups antigos de /etc/fstab , que este era o UUID de uma partição raiz que eu reformatei recentemente e que não existe mais. . Aqui está a tabela de partições crua e crua registro mestre de inicialização .

Por favor, note que não estou interessado em soluções alternativas que não respondam à minha pergunta principal. Eu posso pensar em várias maneiras de contornar esse problema, mas me incomoda em princípio que eu não sei como resolvê-lo diretamente. Cada procedimento de instalação deve ter um procedimento de desinstalação de contraparte.

    
por ændrük 04.05.2012 / 03:58

6 respostas

24

Você pode tornar o dispositivo não inicializável simplesmente fazendo os primeiros bytes do disco 0x00.

Tipicamente (e isto é verdade para o grub2 e ntldr iirc), o primeiro byte do seu drive será uma instrução x86 jmp. Isso ocorre antes mesmo do disklabel, porque ao passar a execução para o dispositivo para inicializá-lo, ele simplesmente configura a CPU para sugar as informações do dispositivo como código. Se ele tiver um código inválido, ele acionará uma interrupção e o BIOS lidará com a exceção e acessará o próximo dispositivo inicializável.

Por exemplo, o começo do meu disco começa com:

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

A primeira parte é eb 63 , que é Ir para compensar 0x63 do IP atual (então para 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......|

A execução continua daqui.

O final do setor é assim:

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.|

Se o seu disco estiver formatado como uma tabela de partições MBR, ele precisará apenas de dois itens, a tabela de partições que está no deslocamento 0x1be e a assinatura MBR, 55aa , que ocorre no final do setor. no deslocamento 0x1fe . 0x1be é decimal 446.

O seguinte (obviamente) tornará o dispositivo não inicializável. Mas isso é o que você quer. Se você não quiser que seu dispositivo não seja inicializado, não faça isso, mmm-kay? Eu estou supondo que seu dispositivo é /dev/sdz , simplesmente porque muitas pessoas não têm um /dev/sdz , e isso reduz o risco de algum novato idiota copiar cegamente colando comandos.

Primeiro, copie o MBR para um arquivo para backup.

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

Em seguida, faça uma cópia desse arquivo:

cp backup.mbr backup.mbr.test

Em seguida, temos que criar um dispositivo de loopback (para que o conteúdo não fique truncado.) E aplique as alterações em nosso setor falso 0 como um teste:

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 do arquivo e certifique-se de que toda a tabela de partições esteja intacta:

sudo hexdump -C backup.mbr.test

Você deve 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

Agora, 0x1be é onde você vê 80 na saída hexaduficiente, isso também pode ser 00 e ainda ser válido. (É o sinalizador "inicializável" na tabela de partições, você pode deixá-lo sozinho, porque é completamente ignorado pela maioria dos BIOS modernos ...) O byte em 0x1bf embora quase nunca seja 0x00 (é mais comumente 0x01 , mas pode levar outros valores), você pode comparar isso com seu backup.mbr para garantir que nada além de 0x1be seja alterado.

Quando estiver satisfeito em aplicar a alteração corretamente, você poderá copiar diretamente o arquivo na primeira parte do disco. O motivo pelo qual você deseja fazer o arquivo em vez de /dev/zero é por segurança contra erros de digitação. Se você acidentalmente omitir count=1 , você terá um mau momento, copiar um arquivo, por outro lado, nunca passará do EOF, nunca. Então é mais seguro.

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

Próximo hexdump do seu disco para garantir que as alterações tenham o esperado.

hexdump -C /dev/sdz | head

Compare até 0x200 com backup.mbr.test para garantir que é o que você deseja.

Finalmente, se alguma coisa estragar por qualquer motivo, você pode simplesmente copiar o backup do MBR de volta para a unidade via:

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

Espero que isso ajude.

    
por OmnipotentEntity 26.07.2012 / 20:22
2

AVISO: EXTREMAMENTE PERIGOSO

Você pode usar o comando dd do próprio Linux (ele remove a tabela de partições):

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

Basta remover o MBR, sem a tabela de partições (veja o comentário abaixo):

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

Substitua /dev/hdX pelo nome real do dispositivo, como /dev/hda . Use o comando fdisk -l para descobrir o nome do dispositivo:

# fdisk -l

Fonte

  1. link
por Tachyons 04.05.2012 / 04:05
1

Minha experiência com

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

é, que ele desinstalou o grub2 com sucesso de /dev/sda (onde o meu Windows 7 está instalado), então a primeira parte da pergunta "Como eu removo o grub de / dev / sda?" foi respondida.

No entanto, a segunda parte da pergunta, que é "Como restaurar o MBR de / dev / sda?" não foi respondida, pois o comando install-mbr falhou ao restaurar o MBR. Como resultado, o Windows não inicializa mais e o gerenciador de inicialização do Windows relata um erro sobre um MBR danificado e solicita ao usuário que o conserte de um CD de reparo do Windows.

    
por ubuntu-13.10 user 12.12.2013 / 08:14
1

Depois de ler o artigo da Wikipedia sobre o assunto, gostaria de propor algumas soluções adicionais:

  1. Alterar ordem de inicialização no BIOS:)

  2. O melhor e o mais seguro: use fdisk para remover o sinalizador "inicializável" de qualquer partição da unidade. A maioria dos MBRs procura por uma partição "inicializável" para carregar em cadeia, então eu esperaria que o GRUB não fizesse nada se não houvesse tais partições. Ainda não testou.

    Se o acima não ajudar, tente instalar um clone livre do código MBR padrão:

  3. Instale o pacote mbr e use o comando install-mbr desta forma:

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

Créditos: COMO: Recuperar o Windows MBR usando o Ubuntu LIVE CD

Ao ler o artigo da Wikipedia, tenho a impressão de que a única coisa que identifica o MBR é sua assinatura, que está no final do setor (bytes 510 e 511). Os primeiros 446 bytes do MBR supostamente contêm instruções de máquina. O BIOS deve transferir o controle para o gerenciador de inicialização, independentemente do conteúdo real dos primeiros 446 bytes, desde que a assinatura do MBR esteja presente:

% bl0ck_qu0te%

Então, meu entendimento é que o MBR sempre deve conter um gerenciador de inicialização, e zerar os primeiros 446 bytes não impedirá que o BIOS tente inicializar a partir do disco - mas é provável que ele faça o computador travar ao tentar executar um código inválido.

UPDATE: Além disso, este artigo sugere que o disco pareça "un" -bootable "para BIOS você deve realmente editar a assinatura MBR no e do setor (usando qualquer editor de disco). Não tenho certeza se isso afetará o sistema operacional ao ver a tabela de partições no disco ... mas pelo menos você sempre pode modificar esses bytes de volta ...

    
por Sergey 04.05.2012 / 06:51
0

Outra solução mais simples.

No meu caso eu tive Debian linux mas queria usar o Mandriva, vou trabalhar para outros também

Desligue seu pc, então remova o disco que inicializa que você não quer inicializar (que tenha o grub)

Basta colocar em um usb inicializável feito a partir do iso mandriva ou outra variante que você gostaria de instalar, existem ferramentas para fazer sticks usb inicializáveis a partir de arquivos iso use o google (ou você poderia nos um instalador queimado do cd rom)

Agora, a maioria dos instaladores do Linux dá a você a opção de o que fazer, experimentar e reproduzir / usar para avaliação ou Linux portátil ou executar a instalação para instalá-lo. Neste ponto, apenas esperamos (mova o cursor para baixo para que a tela espere, mas não pressione enter ou clique com o mouse).

Basta lembrar neste ponto que seu USB / ou CDRom foi iniciado e está em execução. agora é hora de fazer o plugin de volta o disco rígido que nós temporariamente removidos espere um minuto (algumas bios requerem uma pequena espera por minuto é mais que suficiente)

Continue o processo de configuração, já que a maioria dos instaladores contém ferramentas de partições que você pode fazer o que quiser. Bem, é uma solução simples, eu me livrei de uma configuração antiga do Linux simplesmente como um novato

    
por peter 12.10.2012 / 00:11
0

Pergunta antiga, mas como aconteceu comigo ontem, resolvi assim: desliguei o computador, desconectei fisicamente o disco rígido incriminado, reiniciei o computador, então

~ $ sudo update-grub

Feito isso, desliguei o computador, reconectei o disco rígido e minha antiga partição do Windows 7, que não existe mais há 2 anos, não apareceu - finalmente.

Eu entendo que esta é uma solução realista, mas funciona. Um dia, vou limpar totalmente esse disco rígido e qualquer vestígio restante do GRUB desaparecerá.

    
por ElStellino 18.06.2016 / 17:31