Como posso adicionar as opções do Memtest86 + de volta ao menu Grub?

34

Se estiver usando o UEFI, consulte esta pergunta: "Posso inicializar o memtest86 + se estiver usando o UEFI?"

Depois de instalar a versão de 64 bits do Ubuntu 12.04 no meu Lenovo B570, tive os mesmos problemas que tive ao instalar o 11.10 com o Grub que não estava funcionando bem com um sistema uEFI. Usei a mesma técnica da última vez para resolver o problema (usando uma sessão do Super Grub Disc LiveCD para reparar o Grub) e meu sistema felizmente inicializa duas vezes entre o Ubuntu e o Windows 7

No entanto, agora, quando eu inicializo, o menu Grub exibe apenas

  • Ubuntu, com Linux 3.2.0-24-generic
  • Ubuntu, com Linux 3.2.0-24-genérico (modo de recuperação)
  • Versões anteriores do Linux
  • Windows 7 (carregador) (em / dev / sda1)
  • Ambiente de recuperação do Windows (carregador) (em / dev / sda4)

Não vejo mais a opção de usar o Memtest86 + que existia anteriormente, após o check-in no Ubuntu Software Center, posso ver que o pacote está instalado, mas como faço para que a opção de executá-lo apareça novamente no menu Grub?

Eu tentei:

sudo update-grub 

o que não faz diferença.

sudo chmod +x /etc/grub.d/20_memtest86+ 

resulta em:

chmod: cannot access /etc/grub.d/20_memtest86+': No such file or directory

e entrando

ls /etc/grub.d/

resulta em:

00_header        10_linux      30_os-prober  41_custom
05_debian_theme  20_linux_xen  40_custom     README
cobertura
fonte
Tente adicionar o script conforme detalhado abaixo, copiei-o da minha máquina, faça a atualização do chmod + x e grub e veja se isso funciona. Vejo que você fez - bem-vindo.
23 93 26 35 19 57 3 89

Respostas:

19

Tente abrir um terminal e executar

sudo chmod +x /etc/grub.d/20_memtest86+
sudo update-grub

Verifique se está lá

grep memtest /boot/grub/grub.cfg

Acabei de fazer o mesmo que eu tinha desativado

hob@hob-HP-dx5150-MT:~$ cat /boot/grub/grub.cfg |grep memtest
hob@hob-HP-dx5150-MT:~$ sudo chmod +x /etc/grub.d/20_memtest86+
[sudo] password for hob: 
hob@hob-HP-dx5150-MT:~$ sudo update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-24-generic
Found initrd image: /boot/initrd.img-3.2.0-24-generic
Found linux image: /boot/vmlinuz-3.2.0-23-generic
Found initrd image: /boot/initrd.img-3.2.0-23-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Ubuntu 11.10 (11.10) on /dev/sda6
Found Trisquel 5.5 (5.5) on /dev/sda8
Found Ubuntu 12.04 LTS (12.04) on /dev/sda9
done
hob@hob-HP-dx5150-MT:~$ cat /boot/grub/grub.cfg |grep memtest
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
    linux16 /boot/memtest86+.bin
