Как я могу добавить опции Memtest86+ обратно в меню Grub?
После установки 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
6 ответов
Попробуйте открыть терминал и запустить
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
apt-get install memtest86+
Это автоматически перенастроит grub и добавит запись в меню загрузки.
Если вы получили ошибку memtest86+ is already the newest version
затем используйте sudo apt-get install --reinstall memtest86+
Если ничего не помогает, вы можете получить загрузочный ISO-образ, который вы можете записать на CD и загрузить с него. Конечно, если вы загружаете UEFI, вы должны быть здесь.
У меня была та же проблема, и из-за того, что у меня на ноутбуке EFI, memtest86+ версия 4.x, поставляемая с Ubuntu, не будет работать, так как EFI поддерживается только версией 5 и новее.
Последние версии не-GPL и должны быть загружены вручную с сайта memtest (они имеют образы ISO и USB), но, по крайней мере, они бесплатны.
Мне не удалось сделать эту работу за 2 дня, затем я проверил Synaptic для пакетов grub... Кажется, что отсутствие пакета grub-imageboot
являются корнем проблемы.
sudo apt-get install grub-imageboot
Это то, что я сделал, чтобы добавить последний (не бесплатный) memtest86+ в меню загрузки grub для загрузки UEFI. Текущая версия memtest - 8.2. Необходимые инструменты: Disk Image Mounter и grub-customizer, последний только для удобства:) Файлы: бинарный файл memtest (см. Ниже)
- Загрузите двоичный файл memtest по адресу: https://www.memtest86.com/download.htm"Образ для создания загрузочного USB-накопителя в системе Windows/Linux/Mac" в порядке.
- Извлеките файл IMG (memtest86-usb.img)
- откройте файл img с помощью установщика образа диска (правая кнопка мыши в Ubuntu)
- извлеките из смонтированного образа /EFI/BOOT/BOOTX64.efi
- сделать загрузочный каталог memtest86:
sudo mkdir / boot / efi / EFI / memtest86
- скопируйте BOOTX64.efi в новую папку в загрузочном разделе (например, /boot/efi/EFI/memtest86)
- открыть grub-кастомайзер
- Добавить пункт меню, дать ему имя, выбрать тип: другое
- добавьте следующую последовательность загрузки (при условии, что вы загружаетесь с 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
сохранить и выйти из grub-customizer
перезагрузись и наслаждайся Memtest86
См. также этот ответ на Unix StackExchange. Короче говоря, ядро Linux имеет встроенный простой тест памяти.
Делать
grep CONFIG_MEMTEST "/boot/config-$(uname -r)"
чтобы определить, включен он или нет (он будет закомментирован, если он не включен).
Затем отредактируйте
/etc/default/grub
и добавить
memtest
к
GRUB_CMDLINE_LINUX_DEFAULT
, бежать
sudo update-grub
, а затем перезагрузитесь.
Как только он завершит загрузку (это займет больше времени, чем обычно, поскольку он также должен запустить тест памяти), проверьте
/var/log/kern.log
за результат теста.