Come posso aggiungere le opzioni Memtest86 + al menu di Grub?


34

Se si utilizza UEFI Vedere questa domanda "Posso avviare memtest86 + se sto utilizzando UEFI?"

Dopo aver installato la versione a 64 bit di Ubuntu 12.04 sul mio Lenovo B570, ho riscontrato gli stessi problemi che ho avuto durante l'installazione di 11.10 con Grub che non funzionava bene con un sistema uEFI. Ho usato la stessa tecnica dell'ultima volta per risolvere il problema (utilizzando una sessione LiveCD Super Grub Disc per riparare Grub) e il mio sistema ha felicemente doppio avvio tra Ubuntu e Windows 7

Tuttavia ora quando avvio il menu Grub viene visualizzato solo

  • Ubuntu, con Linux 3.2.0-24-generico
  • Ubuntu, con Linux 3.2.0-24-generico (modalità di ripristino)
  • Versioni precedenti di Linux
  • Windows 7 (caricatore) (on / dev / sda1)
  • Ambiente di ripristino di Windows (caricatore) (on / dev / sda4)

Non vedo più l'opzione per usare Memtest86 + che era lì in precedenza, dopo aver verificato Ubuntu Software Center posso vedere che il pacchetto è installato, ma come faccio a far apparire l'opzione per eseguirlo ancora una volta nel menu Grub?

Ho provato:

sudo update-grub 

che non fa alcuna differenza.

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

risulta in:

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

ed entrando

ls /etc/grub.d/

risulta in:

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

Prova ad aggiungere lo script come descritto di seguito, copiato dal mio computer, esegui chmod + x e grub update e vedi se funziona. Vedo che l'hai fatto - benvenuto.
23 93 26 35 19 57 3 89

Risposte:


19

Prova ad aprire un terminale e a eseguirlo

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

Controlla se c'è

grep memtest /boot/grub/grub.cfg

Ho appena fatto lo stesso che l'ho disabilitato

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

Potresti provare a creare il file se non è lì, usando nano in un terminale

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

o con un editor di gui

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

Riempilo 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

Assicurati di eseguire il comando chmod + x su di esso in seguito.

Sarei un po 'preoccupato del fatto che manchi - hai tutto il resto in 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+risultò:chmod: cannot access /etc/grub.d/20_memtest86+': No such file or directory
covernail

1
Ho trovato in 20_memtest86+agguato in /etc/grub.d.bak/qualche modo. Spostato in posizione, aggiornato GRUB e tutto ha funzionato bene per me.
Naftuli Kay

