Как я могу добавить опции Memtest86 + обратно в меню Grub?


34

Если вы используете UEFI, пожалуйста, посмотрите этот вопрос: «Могу ли я загрузить memtest86 +, если я использую UEFI?»

После установки 64-битной версии Ubuntu 12.04 на мой Lenovo B570 я столкнулся с теми же проблемами, что и при установке 11.10 с Grub, который плохо играл с системой uEFI. Я использовал ту же технику, что и в прошлый раз, чтобы решить эту проблему (используя сеанс Super Grub Disc LiveCD для восстановления Grub), и моя система с радостью сделала две загрузки между Ubuntu и Windows 7

Однако теперь, когда я загружаюсь, меню Grub отображает только

  • Ubuntu, с Linux 3.2.0-24-универсальный
  • Ubuntu, с Linux 3.2.0-24-generic (режим восстановления)
  • Предыдущие версии Linux
  • Windows 7 (загрузчик) (в / dev / sda1)
  • Среда восстановления Windows (загрузчик) (on / dev / sda4)

Я больше не вижу возможности использовать Memtest86 +, которая была там ранее, проверив в Ubuntu Software Center, я могу видеть, что пакет установлен, но как мне сделать так, чтобы опция его запуска снова появлялась в меню Grub?

Я пробовал:

sudo update-grub 

который не имеет никакого значения.

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

результаты в:

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

и входя

ls /etc/grub.d/

результаты в:

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

Попробуйте добавить скрипт, как описано ниже, скопируйте его с моего компьютера, выполните обновление chmod + x и grub и посмотрите, работает ли он. Я вижу, ты сделал - добро пожаловать.
23 93 26 35 19 57 3 89

Ответы:


19

Попробуйте открыть терминал и запустить

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

Проверьте, если это там

grep memtest /boot/grub/grub.cfg

Просто сделал так же, как у меня было отключено

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

Вы можете попробовать создать файл, если его там нет, используя nano в терминале.

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

или с графическим редактором

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

Заполните его

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

Обязательно выполните команду chmod + x на нем впоследствии.

Я был бы немного обеспокоен тем, что он отсутствует - у вас есть все остальное в 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+Результатом стало:chmod: cannot access /etc/grub.d/20_memtest86+': No such file or directory
обложка

1
Я нашел как-то 20_memtest86+скрывающийся /etc/grub.d.bak/. Переместил его на место, обновил GRUB и у меня все заработало нормально.
Нафтули Кей

3
update-grubне находит бинарный файл memtest независимо от того, что я делаю :(
эксперт

2
разве это не потому, что версии memtest под GPL не поддерживают EFI? Так что, если вы загружаетесь через EFI, нет способа заставить memtest работать, используя то, что поставляется с Ubuntu ??
Джефф Этвуд

1
Я получил следующее, X @ ubuntu: ~ $ cat /boot/grub/grub.cfg | grep memtest ### BEGIN /etc/grub.d/20_memtest86+ ### ### END /etc/grub.d/20_memtest86+ ###
user1945827

13

У меня была та же проблема, и из-за того, что у меня на ноутбуке EFI, memtest86 + версия 4.x, поставляемая с Ubuntu, не будет работать, так как EFI поддерживается только версией 5 и новее.

Последние версии не-GPL и должны быть загружены вручную с сайта memtest (они имеют образы ISO и USB), но, по крайней мере, они бесплатны.



Последние версии не-GPL и должны быть загружены вручную с веб-сайта memtest (они имеют образы ISO и USB), но, по крайней мере, они бесплатны. memtest86 не является GPL и проприетарным, а memtest86 + является GPL.
Рамчандра Апте

6
apt-get install memtest86+

Это автоматически перенастроит grub и добавит запись в меню загрузки.

Если вы получили ошибку, memtest86+ is already the newest versionиспользуйте sudo apt-get install --reinstall memtest86+

Если ничего не помогает, вы можете получить загрузочный ISO-образ, который вы можете записать на CD и загрузить с него. Конечно, если вы загружаете UEFI, вы должны быть здесь.


Для сервера Ubuntu 16.04 это было именно то решение. Без apt-get install memtest86+упомянутого файла /etc/grub.d/20_memtest86+не было в моей системе.
Мастрап

@mstrap, это тоже было решением для меня. Я не понимаю, почему мой ответ был отклонен дважды.
Майкл

1
Это решение не сработало для меня - вышеприведенная команда получила memtest86+ is already the newest versionсообщение. Я подозреваю, что это решение работает только для систем, отличных от UEFI, в то время как исходный вопрос конкретно касается memtest в системах UEFI.
JayDin

1
У меня это тоже не сработало, как будто JayDin memtest уже был установлен. Я использовал менеджер пакетов synaptik, чтобы удалить memtest, перезагрузил и переустановил его. Это решило проблему для меня.
user111667

5

Мне не удалось сделать это за 2 дня, затем я проверил Synaptic на наличие пакетов grub ... Похоже, что grub-imagebootпричиной проблемы является отсутствие пакетов .

sudo apt-get install grub-imageboot

Я попробовал это, и это не сработало.
Hitechcomputergeek

2
Обнаружен memdisk: / boot / memdisk Imagepath / boot / образы не найдены
Аарон Франке

1

Это то, что я сделал, чтобы добавить последний (не бесплатный) memtest86 + в меню загрузки grub для загрузки UEFI. Текущая версия memtest - 8.2. Необходимые инструменты: Disk Image Mounter и grub-customizer, последний только для удобства :) Файлы: бинарный файл memtest (см. Ниже)

  1. Загрузите двоичный файл memtest по адресу: https://www.memtest86.com/download.htm «Образ для создания загрузочного USB-накопителя в системе Windows / Linux / Mac» в порядке.
  2. Извлеките файл IMG (memtest86-usb.img)
  3. откройте файл img с помощью установщика образа диска (правая кнопка мыши в Ubuntu)
  4. извлеките из смонтированного образа /EFI/BOOT/BOOTX64.efi
  5. сделать загрузочный каталог memtest86:
    sudo mkdir / boot / efi / EFI / memtest86
  6. скопируйте BOOTX64.efi в новую папку в загрузочном разделе (например, / boot / efi / EFI / memtest86)
  7. открыть grub-кастомайзер
  8. Добавить пункт меню, дать ему имя, выбрать тип: другое
  9. добавьте следующую последовательность загрузки (при условии, что вы загружаетесь с 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. сохранить и выйти из grub-customizer

  2. перезагрузись и наслаждайся Memtest86


Для других / меня: # 3 Disk Image Mounter = gnome-disk. № 6 должен быть root. # 8 Почему тип other не является memtest? # 9 как узнать, загружаешься ли ты с hd0? [нажмите «Изменить» на записи загрузочного диска и скопируйте запись для этого setroot]. Спасибо за этот отличный ответ, кстати.
dez93_2000

Если у вас в корне Ubuntu hd2, то, вероятно, вы меняете 0 на 2 в 4 местах, inc ahci? Независимо от того, что я получаю сообщение об ошибке, нет такого устройства 1A22-970F и файл '/EFI/memtest86/BOOTX64.efi' не найден. Файл находится в / boot / efi / EFI / memtest86 /. Есть предположения? Приветствия
dez93_2000

«ошибка диска hd2, gpt2 не найден» теперь отображается с «нет такого устройства»; файл не найден не появляется не уверен, почему это изменится ...
dez93_2000
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.