Grub 1.98: “erro: nenhum argumento especificado”

1

Recentemente, atualizei o Ubuntu 10.04 Server LTS. O servidor reporta-se como

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04.3 LTS"

Existem várias máquinas aqui com a mesma instalação e hardware, e todas funcionam bem, exceto por uma. Este tem problemas durante o processo de inicialização:

  1. Quando o GRUB é carregado, ele para no menu principal e aguarda a entrada do teclado.
  2. Depois de pressionar uma tecla, o GRUB relata error: no argument specified e continua (com ou sem pressionamento de tecla).
  3. A rede não aparece: eth0 e eth1 são redefinidas como eth4 e eth5, e eth5 não aparece. ifup eth5 funciona bem na linha de comando.

Ainda estou trabalhando no último - mas suspeito que os dois primeiros fazem parte do mesmo problema. Verificar as diferenças entre um /boot/grub/grub.cfg em funcionamento e este não resulta em diferenças significativas: apenas versões de kernel (anteriores) e UUIDs raiz.

Uma diferença significativa entre este e outros sistemas similares (em funcionamento) em nosso data center é que esse sistema é um Dell R710; outros são Dell 2950s. Estamos trabalhando em todos os R710s que estão executando o Ubuntu Server 10.04, mas nenhum atualizado atualmente como este.

Este problema acaba de surgir recentemente; Eu atualizei e reiniciei três sistemas incluindo este nas últimas 48 horas. Apenas este tinha problemas - mas apenas este parou no menu do GRUB. Todos os outros voltam automaticamente - então eu acabei de perder esse erro?

O Grub é a versão 1.98:

| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                            Version                           Description
+++-===============================-=================================-============================================
ii  grub-common                     1.98-1ubuntu12                    GRand Unified Bootloader, version 2 (common 
ii  grub-pc                         1.98-1ubuntu12                    GRand Unified Bootloader, version 2 (PC/BIOS

Eu encontrei este tópico nos fóruns do Ubuntu, mas parece estar relacionado ao Natty (11.10). Alguns relatórios sugeriram que esse bug apareceu em uma atualização do Lucid (10.04) para o Maverick (11.04) ou do Maverick para o Natty; Estou apenas executando o Lucid LTS. Este encadeamento também está relacionado ao GRUB 1.99 e esta versão é 1.98.

O tópico sugere que a linha

search --no-floppy --fs-uuid --set 857d5af9-23cd-4d9b-908b-cc075e866758

deve ser

search --no-floppy --fs-uuid --set=root 857d5af9-23cd-4d9b-908b-cc075e866758

Alguém pode ajudar a resolver esse problema? Estou vendo este erro aqui porque o GRUB pára no menu? Por que o GRUB pararia no menu em um sistema e não em outros?

UPDATE: Embora a versão atual seja 1.98 , a versão real do GRUB é o GRUB 2; isso também vale para a versão 1.99.

Quanto mais eu penso sobre isso, mais eu estou convencido de que outros sistemas estão provavelmente relatando o mesmo erro, mas continuando; O problema real aqui (com o GRUB) é o fato de o sistema parar no menu. Não posso testar os outros sistemas para comparação, pois eles já estão em uso.

UPDATE: eu reiniciei a máquina novamente. A mensagem aparece primeiro (em negrito) antes aparece o menu. Depois de selecionar a opção apropriada, ela aparece (em uma tela limpa) conforme descrito acima com uma mensagem Press any key to continue... . Após cerca de 5 segundos, a tela é limpa novamente e a inicialização continua (menos redes).

A instalação do GRUB2 reporta-se como a versão 1.99~rc1-13ubuntu3 , o que eu acho diferente do que o pacote reporta. Não tenho certeza se é assim ou se as coisas foram mudadas.

UPDATE: Mais sobre as duas versões do GRUB2 mencionadas. O primeiro é o pacote instalado que é 1.98-1ubuntu12 ; a segunda é a versão relatada no menu do GRUB2, que é 1.99 ~ rc1-13ubuntu3 . De acordo com o changelog para o pacote GRUB2, a versão 1.99 ~ rc1-13ubuntu3 foi introduzida em 21 de abril de 2011 , em Natty (note, não Lucid) e a versão 1.98-1ubuntu12 foi introduzida em 17 de junho de 2011, em Lucid Updates. Este sistema nunca teve o Ubuntu Natty ou Oneric nele; no entanto, ele tem o Red Hat Enterprise Linux 5 nele. No entanto, a versão do GRUB usada pelo RHEL 5 (no momento da gravação) é de 0,97 a 13,5, que é o Legado do GRUB.

Então onde veio a versão 1.99 ~ rc1-13ubuntu3? Eu suspeito strongmente que esta é a fonte dos meus problemas, e uma reinstalação completa do GRUB2 no MBR resolveria meus problemas. No entanto, tive que devolver o sistema para operação total; assim, o teste terá que esperar.

    
por Mei 17.01.2012 / 18:25

1 resposta

1

O problema parece ser que existem duas versões diferentes do GRUB instaladas. Um está ativo e é carregado no MBR; o outro está "nas asas". Os arquivos em /boot/grub são preenchidos de outro lugar e não pertencem a nenhum pacote. Os arquivos em /usr/lib/grub/i386-pc são supostamente iguais, mas neste caso não são.

Eu criei este programa para verificar as diferenças:

#!/usr/bin/ruby

# The directory dir1 is the directory owned by the Debian package
# grub-pc.
dir1 = "/usr/lib/grub/i386-pc"

# The directory dir2 is populated presumably by a script in the
# grub-pc package.
dir2 = "/boot/grub"

# First, compare directories: compare files in package to
# files copied into the second directory (/boot/grub)
print "Directory comparisons:\n"
print "\nComparing #{dir1} to #{dir2}\n\n"

Dir.chdir(dir1)
Dir["*.img","*.mod","*.lst","*.o"].each { |x|
    printf("%27s... ", x)

    if File.exists?("#{dir1}/#{x}")
        if File.exists?("#{dir2}/#{x}")
            'diff -u #{x} #{dir2}/#{x} 2>&1'
            print ($? == 0 ? "ok\n" : "*** MISMATCH\n")
        else
            print "*** MISSING from #{dir2}\n"
        end
    end
}

# Scan certain files (in both directories) looking for version numbers
# and report
print "\nVersion numbers:\n\n"

Dir["#{dir1}/multiboot*","#{dir2}/multiboot*"].each { |x|
    printf("%70s", 'strings --print-file-name #{x}'.grep(/GRUB/))
}

Em outros sistemas (inicialização de trabalho), recebo esse tipo de saída (abreviada):

Directory comparisons:

Comparing /usr/lib/grub/i386-pc to /boot/grub

                 cdboot.img... ok
               diskboot.img... ok
                 kernel.img... ok
                lnxboot.img... ok
                pxeboot.img... ok
                  grldr.img... ok

... snip ...

               terminal.lst... ok
                 efiemu32.o... ok
                 efiemu64.o... ok

Version numbers:

             /usr/lib/grub/i386-pc/multiboot.mod: GRUB 1.98-1ubuntu12
            /usr/lib/grub/i386-pc/multiboot2.mod: GRUB 1.98-1ubuntu12
                        /boot/grub/multiboot.mod: GRUB 1.98-1ubuntu12
                       /boot/grub/multiboot2.mod: GRUB 1.98-1ubuntu12

No sistema que não está funcionando como esperado, a seguinte saída é vista do mesmo script:

Directory comparisons:

Comparing /usr/lib/grub/i386-pc to /boot/grub

                 cdboot.img... ok
               diskboot.img... ok
                 kernel.img... *** MISMATCH
                lnxboot.img... *** MISMATCH
                pxeboot.img... ok
                  grldr.img... *** MISMATCH
                   boot.img... *** MISMATCH
               biosdisk.mod... *** MISMATCH
                  chain.mod... *** MISMATCH
                 reboot.mod... *** MISMATCH
                   halt.mod... *** MISMATCH
                    vbe.mod... *** MISMATCH
                vbetest.mod... *** MISSING from /boot/grub
                vbeinfo.mod... *** MISSING from /boot/grub
                   play.mod... *** MISMATCH
                 serial.mod... *** MISMATCH
                    vga.mod... *** MISMATCH
                memdisk.mod... *** MISMATCH

... snip ...

               parttool.lst... *** MISMATCH
                handler.lst... *** MISSING from /boot/grub
                  video.lst... *** MISMATCH
                 crypto.lst... *** MISMATCH
               terminal.lst... *** MISMATCH
                 efiemu32.o... *** MISMATCH
                 efiemu64.o... *** MISMATCH

Version numbers:

             /usr/lib/grub/i386-pc/multiboot.mod: GRUB 1.98-1ubuntu12
            /usr/lib/grub/i386-pc/multiboot2.mod: GRUB 1.98-1ubuntu12
                   /boot/grub/multiboot2.mod: GRUB 1.99~rc1-13ubuntu3
                    /boot/grub/multiboot.mod: GRUB 1.99~rc1-13ubuntu3

Para corrigir isso, eu copiei / boot / grub e reinstalei o grub-pc assim:

rsync -Wav --progress /boot/grub /boot/grub.sav
apt-get --reinstall install grub-pc

Isso funciona e o grub empacotado substitui o original em / boot / grub e, presumivelmente, no MBR.

Ainda não testei os resultados disso em uma reinicialização do sistema; leitor de advertências .

    
por Mei 18.01.2012 / 18:31