当前位置: 首页>>技术教程>>正文


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

,

问题描述

If using UEFI Please see this question, “Can I boot memtest86+ if I’m using UEFI?”

在我的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

最佳方法

尝试打开终端并运行

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

次佳方法

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

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

第三种方法

apt-get install memtest86+

这将自动重新配置grub并将条目添加到启动菜单。

如果收到错误memtest86+ is already the newest version,请使用sudo apt-get install --reinstall memtest86+

如果所有其他方法均失败,则可以获得bootable ISO,您可以将其刻录到CD并从中启动。当然,如果要启动UEFI,则应为here instead.

第四种方法

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

sudo apt-get install grub-imageboot

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11160.html,未经允许,请勿转载。