Як я можу додати параметри 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-generic
  • Ubuntu, з Linux 3.2.0-24-generic (режим відновлення)
  • Попередні версії Linux
  • Windows 7 (завантажувач) (on / dev / sda1)
  • Середовище відновлення Windows (завантажувач) (on / dev / sda4)

Я більше не бачу можливості використовувати Memtest86 +, який був там раніше, перевіривши в Центрі програмного забезпечення Ubuntu, я можу побачити, що пакет встановлений, але як зробити так, щоб його запустити ще раз з'явилося в меню 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+

або з редактором gui

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, і для мене все працювало чудово.
Naftuli Kay

3
update-grubне знаходить бінарного запису, що б я не робив :(
експерт

2
Хіба це не тому, що GPL-версії memtest не підтримують EFI? Отже, якщо ви завантажуєтесь через EFI, немає можливості змусити сповіщення працювати, використовуючи те, що постачається з Ubuntu ??
Джефф Етвуд

1
Я отримав наступне, X @ ubuntu: ~ $ cat /boot/grub/grub.cfg | grep memtest ### BEGIN /etc/grub.d/20_memtest86+ ### ### END /etc/grub.d/20_memtest86+ ###
користувач1945827

13

У мене був такий самий випуск, і через те, що у мене є EFI на своєму ноутбуці, memtest86 + версія 4.x, що постачається ubuntu, не буде працювати, оскільки EFI підтримується лише версією 5 і новішою.

Останні версії не є GPL, і їх потрібно завантажувати вручну з найменшого веб-сайту (у них є зображення ISO та USB), але принаймні вони безкоштовні.



Останні версії не є GPL, і їх потрібно завантажувати вручну з найменшого веб-сайту (у них є зображення 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, який ви можете записати на компакт-диск та завантажувати з нього. Звичайно, якщо ви завантажуєте UEFI, ви повинні бути тут.


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

@mstrap, це рішення було і для мене. Я не розумію, чому мені відповіли двічі.
Майкл Францл

1
Це рішення для мене не спрацювало - вищевказана команда отримала memtest86+ is already the newest versionповідомлення. Я підозрюю, що це рішення працює лише для систем, що не належать до УЄФІ, тоді як оригінальне запитання стосується конкретних записів щодо систем УЄФІ.
JayDin

1
Для мене це також не спрацювало, як уже встановлено пам’ятку JayDin. Я використовував менеджер пакунків synaptik, щоб видалити memtest, перезавантажився, після чого знову встановив його. Це вирішило для мене проблему.
користувач111667

5

Мені не вдалося зробити цю роботу за 2 дні, тоді я перевірив Synaptic на наявність групових пакетів ... Здається, відсутність пакету grub-imageboot- корінь проблеми.

sudo apt-get install grub-imageboot

Я спробував це, і це не вийшло.
Hitechcomputergeek

2
Знайдено memdisk: / boot / memdisk Imagepath / boot / зображення не знайдено
Aaron Franke

1

Це те, що я зробив, щоб додати останній (не безкоштовний) memtest86 + до меню завантаження grub для завантаження UEFI. Поточна версія сповіщення - 8,2. Необхідні інструменти: Диск Image Mounter та налаштування grub, останній призначений лише для зручності :) Файли: бінарні записи (див. Нижче)

  1. Завантажте найпопулярніший бінарний файл: 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-customizer
  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 Диск Image Mounter = gnome-disks. # 6 повинен бути кореневим. № 8 Чому тип інших не пам’ятає? № 9 як дізнатися, чи завантажуєте ви з hd0? [натисніть «Редагувати» у записі завантажувального диска та скопіюйте запис для цієї установки. Дякую за відмінну відповідь btw.
dez93_2000

Якщо один з коренів ubuntu - hd2, імовірно, ви змінюєте 0 на 2 у 4-х місцях, в тому числі ахці? Незалежно від того, що я отримую помилку, жодного такого пристрою 1A22-970F & файл '/EFI/memtest86/BOOTX64.efi' не знайдено. Файл дефольовано в / boot / efi / EFI / memtest86 /. Будь-які думки? Ура
дез93_2000

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