UEFI에서 작동하는 memtest86+ 대신 무료(libre) 오픈 소스가 있습니까?

UEFI에서 작동하는 memtest86+ 대신 무료(libre) 오픈 소스가 있습니까?

반면memtest86+는 UEFI에서 작동하지 않습니다, 오픈 소스 대안이 있습니까? 아니면 grub을 사용하여 메모리를 테스트할 수 있습니까?

답변1

네, 있어요, 그리고 지금이에요메모리 테스트 86+ v6그 자체. 이것은 Memtest86+의 새로운 버전입니다.PCM 테스트, 이는 UEFI에서 부팅할 수 있는 Memtest86+를 다시 작성한 것입니다. 작성자는 아직 프로덕션용으로 사용할 준비가 되지 않았다고 표시하지만 다양한 구성에서 작동합니다.

Memtest86+ v6용 바이너리를 사용할 수 있습니다.memtest.org에서.

또는 Linux 커널 자체에 메모리 테스트 도구가 포함되어 있습니다. 이 memtest옵션은 현재 최대 17개의 메모리 검사 모드를 실행합니다. 커널 부팅 매개변수에 추가되면 memtest부팅 시 모든 테스트를 실행하고 실패한 주소는 사용되지 않도록 유지합니다. 더 적은 수의 테스트를 원할 경우 패턴 수를 지정할 수 있습니다( memtest=8예:).

이는 Memtest86+만큼 광범위한 테스트는 아니지만 여전히 꽤 좋은 결과를 제공합니다.

일부 배포 커널에는 이 기능이 포함되어 있지 않습니다. 검색하여 사용 가능한지 확인할 수 있습니다.CONFIG_MEMTEST커널 구성에서 (시도해 보세요 /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-...귀하의 아키텍처에 적합한 것 중 하나) "early_memtest"를 찾으십시오. 커널 패닉 이후 QEMU를 종료하려면 , , Ctrla를 누르십시오 .cqEnter

답변2

최신 프리웨어(무료 맥주) 버전을 추가하실 수 있습니다기억력 테스트 86Ubuntu에서 UEFI Grub2를 입력합니다.

을 기반으로지도 시간, 원격 Ubuntu 16.04 서버에서 다음 단계를 수행하여 추가했습니다.기억력 테스트 86UEFI Grub2:

  1. 먼저, grub2는 memtest86이나 memtest86+를 표시하지 않는다는 점에 유의하세요. GRUB 부팅 메뉴 내 시작 폴더에 memtest86+가 있다는 사실에도 불구하고. 아래를 참조하세요. /boot 디렉토리 목록

  2. 다운로드memtest86-usb.zip노트북으로

  3. zip 파일을 원격 컴퓨터로 보내고 특정 위치(예 /home/<username>/memtest86-usb/: ) 에 압축을 푼다.

  4. fdisk -lu memtest86-usb.img설치 오프셋을 확인하려면 memtest86-usb.img 분석을 사용해야 합니다 .fdisk -lu memtest86-usb.img 위 출력에 나열된 두 번째 장치를 설치하려고 합니다 memtest86-usb.img2. 위 그림은 각 섹터가 memtest86-usb.img2514048 섹터부터 시작하여 512바이트임을 보여줍니다. 따라서 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 출력 위 이미지에서 우리는 다음을 알 수 있습니다.

    1. EFI 파티션이 마운트되는 위치는 여기 입니다 /boot/efi.
      • legacy내 서버에서는 BIOS 설정에서 부팅 모드를 선택할 수 있습니다 . 폴더 가 존재하지 않도록 UEFI이전에 설정했습니다 . 부팅 모드를 변경하면 폴더 를 보고 EFI 파티션이 여기에 마운트되어 있는지 확인할 수 있습니다.legacy/boot/efiUEFI/boot/efi
    2. 장치 아이디. 장치 이름은 sd입니다.1;이것은 편지입니다. 이것은 나중에 중요할 것입니다.
    3. 파티션 번호. 장치 이름은 sda입니다.1;그러므로 파티션이다1. 이것은 미래에 중요할 것이다
    4. 온전한 상태를 확인하기 위해 다음 사항도 참고합니다.memtest86-usb.img2에 설치되었습니다 /home/<username>/memtest-tmp.
  7. 다음으로 탑재 지점에 폴더가 포함되어 있는지 확인 EFI/BOOT하고 해당 내용을 봅니다. 여기에 이미지 설명을 입력하세요.

  8. 다음으로 둘 다 복사하고 이름을 바꿉니다 /home/<username>/memtest-tmp/EFI/BOOT( /boot/efi/EFI/memtest86대상 폴더 가정 /boot/efit/EFI/memtest86). 여기에 이미지 설명을 입력하세요.

  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,gtp1EFI 파티션에 장치 이름 = 레이블이 지정되어 있으므로 이 작업을 수행했습니다.sda1. grub2 규칙에 따르면...

    1. 이것존재하다표준 편차에 해당0존재하다HD0
    2. 이것1존재하다sda1에 해당1존재하다GTP1.
    3. 우리는 사용할 수 있습니다총 점수*파티션 형식 지정1장비sda우리가 그랬기 때문에 insmod part_gpt. 디스크 레이블 유형을 다음과 같이 식별할 수 있습니다.총 단백질fdisk -l명령을 사용 하거나 /boot/grub/grub.cfg파일을 확인하세요.

    또한 우리는 EFI 파티셔닝을 사용했습니다.보편적으로 고유한 식별자, 이는 blkid컴퓨터에 있는 모든 파티션의 UUID를 표시하는 명령에서 얻을 수 있습니다.

  10. grub2를 update-grub2.

  11. 재부팅하면 볼 수 있습니다.기억력 테스트 86grub2에서 memtest86을 사용한 GRUB 부팅 메뉴

답변3

Memtest 6은 uefi와 함께 사용해야 합니다. 베타 버전은 memtest.org에서 사용할 수 있습니다.

코드는 다음에서 찾을 수 있습니다.https://github.com/memtest86plus/memtest86plus

Memtest86+ v6.00 베타 2 출시: 2022-06-03 v6은 아직 생산 준비가 되지 않았습니다! 실제 코드를 실험용으로 간주하고 충돌 및 정지가 발생할 수 있다고 예상하십시오. 첫 번째 비베타 버전은 올 여름 출시될 예정이다.

베타임에도 불구하고 시도해 보고 iso를 다운로드하고 USB 스틱에 추가하고 uefi에서 부팅할 수 있었고, 예전처럼 memtest가 실행되었습니다.

관련 정보