Во первых, хочу сразу уточнить, что в заголовке указано «как запустить в редос» по той простой причине, что в Centos и Ubuntu проблем с установкой и запуском memtest без тайных заклинаний нет, там все отлично описано в документации. Но все ниже описанное будет работать для любого дистрибутива на x86 с загрузчиком grub, при условии что все необходимые файлы заботливо скопированы в директорию /boot/efi.
Естесственно, что я обращался к официальной документации (https://redos.red-soft.ru/base/redos-8_0/8_0-problem/8_0-test-ram/) цитата:
Чтобы протестировать оперативную память на ошибки нужно запустить ОС с загрузочной флешки или диска.
В открывшемся меню необходимо выбрать третий пункт «Решение проблем».
Затем выбрать третий пункт «Запустить тест памяти».
Запустится тест памяти. Данный процесс будет выполняться бесконечно, пока вы не остановите его. Вам нужно дождаться окончания хотя бы одного цикла проверки (значение Pass должно быть >= 1). В случае обнаружения ошибки она отобразится в списке.
Между строк там еще вставлены скрины этих пунктов меню. Естественно, что все это не работает. При загрузке системы через UEFI такого пункта меню нет. Как видно уровень всей продукции этой компании ниже чем во многих опенсорс проектах, а уж документация — вообще «шедевр».
А теперь небольшое лирическое отступление:
Как обычно в линукс одну и ту же операцию можно выполнить разными способами, но в каждом дистрибутиве есть (как правило) свой «правильный» способ. Например в Ubuntu не следует править конфиг /etc/apache2/apache2.conf, вместо этого предлагается вносить пользовательские настройки в специальный «пользовательский» конфиг, а затем активировать его специальной командой. Для таких конфигов там есть 4 директории:
conf-available
conf-enabled
mods-available
mods-enabled
sites-available
sites-enabled
Например если установить phpmyadmin из репозитория убунты, то для апача из пакета будет установлен исходник данного веб-приложения в /usr/share/, а конфиг в /etc/apache2/sites-available. Обычно это сбивает с толку людей не знакомых с инструментами администрирования убунты и они пытаются скопировать исходники в /var/www, который обычно в apache.conf указан как web root, как обычно поступают со скачанной самостоятельно с сайта производителя (https://www.phpmyadmin.net/) версией, но так делать не надо.
Вся прелесть установки чего-либо из репозитория в автоматическом получении обновлений. Т.е. если вы ставите phpmyadmin с сайта производителя, то вам придется с выходном каждой заплатки качать его ручками и самому обновлять, если же у вас phpmyadmin стоит из репозитория, то с выходом обновления оно само установится и все будет отлично, НО. Но установятся обновления в /usr/share. Таким образом, что б все правильно работало «из коробки», после установки пакета phpmyadmin нужно всего лишь «включить» новый сайт в апаче командой a2ensite, и перезапустить апач.
К чему я это все? К тому, что я пытался найти «правильное» решение для данного дистрибутива, но что-то пошло не так. В процессе гугления очередной раз осознал бесполезность нейросетей. Гугловский ИИ насыпал мне несколько «гениальных» идей, но все они не работают, т.к. расчитаны на legacy загрузку или просто являются галюцинациями данной llm.
Итак, нужный мне пункт меню я не нашел, но обнаружил пакет в репе:
========================================================================================= Имя совпадение: memtest86 =========================================================================================
memtest86+.x86_64 : Stand-alone memory tester for x86-64 computers
memtest86+.i686 : Автономный тестер памяти для x86-64 компьютеров
Установил, а как его теперь в загрузчик добавить? Никаких специализированых команд (как grub-update в убунте) в редоси нет.
grub2-mkconfig -O /boot/grub2/grub.cfg
не поможет, т.к. груб не знает о новом пакете ничего, но это не удивительно, т.к. из пакета memtest86+ установились вот такие файлы:
[serp@host ~]$ rpm -ql memtest86+
/usr/lib64/memtest86+
/usr/lib64/memtest86+/memtest86+x64.bin
/usr/lib64/memtest86+/memtest86+x64.efi
/usr/share/doc/memtest86+
/usr/share/doc/memtest86+/README.md
/usr/share/licenses/memtest86+
/usr/share/licenses/memtest86+/LICENSE
/usr/share/memtest86+
/usr/share/memtest86+/memtest86+x64.iso
Как видно, даже манов в этом пакете нет. Есть один текстовый ридми, но он во первых не переведен (это на дистрибутиве который на сайте производителя значится как «Российская операционная система для серверов и рабочих станций», мало того, там еще написано что они 19 лет на рынке. Видимо 18 лет из них данная компания работала на каком-то овощном рынке но стыдливо об этом умалчивает), во вторых файл судя по всему устарел.
Итак, вопрос «как правильно добавить memtest86+ в меню grub2» остается открытым, пришлось все делать на коленке.
Что мы имеем? По факту из пакета встало 3 файла: bin, efi и iso. bin — это для legacy загрузки, efi — для UEFI, iso — не проверял, но наверное для создания загрузочной флешки. Мне нужен был файл efi, но запускать его грабом прямо из директории /usr/share/memtest86+/ так себе идея, т.к. не факт что граб сможет получить туда доступ (тут все зависит от того на какой файловой системе у вас данная директория лежит, ибо грабу нужны плагины для возможности работать с разными ФС) поэтому я скопировал файл memtest86+x64.efi в директорию /boot/efi/EFI/redos, т.к. обычно директория /boot/efi находится на разделе vfat, а эту файловую систему поддерживают все загрузчики.
Собственно, после того как скопировали файлики перезагружаем систему и в меню граба нажимаем «C», после чего попадаем в grub shell. Теперь нам нужно найти раздел на котором находится директория в которую вы положили файл memtest86+x64.efi:
grub> search.file /boot/efi/EFI/redos/memtest86+x64.efi
hd0,gpt1
grub>
раздел нашли, теперь главное заклинание:
insmod part_gpt
insmod fat
set root=(hd0,gpt1)
chainloader ($root)/efi/redos/memtest86+x64.efi
boot
Т.е. загружаем модули ядра для файловой системы и таблицы разделов, указываем раздел, файл для загрузки на нем и команда boot запускает этот процесс, если после команды boot получаешь ошибку — то нужно проверить в каком режиме загрузилась система, возможно вы не в efi режиме, или файл не может найти.