¿Cómo puedo agregar las opciones de Memtest86 + al menú de Grub?


34

Si usa UEFI Por favor vea esta pregunta, "¿Puedo arrancar memtest86 + si estoy usando UEFI?"

Después de haber instalado la versión de 64 bits de Ubuntu 12.04 en mi Lenovo B570, me encontré con los mismos problemas que tuve al instalar 11.10 con Grub que no funcionaba bien con un sistema uEFI. Utilicé la misma técnica que la última vez para resolver el problema (usando una sesión Super Grub Disc LiveCD para reparar Grub) y mi sistema felizmente arranca entre Ubuntu y Windows 7

Sin embargo, ahora cuando inicio, el menú Grub solo muestra

  • Ubuntu, con Linux 3.2.0-24-genérico
  • Ubuntu, con Linux 3.2.0-24-genérico (modo de recuperación)
  • Versiones anteriores de Linux
  • Windows 7 (cargador) (en / dev / sda1)
  • Entorno de recuperación de Windows (cargador) (en / dev / sda4)

Ya no veo la opción de usar Memtest86 + que estaba allí anteriormente, después de haber verificado en el Centro de software de Ubuntu puedo ver que el paquete está instalado, pero ¿cómo hago para que la opción de ejecutarlo vuelva a aparecer en el menú de Grub?

He intentado:

sudo update-grub 

que no hace ninguna diferencia

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

resultados en:

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

y entrando

ls /etc/grub.d/

resultados en:

00_header        10_linux      30_os-prober  41_custom
05_debian_theme  20_linux_xen  40_custom     README

Intente agregar el script como se detalla a continuación, lo copié de mi máquina, realice la actualización de chmod + x y grub y vea si eso funciona. Veo que lo hiciste, bienvenido.
23 93 26 35 19 57 3 89

Respuestas:


19

Intenta abrir una terminal y ejecutar

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

Comprueba si está ahí

grep memtest /boot/grub/grub.cfg

Acabo de hacer lo mismo que tenía deshabilitado

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+ ###

Puede intentar crear el archivo si no está allí, usando nano en una terminal

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

o con un editor gui

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

Llénalo con

#!/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

Asegúrate de ejecutar el comando chmod + x después.

Sin embargo, me preocuparía un poco que falte: ¿tienes todo lo demás en 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

sudo chmod +x /etc/grub.d/20_memtest86+resultó en:chmod: cannot access /etc/grub.d/20_memtest86+': No such file or directory
covernail

1
Me encontré al 20_memtest86+acecho de /etc/grub.d.bak/alguna manera. Lo moví a su lugar, actualicé GRUB y todo funcionó bien para mí.
Naftuli Kay

