memmap
Есть это руководство под названием: Bad Memory HowTo, в котором обсуждается отключение памяти через ядро с использованием memmap
аргумента ядра. Согласно инструкции, у вас есть 2 варианта memmap
:
- Отключить все после плохой памяти -
(mem=###M option)
- Отключить только память вокруг плохой памяти -
(memmap=#M$###M option)
С первой опцией, если memtest сообщает, что на 600 МБ имеется плохая память, вы можете отключить ОЗУ с этой точки до конца ОЗУ следующим образом:
mem=595M
Если в 802M и 807M имеется плохая RAM, вы можете отключить 10M RAM, начиная с 800M:
memmap=10M$800M
ПРИМЕЧАНИЕ. Это приведет к попаданию в черный список 10M после базового адреса 800M. Вы должны запустить memtest86+
потом, чтобы подтвердить, что этот аргумент верен.
BadRAM
Для Ubuntu есть патч под названием BadRam. Это очень хорошо описано здесь в этом посте под названием: BadRAM на сайте сообщества Ubuntu.
После применения патча к ядру, используя информацию с этой страницы, вы вносите изменения в настройки Grub2:
выдержка из этого сайта для Grub2
Конфигурационный файл GRUB2 в Natty содержит строку для настройки исключений из ядра. Итак, я предполагаю, что это предпочтительный способ отображения раздела памяти, который показывает ошибки. Линия, которую я установил, была
GRUB_BADRAM = "0x7DDF0000,0xffffc000"
Предлагаемый способ на каждом веб-сайте, который я смог найти, состоял в том, чтобы запустить memtest86 и показать настройки BadRAM. memtest86 дал мне страницу, в которую я должен был войти. Я мог видеть, что все адреса были в одном блоке 16K, поэтому я просто хотел отобразить этот блок 16K из строя. Вот как я сгенерировал правильную запись.
Первый параметр прост. Это базовый адрес плохой памяти. В моем случае я мог видеть, что все плохие адреса были больше, чем 0x7DDF0000 и меньше, чем 0x7DDF4000. Итак, в качестве начального адреса я взял начало блока 16К.
Второй параметр - это маска. Вы ставите 1, где диапазон адресов, который вы хотите, имеет те же значения, и 0, где он будет меняться. Это означает, что вам нужно выбрать диапазон адресов так, чтобы менялись только младшие биты. Глядя на мой адрес, первая часть маски проста. Вы хотите начать с 0xffff. Для следующего куска я объясню с помощью битовых карт. Я хочу в диапазоне от 0000 до 0011. Таким образом, маска для бадрама будет 1100 или гекс с. Последние 3 полубайта должны быть все 0 в маске, так как мы хотим, чтобы весь диапазон отображался. Итак, мы получаем общий результат 0xffffc000.
После установки этой строки в / etc / default / grub я запустил sudo update-grub и перезагрузился, и моя плохая память больше не использовалась. Никаких исправлений ядра не требуется для определения плохой памяти с помощью этого метода.
Продолжение № 1
Просматривая страницу википедии для memtest86 +, она выглядит следующим образом:
выдержка из страницы Википедии Memtest86
Начиная с Memtest86 2.3 и Memtest86 + 1.60, программа может выводить список плохих областей памяти в формате, ожидаемом патчем BadRAM для ядра Linux; Используя эту информацию, система Linux может надежно использовать модуль ОЗУ, даже если у него есть несколько ошибок. Grub2 может предоставить эту же информацию непатентованному ядру, что устраняет необходимость в патче BadRAM.
Также я наткнулся на эту страницу Gentoo, в которой указано memmap=...
использование шестнадцатеричного адреса, чтобы вы могли указать его следующим образом:
memmap=5M$0x2f796c48
5M - всего лишь предположение, очевидно, вы можете настроить его ниже или выше в зависимости от того, сколько оперативной памяти в этом регионе вы хотите / нужно пропустить.
Наконец, вы также можете указать размер в шестнадцатеричном виде:
memmap=0x10000$0x2f796c48
Будет игнорировать 64 КБ, начиная с адреса 0x2f796c48.
Ссылки