Um disco rígido que eu uso apenas para armazenamento de dados ainda possui o GRUB de instalações anteriores do Ubuntu.
Como posso remover o GRUB dele sem prejudicar o restante dos dados da unidade?
fundo
Ocasionalmente, movo a unidade de dados entre computadores com várias configurações de ordem de inicialização, para que não seja inicializável para evitar ter que acomodá-la nas configurações de BIOS de cada computador.
Quando ligo o computador enquanto apenas a unidade de dados está conectada, o seguinte é exibido:
error: no such device: fdf38dd4-9e9d-479d-b830-2a6989958503.
grub rescue>
Posso confirmar, pelos backups antigos, /etc/fstab
que esse era o UUID de uma partição raiz que reformatei recentemente e que não existe mais . Aqui está a tabela de partição e o registro mestre de inicialização bruto da unidade de dados .
Observe que não estou interessado em soluções alternativas que não respondam à minha pergunta principal. Posso pensar em várias maneiras de solucionar esse problema, mas me incomoda, por princípio, que não sei como resolvê-lo diretamente. Todo procedimento de instalação deve ter um procedimento de desinstalação de contrapartida.
sfdisk -d /dev/sdb > sdb.out
.Respostas:
Você pode tornar o dispositivo não inicializável simplesmente tornando 0x00 os primeiros bytes do disco.
Normalmente (e isso é verdade para o grub, grub2 e ntldr iirc), o primeiro byte da sua unidade será uma instrução x86 jmp. Isso ocorre antes mesmo do rótulo do disco, porque ao passar a execução para o dispositivo para inicializá-lo, ele simplesmente define a CPU para sugar as informações do dispositivo como código. Se tiver um código inválido, ele aciona uma interrupção e o BIOS lida com a exceção e passa para o próximo dispositivo inicializável.
Por exemplo, o início do meu disco começa com:
A primeira parte é
eb 63
Ir para compensar 0x63 do IP atual (de 0x65).A execução continua a partir daqui.
O fim do setor é assim:
Se o seu disco estiver formatado como uma tabela de partição MBR, ele precisará apenas de duas coisas, a tabela de partição que está em offset
0x1be
e a assinatura MBR,55aa
que ocorre no final do setor em offset0x1fe
.0x1be
é decimal 446.O seguinte (é claro) tornará o dispositivo não inicializável. Mas é isso que você quer. Se você não deseja tornar seu dispositivo incapaz de inicializar, não faça isso, mmm-kay? Presumo que seu dispositivo seja
/dev/sdz
, simplesmente porque poucas pessoas têm um/dev/sdz
, e isso reduz o risco de algum novato idiota copiar cegos os comandos de colar.Primeiro, copie o MBR para um arquivo para backup.
Em seguida, faça uma cópia desse arquivo:
Em seguida, precisamos criar um dispositivo de loopback (para que o conteúdo não seja truncado.) E aplicar as alterações em nosso setor falso 0 como teste:
hexdump
o arquivo e verifique se a tabela de partição inteira está intacta:Você deve ver algo como:
Agora,
0x1be
é onde você vê80
a saída hexdumped, isso também pode ser00
e ainda é válido. (É o sinalizador "inicializável" na tabela de partição, você pode deixá-lo em paz, porque é completamente ignorado pela maioria dos BIOS modernos ...) O byte no0x1bf
quase nunca será0x00
(é mais comum,0x01
mas pode aceitar outros valores). você pode comparar isso com o seubackup.mbr
para garantir que nada do passado0x1be
seja alterado.Quando estiver satisfeito com a aplicação correta da alteração, 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
novamente é a segurança contra erros de digitação. Se você acidentalmente omitircount=1
que vai se divertir muito, copiar um arquivo, por outro lado, nunca será executado além do EOF. Então é mais seguro.Em seguida,
hexdump
seu disco para garantir que as alterações foram realizadas conforme o esperado.Compare até
0x200
contrabackup.mbr.test
para garantir que é o que você deseja.Por fim, se alguma coisa estragar por qualquer motivo, você pode simplesmente copiar o backup do MBR de volta para a unidade através de:
Espero que isto ajude.
fonte
count
seja esquecido, não usar diretamente um nome de dispositivo de bloco comum, especificando que o arquivo de backup deve ser feito fora do dispositivo que está sendo alterado, um exemplo da aparência de uma limpeza bem-sucedida, como desfazer se você estragar. Eu acho que se você é conhecedor o suficiente para saber o que estou falando, você pode cortar os passos do bebê e fazer tudo isso em um único comando. Mas não vou dar esse comando se você ainda estiver aprendendo. ;)AVISO: EXTREMAMENTE PERIGOSO
Você pode usar o comando dd do próprio Linux (ele remove a tabela de partição):
Basta remover o MBR, sem a tabela de partição (veja o comentário abaixo):
Substitua
/dev/hdX
pelo nome real do dispositivo, como/dev/hda
. Use ofdisk -l
comando para descobrir o nome do dispositivo:Fonte
fonte
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 você pode ver,/dev/null
não é uma fonte 0, é uma fonte EOF.dd
não pode e não copiará nada de que/dev/null
você precise usar/dev/zero
. Segundo @Breakthrough, nenhum comportamento indefinido é possível se o primeiro byte do setor 0 for0x00
. Não sei por que você pensa isso.Minha experiência com
é que ele desinstalou com êxito o grub2 de
/dev/sda
(onde meu Windows 7 está instalado), então a primeira parte da pergunta "Como faço para remover o grub de / dev / sda?" foi respondido.No entanto, a segunda parte da pergunta, que é "Como restauro o MBR de / dev / sda?" não foi respondido desde o
install-mbr
comando 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 que o usuário repare a partir de um CD de reparo do Windows.fonte
Depois de ler o artigo da Wikipedia sobre o assunto, gostaria de propor algumas soluções adicionais:
Alterar a ordem de inicialização no BIOS :)
O melhor e o mais seguro: use
fdisk
para remover o sinalizador "inicializável" de qualquer partição nessa unidade. A maioria dos MBRs procura uma partição "inicializável" para carregar em cadeia, portanto, esperaria que o GRUB não fizesse nada se não houvesse essas partições. Ainda não testei.Se o acima exposto não ajudar, tente instalar um clone gratuito do código MBR padrão:
Instale o
mbr
pacote e use oinstall-mbr
comando como este: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 é a sua assinatura, que está no final do setor (bytes 510 e 511). Os primeiros 446 bytes do MBR deveriam conter instruções da máquina. O BIOS deve transferir o controle para o carregador de inicialização, independentemente do conteúdo real dos primeiros 446 bytes, desde que a assinatura MBR esteja presente:
Portanto, meu entendimento é que o MBR sempre deve conter um carregador de inicialização e zerar os primeiros 446 bytes dele não impediria o BIOS de tentar inicializar a partir do disco - mas é provável que o computador travar ao tentar executar código inválido.
ATUALIZAÇÃO: Além disso, este artigo sugere que, para fazer com que o disco pareça "não inicializável" para o BIOS, você realmente deve editar a assinatura MBR no e do setor (usando qualquer editor de disco). Não tenho certeza se isso afetará o SO vendo a tabela de partição no disco ... mas pelo menos você sempre pode modificar esses bytes de volta ...
fonte
Outra solução mais simples.
No meu caso, eu tinha o Debian Linux, mas queria usar o Mandriva, também funcionará para outros
Desligue o seu PC e remova o disco inicializado que você não deseja inicializar (que possui o grub)
Basta colocar um usb inicializável feito a partir do mandriva iso ou outra variante que você gostaria de instalar. Existem ferramentas para fazer pendrives USB inicializáveis a partir de arquivos iso, usando o google (ou você pode ser um instalador queimado do cd rom)
Agora, a maioria dos instaladores do Linux oferece a você uma escolha do que fazer, tente e reproduza / use para avaliação ou Linux portátil ou execute a instalação para instalá-lo. Neste ponto, basta aguardar (mova o cursor para baixo para que a tela espere, mas não pressione enter ou clique com o mouse).
Basta lembrar que, neste momento, seu USB / ou / CDRom foi iniciado e está sendo executado. agora é hora de reconectar o disco rígido que removemos temporariamente, espere um minuto (algumas biografias exigem uma pequena espera por um minuto é mais do que suficiente)
Continue com 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 antiga instalação Linux simplesmente como iniciante
fonte
Pergunta antiga, mas como aconteceu comigo ontem, resolvi assim: desliguei o computador, desconectei fisicamente o disco rígido incriminado, liguei novamente o computador e, em seguida,
Feito isso, desliguei o computador, reconecte o disco rígido e minha antiga partição do Windows 7, que não existe mais há 2 anos, não apareceu - finalmente.
Entendo que esta é uma solução prática, mas funciona. Um dia, limparei totalmente o disco rígido e qualquer vestígio restante do GRUB desaparecerá.
fonte