Forum Linux.noyau DSDT corrigé sur Debian "stable" + noyau 2.6.12

Posté par  .
Étiquettes :
0
21
juin
2005
Salut à tous.

Je viens d'installer la dernière Debian GNU/Linux "Stable" sur mon ordinateur portable Dell INSPIRON 8500.
Maintenant je me dirige vers la personnalisation du noyau 2.6.12.

Je souhaiterais connaître la manière la plus efficace et élégante pour mettre un DSDT corrigé afin d'avoir l'ACPI pleinement fonctionnel.

J'ai bien lu l'astuce suivante: mais celle-ci date du 19 mars 2004.

Dans cette astuce, il est précisé ceci:


5°) Modifiez le fichier /usr/src/linux/drivers/acpi/osl.c :
Au début du fichier, rajoutez ceci :
#include "/usr/src/linux/drivers/acpi/tables/dsdt.hex"
Et modifiez la fonction "acpi_os_table_override" pour qu'elle ressemble à ça :
acpi_status
acpi_os_table_override (struct acpi_table_header *existing_table,
struct acpi_table_header **new_table)
{
if (!existing_table || !new_table)
return AE_BAD_PARAMETER;
if (strncmp(existing_table->signature,"DSDT",4))
*new_table = NULL;
else *new_table = (struct acpi_table_header *)AmlCode;
return AE_OK;
}


Bref, j'ai en ma possession le DSDT correct qui se nomme "dsdt.dsl" mais je ne sait pas si cette modification est toujours d'actualité sur le noyau 2.6.12 et si il n'y a pas quelque chose de moins "bricolage".

