techwork: (Default)
techwork ([personal profile] techwork) wrote2022-04-30 07:52 pm

Максимум из XP

понимаю что никому не нужно.
Но я таки установил какое максимальное количество памяти реально может адресовать Windows XP с hal.dll распакованной из HALMACPI.DL_ и справкой ntkrpamp.exe в hex редакторе. Метод ещё времён Windows XP-64 когда люди не хотели её ставить но хотели получить обработку всех 4 гигабайт. А потом и 8 гигабайт с выходом двухгиговых планок.

Максимум это 12 гигабайт на самом деле - не важно 8+4 или 4+4+4 .

И связано это с тем что область выше 12 гигабайт во времена XP считалась служебной. По первых там было адресное пространство шины PCI у таких южных мостов как ICH7 и многих той же эпохи. А во вторых по скольку это адресное пространство служебное то оно использовалось видеодрайверами для обращения к ресурсам видеокарты. Иногда это повыше в адресной структуре но чаще всего 12.

Да если отключить в биосе там где возможно ту часть адресного пространства что используется для работы с железом можно воткнуть в старые в платы 16 гигов и они будут нормально работать. Но вот драйвера под Windows XP работать без синих экранов не будут. И это связано именно с драйверами этой ОС.

Да на такую плату если процессор 64 бита то можно установить Windows 7 64 бита и она будет видеть 16 или 14 гигов и работать с ними без сбоев. Ибо драйвера под неё были написаны по другому.

Но даже если Windows 7 там будет видеть 16 гигов и работать с ними то Windows XP - синий экран.

только если в системе 12 гигов то они будут работать одинаково стабильно и видеть 12 гигов. Опять таки не забыть о модификации ntkrpamp.exe если два и более ядер и ntkrnlpa.exe если одноядерник.

Так что не смотря на то что XP 32 бита в стоке и 4 гига видит не полностью. Она реально может работать с 12 гигами полностью с одинаковой стабильностью. Просто эта функция в ней по умолчанию отключена. А вот больше 12 это то что работать нормально не будет. Более того очень часто сам чипсет не сможет обработать две планки по 8 гигов или 4 планки по 4 гига. При том что одну 8 гиговую он нормально видит.

Потому что вся 900 серия чипсетов интел G31 G41 они все физически ограничены 12 гигами именно своими мостами ICH6,ICH7,ICH8,ICH9, и только ICH10 был избавлен от этого ограничения. Аналогично и у АМД.
Да есть хак который позволяет изменить биос но .... работать нормально это не будет.

Собственно именно поэтому больше 12 гигов Windows XP видеть и не должна - в её эпоху железо настольное не серверное не могло даже адресовать более 12 гигов памяти чисто физически. хотя PAE-36 может адресовать 64 гигабайта, но если просто сделать ключик /PAE в boot.ini вы получите синий экран. Потому что драйвера. режим этот чисто для серверного железа. XP и не должна в нём работать. и отключили его не потому что "злые маркетологи" а потому что не было рыночного соглашения о том как размещать адреса физических устройств и писать драйвера. Исторически всё пришло к 12 гигабайтам хотя в реальности там ещё хвост почти на гиг всегда и больше иногда. А не имея соглашения разработчику пришлось бы нести ответсвенность за падение в синий коврик. Но теперь спустя время можно понять что консенсус по драйверам сложился именно так - 12 гигов это законная часть для оперативной памяти. И если кто то XP ещё использует он может использовать её с 12 гигами и PAE-36 понимая что не будет синих экранов. А больше будут даже если железо уже и новее например P45 с официальной поддержкой 16 гигабайт. Но вот только драйвера для XP не смогут нормально на ней работать с включенной PAE-36 если в системе установлено более 12 гигов памяти. Хотя железо само физически это может. Но только с Win7.

[identity profile] techwork.livejournal.com 2022-05-01 10:43 pm (UTC)(link)
Вообще то я знаю что я говорю. И что то я сомневаюсь что ты реально что внёс в coreboot своего.

Потому что ты тогда бы не нёс чушь .

Если у тебя на машине UEFI то сном твоих сетевух оно и управляет, как и поведением их во время этого сна.
Да конечно если у тебя сетевуха чипсетная то всё что есть у тебя на компе через Intel ME можно вытянуть даже на standby машине, так же можно на ней внести обновление в ОС Intel ME и кстати там не Minix позитив спиздел. Можно внести коррекцию в криптоалгоритмы , ну и многое другое.

