01
- junio
2020
Posted By : lcardaba
Carga acelerada de RAMdisk

Nueva aportación de Samotc para el mundillo HTPC.


Si por desgracia tiene ud. una placa antigua, como yo, y no puede arrancar desde USB3 porque la BIOS no lo admite, con esta técnica acortamos el tiempo de carga en RAM más de un 50%, lo que hace la espera menos “desesperante” y por tanto, más viable el arranque de Windows Server Core en RAM para nuestro propósito, disfrutar de la música y el audio en el PC con la mayor calidad posible.

El proceso de arranque en RAM de un vhd con Windows Server Core 2019 desde un dispositivo USB es lento, y si en vez de USB3 es USB2, es mucho más lento (entre 18-22 minutos, según las 2 máquinas que tengo). En vista de ello, decidí buscar por la red ideas que solucionasen el problema y además funcionasen.

Aceleraremos la carga RAMdisk con la compresión LZ4

Aplicaciones necesarias

Para ello, son necesarias 3 aplicaciones:

  1. Sdelete.exe, que se puede descargar de Microsoft
  2. Wincontig.exe, que se puede descargar desde aquí
  3. LZ4 v1.9.2, que se puede descargar de aquí:

Limpiar disco virtual

Lo primero que hay que hacer es limpiar el espacio libre del vhd, a bajo nivel, porque en caso contrario, el compresor LZ4 dirá que el drive no está limpio y no lo comprimirá. Eso se hace con el Sdelete.exe ya citado, en modo línea de comandos pues no tiene GUI, estableciendo los pasos siguientes:

  1. Montar el vhd con el Administrador de discos de Windows (opción exponer vhd)
  2. Si su sistema es AMD64 copie Sdelete64.exe al directorio raíz del vhd (p.ej. “x:”, siendo x la letra de la unidad a la que corresponda el vhd montado).
  3. Una vez hecho esto, con el explorador de archivos navegue hasta dicho directorio raíz

Y abra una ventana de comandos en él (escribir cmd en la barra de direcciones y teclear intro)

  • Abierta la ventana de comandos en el directorio raíz, teclear el siguiente comando:
sdelete64 –p 5 –z x:

Esto hará una limpieza de bajo nivel de todo el espacio libre de dicha unidad, y ya estará preparada para la compresión LZ4.

Para ver las opciones de sdelete64 teclee sdelete64 -? (utilizo 5 pases [-p5], porque la opción por defecto es un solo pase, y no me funcionó)

Realizada la limpieza, ahora desmonte el vhd (en explorador de archivos con el botón derecho del ratón, marque la unidad a desmontar y ejecute la opción expulsar).

Compresión

Una vez desmontado el vhd, antes de pasar a la etapa de compresión, conviene realizar una defagmentación del archivo vhd y de la carpeta donde se encuentra, pues a veces tras realizar el sdelete, al intentar comprimir el fichero vhd con el lz4, el sistema muestra el siguiente mensaje:  “xxx.vhd is not a regular file”  y no realiza la compresión.

Para evitarlo utilizaremos el Wincontig.exe  (Wincontig64.exe, en sistemas AMD64) que es en modo GUI, y de manejo fácil e intuitivo, por lo que no explicaré más aquí.

Ahora ya podemos pasar a la etapa de compresión, que también debe hacerse por línea de comandos (que yo sepa no tiene GUI), para ello navegue por el explorador de archivos hasta la carpeta donde tenga el ejecutable lz4.exe  y abra una ventana de comandos como se explicó para el sdelete.

Abierta la ventana de comandos, teclee el siguiente comando:

lz4.exe -12 --content-size --favor-decSpeed e:\win.vhd e:\win.vhd.lz4

siendo e: la letra de la unidad donde aloja el vhd, y win.vhd el nombre del archivo vhd que quiere comprimir (si en vez del raíz está en otro directorio o carpeta, deberá poner la ruta completa a donde esté localizado el fichero.vhd)

Para ver las opciones de lz4 teclee: 

lz4 –h

Ahora habrá obtenido un fichero .vhd.lz4 de un tamaño del 30% aproximadamente del original, que deberá copiar a la unidad USB para que arranque desde allí y se cargue en RAM, pero tendrá que modificar el fichero menu.lst para que Grub4dos lo pueda reconocer y arrancar.

  1. Renombre su fichero menu.lst funcionante del pendrive USB a menú.lst.txt o bkp , o lo que se le ocurra, para en caso de volver a necesitarlo poder usarlo (tenga en cuenta que el vhd comprimido sólo arranca cargándolo en RAM, no vale para inicio cargando desde USB, es decir con ntboot.iso.
  2. Cree un nuevo fichero menu.lst , para ello abra el bloc de notas, y copie – pegue el siguiente texto:
color blue/green yellow/red white/magenta white/magenta 
timeout 10
default /default
title WINDOWS SERVER CORE 2019 AUDIOPHILE USB TO RAM
find --set-root --ignore-floppies /win.vhd.lz4
map --top --mem /win.vhd.lz4 (hd0)
map --hook
root (hd0,0)
chainloader /bootmgr
title commandline 
commandline
title quit 
quit
title reboot 
reboot
title halt
halt

Hecho esto, guarde el fichero de texto como menu.lst, y ya está listo para ejecutar el arranque con el vhd comprimido.

Pruebas realizadas

Se prueban dos sistemas de arranque, uno comprimido y otro sin comprimir para ver los tiempos de carga en dos máquinas diferentes.

  1. Máquina con placa Asus P7P55D LE y procesador Intel Core i5 2,67 GHz: Sin comprimir 18 minutos, comprimido 4 minutos.
  2. Máquina con placa Intel DH67BL y procesador Intel Core i5 3,0 GHz: Sin comprimir 22 minutos, comprimido 9 minutos.

Ambas máquinas tienen 32 GB de memoria RAM. En la máquina Asus se consigue un arranque 4 veces más rápido en la versión comprimida, mientras que en la máquina Intel el ratio es de 2,5 veces.

Deja una respuesta