3
update-grubno encuentra binaria memtest no importa lo que hago :(
experto

2
¿No es esto porque las versiones GPL de memtest no son compatibles con EFI? Entonces, si está iniciando a través de EFI, ¿no hay forma de que memtest funcione con lo que se incluye con Ubuntu?
Jeff Atwood

1
Obtuve lo siguiente, X @ ubuntu: ~ $ cat /boot/grub/grub.cfg | grep memtest ### BEGIN /etc/grub.d/20_memtest86+ ### ### END /etc/grub.d/20_memtest86+ ###
user1945827

13

Tuve el mismo problema, y ​​debido al hecho de que tengo EFI en mi computadora portátil, la versión 4.x de memtest86 + enviada por ubuntu no funcionará, ya que EFI solo es compatible con la versión 5 y posteriores.

Las últimas versiones no son GPL y deben descargarse manualmente desde el sitio web de memtest (tienen imágenes ISO y USB), pero al menos son gratuitas.



Las últimas versiones no son GPL y deben descargarse manualmente del sitio web memtest (tienen imágenes ISO y USB), pero al menos son gratuitas. memtest86 no es GPL y es propietario y memtest86 + es GPL.
Ramchandra Apte

6
apt-get install memtest86+

Esto reconfigurará automáticamente grub y agregará la entrada al menú de arranque.

Si obtiene el error memtest86+ is already the newest version, use sudo apt-get install --reinstall memtest86+

Si todo lo demás falla, puede obtener un ISO de arranque que puede grabar en un CD y arrancar. Por supuesto, si está arrancando UEFI, debería estar aquí.


Para el servidor Ubuntu 16.04, esta fue exactamente la solución. Sin el apt-get install memtest86+archivo mencionado /etc/grub.d/20_memtest86+no estaba presente en mi sistema.
mstrap

@mstrap, también fue la solución para mí. No entiendo por qué mi respuesta fue rechazada dos veces.
Michael Franzl

1
Esta solución no funcionó para mí: el comando anterior recibió un memtest86+ is already the newest versionmensaje. Sospecho que esta solución solo funciona para sistemas que no son UEFI, mientras que la pregunta original se refiere específicamente a memtest en sistemas UEFI.
JayDin

1
Esto tampoco funcionó para mí, ya que JayDin memtest ya estaba instalado. Utilicé el administrador de paquetes synaptik para eliminar memtest, lo reinicié y luego lo reinstalé. Esto solucionó el problema para mí.
user111667

5

No pude hacer que esto funcionara en 2 días, luego revisé Synaptic en busca de paquetes grub ... Parece ser que la ausencia del paquete grub-imagebootes la raíz del problema.

sudo apt-get install grub-imageboot

Intenté esto y no funcionó.
Hitechcomputergeek

2
Memdisk encontrado: / boot / memdisk Imagepath / boot / images no encontrado
Aaron Franke

1

Esto es lo que hice para agregar el ahora más reciente (no gratuito) memtest86 + al menú de arranque de grub para el arranque UEFI. La versión actual de memtest es 8.2. Herramientas necesarias: Disk Image Mounter y grub-customizer, este último es solo por conveniencia :) Archivos: memtest binario (ver más abajo)

  1. Descargue el binario memtest de: https://www.memtest86.com/download.htm La 'Imagen para crear una unidad USB de arranque en un sistema Windows / Linux / Mac' está bien.
  2. Extraiga el archivo IMG (memtest86-usb.img)
  3. abra el archivo img con el montador de imagen de disco (botón derecho del mouse en Ubuntu)
  4. del extracto de imagen montado /EFI/BOOT/BOOTX64.efi
  5. crea el directorio de arranque memtest86:
    sudo mkdir / boot / efi / EFI / memtest86
  6. copie BOOTX64.efi a su nueva carpeta en la partición de arranque (por ejemplo, / boot / efi / EFI / memtest86)
  7. abrir grub-customizer
  8. Agregue un elemento del menú, asígnele un nombre, elija el tipo: otro
  9. agregue la siguiente secuencia de arranque (suponiendo que arranque desde 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. guardar y salir de grub-customizer

  2. reiniciar y disfrutar Memtest86


Para otros / yo: # 3 Disk Image Mounter = gnome-disks. # 6 debe ser root. # 8 ¿Por qué el otro tipo no es memtest? # 9 ¿cómo sabes si arrancas desde hd0? [haga clic en editar en la entrada de su unidad de arranque y copie la entrada para esa setroot]. Gracias por esta excelente respuesta por cierto.
dez93_2000

Si la raíz de ubuntu es hd2, entonces presumiblemente cambia el 0 a 2 en 4 lugares, inc ahci? Independientemente de que recibo un error, no se encontró dicho dispositivo 1A22-970F y el archivo '/EFI/memtest86/BOOTX64.efi'. El archivo es defo en / boot / efi / EFI / memtest86 /. ¿Alguna idea? Saludos
dez93_2000

'error disco hd2, gpt2 no encontrado' ahora aparece con 'no existe tal dispositivo'; el archivo no encontrado no aparece. no estoy seguro de por qué cambiaría ...
dez93_2000
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.