LINUX.ORG.RU
ФорумAdmin

Как в мультизагрузочную флешку добавить memtest86 10 версии?

 


0

2

Здравствуйте, коллеги!

Возникла задача сделать некую утилитарную флешку со средствами тестирования дисков, памяти и прочих утилитарных приблуд. Типа эдакого rescue disk.

Большая часть работы уже проделана. Затык оказался с memtest86.

Скачал с сайта https://www.memtest86.com/downloads/memtest86-usb.zip распаковал. Из всего, что там есть, на моу взгляд, интересен лишь memtest86-usb.img. Нужно всего лишь вытащить из образа непосредственно memtest, посмотреть как он там прописан в загрузчике и повторить эту запись в grub.cfg загрузочной флешки.

Казалось бы, что может быть проще?

# fdisk -l memtest86-usb.img 
Диск memtest86-usb.img: 1 GiB, 1073741824 байт, 2097152 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: gpt
Идентификатор диска: F2710038-86B6-4948-9A58-56F4E2EFB775

Устр-во             начало   Конец Секторы Размер Тип
memtest86-usb.img1    2048  524287  522240   255M Microsoft basic data
memtest86-usb.img2  524288 1048575  524288   256M EFI
memtest86-usb.img3 1048576 2097118 1048543   512M Microsoft basic data

Первая странность: целых 3 раздела!

Где-то на сайте нашел инструкцию как добраться до самой программы. Сейчас найти не смог, но history все помнит!

# mount -o loop,offset=263192576 memtest86-usb.img /mnt
# mount: /mnt: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.
       dmesg(1) may have more information after failed mount system call.

О как!

Ну да ладно. Берем в мозолистые руки loosetup!

# losetup -f memtest86-usb.img -P
# losetup -a
/dev/loop0: [0035]:4069625 (/root/memtest86-usb.img)
[root@dragonfly ~]# ls /dev/loop*
/dev/loop0  /dev/loop0p1  /dev/loop0p2  /dev/loop0p3  /dev/loop-control

Все замечательно. Имеем сам образ в /dev/loop0, разделы /dev/loop0p{1,2,3}

Интуиция подсказывает, что все самое интересное расположено на /dev/loop0p3, но не будем торопиться. Посмотрим, что же мы имеем на первых двух разделах:

# mount /dev/loop0p1 /mnt
# tree /mnt
/mnt
├── EFI
│   └── BOOT
│       ├── Benchmark
│       ├── blacklist.cfg
│       ├── BOOTAA64.efi
│       ├── BOOTIA32.efi
│       ├── BOOTX64.efi
│       ├── mt86.png
│       └── unifont.bin
├── help
│   └── MemTest86_User_Guide_UEFI.pdf
└── license.rtf

5 directories, 8 files

Стандартный ESP раздел. Ни чего интересного! Посмотрим, что на втором:

# umount /mnt
# mount /dev/loop0p2 /mnt
# tree /mnt
/mnt
├── EFI
│   └── BOOT
│       ├── Benchmark
│       ├── blacklist.cfg
│       ├── BOOTAA64.efi
│       ├── BOOTIA32.efi
│       ├── BOOTX64.efi
│       ├── mt86.png
│       └── unifont.bin
├── help
│   └── MemTest86_User_Guide_UEFI.pdf
└── license.rtf

5 directories, 8 files

Хм… Что-то мне это напоминает… О! /dev/loop0p1! Странно…

# umount /mnt
# umount /mnt
# mount /dev/loop0p3 /mnt
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/loop0p3, missing codepage or helper program, or other error.
       dmesg(1) may have more information after failed mount system call.

О как!

lsblk -o path,fstype /dev/loop0
PATH         FSTYPE
/dev/loop0   
/dev/loop0p1 vfat
/dev/loop0p2 vfat
/dev/loop0p3

И правда. /dev/loop0p3 без fs!

Хрень какая-то…

Запилил флешку:

# dd if=memtest86-usb.img of=/dev/sdc bs=1G
1+0 records in
1+0 records out
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 53,4333 s, 20,1 MB/s
# mount /dev/sdc3 /mnt
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/sdc3, missing codepage or helper program, or other error.
       dmesg(1) may have more information after failed mount system call.

Что не удивительно. Ведь /dev/loop0p3 монтироваться у нас ранее отказывался.

Но, блин!

С этой флешки memtest грузится и даже что-то проверяет!

Но мне совсем не хочется выделять под memtest отдельную флешку! Мне все нужно на однй! Пытался заставить gfrub загрузить memtest из образа memtest86-usb.img, но тут я слабоват.

Вроде, нужно как-то через chainloader, но это я не умею :(



Последнее исправление: HighMan (всего исправлений: 1)

Вообще там рядом с загрузкой есть документация https://www.memtest86.com/downloads/MemTest86_User_Guide_UEFI.pdf

А ещё обычно в репозиториях системы есть пакет, в моём случае

$ pacman -Ql memtest86+
memtest86+ /boot/
memtest86+ /boot/memtest86+/
memtest86+ /boot/memtest86+/memtest.bin
memtest86+ /etc/
memtest86+ /etc/grub.d/
memtest86+ /etc/grub.d/60_memtest86+

И там есть всё готовенькое для загрузки.

Flotsky ★★
()

Возьми memtest86+, там можно скачать просто EFI-бинарник, не говоря уже об отсутствии ограничений функциональности.

anonymous
()

Когда они еще только отказались от iso и перешли на img немного с ним повозился.

В общем случае, BOOT*.efi это и есть мемтест. Копируй его на флешку и запускай, как любой ефи-загрузчик.

andytux ★★★★★
()

Но мне совсем не хочется выделять под memtest отдельную флешку! Мне все нужно на однй! Пытался заставить gfrub загрузить memtest из образа memtest86-usb.img, но тут я слабоват.

Установи на флешку Ventoy и просто скопируй туда memtest86.iso

anonymous
()
Ответ на: комментарий от anonymous

Вот и фанаты Ventoy подтянулись.

Действительно интересно. Ventoy сможет с ним справиться? Если сможет, то сколько места это займет?

andytux ★★★★★
()
Последнее исправление: andytux (всего исправлений: 1)

Интерестно, как у вас большая часть работы проделана, если chainloader вы не осилили? Флешка то хоть мультизагрузочная, и в UEFI и в CSM? Так вам в принципе, всё расписали, и что *.efi-файлы это и есть MemTest, а не " Ни чего интересного! ". И доку показали, где пример с chainloader приведён.

MemTest v.10 только EFI, где-то ещё можно найти v.4, она CSM. MemTest+ (последний), ЕМНИП, есть и CSM и EFI, и это разные файлы.

Конфиг grub'а, ИМХО, лучше целиком писать руками, и если нужна мультизагрузка, то бить конфиг на части:

 if [ "$grub_platform" = "pc" ]; then
   ...
 fi
 if [ "$grub_platform" = "efi" ]; then
   ...
 fi

mky ★★★★★
()
Ответ на: комментарий от token_polyak

Полгига мемтест! Это еще старая версия. О которой пишет TC - гигабайт. Недавно вся система в сотню мегабайт помещалась. Хотя реально он занимает полтора мегабайта.

andytux ★★★★★
()