Merci.
  • # Comme sous Ubuntu?

    Posté par  . Évalué à 3.

    Je fais ça sous Ubuntu, mais comme c'est un dérivé de Débian, peut-être que ça marche aussi

    Compiler la DSDT
    $ iasl -tc dsdt.dsl

    Ca produit un fichier DSDT.aml que tu déplaces vers /etc/mkinitrd/DSDT

    $ sudo su cp DSDT.aml /etc/mkinitrd/DSDT
    $ dpkg-reconfigure kernel_package_in_use
    • [^] # Re: Comme sous Ubuntu?

      Posté par  . Évalué à 2.

      MERCI ENORMEMENT !

      Grace à toi, j'ai pu faire marcher l'acpi sur ma kubuntu sans recompiler le noyau : joie!

      Merci !

      how-to kubuntu ubuntu acpi dsdt problème gestion batterie

      Je rajoute des liens pour le chaland qui aurait besoin de corriger la gestion de sa batterie :
      http://forums.gentoo.org/viewtopic.php?t=122145(...) (le tutorial de référence, en anglais)

      http://tinyurl.com/84mce(...) (traduction partielle, en francais, contient toute)
      • [^] # Re: Comme sous Ubuntu?

        Posté par  . Évalué à 2.

        précision pour "kernel_package_in_use",pour donner une idée de quoi taper, chez moi cela correspond à cela :
        root@totol:~# dpkg-reconfigure linux-image-2.6.10-5-386

        je le sais parce que
        denis@totol:~$ uname -a
        renvoie
        Linux totol 2.6.10-5-386 #1 Fri Jun 24 16:53:01 UTC 2005 i686 GNU/Linux
  • # 2 solutions

    Posté par  . Évalué à 5.

    * La 1ère, c'est comme dit au dessus la DSDT.aml dans l'initrd. Ça a l'avantage que tu n'as pas à recompiler ton noyau à chaque fois que tu modifies la dsdt (pratique en phase de bidouille donc). Ça a l'inconvénient que, à ma connaissance, ça ne marche pas avec un noyau vanilla, mais qu'il faut ce patch :
    http://gaugusch.at/kernel.shtml(...)
    Est-ce que Debian utilise ce patch dans ses noyaux ? Aucune idée perso.

    * La 2ème, c'est de l'inclure dans le noyau, mais c'est maintenant plus simple que ce que tu décris : option "ACPI_CUSTOM_DSDT_FILE", accessible via "Power management options (ACPI, APM)" --> "ACPI (Advanced Configuration and Power Interface) Support " --> "Include Custom DSDT". Et là tu donnes le chemin vers ta "dsdt.hex".

    Attention donc, dans un cas c'est le .aml, et dans l'autre le .hex. Les deux sont générés depuis le .dsl via la commande donnée au dessus ("iasl -tc dsdt.dsl").
    • [^] # Re: 2 solutions

      Posté par  . Évalué à 1.

      En fait, il s'agit du kernel officiel fraichement téléchargé sur www.kernel.org.

      Aussi, je n'ai pas constaté la présence d'un menu d'inclusion de DSDT Custom.

      Je suppose que le kernel sur une UBUNTU est pré patché.
      De même, le kernel de la "sarge" est à aujourd'hui le 2.6.8 et n'intègre pas de patch similaire. (je pense que le kernel de debian est la version officielle sans patch)

      Dommage que freebios ne soit pas abouti car j'aurai évité le bricolage...
      • [^] # Re: 2 solutions

        Posté par  . Évalué à 2.

        > Aussi, je n'ai pas constaté la présence d'un menu d'inclusion de
        > DSDT Custom.

        Tu veux dire, même pas l'option de ma solution #2 ?

        Si oui, alors c'est peut-être que tu as d'activé l'option "STANDALONE" (aka "Select only drivers that don't need compile-time external firmware", dans "Device Drivers" --> "Generic Driver Options").

        Enfin toujours est-il qu'il me semble vraiment que c'est une option standard. Essayes voir, dans "make menuconfig", de taper "/ dsdt". Ça devrait te montrer l'option si elle existe bien, et ses dépendances (ici, sur un 2.6.12-pre6 : !X86_VOYAGER && !X86_VISWS && !IA64_HP_SIM && (IA64 || X86) && ACPI && ACPI_INTERPRETER && !STANDALONE).
  • # Suspend ?

    Posté par  . Évalué à 1.

    Si tu arrives a faire du suspend to disk ou du suspend to ram avec ton inspiron 8500 je suis plus que tres interessé !
    • [^] # Re: Suspend ?

      Posté par  . Évalué à 1.

      Lorsque j'aurais réussi à effectuer la manip complète je ne manquerais pas de te contacter afin de tester les Suspends...
      • [^] # Re: Suspend ?

        Posté par  . Évalué à 1.

        Moi ca marche, enfin "à moitié" mais je n'utilise pas de DSDT corrigé.

        Le "à moitié" vient du fait que avec les drivers nvidia ca marche le remier coup mais pas si je veux refaire un suspend (au réveil black screen et plantage du portable ...) Le tout en suivant le topic suivant : http://forum.hardware.fr/hardwarefr/OSAlternatifs/Suspend-Hibernate(...)

        Si certains trouvent la solution .... Sinon je réessayerais tt ca avec le 2.6.12 le DSDT qui va bien et les derniers drivers de la firme au caméléon, quand j'aurais un peu de temps
  • # J'ai tenté de modifier le fichier osl.c

    Posté par  . Évalué à 1.

    Bon, j'ai tenté de modifier le fichier osl.c comme précisé dans l'astuce mais celui-ci à évolué entre temps.

    Une partie relative au Custom DSDT est déja présente dans le CODE ! Il semble donc qu'il ne soit pas nécessaire de modifier le source. Par contre, je n'ai aucun moyen de préciser que je souhaite utiliser une DSDT Custom. En effet, dans le menu (make xconfig) l'option n'apparait pas.

    Bref, c'est dans le code mais pas dans le menu.
    Je rappelle qu'il s'agit du kernel officiel 2.6.12.

    J'ai tenté de modifier à la mano le fichier .config pour y préciser:
    (de mémoire)
    CONFING_ACPI_xxxxx_xxxxx=Y
    CONFING_ACPI_xxxxx_xxxxx_FILE="/urs/src/linux_2.6.12/driver/acpi/tables/dsdt.hex"

    Ceci n'a pas fonctionné don je l'ai retiré !

    Si quelqun a une idée ?
  • # OK !

    Posté par  . Évalué à 1.

    Bon, finalement, j'ai réussi à utiliser un DSDT perso avec le kernel 2.6.12 officiel (www.kerne.org)

    site d'information: http://gaugusch.at/kernel.shtml(...)

    1) télécharger le kernel 2.6.12 et l'extraire dans /usr/src

    2) téléchrger le fichier ci_dessous: http://gaugusch.at/acpi-dsdt-initrd-patches/acpi-dsdt-initrd-patch-(...)

    et le copier dans /usr/src/linux-2.6.12

    3) appliquer le patch avec les commandes:

    cd /usr/src/linux-2.6.12
    cat acpi-dsdt-initrd-patch-v0.7d-2.6.9.patch | patch -p1

    3) make xconfig (MENU ACPI, sélectionner "Read Custom DSDT from initrd)

    4) recompiler le noyau:
    make-kpkg clean
    make-kpkg --revision Custom.1 binary

    5) installer les packages créés par la compile du noyau

    6) créer un initrd
    mkinitrd -o /boot/initrd.img-2.6.12 2.6.12

    7) ajout entête magique
    echo -n "INITRDDSDT123DSDT123" >> /boot/initrd.img-2.6.12

    8) ajout de son DSDT.aml perso
    cat DSDT.aml >> /boot/initrd.img-2.6.12

    9) modifier le fichier /boot/grub/menu.lst pour ajouter l'appel à l'initrd


    Il ne me reste plus qu'a tester suspend/resume ...

    merci à tous.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.