3
update-grubnon trova il memtest binario, qualunque cosa io faccia :(
esperto

2
non è perché le versioni GPL di memtest non supportano EFI? Quindi, se stai avviando tramite EFI, non c'è modo di far funzionare memtest usando ciò che viene fornito con Ubuntu ??
Jeff Atwood,

1
Ho ottenuto quanto segue, X @ ubuntu: ~ $ cat /boot/grub/grub.cfg | grep memtest ### BEGIN /etc/grub.d/20_memtest86+ ### ### END /etc/grub.d/20_memtest86+ ###
user1945827

13

Ho avuto lo stesso problema e a causa del fatto che ho EFI sul mio laptop la memtest86 + versione 4.x fornita da Ubuntu non funzionerà, poiché EFI è supportato solo dalla versione 5 e successive.

Le ultime versioni non sono GPL e devono essere scaricate manualmente dal sito Web memtest (hanno immagini ISO e USB), ma almeno sono gratuite.



Le ultime versioni non sono GPL e devono essere scaricate manualmente dal sito Web memtest (hanno immagini ISO e USB), ma almeno sono gratuite. memtest86 è non GPL e proprietario e memtest86 + è GPL.
Ramchandra Apte,

6
apt-get install memtest86+

Ciò riconfigurerà automaticamente grub e aggiungerà la voce al menu di avvio.

Se viene visualizzato l'errore, memtest86+ is already the newest versionutilizzare sudo apt-get install --reinstall memtest86+

Se tutto il resto fallisce, puoi ottenere un ISO di avvio che puoi masterizzare su un CD e avviare. Ovviamente se stai avviando UEFI dovresti essere qui.


Per Ubuntu 16.04 server questa era esattamente la soluzione. Senza apt-get install memtest86+menzione del file /etc/grub.d/20_memtest86+non era presente sul mio sistema.
mstrap,

@strap, è stata la soluzione anche per me. Non capisco perché la mia risposta sia stata sottoposta a downgrade due volte.
Michael Franzl,

1
Questa soluzione non ha funzionato per me - il comando sopra ha ricevuto un memtest86+ is already the newest versionmessaggio. Sospetto che questa soluzione funzioni solo per i sistemi non UEFI mentre la domanda originale riguarda specificamente i memtest sui sistemi UEFI.
JayDin,

1
Neanche questo ha funzionato per me, come il memtest di JayDin era già installato. Ho usato il gestore pacchetti synaptik per rimuovere memtest, riavviato e reinstallato. Ciò ha risolto il problema per me.
user111667

5

Non sono riuscito a farlo funzionare in 2 giorni, poi ho controllato Synaptic per i pacchetti grub ... Sembra che l'assenza di pacchetti grub-imagebootsia la radice del problema.

sudo apt-get install grub-imageboot

Ho provato questo e non ha funzionato.
Hitechcomputergeek,

2
Memdisk trovato: / boot / memdisk Imagepath / boot / immagini non trovato
Aaron Franke

1

Questo è quello che ho fatto per aggiungere l'ultimissimo (non gratuito) memtest86 + al menu di avvio di grub per l'avvio UEFI. La versione attuale del memtest è 8.2. Strumenti necessari: Disk Image Mounter e grub-customizer, quest'ultimo è solo per comodità :) File: memtest binary (vedi sotto)

  1. Scarica il file binario memtest da: https://www.memtest86.com/download.htm "L'immagine per creare un'unità USB avviabile su un sistema Windows / Linux / Mac" va bene.
  2. Estrarre il file IMG (memtest86-usb.img)
  3. apri il file img con disk image mounter (tasto destro del mouse su Ubuntu)
  4. dall'estratto dell'immagine montata /EFI/BOOT/BOOTX64.efi
  5. crea la directory di avvio memtest86:
    sudo mkdir / boot / efi / EFI / memtest86
  6. copia il BOOTX64.efi nella tua nuova cartella sulla partizione di avvio (es. / boot / efi / EFI / memtest86)
  7. apri grub-customizer
  8. Aggiungi voce di menu, dagli un nome, scegli tipo: altro
  9. aggiungi la seguente sequenza di avvio (supponendo che tu avvii da 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. salva ed esci da grub-customizer

  2. riavvia e goditi Memtest86


Per gli altri / me: # 3 Disk Image Mounter = gnome-disk. # 6 deve essere root. # 8 Perché il tipo altro non è memtest? # 9 come fai a sapere se esegui l'avvio da hd0? [fai clic su modifica sulla voce dell'unità di avvio e copia la voce per quella setroot]. Grazie per questa eccellente risposta tra l'altro.
dez93_2000,

Se la propria ubuntu root è hd2, presumibilmente si cambia da 0 a 2 in 4 posizioni, inc ahci? Indipendentemente da ciò, viene visualizzato l'errore 1A22-970F e il file '/EFI/memtest86/BOOTX64.efi' non sono stati trovati. Il file è defo in / boot / efi / EFI / memtest86 /. qualche idea? Saluti
dez93_2000,

'errore disk hd2, gpt2 non trovato' ora appare con 'nessun tale dispositivo'; il file non trovato non viene visualizzato. non sono sicuro del perché cambierebbe ...
dez93_2000,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.