Cómo superar el límite de 4 GB de RAM en Windows XP/2000

Iniciado por cixert, 19 Febrero 2015, 01:22 AM

0 Miembros y 1 Visitante están viendo este tema.

cixert

Podemos encontrar muchas páginas en Internet que nos explican como alcanzar el límite de 4GB de memoria RAM impuesto por Microsoft para los sistemas operativos de 32 bits utilizando PAE, pero no hay apenas información en español de como superar estos 4Gb para utilizar incluso 128Gb de RAM en Windows 2000/XP/2003 (NT5).

Por esto he procedido a recopilar con fines "educativos" unos links en inglés que indican el procedimiento para superar esos 4Gb de RAM, a la espera de que algún día álguien se decida a redactar el proceso en español. La utilización de estos procedimientos va en contra de los límites concedidos por la licencia (EULA) de estos sistemas.

Los límites por defecto en las versiones de 32 bits + PAE son:

Windows 2000 Professional ---4Gb RAM
Windows 2000 Server ---8Gb RAM
Windows 2000 Advanced server ---8Gb RAM
Windows 2000 Datacenter server ---32Gb RAM (con actualizaciones 64 Gb RAM)

Windows XP --- 4Gb RAM

Windows 2003 Standar --- 4Gb RAM
Windows 2003 Enterprise --- 64 Gb RAM
Windows 2003 Datacenter --- 64 Gb RAM
Windows 2003 SP1 Datacenter --- 128 Gb RAM

Referencias oficiales:
https://msdn.microsoft.com/en-us/library/windows/hardware/dn613975%28v=vs.85%29.aspx

Explicación de las limitaciones:
http://blogs.technet.com/b/markrussinovich/archive/2008/07/21/3092070.aspx

Explicación de alcanzar 4 Gb de RAM en procesadores de 32 bits y 128 Gb de RAM en procesadores de 36 bits (PAE):
(el límite real lo marca el hardware)
http://www.msfn.org/board/topic/130002-32bit-windows-not-usingseeing-all-4gb-ram/

Procedimiento para actualizar Windows 2000 al Unoficial Kernel Extendido:
(solo para sistemas en inglés, italiano, chino y japonés)
http://www.msfn.org/board/topic/149233-kernelex-for-win2000/

Procedimiento de modificación del límite del Kernel de Windows XP:
http://www.msfn.org/board/topic/171482-get-windows-xp-x86-to-recognize-more-than-4gb-with-pae/
Otros métodos:
http://www.overclock.net/t/77229/windows-xp-ram-limit/10

Similitudes en Windows 2003:
http://www.msfn.org/board/topic/171524-windows-2003-performance-and-security/

Más info para 2000:
(en japonés, usar traductor):
http://blog.livedoor.jp/blackwingcat/

Más info para XP:
(en japonés, usar traductor):
http://bro2ch.com/av-2nt-pc/fox/poverty/1397729660/201-

Más info para 2003:
(como convertir la version server en desktop)
http://win2k3.msfn.org/

engel lex

por qué no usar directamente un sistema de 64bits?

digo, ya una pc que no soporte eso dudo que pueda manejar tanto contenido en ram realmente (opinión personal)

otra cosa, cual sería la ventaja?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Eleкtro

#2
Cita de: cixert en 19 Febrero 2015, 01:22 AMPodemos encontrar muchas páginas en Internet que nos explican como alcanzar el límite de 4GB de memoria RAM impuesto por Microsoft para los sistemas operativos de 32 bits utilizando PAE, pero no hay apenas información en español de como superar estos 4Gb para utilizar incluso 128Gb de RAM en Windows 2000/XP/2003 (NT5).

Las ediciones de 32-Bit que están limitadas a 4 GB, son principalmente por dos motivos:

· El primer motivo es por razones de estabilidad del sistema, ya que en dichas ediciones de 32-Bit, se conoce que ciertos drivers se vuelven inestables al encontrar direcciones físicas por encima de los 4 Gb, aparte de otro tipo de conflictos,
por ende, hazte la siguiente pregunta antes de continuar:
¿Realmente merece la pena arriesgarse a fastidiar la instalación actual del SO?. ...Me parece que deberías escuchar la sugerencia del compañero @Engel Lex.

· El segundo motivo es simplemente por una decisión de licencia de Microsoft, pero los motivos al parecer se desconocen ( quien sabe, podría ser algo del estilo: "si quieres usar +4 Gb, fastidiate y compra Windows de 64 Bit, que para algo vendemos ese producto." "...jódete, consumidor" )


Así pues, y según lo que he leido ...yo no lo he verificado, así es como funciona la limitación de forma interna:

