Устанавливаем серверный процессор Intel Xeon E5450 (LGA-771) на десктопную материнскую плату GIGABYTE G41-Combo (LGA-775)
Устанавливаем серверный процессор Intel Xeon E5450 (LGA-771) на десктопную материнскую плату GIGABYTE G41-Combo (LGA-775)
В недалёком прошлом, после проведения апгрейда процессоров на серверах HP ProLiant G5 высвободилось несколько ранее используемых процессоров Intel Xeon семейства 5000, которые были бережно уложены «ушкапчик» с мыслью «а что же мне теперь с ними делать». В ту пору у меня закралась идея сборки мощной рабочей станции с использованием серверного процессора Xeon, однако до практики это дело так и не дошло, так как по началу я не смог определиться с выбором материнской платы под родной для Xeon 5K сокет LGA-771, а потом и вовсе забыл про это. Но недавно один мой коллега подкинул ссылку на интересный топик Good news for the LGA775 ! now 771 is available to convert to 775 motherboard , почитав который, я снова вспомнил про старые Xeon-ы. С большим удивлением для себя нашёл ещё один, на этот раз уже русскоязычный ресурс ideafix.name , где, из статьи Материнские платы Gigabyte и Socket 771 CPU microcode , узнал о том, что имеющаяся в моём распоряжении десктопная материнская плата GIGABYTE G41-Combo ( Rev.2 FB) на сокете LGA-775 способна работать с процессорами Xeon 5K. Это вдохновило меня на практический эксперимент.
Заказал у греческого продавца на Ebay волшебную штуку под названием «LGA 771 to LGA 775 Xeon Mod Adapter Sticker» . Удовольствие обошлось примерно в 5 американских рублей за комплект из пяти штук. Одного адаптера достаточно для одной установки процессора форм-фактора LGA-771 в разъём LGA-775. На Т-образных краях адаптер имеет клейкое основание для закрепления на корпусе процессора, так что излишних манипуляций со скотчем, как показано на фотографиях в ранее упомянутом топике , не потребуется. Единственное что требуется, так это сухие обезжиренные (например спиртом) руки, чтобы не испортить клейкое основание в процессе установки адаптера на процессор. Хотя эстеты проводят подобные операции пинцетом.
Для установки процессора Xeon в сокет LGA-775 потребуется небольшая «рихтовка» процессорного гнезда. Достаточно приложить процессор к гнезду и станет понятно, какие элементы гнезда требуют «ампутации». Отрезать мешающие элементы оказалось довольно просто легким нажатием обычного монтажного ножа. Если монтажного ножа под рукой нет, подойдёт и обычный канцелярский нож.
После того, как гнездо подготовлено и процессор без проблем в него усаживается, установим адаптер на процессор по аналогии с тем, как показано на фотографии ниже. При этом знак контрольного уголка на внешнем крае адаптера должен совпадать по направлению с контрольным уголком на корпусе процессора.
После того, как адаптер плотно прижат к корпусу процессора липкими Т-образными концами, устанавливаем процессор в гнездо точно таким же образом, как устанавливается процессор форм-фактора LGA-775, то есть контрольный уголок на верхней стороне процессора должен совпадать с контрольным уголком (как правило, это скошенный угол) процессорного гнезда.
Выполнив проверочный запуск, я обнаружил то, что моя материнская плата действительно без лишних вопросов определила тип процессора, успешно выполнила POST и, как обычно, перешла к запуску операционной системы
Если же материнская плата не может правильно определить тип процессора, то возможно ей потребуется дополнительная перепрошивка модифицированной версией BIOS, как я понял, чтобы расширить её набор микрокодов. Подробнее об этом можно почитать в заметке Нужен ли 771mod, или как узнать есть ли в BIOS поддержка Xeon .
В моём случае проблемы не было ни с идентификацией процессора на уровне материнской платы, ни с определением на уровне операционной системы (Kubuntu Linux 16.04 LTS):
О том, как идентифицировать процессор в Linux сделал маленькую шпаргалку здесь .
В результате, производительность работы системы в целом улучшилась на порядок, что ощутимо даже без проведения «бенчмарков», особенно на фоне того, что раньше у меня был установлен скромный Celeron с 1MB кеша, который к тому же грелся на 15-20 градусов сильней.
Сокет LGA775: обзор характеристик, функциональных возможностей и уровня производительности различных устройств
Все компьютерные комплектующие, которые присутствуют в продаже на сегодняшний день, обладают определенной маркировкой, на основании которой пользователь может идентифицировать совместимость того или иного железа.
Например, в названии моделей материнских плат и процессоров присутствует название сокета, на базе которого созданы устройства. При выборе материнской платы необходимо обращать пристальное внимание на сокет, поскольку, в противном случае, подключить к ней процессор будет попросту невозможно. Наиболее распространенными материнскими платами являются устройства с сокетом LGA775, с техническими характеристиками которых нам и предстоит познакомиться более подробно.
Общая информация
Цифра 775, которая присутствует в названии сокета, обозначает количество контактов, реализованных в материнской плате для подключения CPU. Чтобы убедиться в этом достаточно всего-лишь взглянуть на гнездо для подключения кристалла или на сам процессор и подсчитать количество медных контактов или количество посадочных гнезд для них. Таким образом, сокет — это не что иное, как обозначение количества контактов кристалла.
Интересным фактом является то, что мировой производитель процессоров компания Intel в процессе разработки новых CPU для серверов разработала новый тип сокета, получившего название LGA 771. Однако на рынке он не получил должного признания и не оправдал ожидания разработчиков, поэтому инженеры разработали специальный переходник, позволяющий использовать процессор на материнских платах с сокетом LGA 775, а позднее и вовсе сняли кристалл с производства.
Форм-фактор системного блока
Прежде чем делать апгрейд своего системного блока и покупать новую системную плату или собирать компьютер с нуля, необходимо прежде всего определиться с форм-фактором корпуса, поскольку от этого зависит и выбор материнки. Это очень важный нюанс, поскольку от форм-фактора материнской платы зависит и дальнейший выбор других комплектующих.
Например, корпуса системных блоков для офисных машин в основном имеют форм-фактор micro-ATX или mini-ATX. Таким образом, системную плату для этих компьютеров необходимо подбирать аналогичного размера. Однако сразу стоит отметить, что маленькие материнские платы обладают ограниченным потенциалом для подключения других устройств, что является их основным недостатком.
Наиболее приоритетными среди большинства юзеров являются системные платы стандартных размеров, имеющие форм-фактор ATX или EATX. Большую популярность они получили благодаря огромному количеству интерфейсов, позволяющих устанавливать несколько модулей оперативной памяти, графических систем и других устройств. Однако прежде чем приобрести такую материнскую плату необходимо учитывать и их относительную дороговизну.
Слоты и разъемы подключения
Большинство начинающих пользователей, обладающих скудными познаниями в области компьютеров и высоких технологий, не уделяют должного внимания интерфейсам, которыми обладает материнская плата. В результате этого они очень часто сталкиваются с различными проблемами в процессе эксплуатации компьютера.
Все дело в том, что именно различные слоты и порты подключения позволяют повысить производительность компьютера в случае необходимости посредством подключения дополнительных комплектующих. Что касается материнских плат, разработанных на базе 775 сокета, то эти модели обладают определенными ограничениями по набору интерфейсов. Например, количество слотов для подключения модулей RAM-памяти не может превышать четырех, а максимальный объем планок памяти составляет всего 2 гигабайта. Помимо этого, класс памяти, с которыми может работать материнки с 775 сокетом, является DDR2. Таким образом, создать мощную игровую машину на таких материнках не получится из-за отсутствия поддержки высокоскоростной памяти.
Другим очень важным слотом является порт PCI, предназначенный для подключения сетевых карт, тюнеров, звуковых систем и многих других мультимедийных устройств. Поэтому по мере уменьшения физических размеров системной платы, пропорционально уменьшается и количество этих разъемов, что, в свою очередь, негативно сказывается на возможностях подключения.
Дополнительные интерфейсы
Еще одним ключевым недостатком системных плат на базе сокета LGA775, помимо небольшого количества слотов и разъемов подключения, являются ограничения по возможностям одновременной работы с большим количеством периферийных устройств. Чем меньше форм-фактор системной платы, тем меньше в ней реализовано USB-портов, которые отвечают за синхронизацию с компьютером внешних устройств и электронных гаджетов. Поэтому при выборе форм-фактора материнки необходимо заранее определиться со своими потребностями и перечнем устройств, с которыми пользователь будет работать.
Некоторые современные модели материнок обладают интегрированной графической системой, ресурсов которой с головой хватает для выполнения базовых задач, а также просмотра потокового видео в высоком разрешении. Невысокая производительность интегрированных видеокарт объясняется тем, что сокет LGA775 не позволяет подключать мощные многоядерные кристаллы.
Характеристики чипа
Производительность системной платы зависит от характеристик чипа, выступающего в роли контроллера, управляющего работой всех узлов материнской платы. Технические характеристики чипа зависят от того, к какому типу принадлежит настольная система: офисный, домашний или игровой. Чипы могут быть различного форм-фактора, от которого зависят дополнительные возможности системной платы. Например, некоторые модели материнских плат форм-фактора ATX могут быть оснащены более мощной системой пассивного охлаждения, поддерживать более скоростную ОЗУ, обладать более надежной и производительной системой электропитания, иметь более современную версию BIOS и многое другое.
Все чипы можно распределить по нескольким категориям, каждая из которых обладает набором определенных характеристик и возможностей, а также имеют различное буквенное обозначение. Например, чипы в маркировке которых присутствует буква G относятся к офисным решениям, а поклонникам компьютерных игр стоит отдавать предпочтение системным платам, в названии которых присутствуют буквы X и Z.
Возможности рабочей станции
Ни для кого не секрет, что производительность системного блока зависит от характеристик кристалла, возможности которого, в свою очередь, зависят от спецификации системной платы. Подобная зависимость является единственным объяснением наличия большого количества различных модификаций материнок, присутствующих в продаже в наши дни. В свою очередь, каждая модификация обладает определенным потенциалом, набором интерфейсов и уровнем производительности.
Различные материнские платы создаются на разных версиях сокетов, которые поддерживают подключение разных версий процессоров. Все CPU можно подразделить на четыре основные категории, которые обладают определенным набором физических ядер:
— одноядерные кристаллы для офисных компьютеров;
— двухъядерные CPU для домашних систем;
— четырехъядерные процессоры для геймерских системных блоков;
— модификации процессоров серии «экстрим» для любителей поэкспериментировать.
С целью повышения продаж многие современные производители процессоров создают уникальные модели кристаллов, объединивших в себе несколько различных модификаций, которые являются довольно интересными решениями.
Представители бюджетного сегмента
К категории дешевых системных плат, которые обладают неплохим потенциалом и представляют интерес для юзеров, является устройство, созданное инженерами компании Intel. Эта модель поддерживает работу с процессорами семейства Celeron и Pentium, которые относятся к категории маломощных кристаллов.
Эта материнская плата выполнена в форм-факторе micro-ATX, что негативно сказалось на разнообразии слотов и портов подключения. Тем не менее эта модель пришлась по душе многим потребителям благодаря поддержке многих современных технологий, неплохой интегрированной графике, поддерживающей работу с объемными объектами, а также очень низкому энергопотреблению. При максимальной нагрузке суммарное потребление составляет всего 200 ватт, благодаря чему для обеспечения стабильной работы не требуется мощный блок питания.
Представители среднего ценового диапазона
Модификации материнских плат, разработанные на 775 чипсете и принадлежащие к средней ценовой категории, поддерживают работу с двухъядерными процессорами семейства Core Dual. Однако сразу стоит отметить, что эти кристаллы являются урезанной версией полноценных двухъядерных CPU, поскольку второе ядро является не физическим, а виртуальным, что негативно сказывается на производительности компьютера.
Для более наглядного представления устройства и принципа работы таких процессоров, можно провести аналогию с технологией Hyper-Threading, которая способна автоматически распределять ресурсы процессора в зависимости от уровня нагрузки на систему. Основными достоинствами CPU Intel Core Dual является совместимость с сокетом LGA775 и дешевизна, которая является ключевым фактором, лежащим в основе их большой популярности.
Оптимальное решение
Каждый юзер, который желает получить оптимальное соотношение цены и уровня производительности при покупке системной платы и процессора с сокетом LGA775, должен присмотреться к CPU Core 2 Duo, в которых реализовано два полноценных физических ядра, обеспечивающих высокую производительность. Стоит отметить, что на базе этих кристаллов собираются и многие другие современные электронные гаджеты.
Оба ядра работают независимо друг от друга, что наделяет процессоры этой модельной линейки высокой многозадачностью. Помимо хороших аппаратных характеристик, высокая востребованность этих процессоров обусловлена и невысокой стоимостью. Однако не обошлось и без недостатков, основным среди которых является очень сильная нагреваемость в процессе работы, что, в свою очередь, приводит к необходимости использования хорошей системы охлаждения для защиты кристалла от перегрева. Как утверждают некоторые продвинутые юзеры, штатного кулера в большинстве случаев оказывается недостаточно для обеспечения стабильной работы процессора и использования всех ресурсов CPU.
Представители геймерской категории
Геймеры с большим игровым стажем в качестве процессора для своих настольных систем выбирают четырехъядерные кристаллы Core 2, разработанные на сокете LGA775. Кристаллы этой модельной линейки способны справиться с любой современной компьютерной игрой, запущенной на максимальных настройках графических эффектов, однако, покупка этого чуда техники может оказаться далеко не всем по карману из-за довольно высокой стоимости.
Тем не менее каждый юзер, который решит раскошелиться, получит мощное устройство, обладающее многолетним потенциалом. Поэтому не придется переживать о потраченных деньгах или задумываться о разгоне процессора с целью повышения производительности.
Процессоры серии «экстрим»
На прилавках компьютерных магазинов очень часто можно встретить модификации системных плат, в маркировке которой присутствует приставка «Extreme». Многие неопытные юзеры полагают, что эти устройства обладают высоким оверклокинговым потенциалом, однако, на практике это мнение далеко от истины. На самом деле все дело в том, что материнки серии «экстрим» поддерживают работу с процессорами, работающими на очень высоких тактовых частотах. При этом ни о каком разгоне речи не идет.
Основным отличием этих системных плат является наличие системной шины, обладающей высокой пропускной способностью, которая находится на уровне 1333 мегагерца, а также наличие большого объема кеш-памяти. Одним из наиболее известных представителей этой категории комплектующих является материнка Stiker II Extreme от компании Asus, созданная на базе 775 сокета и вобравшая в себя все самые инновационные технологии.
Запись опубликована 08.05.2016 автором katrinas11 в рубрике Моя жизнь. Отблагодари меня, поделись ссылкой с друзьями в социальных сетях:
Лучшие двухъядерные процессоры на 775 сокет
Ну а теперь для тех у кого материнки не поддерживают 4-х ядерные процессоры мы рассмотрим альтернативные варианты из 2-х ядерных.
А лучший двухъядерный процессор на 775 сокет можно назвать сразу, это Core 2 Duo E8600. Он имеет шину в 1333mHz, частоту 3.3ГГц и 4мб кэш памяти второго уровня. Розничная цена на Б/У рынке около 1000р.
А теперь давайте рассмотрим ещё несколько любопытных вариантов, в том числе всем полюбившиеся процессоры Xeon в переделке с 771 сокета.
1. Xeon X5270
Xeon X5270
Чисто формально этот процессор будет даже интереснее чем E8600. Но стоит помнить, что он относится к 771 сокету, а на 775 работает только за счёт Китайский премудростей. Поэтому фактически лучший двухядерник это Xeon X5270, а формально E8600. У данного процессора 6мб кэша второго уровня, частота 3.5ГГц и шина 1333mHz. Розничная цена на AliExpress 2500 рублей.
2. Pentium Dual-Core E6800
Pentium Dual-Core E6800
Данный экземпляр имеет частоту в 3.33ГГц, 2мб кэш памяти второго уровня и шину частотой в 1066mHz. Соответственно это вариант для тех, у кого материнская плата не поддерживает шину в 1333mHz. А если Вы ищите лучший двухядерник на 775 сокет, то скорее всего относитесь именно к числу таких счастливчиков. Процессор немногим уступает по производительности своим собратьям указанным выше. Но в отличии от них имеет более доступный ценник — всего лишь около 700р. и при этом широко распространён не только на AliExpress, но и на Авито.
3. Pentium Dual-Core E5800
Pentium Dual-Core E5800
Это вариант уже для тех, у кого всё ещё более грустно и материнская плата имеет шину всего в 800mHz. Процессор работает на частоте в 3.2ГГц, имеет 2мб кэш памяти второго уровня. И в отличии от собратьев имеющих шину в 800mHz, выполнен по техпроцессу в 45нм. Тогда как аналоги под эту шину идут на более старом 65нм техпроцессе. А на Б/У рынке его можно приобрести за скромные 300р.
4. Xeon 5030
Xeon 5030
Ну и на последок ещё один вариант, но уже под материнские платы на шине в 667mHz. Xeon 5030 имеет тактовую частоту в 2.6ГГц, 4мб кэша 2 уровня и так-же как и аналоги является переделкой с 771 сокета. Найти его в розницу сложно, но иногда он всплывает на рынке Б/У железа по цене около 200р.
И так, мы рассмотрели четыре варианта процессоров двухъядерных процессоров для 775 сокета. В подборку я старался включать не просто лучшие, а именно доступные к покупке процессоры. Ведь какой смысл описывать «метафизический» предмет, если люди интересуются с практической целью. Верно?
А теперь давайте поговорим, жив ли в 2021 году 775 сокет. Скажу сразу, отсутствие современных инструкций не позволит Вам поиграть в новинки последних лет. А единственный вариант выжать, более или менее играбельную производительность из этого железа, это использование разгона и связки высокочастотной дуалранковой памяти. То есть технически он жив, для тех у кого есть платформа из хорошей оверклокерской матери и DDR3 оперативки. Эти люди могут себе устроить апгрейд и ещё несколько лет посидеть в стареньких игрушках с относительно приемлемой производительностью. Для всех остальных, особенно для тех кто задумал сделать сборку на платформе 775 — он мёртв. Ведь в целом можно собрать относительно неплохой игровой ПК всего в районе 5000р. Но это уже тема для отдельной статьи:)
Как втиснуть 16 ГБ памяти на материнскую плату, которая не поддерживает такой объём
Некоторое время назад я поставил на один из своих компьютеров 16 ГБ памяти. На нём стоит материнка Foxconn P55MX с Core i5 750. Можно было бы и заменить этот старый CPU, но он пока нормально работает и делает всё, что мне нужно.
Вот что интересно. Материнская плата официально не поддерживает 16 ГБ RAM. Спецификации на вышеупомянутой странице указывают, что поддерживается максимум 8 ГБ. На плате только два слота, поэтому у меня возникло подозрение, что планки 8 ГБ просто были редкостью в то время, когда вышла материнская плата. Я всё равно решил попробовать. Во многих случаях материнские платы поддерживают больше RAM, чем официально заявляет производитель.
Я убедился, что установлена последняя версия BIOS (версия 946F1P06) и вставил две своих планки по 8 гигабайт. Затем загрузил Ubuntu 16.04, и всё работало отлично. Я решил, что моя теория о том, что плата поддерживает больше памяти, чем заявлено в документации, оказалась правильной, и забыл об этом. Мне нравилось работать с дополнительной RAM и я был счастлив, что игра окупилась.
Но несколько месяцев спустя я попытался загрузить Windows 10. В основном, компьютер работает под Linux. Лишь иногда нужно загрузить Windows, чтобы что-то проверить. Тогда-то и началось самое интересное.
Когда появился GRUB, я выбрал в меню Windows 10 и нажал Enter. Экран загрузки Windows ненадолго появился, а затем меня сразу приветствовал синий экран смерти.
Стоп-код: ACPI_BIOS_ERROR. Я много погуглил и выяснил, что суть в какой-то проблеме с ACPI-таблицами в BIOS. Среди прочего, таблицы ACPI сообщают операционной системе, как настроить оборудование. Попытка загрузки с установочного USB-накопителя Windows привела к той же ошибке. Так что, думаю, Foxconn не врал. Этот компьютер действительно не поддерживает 16 ГБ оперативной памяти. Возврат к 8 ГБ привёл к успешной загрузке. Тесты RAM тоже прошли отлично, так что дело не в плохой планке памяти.
Я попытался связаться с поддержкой Foxconn насчёт исправления BIOS, но не получил ответа. Адрес электронной почты указан на их сайте, но он не работает. Возможно, Foxconn больше не занимается материнскими платами. Похоже, они также не оказывают поддержки.
В этот момент обычный человек просто сдался бы, смирившись с 8 ГБ памяти или купив новый компьютер. Но я не хотел так легко сдаваться. Я знал, что теоретически компьютер может использовать 16 ГБ, потому что он отлично работал в Linux. Поэтому я начал изучать ACPI и экспериментировать с настройками BIOS.
Я нашёл интересный раздел BIOS, где можно играть с некоторыми настройками памяти. Одним из параметров была «функция переназначения памяти» (Memory Remap Feature). Она была включена. В документации по BIOS говорится, что опция позволяет «перекрывать память PCI» для мэппинга выше общей физической памяти. Поиск в интернете указал, что его нужно включить при загрузке в 64-разрядной ОС. Просто ради эксперимента я её отключил, и Windows реально загрузилась! Однако сказала, что может использовать менее 4 ГБ оперативной памяти. Но это было приятно: у меня появился способ попасть в Windows без необходимости физически удалять планку памяти.
В Ubuntu то же самое. С отключённой функцией переназначения памяти она ограничила меня менее чем 4 ГБ RAM. На данный момент я был уверен, что происходит какая-то проблема с отображением памяти. Я решил подробнее изучить ошибку ACPI_BIOS_ERROR и её причины — и наткнулся на этот отличный документ для отладки драйверов Microsoft, который объясняет проверку ошибок ACPI_BIOS_ERROR.
Согласно документу, нужно было найти четыре параметра ошибки, которые раньше отображались на синем экране в старых версиях Windows. Windows 10 по умолчанию скрывает всю информацию, но можно повторно включить отображение дополнительной информации об ошибках, добавив запись в реестр. Вот отличный ответ на superuser.com, который указал мне верное направление.
После соответствующей правки реестра я снова включил функцию переназначения памяти в BIOS и загрузил Windows. BSOD теперь показал четыре дополнительных кода в верхнем левом углу:
Прекрасно! Таким образом, параметр 1 равен 0x0000000000000002. В документации Microsoft написано, что параметр 1, равный 0x02, означает проблему с обработкой списка ресурсов для корневых шин PCI. Поскольку параметры 2, 3 и 4 выглядят как сумасшедшие значения, это, наверное, указатели. И если тут одни указатели, Microsoft говорит, что проблема в том, что область декодирования PCI перекрывается со списком областей памяти, возвращаемых интерфейсом BIOS E820.
Окей. Информации много, но можно с чего-то начать исследование. Я нашёл информацию, как вызов E820 BIOS предоставляет информацию об областях памяти. Затем вернулся в Linux и просмотрел всю информацию о запуске ядра с помощью команды dmesg, уделяя особое внимание E820 и ACPI. Вот что нашлось:
Позже я увидел это:
Ага! Видите предупреждение о конфликте? Я бы его не заметил, но после установки памяти Linux начал выводить это сообщение при каждой загрузке. Я попытался загрузиться в Linux с отключённой функцией переназначения памяти в BIOS. В этом случае пропала последняя область e820 с 0x100000000 до 0x42fffffffff, и, таким образом, сообщение о конфликте также исчезло, а в списке появился ещё один «корневой ресурс шины» с окном главного моста с 0x400000000 до 0xfffffffff.
Итак, что получается. Linux работает с 16 ГБ, потому что замечает конфликт и игнорирует конфликтующий диапазон PCI, который предоставляет ACPI, в то время как Windows с отвращением поднимает руки и выблёвывает синий экран: «У вашего BIOS проблема!» Не могу винить Windows. Действительно, существует перекрытие, поэтому можно понять, что она путается.
В этот момент я не был уверен, стоит ли продолжать. Последние 768 МБ памяти с 0x400000000 до 0x42fffffffff сопоставлены с началом огромной области пространства памяти, которую материнская плата использует для PCI. Ясно, что если материнская плата ожидает там PCI, может произойти что-то действительно плохое. Таким образом, материнская плата поддерживает только 15,25 ГБ RAM, правильно?
Но… в Linux всё работает просто отлично, без поддержки этой дополнительной области сопоставления PCI! Что, если как-то изменить таблицы ACPI, чтобы большой диапазон PCI начинался с 0x430000000 вместо 0x400000000, то есть сразу после окончания физической RAM. Тогда конфликт бы исчез, а большая часть окна сопоставления PCI по-прежнему осталась доступной.
Я начал копаться в таблицах ACPI. К счастью, Linux позволяет очень легко делать дампы. Есть специальные инструменты для этого, но таблицы можно легко найти в sysfs:
Вот они все. Меня также обрадовало, что в GRUB есть возможность заменить ваши таблицы ACPI новыми версиями. Поэтому если выяснить, какая таблица задействована, можно установить новую версию этой таблицы с помощью GRUB. Теоретически, Windows будет счастлива этим.
Среди других инструментов, я использовал iasl, чтобы разобрать различные таблицы ACPI и найти значение 0x400000000 для замены. Скорее всего, это значение с обратным порядком байтов (little-endian) и размером 64 бита, так что я запустил binwalk для поиска по всем файлам таблиц:
В таблице OEMB нашёлся один результат. Следующее 64-разрядное слово после него было 0x1000000000, чуть больше, чем конечный адрес в сообщении конфликта окна главного моста. Очень многообещающая зацепка. Таблица OEMB является специальной, поскольку в соответствии со спецификациями ACPI это не стандартная таблица. Linux жалуется на недействительную контрольную сумму, но я не думаю, что это имеет значение. Полагаю, вы догадываетесь, что я сделал дальше.…
Я сделал копию таблицы OEMB, заменив байт 0x00 непосредственно перед байтом 0x04 на 0x30, чтобы изменить значение на 0x430000000 (помните, что это обратный порядок). Эту изменённую копию я поместил в файл /boot/oemb.dat. Затем использовал GRUB для замены таблицы OEMB моей копией, временно вставив следующую команду в список команд загрузки (ввод буквы ‘e’ в GRUB после выбора Ubuntu):
Идея в том, что она говорит GRUB загрузить все таблицы ACPI, кроме таблицы OEMB, а затем загрузить содержимое /boot/oemb.dat и добавить его в качестве дополнительной таблицы. Это эффективно заменит старую таблицу OEMB новой таблицей OEMB.
Хорошо, я загрузил Linux и…
Проклятая ошибка никуда не делась. WTF? Я предположил, что диапазон PCI фактически определён где-то ещё, но я нигде не видел, чтобы определялось конкретное значение. Я убедился, что исправленная таблица OEMB действительно загрузилась, и вернулся к исследованию.
На этот раз я решил использовать iasl для декомпиляции таблицы DSDT. Отслеживание показало, что таблица DSDT должна содержать метод под названием _CRS , который отвечает за создание этой таблицы.
В файле .dsl я действительно нашёл метод _CRS, связанный с шиной PCI, и он выглядел довольно сложным. Таблица DSDT содержит фактический код, поэтому значения таблицы искать непросто. В моем случае метод _CRS оказался довольно сложным. Я интерпретировал код насколько смог и понял, что метод _CRS загружает информацию из другой таблицы в памяти, начиная с 0xCF78E064. Я снова посмотрел лог загрузки Linux в dmesg и нашёл это:
Ага! Он загружает информацию из таблицы OEMB. Моя догадка была верна с самого начала. Так почему же не сработала замена таблицы OEMB?
Я снова посмотрел на лог dmesg после замены таблицы OEMB. Чего я не понимал, так это того, что если вы пытаетесь изменить таблицы, то GRUB перемещает большинство из них, включая OEMB, в другую область памяти. Проблема в том, что таблица DSDT жёстко закодирована на просмотр адреса 0xCF78E064 для таблицы OEMB. Поэтому-то новая таблица не видна системе, она по-прежнему смотрит на исходную таблицу. Ух.
Первым порывом было изменить DSDT, чтобы перевести её на новое расположение таблицы OEMB, но я чувствовал, что в перспективе это плохая идея, потому что новые версии GRUB могут изменить местоположение в памяти, где хранится пользовательская таблица OEMB.
Я остановился на другой идее. В GRUB есть эквиваленты команд write_byte , write_word , write_dword и read_ . Что если GRUB на лету будет изменять исходную таблицу OEMB? В наше время BIOS’ы сжатые. Вероятно, таблицы загружаются в RAM, поэтому теоретически можно изменять значения.
Так я и сделал. В качестве временного теста я добавил следующую команду в последовательность загрузки GRUB:
Она заменяет байт 0x00 непосредственно перед байтом 0x04 на значение 0x30, преобразуя 64-разрядный начальный адрес PCI этого конечного диапазона в 0x0000000430000000. Я не обновлял контрольную сумму таблицы OEMB, потому что Linux и так скулил, что контрольная сумма неверна, поэтому, очевидно, ему всё равно.
Я перезагрузился в Linux и с тревогой проверил лог dmesg для PCI.
Успех! Окно 0x430000000-0xfffffffffff появилось как новое допустимое окно в списке, и предупреждение о конфликте исчезло. После проверки, что Linux всё ещё работает нормально, я попытался загрузиться в Windows с тем же хаком.
Сработало! Теперь я могу загрузиться в Windows с 16 ГБ RAM, если использовать GRUB в качестве загрузчика с вышеупомянутой командой write_byte. Загрузчик Windows 10, очевидно, не будет работать. И если я когда-нибудь переустановлю Windows, вероятно, придётся временно вытащить одну планку RAM, чтобы загрузился установщик. Но это работает!
Чтобы навсегда добавить исправление в GRUB, я создал файл /etc/grub.d/00_patchbios следующего содержания:
Затем сделал скрипт исполняемым и запустил sudo update-grub . Теперь патч автоматически применяется при запуске GRUB.
Честно не знаю, насколько это безопасно. Действительно ли материнская плата аппаратно запрограммирована смотреть на эти адреса для PCI или что-то ещё. Знаю только, что она проходит мои тесты RAM. Поскольку Linux отлично работает с 16 гигабайтами RAM, меня эти вопросы не слишком беспокоят. Возможно, если установлено больше карт PCI/PCIe или что-то ещё, то возникнут проблемы, но в моём случае, похоже, всё в порядке. Очевидно, что ваша система может отличаться, и этот хак нельзя напрямую применить на других материнских платах, потому что таблица ACPI у каждого BIOS немного отличается.
Думаю, это был весёлый опыт, чтобы поделиться с миром! Надеюсь, вы что-то узнали из этого поста. Конечно, я и сам многому научился в процессе.