Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[COMO] Arreglar la DSDT a partir del Windows preinstalado
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Spanish
View previous topic :: View next topic  
Author Message
Alex14
n00b
n00b


Joined: 20 Jun 2005
Posts: 20

PostPosted: Fri Jul 22, 2005 11:40 am    Post subject: [COMO] Arreglar la DSDT a partir del Windows preinstalado Reply with quote

Índice
1. Introducción
2. Materiales necesarios
3. Comprobar el estado de nuestra DSDT (se puede ignorar)
4. Obteniendo una DSDT en condiciones
5. Compilando y añadiendo la DSDT al núcleo (estáticamente)
6. Apreciando los cambios


1. Introducción
ACPI fue creado por Hewlett-Packard, Intel, Microsoft, Phoenix y Toshiba como un estándar de administración energética mucho mejor que el APM. Pero como todo estándar no se respeta en todos los casos xD

ACPI se sirve de la tabla DSDT que contiene información de todos los dispositivos y como obtener su información, para escribir esta tabla se usa el ASL (ACPI Source Language) que al compilarlo se obtiene el AML (ACPI Machine Language) que es el usado por el núcleo.

Hay 2 compiladores, el de Intel y el de Microsoft. El de Intel es multi-plataforma (Windows, Unix y derivados) y da muchos más errores al compilar porque genera un AML mucho más depurado y dentro del estándar, el de Microsoft ignora muchos mas errores generando un AML de menor calidad y que no respeta tanto el estándar (para variar) desconozco si el de Microsoft es multiplataforma pero lo dudo.

Arreglar nuetsra DSDT nos servirá para mejorar nuestro ACPI, si no funciona correctamente una solución sería esta.

Ahora que ya sabemos más o menos de lo que vamos a manejar necesitamos el IASL (Compilador de Intel), podemos obtener la versión de Windows y Linux de esta página:
http://developer.intel.com/technology/iapc/acpi/downloads.htm
Y además el de Linux lo puedes obtener del portage:
Code:
emerge iasl


NOTA: Los nombres de archivos que aparecen en todo el documento son orientativos, no tienen porque servir en todos los casos


2. Materiales necesarios
- El compilador IASL para Windows y Linux
- El Windows preinstalado que venía en el portátil (si no lo tenéis y no hicisteis backup, el CD de instalación de Windows que a lo mejor te viene no crea un Windows idéntico al preinstalado, en mi caso no lo crea y tuve que usar mi backup)
Puede funcionar de ambas maneras pero recomiendo que sea con el preinstalado xD
- Algún método para pasar archivos del Windows al Linux (lo digo para que vayáis compilando el soporte NTFS o sacando vuestro almacenamiento externo xD)


3. Comprobar el estado de nuestra DSDT (se puede ignorar)
Primero desde la carpeta proc podemos obtener el AML y lo vamos a guardar en un archivo:
Code:
cat /proc/acpi/dsdt > dsdt.dat

Ahora vamos a obtener el ASL
Code:
iasl -d dsdt.dat

Y vamos a recompilarlo para ver cuantos errores hay
Code:
iasl -c dsdt.dsl

Ahora en la ultima linea nos saldrán los errores, me salen 18 :P


4. Obteniendo una DSDT en condiciones
Ahora en nuestro Windows escribiremos en la consola (Para abrir una consola: Inicio > Ejecutar > cmd.exe -Windows XP- o command.com)
Code:
iasl.exe -d

Si ponemos eso sin ningún parámetro usará la tabla DSDT que está en el registro (para quienes tengan curiosidad está en HKEY_LOCAL_MACHINE > Hardware > ACPI)
Ahora cogemos el DSL y lo pasamos a nuestro Linux


5. Compilando y añadiendo la DSDT al núcleo (estáticamente)
Antes de compilar el DSL, debemos corregir el fin de linea ya que el IASL es sensible al CRLF (fin de linea de DOS/Windows), así que vamos a ello:
Code:
perl -pi -e 's/\r\n/\n/;' dsdt.dsl

Después de corregir esto, vamos a compilarlo, pero nosotros ya no necesitamos la DSDT a pelo, si no que la necesitamos en formato cabecera C para el kernel (si no vas a añadir la tabla estáticamente, no deberías hacerlo así -en este COMO no se explica-)
Code:
iasl -tc dsdt.dsl

Ahora os generara un hex que lo guardaremos en alguna parte (estaría muy bien en la carpeta del núcleo)

(NOTA: En algunos kernels he visto que en el menuconfig se podía especificar un DSDT personalizado, pero como en mi caso no aparece, explicaré como se hace manualmente)
Para que el kernel lea nuestra DSDT personalizada debémos modificar el archivo drivers/acpi/osl.c y añadir estas 2 lineas al principio:
Code:
#define CONFIG_ACPI_CUSTOM_DSDT
#define CONFIG_ACPI_CUSTOM_DSDT_FILE " RUTA_AL_FICHERO_HEX"


Ahora recompilamos y jugamos al tuxracer mientras compila xD


6. Apreciando los cambios
Desgraciadamente arreglar la DSDT no es la solución definitiva, todavía no tiene porque irnos todo perfecto pero no está mal.
En mi caso noté las siguientes mejoras (comentad vuestras experiencias y las añadiré)
- En la información de la batería me salian nuevos datos (si en "last full capacity" os sale 0 no os asusteis, desconectad el portatil de la red -con batería claro xD- y se actualizará)
- Puedo encender las 2 velocidades del ventilador (antes solo podia la más potente)
- Ahora no se me repiten algunos eventos (aveces me salian 2 veces cuando un evento se activaba y otras 2 cuando se desactivava -p.e pulsar y soltar el boton de apagado-)
- Cambian los trip points por defecto



PD: Agradecería cualquier opinión, crítica y mejora :D
PD2: Agradecería MUCHO más que alguien traduciese este COMO a inglés y me lo enviase al mail (es mi nick en este foro + gmail@com) o lo postease aquí (mejor lo 1º)

Este documento esta bajo la Licencia Reconocimiento-CompartirIgual 2.5 España de Creative Commons
http://creativecommons.org/licenses/by-sa/2.5/es/


Last edited by Alex14 on Sat Oct 08, 2005 8:39 pm; edited 2 times in total
Back to top
View user's profile Send private message
focahclero
Guru
Guru


Joined: 02 Jan 2004
Posts: 554

PostPosted: Fri Jul 22, 2005 12:37 pm    Post subject: Reply with quote

Hola, me parece muy interesante el "como". Sólo creo que haría falta una cosa para que estuviese perfecto... y sería si pudieses explicar al principio para qué querría alquien "Arreglar la DSDT"... no sé si es bueno mantener el suspense hasta el final :)

Saludos,
_________________
focahclero
Registered Linux User #352648. Get Counted! http://counter.li.org
[TEMA] Descripción problema (estado)
Back to top
View user's profile Send private message
Alex14
n00b
n00b


Joined: 20 Jun 2005
Posts: 20

PostPosted: Fri Jul 22, 2005 12:44 pm    Post subject: Reply with quote

Tienes razón, añadido XD (que rapidez)
Aunque si lees la intro y uns los hilos lo puedes sacar ;D
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Spanish All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum