memtest86 стал продолжением memtest86+. Хотя последний - это уже продукт, принадлежащей коммерческой структур, он доступен для бесплатного использования.
memtest86 можно скачать с сайта memtest86.com/download.htm. Версия 9 этого приложения доступна только для UEFI. Скачиваемый архив memtest86-usb.zip содержит файл memtest86-usb.img, а также другие файлы, которые нам не понадобятся. Образ .img легко открывается в Ubuntu в виде папки, для чего достаточно в файловом менеджере открыть .img образ при помощи Disk Image Mounter (можно конечно воспользоваться и командой mount, но лень рассчитывать смещение) или даже простого файлового менеджера, например, PCManFM.
Можно скопировать при помощи файлового менеджера содержимое образа в папку, например, ~/Downloads/memtest.
Содержимое образа можно нужно скопировать в /boot/efi/EFI/, создав в последней папке, например, подпапку memtest.
sudo mkdir /boot/efi/EFI/memtest
Но достаточно скопировать не всё содержимое образа, а только содержимое подпапки /BOOT/EFI:
sudo cp -r ~/Downloads/memtest/EFI/BOOT/ /boot/efi/EFI/memtest/
При копировании при помощи cp директория
/boot/efi/EFI/memtest создаётся автоматически, т.ч. можно обойтись без mkdir.
Далее приступаем к изменениям в загрузчике grub. Можно конечно воспользоваться grub-customizer, но данное приложение может привести к такому количеству проблем, что лучше вместо этого поработать ручкам.
В папке /etc/grub нужно создать новый файл, который не перезапишет старый. В моём случае это был /etc/grub.d/50_memtest
sudo gedit /etc/grub.d/50_memtest
Далее добавляем в созданный текстовый файл (в моём случае /etc/grub.d/50_memtest) chainloader для нужного .efi файла
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry 'memtest86' {
insmod part_gpt
insmod fat
set root='hd2,gpt3'
chainloader /efi/memtest/bootx64.efi
}
В set root значение берётся вовсе не произвольно. Если у меня EFI раздел находится на sdc3 (посмотреть можно при помощи disks или gparted), то это третье устройство (поэтом hd2, т.к. индексы начинаются с нуля) и gpt3, потому как sdc3.
Если у вас EFI раздел на sda2, то первый диск (a) превратится в hd0, а sd2 в gpt2 и получим (hd0,gpt2).
Если у вас EFI раздел на sdb1, то второй диск (b) превратится в hd1, а sd1 в gpt1 и получим (hd1,gpt1).
Могут быть и другие разделы, но логика останется прежней.
После сохранения текстового файла, нужно предоставить доступ к нему:
sudo chown root:root /etc/grub.d/50_memtest
sudo chmod 755 /etc/grub.d/50_memtest
Далее обновляем grub
sudo update-grub
Успешное выполнение последней команды в моём случае привело к появлению следующего сообщения:
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.11.0-34-generic
Found initrd image: /boot/initrd.img-5.11.0-34-generic
Found linux image: /boot/vmlinuz-5.11.0-31-generic
Found initrd image: /boot/initrd.img-5.11.0-31-generic
Found Windows Boot Manager on /dev/sdc3@/EFI/Microsoft/Boot/bootmgfw.e fi
Adding boot menu entry for UEFI Firmware Settings
done
Хотя в последнем сообщении нет ни строчки про memtest, главное - что нет ошибок. После перезагрузки компьютера в grub есть строка с memtest и тестировать память можно сразу после запуска компьютера, без дополнительных загрузочных дисков.
Интересено, что в пути "/efi/memtest/bootx64.efi" все буквы в файле /etc/grub.d/50_memtest строчные, хотя в Linux названия папок могут быть и с заглавными буквами. Вроде бы fat32 раздел. Но когда использовал /EFI/memtest/BOOTX64.efi, то после выполнения update-grub получал следующую ошибку:
Found memdisk: /boot/memdisk
Imagepath /boot/images not found
С такой ошибкой строчка c memtest в загрузчике grub после перезагрузки компьютера появлялась, но запускаться memtest не хотел, (возникала ошибка, что файл не найден системой).
Перед перезагрузкой можно выполнить команду
awk -F\' '/menuentry / {print $2}' /boot/grub/grub.cfg
которая покажет, какие пункты присутствуют в меню grub
Ubuntu
Ubuntu, with Linux 5.11.0-34-generic
Ubuntu, with Linux 5.11.0-34-generic (recovery mode)
Ubuntu, with Linux 5.11.0-31-generic
Ubuntu, with Linux 5.11.0-31-generic (recovery mode)
Windows Boot Manager (on /dev/sdc3)
UEFI Firmware Settings
memtest86
Ещё одна проблема, с которой столкнулся - невозможность запуска memtest86 из grub из-за ошибки
disk not found 'hd2,gpt3'
При этом поначалу всё работало, а после по непонятной причине повторить запуск memtest86 не удавалось. Оказалось, что подключенное USB устройство (электронная книжка стояла на зарядке через компьютерный порт) меняло порядок дисков, поэтому нужный и не находился. После отключения устройства memtest86 прекрасно работал.
p.s. Пока возился в UEFI, обнаружил, что у меня отключена безопасная загрузка (UEFI Secure Boot). Ubuntu в первый раз устанавливалась, когда других вариантов не было. Но сейчас безопасную загрузку можно спокойно включить. При этом из grub прекрасно запускаются Ubuntu 21.04, Windows 10 и memtest86. Отключение Secure Boot может понадобиться при восстановлении системы, когда при загрузке возникнет сообщение об ошибке, запрещающее небезопасную загрузку.
Journal information