Но на материнках и так часто стоят НЕ чипсетные сетевухи. Похуй что они на материнке распаяны. Для режима пробуждения и удалённого управления это не важно. И не знанием этого ты выдал то что ты кидис. Потому что я когда то как раз ставил компы где другие компы были загружаемые дистанционно HP шные станции в те времена когда никакого IntelME не было и даже AMT не родился. И дистанционно управлялись машины благодаря сетевухе которая ставилась в самый обычный слот PCI — просто в Биосе включался режим WakeUP от сетевой карты.

Ну и вообще при наличии этого режима в биосе можно спокойной загружать терминалы дистанционно. Просто в каретку запрограммированная на програматоре микрушка ставилась.

Так вот у всех и так в основном распаяные на платах реалтеки стоят. Ну кроме самых последних где даже вайфай в чипсете.

Тем не менее Intel ME с ними прекрасно работает. Просто закладка располагается в реалтеке , точнее это не закладка а формально фича для дистанционной загрузки компьютера в режиме терминала.

При этом в UEFI тебе даже не поможет втыкание старой сетевухи типа RTL8139D так как там есть универсальная микропрограмма для работы с любыми сетевухами на стадии их инициализации.

Если на материнке старый BIOS то да — такая сетевая карта не даст сделать сетевую загрузку, не даст в тихую внести изменения в ОС и программы IntelME и спиздить данные с SSD без включения компа и чтобы Intel ME тебя поимел тебе нужно включить компьютер когда он подключен к интернету. При чем если в сети есть коммутатор который формально не пускает в интернет это не важно, это все равно подключен к интернету. Только воздушный зазор и никакого радиоинтерфейса.


А вот если связь есть — то как только ты включишь компьютер .... потому что ты не понимаешь, но драйвера требуются ОС а не железу.

Чипсет и так знает какое прерывание он выделил карте. Сетевая карта и так идентифицирует себя как сетевая карта при последовательном опросе, диапазонов ввода вывода не так уж и много. И более того обмен данных , хотя и со сбоями возможен и при неправильном диапазоне ввода вывода даже если он не реконфигурируем программно. Ну и плюс адресация вообще похер так ОС intelME вообще не использует внешнюю адресацию. Собственно если ты проявишь внимательность и окопаешься в дистрибутивах той же семёрки ты найдёшь там универсальный драйвер сетевого адаптера и он будет работать. Как ты думаешь почему ?

Чтобы тебя трахнуть АНБ шнику на самом деле хватит и 10 мегабитной скорости с которой он поставит в закрытую операционную систему нужный драйвер для полноскоростного обмена ( а точнее просто набор диапазонов выставит) . А корявую возможность залезть в IntelME он получит сразу же как ты включишь компьютер.

Кстати то что ты не знаешь такой простой вещи — что в реальности не требуется весь зоопарк драйверов на весь зоопарк карт чтобы карта начала работать и рассуждаешь на уровне ОС выдаёт в тебе что ты немного припиздел про своё участие в coreboot.

Я доже когда то в древности на ROM.BY ошивался и биосы ковырял, но я не говорю что я участник проекта внесший какой то там вклад, хотя препарировал ряд биосов , нашёл адреса смещений, нашёл возможности подмен модулей, и не помню уже что то я там с памятью намудрил а да нашёл как проддержку диска болльше не помню уже 8 вроде гигов врубить что то там с режимами LBA ну реально это маловажная древность для меня, дедушка забыл. Но я микрокод этих модулей не писал, и если они были не в чистом виде то и кода их в диасамблере не видел и понимал что они работают как черный ящик. То есть не надо припёздывать про свою роль, это выдаётся не знанием работы элементарных вещей.

[identity profile] ljuser888.livejournal.com 2022-05-02 12:23 am (UTC)(link)
А вот если связь есть — то как только ты включишь компьютер .... потому что ты не понимаешь, но драйвера требуются ОС а не железу.

а что по твоему крутится на чипсете как не ОС, раньше это была RTOS threadx, на новых чипсетах minix (жидки в Интел решили сэкономить на выплате лиценз. отчислений)