menuentry "Memory test (memtest86+, serial console 115200)" {
    linux16 /boot/memtest86+.bin console=ttyS0,115200n8
### END /etc/grub.d/20_memtest86+ ###

Você pode tentar criar o arquivo se ele não estiver lá, usando o nano em um terminal

sudo nano /etc/grub.d/20_memtest86+

ou com um editor de GUI

gksudo gedit /etc/grub.d/20_memtest86+

Preencha com

#!/bin/sh
set -e

if [ -f /usr/lib/grub/grub-mkconfig_lib ]; then
  . /usr/lib/grub/grub-mkconfig_lib
  LX=linux16
elif [ -f /usr/lib/grub/update-grub_lib ]; then
  . /usr/lib/grub/update-grub_lib
  LX=linux
else
  # no grub file, so we notify and exit gracefully
  echo "Cannot find grub config file, exiting." >&2
  exit 0
fi

# We can't cope with loop-mounted devices here.
case ${GRUB_DEVICE_BOOT} in
  /dev/loop/*|/dev/loop[0-9]) exit 0 ;;
esac

prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"

if test -e /boot/memtest86+.bin ; then
  MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/memtest86+.bin" )
  echo "Found memtest86+ image: $MEMTESTPATH" >&2
  cat << EOF
menuentry "Memory test (memtest86+)" {
EOF
  printf '%s\n' "${prepare_boot_cache}"
  cat << EOF
    $LX $MEMTESTPATH
}
menuentry "Memory test (memtest86+, serial console 115200)" {
EOF
  printf '%s\n' "${prepare_boot_cache}"
  cat << EOF
    $LX $MEMTESTPATH console=ttyS0,115200n8
}
EOF
fi

#if test -e /boot/memtest86+_multiboot.bin ; then
#  MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/memtest86+_multiboot.bin" )
#  echo "Found memtest86+ multiboot image: $MEMTESTPATH" >&2
#  cat << EOF
#menuentry "Memory test (memtest86+, experimental multiboot)" {
#EOF
#  printf '%s\n' "${prepare_boot_cache}"
#  cat << EOF
#   multiboot   $MEMTESTPATH
#}
#menuentry "Memory test (memtest86+, serial console 115200, experimental multiboot)" {
#EOF
#  printf '%s\n' "${prepare_boot_cache}"
#  cat << EOF
#   multiboot   $MEMTESTPATH console=ttyS0,115200n8
#}
#EOF
#fi

Certifique-se de executar o comando chmod + x nele posteriormente.

Eu ficaria um pouco preocupado com a falta dele - você tem tudo o mais no grub.d?

ls /etc/grub.d/


00_header        10_linux.bak       20_memtest86+  41_custom
05_debian_theme  10_linux.dpkg-old  30_os-prober   README
10_linux         20_linux_xen       40_custom
23 93 26 35 19 57 3 89
fonte
sudo chmod +x /etc/grub.d/20_memtest86+resultou em:chmod: cannot access /etc/grub.d/20_memtest86+': No such file or directory
coversnail
1
Eu encontrei 20_memtest86+escondido de /etc/grub.d.bak/alguma forma. Movi-o no lugar, atualizei o GRUB e tudo funcionou bem para mim.
Naftuli Kay
3
update-grubnão encontra o binário memtest, não importa o que eu faça :(
expert
2
não é porque as versões GPL do memtest não suportam EFI? Então, se você estiver inicializando através do EFI, não há como fazer com que o memtest funcione usando o que é fornecido com o Ubuntu?
23417 Jeff Atwood
1
Eu tenho o seguinte, X @ ubuntu: ~ $ cat /boot/grub/grub.cfg | grep memtest ### BEGIN /etc/grub.d/20_memtest86+ ### ### END /etc/grub.d/20_memtest86+ ### #
user1945827:
13

Eu tive o mesmo problema e, devido ao fato de eu ter EFI no meu laptop, o memtest86 + versão 4.x enviado pelo ubuntu não funcionará, pois o EFI é suportado apenas pela versão 5 e mais recente.

As versões mais recentes não são da GPL e devem ser baixadas manualmente no site da memtest (elas têm imagens ISO e USB), mas pelo menos são gratuitas.

Cristian Măgherușan-Stanciu
fonte
As versões mais recentes não são da GPL e devem ser baixadas manualmente no site da memtest (elas têm imagens ISO e USB), mas pelo menos são gratuitas. O memtest86 não é GPL e é proprietário e o memtest86 + é GPL.
Ramchandra Apte
6
apt-get install memtest86+

Isso irá reconfigurar automaticamente o grub e adicionar a entrada ao menu de inicialização.

Se você receber o erro memtest86+ is already the newest version, use sudo apt-get install --reinstall memtest86+

Se tudo mais falhar, você pode obter um ISO inicializável do qual pode gravar em um CD e inicializar. Obviamente, se você estiver inicializando o UEFI, deverá estar aqui.

Michael Franzl
fonte
Para o servidor Ubuntu 16.04, essa era exatamente a solução. O apt-get install memtest86+arquivo sem mencionado /etc/grub.d/20_memtest86+não estava presente no meu sistema.
Mstrap
@strap, foi a solução para mim também. Não entendo por que minha resposta foi rebaixada duas vezes.
22817 Michael Franzl
1
Esta solução não funcionou para mim - o comando acima recebeu uma memtest86+ is already the newest versionmensagem. Suspeito que esta solução funcione apenas para sistemas que não sejam UEFI, enquanto a pergunta original é especificamente sobre memtest em sistemas UEFI.
Jaydin
1
Isso também não funcionou para mim, como o JayDin memtest já estava instalado. Eu usei o gerenciador de pacotes synaptik para remover o memtest, reiniciei e reinstalei. Isso corrigiu o problema para mim.
user111667 4/03
5

Não consegui fazer isso funcionar em 2 dias, depois verifiquei o Synaptic para pacotes grub ... Parece que a ausência de pacote grub-imagebooté a raiz do problema.

sudo apt-get install grub-imageboot
PLaci
fonte
Eu tentei isso e não funcionou.
Hitechcomputergeek19 /
2
Memdisk encontrado: / boot / memdisk imagepath / boot / imagens não encontrado
Aaron Franke
1

Isso foi o que fiz para adicionar o memtest86 + agora mais recente (não gratuito) ao menu de inicialização do grub para a inicialização da UEFI. A versão atual do memtest é 8.2. Ferramentas necessárias: Disk Image Mounter e grub-customizer, este último é apenas por conveniência :) Arquivos: binário memtest (veja abaixo)

  1. Faça o download do binário memtest em: https://www.memtest86.com/download.htm A 'Imagem para criar uma unidade USB inicializável em um sistema Windows / Linux / Mac' está correta.
  2. Extraia o arquivo IMG (memtest86-usb.img)
  3. abra o arquivo img com o montador de imagens de disco (botão direito do mouse no Ubuntu)
  4. da extração da imagem montada /EFI/BOOT/BOOTX64.efi
  5. faça o diretório de inicialização do memtest86:
    sudo mkdir / boot / efi / EFI / memtest86
  6. copie o BOOTX64.efi para sua nova pasta na partição de inicialização (por exemplo, / boot / efi / EFI / memtest86)
  7. abrir grub-customizer
  8. Adicione item de menu, dê um nome a ele, escolha tipo: other
  9. adicione a seguinte sequência de inicialização (supondo que você inicialize a partir de hd0 ):
insmod part_gpt
insmod fat
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  1A22-970F
else
  search --no-floppy --fs-uuid --set=root 1A22-970F
fi
chainloader /EFI/memtest86/BOOTX64.efi
  1. salve e saia do grub-customizer

  2. reinicie e aproveite o Memtest86

Vic
fonte
Para outros / eu: # 3 Disk Image Mounter = gnome-disks. O número 6 deve ser raiz. # 8 Por que o tipo other não é memtest? # 9 como você sabe se você inicializar do hd0? [clique em editar na entrada da sua unidade de inicialização e copie a entrada para essa configuração]. Obrigado por esta excelente resposta btw.
dez93_2000 12/07
Se a raiz do ubuntu é hd2, presumivelmente você muda de 0 para 2 em 4 lugares, incluindo o ahci? Independentemente de eu receber erro, esse dispositivo 1A22-970F e o arquivo '/EFI/memtest86/BOOTX64.efi' não foram encontrados. O arquivo é defo em / boot / efi / EFI / memtest86 /. Alguma ideia? Cheers
dez93_2000 12/07
'disco de erro hd2, gpt2 não encontrado' agora aparece com 'nenhum dispositivo desse tipo'; o arquivo não encontrado não aparece. não tenho certeza por que isso iria mudar ...
dez93_2000