<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/platform.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d7142395\x26blogName\x3dEl+cuadernillo\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dSILVER\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttps://elcuadernillo.blogspot.com/search\x26blogLocale\x3des_ES\x26v\x3d2\x26homepageUrl\x3dhttp://elcuadernillo.blogspot.com/\x26vt\x3d-6310822719913553921', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script>

El cuadernillo

Un cuadernillo donde apuntar mis pensamientos y conocimientos para poder compartirlos con todos...

Linux en un Samsung x05 (Gentoo) Cap. 1 ACPI


Siempre me había preguntado que significaba esa pegatina que viene en muchos ordenadores diciendo "Designed for Windows XP" hasta que me compré el portátil. Era consciente lo que me iba a encontrar pero no hasta el punto que me iba a incordiar el tema.

Ya hace más de un año que tengo el x05 y todo va bien, salvo unos problemas que tenía con la grabadora (solucionados en el SAT) y que la batería ha perdido capacidad de la poca que tenía (casi siempre estoy enchufado, me jode pero no es problema de momento). Otra cosa que no me gusta es que me he dado cuenta de que la batería dura mucho más del tiempo estimado pero el problema es que cuando se supone que queda un 1% el sistema se cierra voluntariamente, he de poder controlarlo...

A lo que íbamos. Siempre uso Linux, enconcreto Gentoo, y el problema principal es que la tabla del ACPI (Advanced control power interface) está generada con un compilador de Windows lo la hace no accesible a sistemas que usan el standard de Intel (M$ siempre anda haciendo estas tonterías de saltarse los standares).

Voy a explicar como hago yo para tener acceso a todas las caracteristicas del ACPI y así poder controlar botones espaciales, batería, brillo, volumen...

1)Bajar el kernel

En Gentoo tan sencillo como hacer:

# emerge vanilla-sources

(hay otros sources en vez de vanilla, pero estos son las fuentes puras del kernel sin parches).

En otras distribuciones se baja una imagen, como en (K)Ubuntu. No es mala idea, pero la gente que como yo hemos compilado kernel 2.2 preferimos saber lo que incluye nuestro kernel. Aquí se explica como hacerlo con esas distribuciones.

OJO! Hay distribuciones que ya incluyen este parche en el kernel (SUSE por ejemplo).

2) Bajar un parche y parchear el kernel.

El parche que bajaremos nos permitirá sustituir la tabla ACPI que tiene el portatil por una que nosotros crearemos. Aquí podemos encontrar el parche necesario.

Para parchearlo en la misma web lo dice:

# cd /usr/src/linux
# patch -p1 < /tmp/acpi-dsdt-initrd-patch-v0.x-....patch


3) Reparar la DSDT

No me voy a extender en este aspecto, solo decir que un poco de lectura no está de más, aunque sea en inglés. Lo que necesitas saber está aquí. Yo solventé mis problemas a mano (casualmente son los mismo que salen en el ejemplo). De todos modos hoy he descubierto que Samsung conoce que hay problemas con el ACPI en Linux y ha puesto unas tablas hechas por ellos aquí.

Por si acaso pongo mi tabla y la tabla para el x05 con 512mb de ram por si desaparecen.

4)Compilar el kernel

Compilar el kernel para que os genere el kernel, los módulos y el init ram disk (initrd).

En gentoo nada más fácil que:

# genkernel all

o
# genkernel --menuconfig all

si queremos asegurarnos que está activada la opción de cargar el DSDT (tabla ACPI) del apartado de ACPI.

5)Poner la DSDT en el initrd

Una vez hemos compilado el kernel y el initrd debemos añadir a este initrd el DSDT.aml que tenemos:

# echo -n "INITRDDSDT123DSDT123" >> /boot/initrd
# cat DSDT.aml >> /boot/initrd

OJO! Eso reescribe el initrd (ahora llamado initramfs)

Solo queda poner la entrada en el sistema de arranque y adelante!! (en Gentoo si usais el genkernel en /etc/genkernel.conf podemos decirle que añada el mismo la entrada en el gurb).

Cualquier duda, por mail.

Actualización:
Más de lo mismo pero mejor.

Publicar un comentario

<< Home