При этом в UEFI тебе даже не поможет втыкание старой сетевухи типа RTL8139D так как там есть универсальная микропрограмма для работы с любыми сетевухами на стадии их инициализации.

Я в свое время драйвер для DOSa с нуля писал для почти идентичного чипа RTL8139C. Поэтому, кишки устройства сетевых интерфейсов знаю хорошо, но фишка в том, даже с учетом того, что они похожи, наличием RingBuffer-ов на прием и отдачу пакетов, и некоторыми другими общими моментами, все они отличаются адресами и размером управляющих регистров, адресами портов ввода-вывода и.т.п, т.е. отличается в деталях, и именно эти отличия в деталях и дает такой зоопарк драйверов, иначе бы был универсальный драйвер для всех карт и наступила бы гармония и радость с сетевыми интерфейсами.


Чипсет и так знает какое прерывание он выделил карте. Сетевая карта и так идентифицирует себя как сетевая карта при последовательном опросе, диапазонов ввода вывода не так уж и много. И более того обмен данных , хотя и со сбоями возможен и при неправильном диапазоне ввода вывода даже если он не реконфигурируем программно.

Сетевая карта сама себя не идентифицирует в том плане, что должен быть кто-то внешний по отношению к ней, кто бы по VendorID & ProductID идентифицировал её как сетевую карту, я тут речь про PCI устройства говорю, а не про USB сетевые устройства, которые да, оповещают систему, что они за тип устройств.

Хранение ProductID&VendorID, и связанных с этим устройством разных настроек и адресов, и знание того, что это за адреса(управляющие регистры, кольцевые буфферы и.т.п.) это по сути и есть хранение драйверов этих устройств, а их всех хранить накладно в чипсете.

Поэтому либо хранить драйвера только самых распространенных сетевух, либо использовать набор эвристик в надежде, что это не вызовет зависание компьютера или синий экран при вмешательстве в работу сетевой карты.

[identity profile] techwork.livejournal.com 2022-05-02 01:52 pm (UTC)(link)
нет там не minix

советую тебе взять пятьдесят разных сетевух в том числе и намонтированных и ты очень удивишься тому что портов ввода вывода диапазонов в реальности не так уж и много.

Кроме того есть метод определить эти порты последовательным опросом на хост — если отправка пакета не производится — порт закрыт. Если производится порт открыт, таким образом очень легко определяется диапазон портов. Да конечно на уровне ОС высокого уровня это сделать сложно. На уровне более низком — легко.

Стучатся именно изнутри.

Ещё раз если ты хочешь передать данные со скоростью 10 мегабит совершенно пофиг на внутреннюю архитектуру карты — то что нужно для передачи узнаётся очень легко , а адрессное пространство это вообще — если ты на аппаратном уровне общаешься с чипом сетевой карты даже через PCI то ты можешь выделить любое адресное простраство, это не важно. Это лишь отвечает за взаимодействие с ОС — не с железом. Управляющие регистры ? ты о чём ? О переключении режимов симплекс дуплекс, определения скорости ? а это совершенно не важно для самой возможности подключится.

??? ты думаешь что имея на борту кварк на 200 мегагерц и ПЗУ на 64 мегабайта нельзя запустить программу для идентификации сетевого устройства plug&play ? 64 мегабайта это жесткий диск 1993 года. И то туда игры пихали. Работали они нормально и в 1998 году. И сетевые карты там если плуг энплейные спокойной определялись. И 200 мегагерцовый пень тоже тогда был довольно дорогой. Я вот себе не мог такой позволить даже с летними подработками на стройках. А это и есть IntelME

Как это может вызвать синий экран когда компьютер в режиме standby ? Опрос то изнутри проводится в этом режиме. Даже если он ничего не получил при этом, то при включеном режиме он так же не может быть потому что обращения ОС высокого уровня к железу к которому обращается IntelME в это время обладают меньшим приоритетом и просто образуется задержка в несколько тактов пока IntelME не свалит увидев что идёт внешнее обращение. Ты даже ничего не заметишь на частоте 3000 Мгц это например 30 тактов то есть 0,00000001 с Ты заметишь расхождение в 0,00000001с ? Очевидно что нет. ОС тоже не заметит — никто не заметит вообще.