mm
이 튜토리얼이 있습니다 : Bad Memory HowTo . 커널에 대한 memmap
인수를 사용하여 커널을 통한 메모리 비활성화에 대해 설명 합니다. 하우투에 따르면 두 가지 옵션이 있습니다 memmap
.
- 나쁜 기억 후에 모든 것을 끄십시오-
(mem=###M option)
- 불량 메모리 주변의 메모리 만 끄십시오.
(memmap=#M$###M option)
첫 번째 옵션으로 memtest가 600M에 불량 메모리가 있다고보고하면 다음과 같이 RAM 끝까지 RAM을 비활성화 할 수 있습니다.
mem=595M
802M 및 807M에 불량 RAM이있는 경우 다음과 같이 800M에서 시작하여 10M RAM 섹션을 비활성화 할 수 있습니다.
memmap=10M$800M
참고 : 800M 기본 주소 다음에 10M이 블랙리스트에 추가됩니다. memtest86+
이 인수가 올바른지 확인한 후에 실행해야 합니다.
BadRAM
우분투에는 BadRam이라는 패치가 있습니다. 우분투 커뮤니티 사이트의 BadRAM 이라는 제목의이 게시물에서 잘 다루고 있습니다.
해당 페이지의 세부 정보를 사용하여 커널에 패치를 적용한 후 Grub2 설정을 수정합니다.
해당 사이트에서 Grub2에 대한 발췌
Natty의 GRUB2 설정 파일에는 커널 불량 램 제외를 구성하는 줄이 있습니다. 따라서 오류를 표시하는 메모리 섹션을 매핑하는 기본 방법이라고 가정하겠습니다. 내가 설정 한 선은
GRUB_BADRAM = "0x7DDF0000,0xffffc000"
내가 찾은 모든 웹 사이트에서 제안 된 방법은 memtest86을 실행하고 BadRAM 설정을 표시하도록 설정하는 것이 었습니다. memtest86은 내가 입력해야 할 페이지를 주었다. 모든 주소가 하나의 16K 블록에 있다는 것을 알 수 있었기 때문에 16K 블록을 동작에서 제외하고 싶었습니다. 올바른 항목을 생성 한 방법은 다음과 같습니다.
첫 번째 매개 변수는 쉽습니다. 이것이 불량 메모리의 기본 주소입니다. 필자의 경우 모든 잘못된 주소가 0x7DDF0000보다 크고 0x7DDF4000보다 작은 것을 알 수 있습니다. 그래서 16K 블록의 시작 부분을 시작 주소로 사용했습니다.
두 번째 매개 변수는 마스크입니다. 원하는 주소 범위에 1을 넣고 같은 값을 공유하고 0에 값을 변경합니다. 즉, 하위 비트 만 변경되도록 주소 범위를 선택해야합니다. 내 주소를 보면 마스크의 첫 부분이 쉽습니다. 0xffff로 시작하고 싶습니다. 다음 니블을 위해 비트 맵으로 설명하겠습니다. 0000에서 0011 사이의 범위를 원합니다. 따라서 badram의 마스크는 1100 또는 16 진수 c입니다. 전체 범위가 매핑되기를 원하므로 마스크에서 마지막 3 개의 니블은 모두 0이어야합니다. 따라서 총 결과는 0xffffc000입니다.
/ etc / default / grub에서이 줄을 설정 한 후 sudo update-grub을 실행하고 재부팅하여 불량 메모리를 더 이상 사용하지 않았습니다. 이 방법을 사용하여 불량 메모리를 매핑하는 데 커널 패치가 필요하지 않습니다.
후속 조치 # 1
memtest86 +에 대한 wikipedia 페이지를 살펴보면 다음과 같이 표시됩니다.
Memtest86 위키 백과 페이지 에서 발췌
Memtest86 2.3 및 Memtest86 + 1.60부터 프로그램은 Linux 커널 용 BadRAM 패치가 예상하는 형식으로 불량 RAM 영역 목록을 출력 할 수 있습니다. 이 정보를 사용하면 Linux 시스템은 불량 비트가 몇 개 있더라도 RAM 모듈을 안정적으로 사용할 수 있습니다. Grub2는 패치가없는 커널에 동일한 정보를 제공 할 수 있으므로 BadRAM 패치가 필요 없습니다.
또한 16 진수 주소를 사용 하여이 젠투 페이지 를 보았memmap=...
으므로 다음과 같이 지정할 수 있습니다.
memmap=5M$0x2f796c48
5M은 추측에 불과합니다. 분명히 그 지역 주변에서 얼마나 많은 RAM을 생략하고 싶은지에 따라 더 낮게 또는 더 크게 조정할 수 있습니다.
마지막으로 크기를 16 진수로 지정할 수도 있습니다.
memmap=0x10000$0x2f796c48
주소 0x2f796c48에서 64KB가 시작되는 것을 무시합니다.
참고 문헌