La indocumentada función ZwQueryLicenseValue por Microsoft (aquí: https://social.msdn.microsoft.com/Search/en-US/windows/desktop?query=ZwQueryLicenseValue) de la API de Windows (que podemos ver la firma documentada de la función aquí: http://www.geoffchappell.com/studies/windows/km/ntoskrnl/api/ex/slmem/queryvalue.htm ) es la que se encarga de leer un valor de registro que impone el límite de 4 GB, dicha función se llama a partir de un método con el nombre/símbolo MxMemoryLicense.

¿para que sirve saber como funciona de manera interna la limitación por licencia?, pues sirve para que con algo de conocimientos sobre ingenieria inversa, tú u otra persona pueda tener la referencia necesaria para cargar el archivo en un desamblador, localizar la instrucción que llama a la función ZwQueryLicenseValue, eliminar ese check, y reconstruir el archivo con los nuevos cambios, y ya con eso, supuestamente, se eliminaría completamente el impedimento de los +4GB.

(hay gente que lo ha hecho y dice que funciona, puedes encontrar ya la dll modificada si googleas por el nombre de dicha función, pero solo encontré el archivo modificado para windows Vista y 7, y obviamente NO debes modificar las dependencias del kernel de Windows por versiones diferentes ya que de hacerlo destruirás el funcionamiento del SO, así que debes hacer las modificaciones necesarias a la dll tu mismo.)

Fuente(s):
http://en.wikipedia.org/wiki/Physical_Address_Extension#cite_note-geoffchappell.com-10
http://en.wikipedia.org/wiki/Microsoft_Windows_library_files
http://www.geoffchappell.com/notes/windows/license/memory.htm
https://social.msdn.microsoft.com/Search/en-US/windows/desktop?query=ZwQueryLicenseValue
http://www.geoffchappell.com/studies/windows/km/ntoskrnl/api/ex/slmem/queryvalue.htm

Saludos!








cixert

#3
Cita de: Eleкtro en 19 Febrero 2015, 03:05 AM

(hay gente que lo ha hecho y dice que funciona, puedes encontrar ya la dll modificada si googleas por el nombre de dicha función, pero solo encontré el archivo modificado para windows Vista y 7, y obviamente NO debes modificar las dependencias del kernel de Windows por versiones diferentes ya que de hacerlo destruirás el funcionamiento del SO, así que debes hacer las modificaciones necesarias a la dll tu mismo.)


Efectivamente se puede encontrar, aquí está en la versión inglesa de Windows 2000 http://www.windows2000.tk/archive/ lo único que muchos mensajes emergentes del sistema pasan a aparecer en este idioma.

cixert

#4
Desde 2017 existe un patch realizado por "Dibya" para alcanzar 128 GiB de RAM en cualquier versión de Windows XP de 32 bits:

Hay 2 versiones:


-versión copiar y pegar:
http://retrosystemsrevival.blogspot.com/2018/01/windows-xp-ram-patch.html

-versión nLite:
https://www.wincert.net/forum/topic/14907-remove-4gb-ram-limit-of-windows-xp-x86-extend-to-pae-128gb/

el-brujo

¿Y hay que activar la opción de "memory remap" feature en la BIOS?

No sé que sentido tiene hoy en día usar Windows XP, pero bueno :P

cixert

#6
No he escuchado nada de habilitar la opción Memory remap en la BIOS.
Yo no utilizo versiones superiores a Windows XP, no veo práctico su interface ni estar a expensas de los caprichos de Microsoft. Así como no me gusta utilizar sistemas operativos Spyware y complicados como Windows 10.
Desde luego que, en cualquier caso, ampliar Windows XP por encima de los 4 GiB RAM es solo para quien quiera seguir utilizando Windows XP. Quien no quiera utilizar XP puede no leer este post y listo  :laugh:

Respecto al método de copiar y pegar descrito en retrosystemrevival he verificado que no funciona, no tiene sentido.

He escrito un tutorial de forma que sí funciona con copiar y pegar, pero de otra manera.
Lo he realizado para mi uso personal, pero lo pego aquí por si es de utilidad:

A continuación se relatan las instrucciones para copiar y pegar el Diyba 128GB PAE Patch directamente en una versión instalada de Windows XP. Sin la necesidad de integrar este en nLite.
El procedimiento para copiar y pegar los archivos es bastante más complejo de lo indicado en el mod http://retrosystemsrevival.blogspot.com/2018/01/windows-xp-ram-patch.html no funcionando si se hace tal y como se indica en esa web, además de que sus instrucciones contienen varios errores de bulto.

Nota:
Varias personas dicen que en XP solo es posible alcanzar los 64 GiB RAM, en vez de 128 GIB RAM que se podrían alcanzar con versiones superiores de Windows en 32 bits, pese a que diversos métodos relatan la cifra de 128 GiB RAM.

Los archivos y la configuración son válidos para todos los idiomas. Solo cambia que si el comando "/sos" está instalado en boot.ini aparece la pantalla de arranque en inglés, indicando el número de procesadores y la memoria RAM en este idioma.

Esto depende de la HAL instalada en nuestro ordenador y del kernel del sistema Windows NT utilizado con nuestra HAL. Las nuevas versiones mapean la memoria RAM para superar el límite de 4 GiB RAM. Además debemos de sustituir los drivers USB, el driver de dispositivos HID y el archivo de formato de Windows "format.com" para adaptar su utilización por encima de los 4 GiB RAM. La sustitución de otros archivos también podría ser necesaria, pero generalmente no está disponible una versión adaptada. Por lo que en ocasiones recibiremos un pantallazo azul utilizando Windows XP con más de 4 GiB RAM instalados.

Advertencia: Este tutorial es bastante largo y técnico, pero utilizado en la práctica creo que es sencillo de comprender. Por lo que solo debe de leerse este tutorial si efectivamente va a utilizarse.

Expongo 2 métodos con 2 diferentes particularidades y una variante en el Método B que supone una combinación de ambos métodos.
Con el Método A copiaremos y pegaremos los archivos correspondientes a los HAL y a los kernel del sistema sustituyendo los originales.
Si seguimos el Método A entonces Windows XP dejará de arrancar cuando se produzca una actualización del sistema realizada por Microsoft que contenga una versión diferente del HAL o del kernel del sistema, debiendo de repetirse el proceso.
Partiremos de la base de tener Windows XP con el Service Pack 3 instalado por lo que especialmente si se actualiza el kernel, a la última versión de Microsoft en 2017, hay que repetir el proceso para que Windows XP vuelva a arrancar.

También dejará de arrancar Windows XP si procedemos a sustituir nuestra librería HAL por otra que no utilice PAE, ya que los kernel modificados por Diyba solo son los de las versiones correspondientes a PAE. No será posible arrancar el sistema con los kernel "ntoskrnl.exe" y "ntkrnlmp.exe" ya que tratarán de utilizar las librerías HAL modificadas. Solo será posible arrancar los kernel PAE "ntkrnlpa.exe" y "ntkrpamp.exe".
Lo evitaremos con el Método B, con este realizaremos un cargador de arranque para boot.ini. Aunque también podemos combinar ambos métodos con una variante, dando como resultado el mismo problema expuesto para el Método A si posteriormente se actualiza el sistema
Recomiendo el Método B sin la variante, pues tendremos un cargador de arranque boot.ini sin exponernos a las modificaciones del sistema que supone sustituir los archivos originales del HAL y del kernel del sistema.

Común a los 2 métodos copiaremos los siguiente archivos como se indica:

-Antes del primer paso hacemos una copia de seguridad de los archivos originales a sustituir.

-Es recomendable realizar la operación de copiar y pegar desde otro sistema operativo para impedir que los archivos sean restablecidos automáticamente por la protección de archivos del sistema de Windows. En la práctica me ha funcionado realizándolo desde el propio Windows XP, pero podría darse el problema. Otra opción sería realizar la operación deshabilitando Windows File Protection (WFP), pero no es un paso sencillo que podemos tener físicamente a nuestro alcance por lo que se prescindirá de esta opción. Si se hace desde el propio sistema se ha de verificar cada archivo una vez reiniciado Windows XP.
-Trabajaremos con el Diyba's 128GB PAE Patch original versión 1.0 (2017-01-01).
Windows_XP_128GB_double_pae_addon_final_byDibya.zip

-Todos los archivos del path con extensión SYS son drivers. Copiaremos estos en los siguientes directorios en este orden:
Los drivers originales con extensión .SYS están en:
\WINDOWS\Driver Cache\i386 --->
Pegaremos todos los drivers.sys
\WINDOWS\system32\drivers ---> Solo están los drivers actualmente instalados, por lo que solo pegaremos los que sustituyen.
\WINDOWS\system32 ---> Solo están los que son utilizados actualmente por Windows, por lo que solo pegaremos los que sustituyen.

Adicionalmente me he encontrado varios de estos drivers en otras carpetas de Windows, por lo que no está de más sustituirlos. Podemos realizar una búsqueda de cada archivo por si tenemos más. No aparecerán utilizando el buscador de Windows. Yo utilizo PDfind File Finder por Ontrak, extraido de una vieja versión de Power Desk.

usb8023.sys y usb8023x.sys están también en:
\WINDOWS\$hf_mig$\KB2807986\SP3QFE

usbehci.sys, usbhub.sys y usbport.sys están también en:
\WINDOWS\system32\ReinstallBackups\0008\DriverFiles\i386
\WINDOWS\system32\ReinstallBackups\0009\DriverFiles\i386

usbport.sys está además en
\Drivers\Board\Intel\C\Legacy

Recordar: Si actualizamos estos drivers con versiones originales podrán dejar de funcionar correctamente los puertos USB con más de 4 GiB RAM instalada. Así como los dispositivos HID dependientes de hidparse.sys, debiendo de repetir la operación.

Además sustituiremos la versión de "format.com" de Windows XP por la versión de Windows 2003:
\WINDOWS\system32 ---> Pegamos format.com

Adicionalmente me he encontrado format.com en otra carpetas de Windows, por lo que no está de más sustituirlo. Podemos realizar una búsqueda por si tenemos más.
\WINDOWS\$hf_mig$\KB955704\SP3QFE


A continuación emplearemos uno de los siguientes métodos o una variante de la combinación de ambos.
Deberemos de tener en cuenta que en Windows XP el sistema siempre arranca con estos nombres de archivo en la carpeta system32:
hal > hal.dll
kernel sin PAE > ntoskrnl.exe
kernel con PAE > ntkrnlpa.exe

(añaden "pa" indicando PAE y quitan "os" para conservar nombre largo de 8 caracteres, aunque parece funcionar en algunos casos con 10 caracteres realmente presenta problemas y no funciona en muchas ocasiones)
Estos nombres de archivo en la carpeta system32 no tienen por qué corresponder con el nombre real del archivo.
Originalmente ese el nombre del HAL y el kernel de un PC Estándar pero al instalarse otras HAL, con otros archivos, el sistema copia estos a la carpeta system32 y los renombra dándole el nombre estándar, que es con el que el sistema arranca por defecto. Salvo que se indiquen otros en boot.ini con hal=*.dll y kernel=*.exe.
Es decir, los archivos que tienen esos nombres no corresponden a todas las configuraciones HAL existentes, al instalarse la HAL correcta con su librería.dll y sus correspondientes kernel, estos son renombrados automáticamente en la carpeta system32 con los nombres anteriores. Aunque realmente son otros archivos cuyo nombre correcto se puede visualizar en botón derecho "propiedades+versión+nombre original interno".


MÉTODO A


Con este método podemos copiar y pegar los archivos del path correspondiente al HAL y al kernel en las carpetas de Windows, con la particularidad de que el sistema dejará de arrancar si es instalada la HAL sin el kernel PAE modificado (instalando la HAL modificada con los kernel no PAE sin modificar ntoskrnl.exe y ntkrnlmp.exe) o actualizado el kernel PAE modificado a una versión oficial de Microsoft.

-Antes de proceder realizamos copia de seguridad de los archivos.

-Preferentemente desde otro sistema operativo pegar los archivos en tantas carpetas como existan (en la práctica me ha funcionado desde el mismo sistema pero se ha de verificar cada archivo una vez reiniciado Windows XP).

-Todos los archivos del path con extensión EXE son Kernels del sistema. Copiaremos estos en los siguientes directorios en este orden:
Los kernel ntkrnlpa.exe y ntkrpamp.exe con extensión .EXE están en:
(además de ntoskrnl.exe y ntkrnlmp.exe que no serán sustituidos pues no existe una versión modificada)

\WINDOWS\system32\dllcache ---> Los pegaremos con el nombre original ntkrnlpa.exe y ntkrpamp.exe
\WINDOWS\Driver Cache\i386 ---> Los pegaremos con el nombre original ntkrnlpa.exe y ntkrpamp.exe
\WINDOWS\system32 ---> Aquí pegaremos solo uno de los dos y lo pegaremos con otro nombre.
Existen 4 archivos de kernel del sistema para Windows XP. Solo 2 son utilizados con cada HAL. En el caso de la HAL para multiprocesador ACPI son renombrados por Windows como ntoskrnl.exe y ntkrnlpa.exe

Todos "menos" los sistemas multiprocesador con ACPI utilizan:
kernel sin PAE> ntoskrnl.exe (nombre real de arranque)
kernel con PAE> ntkrnlpa.exe (nombre real de arranque)

Mientras que multiprocesador con ACPI utiliza:

kernel sin PAE > ntkrnlmp.exe renombrado por Windows en System32 como ntoskrnl.exe
kernel con PAE > ntkrpamp.exe renombrado por Windows en System32 como ntoskrnlpa.exe

En este directorio se encuentran solo los 2 archivos de kernel correspondientes a nuestra HAL. Si nuestro sistema utiliza multiprocesador ACPI, que es lo más probable (todos los sistema multiprocesador con fuente ATX), deberemos de pegar el kernel "ntkrpamp.exe" pero renombrado como "ntoskrnlpa.exe".
Antes de sustituir el archivo en system32 visualizar el nombre real en system32 con botón derecho "propiedades+versión+nombre original interno". Ese es el kernel de sistema que tenemos instalado.
El otro archivo, el de kernel sin PAE ntoskrnl.exe (nombre original para multiprocesador ACPI ntkrnlmp.exe) no lo vamos a sustituir por lo que si tratamos de arrancar el sistema sin /PAE no funcionará con la HAL modificada de este path.

Adicionalmente me he encontrado copias del kernel del sistema en otras carpetas de Windows, por lo que no está de más sustituirlos. Podemos realizar una búsqueda de cada archivo con un buscador de archivos por si tenemos más. No aparecerán utilizando el buscador de Windows. Yo utilizo PDfind File Finder por Ontrak, extraido de una vieja versión de Power Desk.

\WINDOWS\$hf_mig$\KB956572\SP3QFE
\WINDOWS\$hf_mig$\KB2393802\SP3QFE


-Todos las archivos del path con extensión DLL son las librerías de las capas HAL del sistema. Copiaremos estos en los siguientes directorios en este orden:
Las capas HAL con extensión .DLL están en:
\WINDOWS\system32\dllcache ---> Las pegaremos todas con el nombre original.
\WINDOWS\system32 --> Solo pegaremos la HAL utilizada y renombrada como hal.dll
En system32 pegaremos solo una de las seis y la pegaremos renombrada con el nombre hal.dll
Existen multiples capas HAL, en sistemas IBM PC para Windows XP existen 7, siendo las más habituales las 6 facilitadas en este patch. En el caso del HAL para multiprocesador ACPI se utiliza halmacpi.dll, que es renombrada por Windows como hal.dll en la carpeta system32.
Antes de sustituir el archivo en system32 visualizar el nombre real en system32 con botón derecho "propiedades+versión+nombre original interno". Esa es la HAL que tenemos instalada.

Las 7 HAL de Windows XP compatibles IBM PC son:

SIN ACPI (fuente AT)
1-AT_PC Estándar (básico) = HAL PIC, no compatible con ACPI ni APIC
(usualmente no se requiere cambiar la HAL hacia PC Estándar)
hal > hal.dll (nombre real de arranque)
kernel sin PAE > ntoskrnl.exe (nombre real de arranque)
kernel con PAE > ntkrnlpa.exe (nombre real de arranque)
2-AT_Equipo monoprocesador MPS, con APIC = HAL UP APIC, no compatible con ACPI
(MINORITARIO, para un solo procesador Xeon en AT con capacidad multiprocesador)
hal > halapic.dll
kernel sin PAE > ntoskrnl.exe (nombre real de arranque)
kernel con PAE > ntkrnlpa.exe (nombre real de arranque)
3-AT_Equipo multiprocesador MPS, con APIC = HAL MP APIC, no compatible con ACPI
(MINORITARIO, para Xeon multiprocesador en AT)
(dicen se recomienda si hay errores frecuentes con CPU Intel P4 con HyperThreading activado)
hal > halmps.dll
kernel sin PAE > ntoskrnl.exe (nombre real de arranque)
kernel con PAE > ntkrnlpa.exe (nombre real de arranque)


CON ACPI (fuente ATX)
4-ATX Equipo compatible con Advanced Configuration and Power Interface (ACPI) (básico) = HAL PIC ACPI, con ACPI pero sin APIC
hal > halacpi.dll
kernel sin PAE > ntoskrnl.exe (nombre real de arranque)
kernel con PAE > ntkrnlpa.exe (nombre real de arranque)
5-ATX Monoprocesador ACPI de PC, con ACPI y APIC = HAL UP APIC ACPI
(Windows 2000 lo llama Uniprocesador ACPI)
hal > halaacpi.dll
kernel sin PAE > ntoskrnl.exe (nombre real de arranque)
kernel con PAE > ntkrnlpa.exe (nombre real de arranque)
6-ATX Equipo multiprocesador ACPI, con ACPI, APIC y multiproceso = HAL MP APIC ACPI
hal > halmacpi.dll
kernel sin PAE > ntkrnlmp.exe (renombrado para arranque en system32 como ntoskrnl.exe)
kernel con PAE > ntkrpamp.exe (renombrado para arranque en system32 como ntkrnlpa.exe)
7-ATX Multiprocesador Compaq SystemPro o 100% compatible (servidores) =
(MINORITARIO, no incluido en el path)
hal >halsp.dll
kernel sin PAE > ?.exe
kernel con PAE > ?.exe

-Tras estos pasos habilitamos /PAE en nuestra entrada de arranque de Windows XP en boot.ini

-Reiniciamos

-En el caso de actualizar el sistema requiere de reinstalación.

EXTRA:
Además también hay copias del kernel original de Service Pack 3, así como del HAL y de los drivers, en:
\WINDOWS\Driver Cache\i386\sp3.cab
Paralelamente existe una copia del driver usbd.sys en:
\WINDOWS\Driver Cache\i386\driver.cab
Estos archivos no es imprescindible sustituirlos si recordamos no restaurarlos manualmente desde aquí.
Si aun así se quieren sustituir debemos de editar los archivos.cab (Windows Cabinet Compressed Archive File). Para ello podemos utilizar estas técnicas, no siendo fácil editar los .cab directamente:

1. Utilizando un programa para convertir el archivo.cab a un formato de compresión editable en el que añadiremos las versiones actualizadas, para posteriormente volver a convertir al formato.cab.
Podemos utilizar el programa PowerArchiver para convertirlo al formato .ZIP, añadir las versiones actualizadas y volver a convertir al formato .CAB.
(los programa WinRAR y StuffIt Deluxe no permiten volver a convertir al formato .CAB y los programas 7-Zip y WinZip no tiene la opción convertir)
Nota: Establecer la máxima compresión para .CAB.

2. Utilizando Microsoft Cabinet SDK aka Cab SDK (The Cabinet Software Development Kit) (con consola)
http://www.pixelsplasher.com/_downloads/software/Microsoft-Cabinet-SDK/

3. Instalando un PAE path automático, alternativo a este tutorial, que amplia la RAM hasta 64 GiB RAM en XP llamado "Fix128" aka "Windows x86 (32 bits) 4 GB fix (Up to 128 Gb)". Después copiamos los archivos driver.cab y sp3.cab, guardándolos en otro directorio, y lo desinstalamos (ya que he notado que parecen aumentar los pantallazos azules en comparación con este tutorial).
Nota: Este sistema modifica la fecha de todos los archivos estableciendo la fecha actual.


MÉTODO B


Con este método crearemos un archivo boot.ini de arranque mediante el cual tendremos 2 formas de proceder:

1-Con un menú no intrusivo en el que elegiremos arrancar con 128 GiB RAM o arrancar con 4 GiB RAM sin que se llegue a instalar la HAL modificada, gracias a no sustituir los archivos del HAL y del kernel original. Sí se instalará el HAL y el kernel original de Windows pero no nos afectará puesto que en boot.ini escogeremos siempre el HAL y el kernel de arranque mediante los comandos hal=*.dll y kernel= *.exe.

2-Con un menú instalador mediante el cual instalaremos y sustituiremos la HAL original por la modificada hasta una actualización del sistema. Momento en el que dejará de arrancar Windows si la actualización incluye la HAL o el kernel sin modificar.
Esta variante supone, además de lo descrito para el Método B, pegar los archivos correspondientes a la instalación del HAL y del kernel como en el Método A. Salvaguarda de prescindir pegar los archivos en la carpeta system32 que se indica en el Método A (no es posible pegar estos archivos en system32 puesto que finalmente son utilizados archivos renombrados por el propio Windows con un nombre distinto del original)

De cualquier forma, opcionalmente, podemos realizar solo el paso descrito para nuestra HAL o copiar los archivos de todas las HAL y kernel si queremos crear un cargador múltiple para todos los HAL y todos los kernel. Se indican los pasos correspondientes a todas las HAL.

Copiamos los archivos del path a otra carpeta, los renombramos según se indica y los pegamos en el directorio system32, por ejemplo renombrados a caractéres numerados con un máximo de 8 caracteres.
(es necesario renombrarlos con un tercer nombre cualquiera, ya que de lo contrario el sistema en la carga de varios HAL cogería los archivos renombrados por si mismo)
Los 5 primeros HAL comparten archivos.exe más su variante PAE, que es la que nos afecta en este mod. Las dll se numeran hal1, hal2, hal3, hal4, hal5, hal6 para poder introducirlas todas en diversos clon de Windows y usar a conveniencia del sistema en que se pegue la instalación (en vez de usar hallnew.dll).

Principales 6 tipos de HAL y sus archivos

1-AT_PC estándar, sin ACPI ni APIC:
extraemos mod > renombramos y copiamos a system32
hal.dll > hal1_g.dll
ntkrnlpa.exe > ntj1pa_g.exe


2-AT_Equipo monoprocesador MPS
, con APIC:
extraemos mod > renombramos y copiamos a system32
halapic.dll > hal2_g.dll
ntkrnlpa.exe > ntj1pa_g.exe


3-AT_Equipo multiprocesador MPS, con APIC:
extraemos original > copiamos a system32
halmps.dll > hal3_g.dll
ntkrnlpa.exe > ntj1pa_g.exe


4-Equipo compatible con Advanced Configuration and Power Interface (ACPI), con ACPI pero sin APIC:
extraemos original > renombramos
halacpi.dll > hal4_g.dll
ntkrnlpa.exe > ntj1pa_g.exe


5-Monoprocesador ACPI de PC, con ACPI y APIC (monoprocesadores, BIOS y chipset con ACPI)
extraemos original > renombramos
halaacpi.dll > hal5_g.dll
ntkrnlpa.exe > ntj1pa_g.exe


Nota 1: Por error de Windows XP esta HAL se muestra en el administrador de dispositivos equivocadamente como Multiprocesador ACPI empleando cualquier método. ¿depende del ordenador utilizado?
Nota 2: Al cargar esta HAL 5-Monoprocesador desde la HAL 4 sorprendentemente se instalan automáticamente los archivos correspondientes a la HAL 6-Multiprocesador ACPI, aunque en este primer arranque funcione como monoprocesador, al reiniciar se comportará como HAL 6-Multiprocesador.
Para que queden guardados sus archivos reales hay que volver a copiarlos (realizar el proceso 2 veces) y solo funciona desde el método A. ¿depende del ordenador utilizado?
Nota 3:Desde esta HAL 5-Monoprocesador instalado no es posible cambiar a la HAL 6-Multiprocesador ACPI con el Método B sin cambiar primero a la HAL 1 ó 4. El sistema arrancará como HAL 6 pero solo gracias a coger los archivos indicados en boot.ini, no instalándose de cara al siguiente reinicio en el que se cargue un boot.ini normal.

6-Equipo multiprocesador ACPI, con ACPI, APIC y multiproceso (multicores o HT como Pentium IV HT)
extraemos original > renombramos
halmacpi.dll > hal6_g.dll
ntkrpamp.exe > ntj2pa_g.exe


Ahora es necesario que esté añadido en la parte final del archivo boot.ini la carga de la nueva HAL para que Windows la ejecute (/kernel=ntjXpa_g.exe /hal=halX.dll ), solo durante el primer arranque de Windows si hemos seguido la formula para instalar el mod ya que posteriormente podemos arrancar el sistema con nuestro boot.ini habitual al quedar instalado. Y de forma permanente si no se procede a instalar el mod.

Para cada tipo de HAL sería la correspondiente, con PAE, y añadiendo el número correcto para nuestro disco duro en multi, disk, rdisk y partition:
(más abajo sugiero crear un multi-cargador boot.ini adaptable a todos los sistemas)

1-AT_PC estándar, sin ACPI ni APIC:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /noexecute=optin /sos /PAE /hal=hal1_g.dll /kernel=ntj1pa_g.exe

2-AT_Equipo monoprocesador MPS, con APIC:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /noexecute=optin /sos /PAE /hal=hal2_g.dll /kernel=ntj1pa_g.exe

3-AT_Equipo multiprocesador MPS, con APIC:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /noexecute=optin /sos /PAE /hal=hal3_g.dll /kernel=ntj1pa_g.exe

4-ATX Equipo compatible con Advanced Configuration and Power Interface (ACPI)
, con ACPI pero sin APIC:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /noexecute=optin /sos /PAE /hal=hal4_g.dll /kernel=ntj1pa_g.exe

5-ATX Monoprocesador ACPI de PC, con ACPI y APIC (monoprocesadores con ACPI)
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /noexecute=optin /sos /PAE /hal=hal5_g.dll /kernel=ntj1pa_g.exe

6-ATX Equipo multiprocesador ACPI
, con ACPI, APIC y multiproceso (multicores o HT como Pentium IV HT)
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /noexecute=optin /sos /PAE /hal=hal6_g.dll /kernel=ntj2pa_g.exe

De esta forma podemos crear un supercargador dejando nuestra línea original de arranque intacta (si instalamos el mod no hace falta añadir /PAE) y añadiendo todas las líneas mencionadas que varían*. Con este boot.ini podemos arrancar un clon de Windows en cualquier equipo (previa configuración de la controladora IDE como driver estandar y otros pasos necesarios).
*En este boot.ini se omitirán los HAL AT por no ser usualmente utilizados con Windows XP.

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /noexecute=optin /sos
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="XP ACPI monoprocesador" /fastdetect /noexecute=optin /sos /PAE /hal=hal4_g.dll /kernel=ntj1pa_g.exe
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="XP ACPI y APIC monoprocesador" /fastdetect /noexecute=optin /sos /PAE /hal=hal5_g.dll /kernel=ntj1pa_g.exe
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="XP ACPI y APIC multiprocesador" /fastdetect /noexecute=optin /sos /PAE /hal=hal6_g.dll /kernel=ntj2pa_g.exe

Se arrancará el sistema con la HAL indicada cada vez que iniciemos boot.ini con cualquier opción.
Si hemos seguido los pasos para instalar la HAL modificada o cambiamos a otra HAL original, entonces sin tocar nada deberemos de esperar hasta que el sistema nos pida reiniciar. Puede tardar hasta un par de minutos según la velocidad del ordenador. Este reinicio no se suele indicar pasando de la HAL 5 a la 6 y viceversa, por lo que no es necesario pero hay que asegurarse que ha quedado instalada correctamente.

Posibles errores:
-El sistema no manda reiniciar:
Posiblemente se ha cargador el mismo archivo de kernel (si no es intencionado probablemente se ha confundido el kernel real con uno renombrado, verificar en botón derecho "propiedades+versión+nombre original interno").
(es normal que no mande reiniciar si está cambiando de la HAL 5 a la 6 o viceversa).
-Al reiniciar aparece un guión blanco intermitente en la pantalla:
Se ha cargador un archivo de kernel erroneo (por ejemplo se ha introducido una librería HAL con kernel incorrecto o un kernel PAE sin PAE activado. Si tenemos HAL o kernel modificados también puede suceder que Windows a restaurado automáticamente el kernel original, mientras que se ha conservado la librería HAL modificada).
-No recomiendo deshabilitar DEP con:
/noexecute=alwaysoff
Me ha dado problemas, congelaciones durante varios segundos de explorer.exe utilizando a la vez 360 Extreme Explorer.

Machacador

Que bueno... y después de eso si se puede usar Google Chrome y otros navegadores modernos en Windows XP???...

:rolleyes: :o :rolleyes:
"Solo tu perro puede admirarte mas de lo que tu te admiras a ti mismo"

crazykenny

Cita de: Machacador en 13 Abril 2021, 21:43 PM
Que bueno... y después de eso si se puede usar Google Chrome y otros navegadores modernos en Windows XP???...

:rolleyes: :o :rolleyes:


Si mi memoria no me falla, no se pueden instalar las ultimas versiones de dicho navegador en Windows XP, y, bueno, a no ser que los usuarios de Windows XP "actualicen" su S.O. se tienen que conformar con versiones no-actualizadas con todos los problemas y/o riesgos que esto conlleva.  ;) ;) ;) ;) ;) ;) ;) ;)

