Александр Попов (athunder) wrote,
Александр Попов
athunder

Category:

Добавление memtest86 к загрузчику Grub2 в Ubuntu с UEFI

После установки Ubuntu memtest86+ автоматом появился в меню загрузчика grub, так что тестировать память можно было без создания загрузочной флешки. И всё было прекрасно до появления UEFI. На древнем компьютере без UEFI всё также есть строчка memtest в загрузчике, но она исчезает из-за отсутствия поддержки UEFI у memtest86+.

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.efi
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 может понадобиться при восстановлении системы, когда при загрузке возникнет сообщение об ошибке, запрещающее небезопасную загрузку.
Tags: linux, ubuntu, компьтерная техника, программное обеспечение, тестирование
Subscribe

Posts from This Journal “ubuntu” Tag

promo athunder may 26, 2013 11:36 17
Buy for 10 tokens
Вы можете вернуть процент с покупок, используя специализированные Интернет сервисы возврата наличных (cash back, кешбэк, кэшбэк, кэшбек). Такие сервисы предоставляют ссылки на Интернет-магазины. Переходя по ним и совершая покупки, вы получаете процент в виде наличных обратно. Если обычные сайты…
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments