badram 커널 매개변수가 작동하지 않나요?

badram 커널 매개변수가 작동하지 않나요?

납땜된 램이 불량해서 교체할 수 없습니다. memtest86+를 실행하여 출력을 badram 형식으로 얻었습니다.

sudo grubby --args=badram=0x0000000050d54a08,0xfffffffff7fffadc --update-kernel /boot/vmlinuz-5.9.8-200.fc33.x86_64

dmesg를 보면 매개변수가 있지만 아무 일도 일어나지 않는 것 같습니다. 해당 램 영역이 로그 어딘가에 나타날 것으로 예상했습니다.

[    0.000000] microcode: microcode updated early to revision 0x2f, date = 2019-11-12
[    0.000000] Linux version 5.9.8-200.fc33.x86_64 ([email protected]) (gcc (GCC) 10.2.1 20201016 (Red Hat 10.2.1-6), GNU ld version 2.35-14.fc33) #1 SMP Tue Nov 10 21:58:19 UTC 2020
[    0.000000] Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.9.8-200.fc33.x86_64 root=/dev/mapper/fedora-root ro resume=/dev/mapper/fedora-swap rd.lvm.lv=fedora/root rd.lvm.lv=fedora/swap rhgb quiet systemd.unified_cgroup_hierarchy=0 badram=0x0000000050d54a08,0xfffffffff7fffadc
[    0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009cfff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d000-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000000fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000010000000-0x000000001000afff] reserved
[    0.000000] BIOS-e820: [mem 0x000000001000b000-0x000000009e0a6fff] usable
[    0.000000] BIOS-e820: [mem 0x000000009e0a7000-0x00000000acbfefff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000acbff000-0x00000000acd7efff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x00000000acd7f000-0x00000000acdfefff] ACPI data
[    0.000000] BIOS-e820: [mem 0x00000000acdff000-0x00000000afffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed08000-0x00000000fed08fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed10000-0x00000000fed19fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffa00000-0x00000000ffffffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000024dffffff] usable

32비트 주소도 시도해 보았으나 마찬가지입니다. 'mem', 'bad' 등도 검색해 보았지만 안타깝게도 며칠에 한 번씩 불량 램에서만 오류가 발생하므로 알 수 없습니다. 아직 일하고 있어요.

memtest86+의 실제 출력은 다음과 같습니다.

0x50d54a08,0xf7fffadc,0x50d54a88,0xf7fffe9c,0x50d54c08,0xf7fffe9c,0x50d54c48,0xf7fffd5c,0x50d54c88,0xfffffcbc,0x50d54848,0xfffff8fc,0x50d54988,0xf7fffb9c,0x50d55008,0xf7fffc1c,0x58d54828,0xfffff83c,0x58d54908,0xffffff18

memtest=1또한 커널이 자체 테스트를 실행하도록 매개변수를 추가하려고 시도했지만 이 역시 무시되었습니다.

답변1

마침내 GRUB_BADRAM을 사용하여 이 작업을 수행했습니다.

GRUB_BADRAM="0x50d54a08,0xf7fffadc,0x50d54a88,0xf7fffe9c,0x50d54c08,0xf7fffe9c,0x50d54c48,0xf7fffd5c,0x50d54c88,0xfffffcbc,0x50d54848,0xfffff8fc,0x50d54988,0xf7fffb9c,0x50d55008,0xf7fffc1c,0x58d54828,0xfffff83c,0x58d54908,0xffffff18"
[    0.000000] BIOS-e820: [mem 0x000000001000b000-0x0000000050d547ff] usable
[    0.000000] BIOS-e820: [mem 0x0000000050d55400-0x0000000058d547ff] usable
[    0.000000] BIOS-e820: [mem 0x0000000058d55000-0x000000009e0a6fff] usable

시스템을 부팅할 수 없는 상태로 두는 것이 걱정되었기 때문에 grubby를 사용하여 단일 커널을 업데이트하려고 했지만 부팅하기 전에 grub에서 커널 매개 변수를 편집하기가 너무 쉬워서 걱정할 가치가 없습니다.

나는 또한 작동하는 것을 사용하려고 시도했지만 memmap통과하는 것이 완전히 불가능했고 $계속해서 땅벌레에게 먹혔습니다.

답변2

badram대신에 와 같은 옵션은 없습니다 .사용해야한다 memmap:

        memmap=nn[KMG]$ss[KMG]
                        [KNL,ACPI] Mark specific memory as reserved.
                        Region of memory to be reserved is from ss to ss+nn.
                        Example: Exclude memory from 0x18690000-0x1869ffff
                                 memmap=64K$0x18690000
                                 or
                                 memmap=0x10000$0x18690000
                        Some bootloaders may need an escape character before '$',
                        like Grub2, otherwise '$' and the following number
                        will be eaten.

badramGRUB 옵션입니다.MemTest86+ 오류 표시에 따라 올바른 불량 RAM 섹터를 블랙리스트에 추가하는 방법은 무엇입니까?

관련 정보