Есть ли бесплатная альтернатива memtest86 + с открытым исходным кодом, которая работает с UEFI?

Итак, вы хотите найти во всех файлах .ksh в вашем текущем каталоге строку gmail и outlook и исключить строки, начинающиеся с # и записать вывод в a.log .

Хорошо grep -P "^ (? = [^ #]) (. * Gmail. * |. * Outlook. *)" * .Ksh> a.log

5
24.04.2018, 18:07
2 ответа

Да, PCMemTest — это переработанный Memtest86+, который можно загрузить из UEFI. У него все еще есть одно ограничение при загрузке из UEFI :: если CSM не включен, клавиатуру нельзя использовать, что означает, что конфигурацию нельзя изменить.

Кроме того, само ядро ​​Linux содержит инструмент проверки памяти :опция memtestбудет запускать проверку памяти с использованием до 17 шаблонов (в настоящее время ). Если вы добавите memtestк параметрам загрузки вашего ядра, оно будет запускать все тесты при загрузке и резервировать любые сбойные адреса, чтобы они не использовались. Если вы хотите меньше тестов, вы можете указать количество шаблонов (memtest=8, например ).

Это не так обширно, как тесты Memtest86+, но все же дает довольно хорошие результаты.

Некоторые ядра дистрибутива не включают эту функцию; вы можете проверить, доступен ли он, выполнив поискCONFIG_MEMTESTв конфигурации вашего ядра (try/boot/config-$(uname -r)). Ядро не будет жаловаться, если вы укажете memtest, но оно его не поддерживает; когда он запустится, вы должны увидеть вывод, например

[    0.000000] early_memtest: # of tests: 17
[    0.000000]   0x0000000000010000 - 0x0000000000099000 pattern 4c494e5558726c7a
[    0.000000]   0x0000000000100000 - 0x0000000003800000 pattern 4c494e5558726c7a
[    0.000000]   0x000000000500d000 - 0x0000000007fe0000 pattern 4c494e5558726c7a
[    0.000000]   0x0000000000010000 - 0x0000000000099000 pattern eeeeeeeeeeeeeeee
[    0.000000]   0x0000000000100000 - 0x0000000003800000 pattern eeeeeeeeeeeeeeee
[    0.000000]   0x000000000500d000 - 0x0000000007fe0000 pattern eeeeeeeeeeeeeeee
[    0.000000]   0x0000000000010000 - 0x0000000000099000 pattern dddddddddddddddd
[    0.000000]   0x0000000000100000 - 0x0000000003800000 pattern dddddddddddddddd
[    0.000000]   0x000000000500d000 - 0x0000000007fe0000 pattern dddddddddddddddd
[    0.000000]   0x0000000000010000 - 0x0000000000099000 pattern bbbbbbbbbbbbbbbb
[    0.000000]   0x0000000000100000 - 0x0000000003800000 pattern bbbbbbbbbbbbbbbb
...

во время загрузки ядра (или в журналах загрузки, позже ).

Вы можете использовать QEMU, чтобы почувствовать это.:

qemu-system-x86_64 -kernel /boot/vmlinuz-$(uname -r) -append "memtest console=ttyS0" -nographic

(или тот, который qemu-system-...подходит для вашей архитектуры ), и найдите «ранний _memtest». Чтобы выйти из QEMU после паники ядра, нажмите Ctrla , c , q , Enter .

22
27.01.2020, 20:41

Вы можете добавить бесплатную (бесплатную пиво )версию последней memtest86 в UEFI Grub2 на Ubuntu.

Основываясь на руководстве , я предпринял следующие шаги на удаленном сервере Ubuntu 16.04, чтобы добавить memtest86 в UEFI Grub2:

  1. Во-первых, обратите внимание, что grub2 не показывает ни memtest86, ни memtest86+ :GRUB boot menuИ это несмотря на то, что в моей загрузочной папке явно есть memtest86+. См. изображение ниже.listing of /boot directory

  2. Скачать memtest86 -usb.zip на ноутбук

  3. Отправьте zip-файл на удаленную машину, а затем разархивируйте его куда-нибудь (, например./home/<username>/memtest86-usb/)

  4. Нам нужно проанализировать memtest86 -usb.img, используя fdisk -lu memtest86-usb.img, чтобы увидеть его смещение монтирования.fdisk -lu memtest86-usb.imgМы хотим смонтировать второе устройство, указанное в приведенном выше выводе, memtest86-usb.img2. На изображении выше показано, что каждый сектор имеет размер 512 байт, а memtest86-usb.img2начинается с сектора 514048. Следовательно, он начинается с 514048 *512 байт = 263192576 байт.

  5. Создайте папку (, например./home/<username/memtest-tmp)и установите его:

    mkdir /home/<username>/memtest-tmp
    sudo mount -o loop,offset=263192576 /home/<username>/memtest86-usb/memtest86-usb.img
    
  6. Используйте lsblk для проверки сведений о разделе EFI, а также о смонтированном файле.img.lsblk outputНа картинке выше мы отмечаем следующее:

    1. Там, где смонтирован раздел EFI, здесь он находится в /boot/efi.
      • Обратите внимание, что на моем сервере я могу выбрать режим загрузки legacyили UEFIв настройках BIOS.Ранее я установил для него значение legacy, поэтому папки /boot/efiне существовало. Изменение режима загрузки на UEFIпозволило мне увидеть папку /boot/efiи убедиться, что раздел EFI смонтирован там.
    2. Номер устройства. Имя устройства: sd a 1; таким образом, это буква a . Это важно позже.
    3. Номер раздела. Имя устройства sda 1 ; таким образом, это раздел 1 . Это важно для дальнейшего
    4. В качестве проверки работоспособности отметим также, что memtest86 -usb.img2 был смонтирован в /home/<username>/memtest-tmp.
  7. Далее проверяем, что точка монтирования содержит EFI/BOOTпапку `и просматриваем ее содержимое :enter image description here

  8. Затем мы одновременно копируем и переименовываем /home/<username>/memtest-tmp/EFI/BOOTв /boot/efi/EFI/memtest86(, предполагая, что целевая папка/boot/efit/EFI/memtest86):enter image description here

  9. Затем мы создаем запись цепного загрузчика GRUB. Создайте файл /etc/grub.d/42 _memtest со следующим содержимым:

    #!/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='hd0,gpt1'
    if [ x$feature_platform_search_hint = xy ]; then
        search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 4418-37D3
    else
        search --no-floppy --fs-uuid --set=root 4418-37D3
    fi
    chainloader /EFI/memtest86/BOOTX64.efi}
    
    

    На приведенном выше рисунке мы сделали set root='hd0,gtp1, потому что наш раздел EFI был отмечен как имя устройства = sda1 . Согласно соглашению grub2...

    1. a в sd aсоответствует 0 в hd 0
    2. 1 в sda 1соответствует 1 в gtp 1 .
    3. Мы можем использовать формат gpt*для указания раздела 1 устройства sda , потому что мы сделали insmod part_gpt. Мы можем распознать тип метки диска как gpt с помощью команды fdisk -l, а также из файла /boot/grub/grub.cfg.

    Также обратите внимание, что мы использовали UUID раздела EFI , который можно получить с помощью команды blkid, которая показывает UUID всех разделов на вашем компьютере.

  10. Мы обновляем grub2 с помощью update-grub2.

  11. Перезапустите, и вы должны увидеть memtest86 в grub2.GRUB boot menu with memtest86

3
04.02.2021, 19:50

Теги

Похожие вопросы