如何将Memtest86 +选项添加回Grub菜单?


34

如果使用UEFI,请参阅此问题:如果使用UEFI,可以启动memtest86 +吗?”

在我的Lenovo B570上安装了64位版本的Ubuntu 12.04之后,我遇到了与在使用grub的11.10上安装uEFI系统不能很好地工作时相同的问题。我使用了与上次相同的技术来解决该问题(使用Super Grub Disc LiveCD会话修复Grub),并且我的系统在Ubuntu和Windows 7之间愉快地进行了双启动。

但是现在当我启动时,Grub菜单仅显示

  • Ubuntu,具有Linux 3.2.0-24-generic
  • Ubuntu,具有Linux 3.2.0-24-通用(恢复模式)
  • 先前的Linux版本
  • Windows 7(加载程序)(在/ dev / sda1上)
  • Windows恢复环境(加载程序)(在/ dev / sda4上)

在Ubuntu软件中心检查完安装包后,我再也看不到使用Memtest86 +的选项了,但是我如何使该选项再次运行以显示在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

Answers:


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
Covernail

1
我发现20_memtest86+潜伏在/etc/grub.d.bak/某种程度上。将其移动到位,更新了GRUB,一切对我来说都很好。
Naftuli Kay

3
update-grub无论我做什么都找不到memtest二进制文件:(
专家

2
这不是因为memtest的GPL版本不支持EFI吗?因此,如果您通过EFI引导,则无法使用Ubuntu随附的工具使memtest正常工作?
杰夫·阿特伍德

1
我得到以下X @ ubuntu:〜$ cat /boot/grub/grub.cfg | grep memtest ###开始/etc/grub.d/20_memtest86+ ### ### END /etc/grub.d/20_memtest86+ ###
user1945827

13

我遇到了同样的问题,并且由于我的笔记本电脑上装有EFI,ubuntu随附的memtest86 +版本4.x无法使用,因为EFI仅受版本5和更高版本的支持。

最新版本不是GPL,必须从memtest网站手动下载(它们具有ISO和USB映像),但至少它们是免费的。



最新版本不是GPL,必须从memtest网站手动下载(它们具有ISO和USB映像),但至少它们是免费的。memtest86是非GPL且专有的,而memtest86 +是GPL。
Ramchandra Apte

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

@mstrap,这也是我的解决方案。我不明白为什么我的答案被否决了两次。
Michael Franzl

1
该解决方案对我不起作用-上面的命令收到了一条memtest86+ is already the newest version消息。我怀疑此解决方案仅适用于非UEFI系统,而最初的问题专门针对UEFI系统上的内存测试。
JayDin

1
这对我也不起作用,例如已经安装了JayDin memtest。我使用synaptik软件包管理器删除了memtest,重新启动然后重新安装了它。这为我解决了问题。
user111667

5

我没有在两天内设法完成这项工作,然后我检查了Synaptic的grub软件包...似乎是,缺少软件包grub-imageboot是问题的根源。

sudo apt-get install grub-imageboot

我试过了,但是没有用。
Hitechcomputergeek

2
找到的内存磁盘:/ boot / memdisk映像路径/ boot / images找不到
Aaron Franke

1

我所做的就是将最新的(非免费的)memtest86 +添加到用于UEFI引导的grub引导菜单中。当前的memtest版本是8.2。所需工具:磁盘映像安装程序和grub-customizer,后者仅为方便起见:)文件:memtest二进制文件(请参见下文)

  1. 从以下位置下载memtest二进制文件:https ://www.memtest86.com/download.htm “在Windows / Linux / Mac系统上创建可启动USB驱动器的映像”很好。
  2. 提取IMG文件(memtest86-usb.img)
  3. 使用磁盘映像安装程序打开img文件(Ubuntu上的鼠标右键)
  4. 从安装的映像解压缩/EFI/BOOT/BOOTX64.efi中
  5. 制作memtest86引导目录:
    须藤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 Disk Image Mounter = gnome-disks。#6必须是root。#8为什么其他类型不是memtest?#9您如何知道是否从hd0引导?[单击启动驱动器条目上的编辑,然后复制该setroot的条目]。谢谢您的出色回答。
dez93_2000

如果一个人的ubuntu根是hd2,那么大概您将4个地方的0更改为2,inc ahci?无论我收到什么错误,都找不到这样的设备1A22-970F和文件'/EFI/memtest86/BOOTX64.efi'。文件位于/ boot / efi / EFI / memtest86 /中。有什么想法吗?干杯
dez93_2000

现在出现“找不到错误磁盘hd2,gpt2”,并显示“无此设备”;找不到文件未出现。不知道为什么会改变...
dez93_2000
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.