Jak mogę dodać opcje Memtest86 + z powrotem do menu Grub?


34

W przypadku korzystania z UEFI Zobacz to pytanie: „Czy mogę uruchomić memtest86 +, jeśli korzystam z UEFI?”

Po zainstalowaniu 64-bitowej wersji Ubuntu 12.04 na moim Lenovo B570 napotkałem te same problemy, które miałem podczas instalacji 11.10 z Grubem, który nie gra ładnie z systemem uEFI. Użyłem tej samej techniki, co ostatnim razem, aby rozwiązać problem (używając sesji Super Grub Disc LiveCD do naprawy Gruba), a mój system szczęśliwie podwójnie uruchamia się między Ubuntu i Windows 7

Jednak teraz, kiedy uruchamiam, wyświetla się tylko menu Grub

  • Ubuntu, z systemem Linux 3.2.0-24-generic
  • Ubuntu, z systemem Linux 3.2.0-24-generic (tryb odzyskiwania)
  • Poprzednie wersje systemu Linux
  • Windows 7 (moduł ładujący) (on / dev / sda1)
  • Środowisko odzyskiwania systemu Windows (moduł ładujący) (on / dev / sda4)

Nie widzę już opcji używania Memtest86 +, która była tam wcześniej, po sprawdzeniu w Centrum oprogramowania Ubuntu widzę, że pakiet jest zainstalowany, ale jak sprawić, aby opcja uruchomienia go ponownie pojawiła się w menu Grub?

Próbowałem:

sudo update-grub 

co nie robi żadnej różnicy.

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

prowadzi do:

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

i wchodząc

ls /etc/grub.d/

prowadzi do:

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

Spróbuj dodać skrypt, jak opisano poniżej, skopiuj go z mojego komputera, wykonaj aktualizację chmod + x i grub i sprawdź, czy to działa. Widzę, że tak - witam.
23 93 26 35 19 57 3 89

Odpowiedzi:


19

Spróbuj otworzyć terminal i uruchomić

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

Sprawdź, czy tam jest

grep memtest /boot/grub/grub.cfg

Po prostu zrobiłem to samo, co miałem wyłączony

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

Możesz spróbować utworzyć plik, jeśli go nie ma, używając nano w terminalu

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

lub z edytorem GUI

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

Wypełnij to

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

Pamiętaj, aby następnie uruchomić na nim komendę chmod + x.

Byłbym trochę zaniepokojony jego brakiem - czy masz wszystko inne w 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+spowodowało:chmod: cannot access /etc/grub.d/20_memtest86+': No such file or directory
nakrycie głowy

1
Znalazłem 20_memtest86+czai się w /etc/grub.d.bak/jakiś sposób. Przeniesiłem go na miejsce, zaktualizowałem GRUB i wszystko działało dla mnie dobrze.
Naftuli Kay

3
update-grubnie znajduje memtest binarnego bez względu na to, co robię :(
ekspert

2
czy to nie dlatego, że memtest w wersji GPL nie obsługuje EFI? Więc jeśli uruchamiasz system za pomocą EFI, nie ma sposobu, aby memtest działał przy użyciu tego, co jest dostarczane z Ubuntu?
Jeff Atwood

1
Mam następujące, X @ ubuntu: ~ $ cat /boot/grub/grub.cfg | grep memtest ### BEGIN /etc/grub.d/20_memtest86+ ### ### END /etc/grub.d/20_memtest86+ ###
user1945827

13

Miałem ten sam problem, a ze względu na to, że mam EFI na moim laptopie, memtest86 + wersja 4.x dostarczona przez ubuntu nie będzie działać, ponieważ EFI jest obsługiwany tylko przez wersję 5 i nowszą.

Najnowsze wersje nie są objęte licencją GPL i należy je pobrać ręcznie ze strony Memtest (mają obrazy ISO i USB), ale przynajmniej są bezpłatne.



Najnowsze wersje nie są objęte licencją GPL i należy je pobrać ręcznie ze strony Memtest (mają obrazy ISO i USB), ale przynajmniej są bezpłatne. memtest86 nie jest licencją GPL i jest zastrzeżony, a memtest86 + jest licencją GPL.
Ramchandra Apte

6
apt-get install memtest86+

Spowoduje to automatyczną zmianę konfiguracji gruba i dodanie pozycji do menu rozruchu.

Jeśli pojawi się błąd, memtest86+ is already the newest versionużyj sudo apt-get install --reinstall memtest86+

Jeśli wszystko inne zawiedzie, możesz uzyskać rozruchowy obraz ISO , który możesz nagrać na płytę CD i uruchomić z. Oczywiście, jeśli uruchamiasz UEFI, powinieneś tu być .


Dla serwera Ubuntu 16.04 było to dokładnie rozwiązanie. Bez apt-get install memtest86+wspomnianego pliku /etc/grub.d/20_memtest86+nie było w moim systemie.
mstrap

@mstrap, to też było rozwiązanie dla mnie. Nie rozumiem, dlaczego moja odpowiedź została dwukrotnie odrzucona.
Michael Franzl

1
To rozwiązanie nie działało dla mnie - powyższe polecenie otrzymało memtest86+ is already the newest versionkomunikat. Podejrzewam, że to rozwiązanie działa tylko w systemach spoza UEFI, podczas gdy pierwotne pytanie dotyczy konkretnie memtest w systemach UEFI.
JayDin

1
To też nie działało dla mnie, ponieważ JayDin memtest został już zainstalowany. Użyłem menedżera pakietów synaptik, aby usunąć memtest, ponownie uruchomiłem, a następnie ponownie go zainstalowałem. To rozwiązało problem.
user111667

5

Nie udało mi się sprawić, aby działało to w ciągu 2 dni, a potem sprawdziłem Synaptic pod kątem pakietów grub ... Wydaje się, że brak pakietu grub-imagebootjest przyczyną problemu.

sudo apt-get install grub-imageboot

Próbowałem tego i to nie działało.
Hitechcomputergeek,

2
Znaleziono memdisk: / boot / memdisk Ścieżka obrazu / boot / images nie znaleziono
Aaron Franke

1

To, co zrobiłem, aby dodać najnowszy (nie darmowy) memtest86 + do menu rozruchu grub dla uruchamiania UEFI. Obecna wersja memtest to 8.2. Potrzebne narzędzia: Disk Image Mounter i grub-customizer, ten drugi jest tylko dla wygody :) Pliki: memtest binary (patrz poniżej)

  1. Pobierz plik binarny memtest z: https://www.memtest86.com/download.htm „Obraz do tworzenia rozruchowego napędu USB w systemie Windows / Linux / Mac” jest w porządku.
  2. Wyodrębnij plik IMG (memtest86-usb.img)
  3. otwórz plik img za pomocą narzędzia do montowania obrazu dysku (prawy przycisk myszy na Ubuntu)
  4. z zamontowanego obrazu wypakuj /EFI/BOOT/BOOTX64.efi
  5. stwórz katalog rozruchowy memtest86:
    sudo mkdir / boot / efi / EFI / memtest86
  6. skopiuj plik BOOTX64.efi do nowego folderu na partycji rozruchowej (np. / boot / efi / EFI / memtest86)
  7. otwórz grub-customizer
  8. Dodaj pozycję menu, nadaj jej nazwę, wybierz typ: inny
  9. dodaj następującą sekwencję rozruchową (zakładając, że uruchamiasz się z 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. zapisz i wyjdź z grub-customizer

  2. uruchom ponownie i ciesz się Memtest86


Dla innych / mnie: # 3 Disk Image Mounter = gnome-disks. # 6 musi być rootem. # 8 Dlaczego typ inny nie jest memtestem? # 9, skąd wiesz, że uruchamiasz z HD0? [kliknij edytuj we wpisie napędu rozruchowego i skopiuj wpis dla tego zestawu instalacyjnego]. Dzięki za tę doskonałą odpowiedź.
dez93_2000

Jeśli czyimś rootem Ubuntu jest hd2, prawdopodobnie zmienisz 0 na 2 w 4 miejscach, w tym ahci? Niezależnie od tego pojawia się błąd, nie znaleziono takiego urządzenia 1A22-970F i nie znaleziono pliku „/EFI/memtest86/BOOTX64.efi”. Plik jest defo w / boot / efi / EFI / memtest86 /. jakieś pomysły? Pozdrawiam
dez93_2000,

„błąd dysku hd2, nie znaleziono gpt2” teraz pojawia się z „brak takiego urządzenia”; nie znaleziono pliku nie pojawia się. nie jestem pewien, dlaczego to się zmieni ...
dez93_2000
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.