Muchas gracias por vuestra atencion, y, bueno, saludos.
A nivel personal, lo que me da mas miedo no son los planteamientos y acciones individuales, sino las realizadas en grupo, ya que estas ultimas pueden acabar con consecuencias especialmente nefastas para todos.
Se responsable, consecuente y da ejemplo.
http://informaticayotrostemas.blogspot.com.es/2013/12/situacion-de-la-educacion-actual-en.html
https://informaticayotrostemas.blogspot.com/

Serapis

Cita de: cixert en 13 Abril 2021, 21:33 PM

He escrito un tutorial de forma que sí funciona con copiar y pegar, pero de otra manera.
Lo he realizado para mi uso personal, pero lo pego aquí por si es de utilidad:
Es interesante, pero totalmente desaconsejable.
Primero se debería crea un programa que examine las 'posibilidades' de acabar bien la operación (esto es un análisis de requisitos), y solo entonces uno podría aceptar abordarlo.

Si el coste del fallo se torna en un sistema irrecuperable, es inaceptable. Otra cosa es que uno parta de un formateo limpio... entonces solo se pierde tiempo, pero si ya está todo instalado... quizás la única opción (solo con sobrecosto en tiempo), sea clonar el disco, y hacer pruebas con la copia... si después dle proceso susbsiste y 'funciona', especilamente para las áreas y programas que utiliza frecuentemente, podría acometer el cambio. Y si falla (hay demasiado hardware distinto, cada uno con sus drivers, la probabilidad para el fallo es desconocida), sigue teniendo la copia original del disco.

Es una lástima que esta solución no se hubiera prodigado 15 años antes (por ejemplo), pués a buen seguro habría habido mucha gente dispuesta a afinar los detalles para que funcionara siempre o casi siempre y fuera estable, además muchos fabricantes podrían en alguna actualización de sus drivers, considerar la compatibilidad con esta solución...

Aún mantengo un equipo XP (justamente este), para cuestiones no profesionales, tiene instalado 4Gb. de RAM, pero el sistema solo reconoce 3Gb. ... cuando me tome unas vacaciones con tiempo suficiente quizás lo intente (previa clonación del disco, por supuesto).