bản đồ
Có hướng dẫn này có tiêu đề: Bad Memory HowTo thảo luận về việc vô hiệu hóa bộ nhớ thông qua kernel bằng cách sử dụng memmap
đối số cho kernel. Theo hướng dẫn, bạn có 2 tùy chọn khi nói đến memmap
:
- Tắt tất cả mọi thứ sau khi bộ nhớ xấu -
(mem=###M option)
- Tắt chỉ bộ nhớ xung quanh bộ nhớ xấu -
(memmap=#M$###M option)
Với tùy chọn đầu tiên, nếu memtest báo cáo rằng có bộ nhớ kém ở mức 600M thì bạn có thể vô hiệu hóa RAM từ thời điểm đó cho đến khi hết RAM với điều này:
mem=595M
Nếu có RAM xấu ở mức 802M và 807M, bạn có thể vô hiệu hóa phần RAM 10M bắt đầu từ 800M như thế này:
memmap=10M$800M
LƯU Ý: Điều này sẽ đưa vào danh sách đen 10M sau địa chỉ cơ sở 800M. Bạn nên chạy memtest86+
sau đó để xác nhận rằng đối số này là chính xác.
BadRAM
Có một bản vá có sẵn cho Ubuntu được gọi là BadRam. Nó được trình bày rất tốt ở đây trong bài đăng này có tiêu đề: BadRAM trên trang web Cộng đồng Ubuntu.
Sau khi áp dụng bản vá cho kernel bằng các chi tiết từ trang đó, bạn thực hiện sửa đổi cho thiết lập Grub2 của mình:
trích từ trang web đó cho Grub2
Tệp cấu hình GRUB2 trong Natty có một dòng để định cấu hình loại trừ ram xấu kernel. Vì vậy, tôi sẽ cho rằng đó là cách ưa thích để ánh xạ ra một phần của bộ nhớ đang hiển thị lỗi. Dòng tôi đặt là
GRUB_BADRAM = "0x7DDF0000,0xffffc000"
Cách được đề xuất trên mọi trang web tôi có thể tìm thấy là thiết lập điều này là chạy memtest86 và để nó hiển thị cho bạn các cài đặt BadRAM. memtest86 đã cho tôi một trang những thứ tôi sẽ phải nhập. Tôi có thể thấy rằng tất cả các địa chỉ nằm trong một khối 16K, vì vậy tôi chỉ muốn lập bản đồ cho khối 16K đó. Đây là cách tôi tạo ra mục chính xác.
Tham số đầu tiên là dễ dàng. Đó là địa chỉ cơ sở của bộ nhớ xấu. Trong trường hợp của tôi, tôi có thể thấy rằng tất cả các địa chỉ xấu đều lớn hơn 0x7DDF0000 và nhỏ hơn 0x7DDF4000. Vì vậy, tôi đã bắt đầu khối 16K làm địa chỉ bắt đầu của mình.
Tham số thứ hai là mặt nạ. Bạn đặt 1s trong đó phạm vi địa chỉ bạn muốn chia sẻ cùng giá trị và 0s sẽ thay đổi. Điều này có nghĩa là bạn cần chọn phạm vi địa chỉ của mình sao cho chỉ các bit thứ tự thấp khác nhau. Nhìn vào địa chỉ của tôi, phần đầu tiên của mặt nạ rất dễ dàng. Bạn muốn bắt đầu với 0xffff. Đối với nibble tiếp theo, tôi sẽ giải thích với bản đồ bit. Tôi muốn trong khoảng từ 0000 đến 0011. Vì vậy, mặt nạ cho badram sẽ là 1100 hoặc hex c. 3 ngòi cuối cùng cần phải là tất cả 0 trong mặt nạ, vì chúng tôi muốn toàn bộ phạm vi được ánh xạ. Vì vậy, chúng tôi nhận được tổng kết quả là 0xffffc000.
Sau khi đặt dòng này trong / etc / default / grub, tôi đã chạy sudo update-grub và khởi động lại và bộ nhớ xấu của tôi không còn được sử dụng. Không có bản vá kernel nào là cần thiết để vạch ra bộ nhớ xấu bằng phương pháp này.
Theo dõi # 1
Nhìn qua trang wikipedia cho memtest86 + có ghi như sau:
trích từ trang wikipedia Memtest86
Bắt đầu từ Memtest86 2.3 và Memtest86 + 1.60, chương trình có thể xuất ra một danh sách các vùng RAM xấu theo định dạng mà bản vá BadRAM mong đợi cho nhân Linux; sử dụng thông tin này, một hệ thống Linux có thể sử dụng mô-đun RAM một cách đáng tin cậy ngay cả khi nó có một vài bit xấu. Grub2 có thể cung cấp thông tin tương tự này cho một kernel chưa được vá, phủ nhận sự cần thiết của bản vá BadRAM.
Ngoài ra tôi đã xem qua trang Gentoo này chỉ định memmap=...
sử dụng địa chỉ hex, vì vậy bạn có thể chỉ định nó như thế này:
memmap=5M$0x2f796c48
5M chỉ là dự đoán, rõ ràng bạn có thể điều chỉnh nó thấp hơn hoặc cao hơn tùy thuộc vào lượng RAM xung quanh khu vực bạn muốn / cần bỏ qua.
Cuối cùng, bạn cũng có thể chỉ định kích thước trong hex:
memmap=0x10000$0x2f796c48
Sẽ bỏ qua 64KB bắt đầu tại địa chỉ 0x2f796c48.
Tài liệu tham khảo