Autor Tema: [Tutorial] Cómo intentar instalar paquetes dependientes del kernel  (Leído 6014 veces)

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

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 1940
En este tutorial explicaré
       Cómo instalar paquetes dependientes del kernel que en principio no se dejan instalar o no funcionan.

Ante todo decir que si efectuamos los pasos que se van a describir a continuación corremos una serie de riesgos, entre ellos el brickear el router. Si no sabemos cómo recuperarlo por procedimientos tales como consola serie o bootloader entonces es mejor no realizar los pasos del tutorial.

Sabremos que un paquete no se deja instalar por dependencias del kernel cuando al intentar instalarlo recibimos un mensaje de la siguiente forma:
Citar
Al intentar instalar el paquete xxx me da error de dependencias con el kernel.
Código: [Seleccionar]
* satisfy_dependencies_for: Cannot satisfy the following dependencies for xxx:
 * kernel (= 3.6.11-1-9dae866b8f6d8a6cc46cd26eb5d3a5e6) * kernel (= 3.6.11-1-9dae866b8f6d8a6cc46cd26eb5d3a5e6) *
 * opkg_install_cmd: Cannot install package xxx.

Primero explicaré por qué cuando instalamos un módulo dependiente del kernel existen posibilidades de que no funcione al instalarlo, y cómo se puede hacer que el sistema reconozca el módulo instalado para otro kernel.

Cuando los módulos del kernel se instalan en el sistema, lo hacen comprobando el checksum del kernel que tenemos instalado con el checksum del kernel requerido por el paquete. Si ambos checksums son iguales entonces el sistema piensa que el módulo fue compilado para el kernel que tenemos instalado y nos deja instalarlo sin problemas. Sin embargo, puede que ambos checksums no coincidan, en cuyo caso no nos dejará instalar el paquete por precaución, ya que si los checksums no coinciden es porque puede que el kernel no sea compatible con el módulo que queremos cargar. Sin embargo, el checksum puede cambiar por el simple hecho de que hemos compilado dos veces openwrt, una con una cantidad de módulos, y otra con otros módulos distintos, y que si bien la versión del kernel es la misma, el checksum varía.

Para instalar los módulos de la misma versión de kernel pero con distinto checksum, nos basta instalarlos desde la línea de comandos con
Código: [Seleccionar]
opkg --force-depends install <nombre del paquete>
No obstante, cuando no sólo varía el checksum del kernel a comprobar, si no que además cambia la versión del kernel, hay muchas más posibilidades de que el módulo sea incompatible con el kernel, y si intentamos cargarlo podemos dejar bloqueado al sistema, pudiendo incluso llegar a hacer un brick del router. Pero aún así, existe alguna posibilidad de que un módulo compilado para un kernel todavía sea capaz de funcionar en otro kernel. Aunque para ello debemos de "engañar" al sistema.

Para instalar módulos con distinta versión del kernel, el primer paso es intentar instalar el paquete de forma análoga a la anterior con
Código: [Seleccionar]
opkg --force-depends install <nombre del paquete>
Si no nos dejara por alguna razón, podemos intentarlo con
Código: [Seleccionar]
opkg --nodeps install <nombre del paquete>
Hemos de tener en cuenta que los módulos del kernel se instalan en el directorio  /lib/modules/<version_kernel>, y es donde el sistema espera encontrarlos para cargarlos. Sin embargo, al instalar paquetes con módulos compilados para otra versión, dichos paquetes se encontrarán en el directorio /lib/modules/<otra_version_kernel>, con lo que el sistema no los encontrará y esa es la causa de que no funcionen al reiniciar el router. Por lo tanto, lo único que tenemos que hacer es copiar los módulos que se encuentren en /lib/modules/<otra_version_kernel> a /lib/modules/<version_kernel> para que el sistema los intente cargar.

Como siempre, utilizad esta información bajo vuestra propia responsabilidad.


« Última modificación: 19-08-2014, 14:11 (Martes) por Noltari »
No habrás entendido algo, hasta que seas capaz de explicárselo a tu abuela...
Hacemos pantallas con píxeles casi invisibles, para luego ampliar la letra porque no la vemos... Bonita paradoja...
Creamos analfabetos tecnológicos con una velocidad pasmosa. Todo el mundo "maneja" tecnología, casi nadie sabe lo que tiene entre las manos, pero todo el mundo opina.
El analfabetismo, antes, pasaba desapercibido. Ahora, se transmite por Internet y las redes sociales.
Solo a un mandril epiléptico se le podría haber ocurrido diseñar la cinta de menú de M$.

Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4583
Re: [Tutorial] Cómo intentar instalar paquetes dependientes del kernel
« Respuesta #1 en: 31-07-2014, 08:55 (Jueves) »
Le pongo chincheta unas semanitas y lo añado (como enlace) al hilo de las [FAQ] Preguntas más comunes sobre OpenWrt

 >:( >:(
« Última modificación: 31-07-2014, 09:20 (Jueves) por jar229 »
Valoraciones positivas en compra/venta:
121 en Htcmania
149 en Har2mano
19 en elchapuzasinformatico
10 en gsmspain
 ....
 
Mis equipos en venta: https://drive.google.com/open?id=1MTlgSAbTP08EL7ujiamnJVy31be9LogZ

mekkon

  • Visitante
Re: [Tutorial] Cómo intentar instalar paquetes dependientes del kernel
« Respuesta #2 en: 31-10-2014, 10:28 (Viernes) »
Buenas, estoy haciendo una imagen propia basada en barrier breaker final.

los packages que pertenecen a esta rama, ¿permanecen inalterables? o ¿cada vez que se añade un parche se recompilan cambiando así su checksum del kernel en los repositorios oficiales?

¿es posible reproducir el mismo checksum de los paquetes de barrier breaker para una compilación propia? o ¿se tiene que usar la imagen ya creada para nuestro router en los repositorios oficiales?

¿se puede forzar .vermagic para que tenga el hash que queramos? teniendo en cuenta que el kernel es el mismo, ¿podría dar algún problema igualmente?

gracias, no sé si me he pasado de la raya con las preguntas  ;D

« Última modificación: 31-10-2014, 10:29 (Viernes) por mekkon »

wifino

  • Visitante
Re: [Tutorial] Cómo intentar instalar paquetes dependientes del kernel
« Respuesta #3 en: 27-04-2015, 00:19 (Lunes) »
En este tutorial explicaré
       Cómo instalar paquetes dependientes del kernel que en principio no se dejan instalar o no funcionan.

Ante todo decir que si efectuamos los pasos que se van a describir a continuación corremos una serie de riesgos, entre ellos el brickear el router. Si no sabemos cómo recuperarlo por procedimientos tales como consola serie o bootloader entonces es mejor no realizar los pasos del tutorial.

Sabremos que un paquete no se deja instalar por dependencias del kernel cuando al intentar instalarlo recibimos un mensaje de la siguiente forma:
Citar
Al intentar instalar el paquete xxx me da error de dependencias con el kernel.
Código: [Seleccionar]
* satisfy_dependencies_for: Cannot satisfy the following dependencies for xxx:
 * kernel (= 3.6.11-1-9dae866b8f6d8a6cc46cd26eb5d3a5e6) * kernel (= 3.6.11-1-9dae866b8f6d8a6cc46cd26eb5d3a5e6) *
 * opkg_install_cmd: Cannot install package xxx.

Primero explicaré por qué cuando instalamos un módulo dependiente del kernel existen posibilidades de que no funcione al instalarlo, y cómo se puede hacer que el sistema reconozca el módulo instalado para otro kernel.

Cuando los módulos del kernel se instalan en el sistema, lo hacen comprobando el checksum del kernel que tenemos instalado con el checksum del kernel requerido por el paquete. Si ambos checksums son iguales entonces el sistema piensa que el módulo fue compilado para el kernel que tenemos instalado y nos deja instalarlo sin problemas. Sin embargo, puede que ambos checksums no coincidan, en cuyo caso no nos dejará instalar el paquete por precaución, ya que si los checksums no coinciden es porque puede que el kernel no sea compatible con el módulo que queremos cargar. Sin embargo, el checksum puede cambiar por el simple hecho de que hemos compilado dos veces openwrt, una con una cantidad de módulos, y otra con otros módulos distintos, y que si bien la versión del kernel es la misma, el checksum varía.

Para instalar los módulos de la misma versión de kernel pero con distinto checksum, nos basta instalarlos desde la línea de comandos con
Código: [Seleccionar]
opkg --force-depends install <nombre del paquete>
No obstante, cuando no sólo varía el checksum del kernel a comprobar, si no que además cambia la versión del kernel, hay muchas más posibilidades de que el módulo sea incompatible con el kernel, y si intentamos cargarlo podemos dejar bloqueado al sistema, pudiendo incluso llegar a hacer un brick del router. Pero aún así, existe alguna posibilidad de que un módulo compilado para un kernel todavía sea capaz de funcionar en otro kernel. Aunque para ello debemos de "engañar" al sistema.

Para instalar módulos con distinta versión del kernel, el primer paso es intentar instalar el paquete de forma análoga a la anterior con
Código: [Seleccionar]
opkg --force-depends install <nombre del paquete>
Si no nos dejara por alguna razón, podemos intentarlo con
Código: [Seleccionar]
opkg --nodeps install <nombre del paquete>
Hemos de tener en cuenta que los módulos del kernel se instalan en el directorio  /lib/modules/<version_kernel>, y es donde el sistema espera encontrarlos para cargarlos. Sin embargo, al instalar paquetes con módulos compilados para otra versión, dichos paquetes se encontrarán en el directorio /lib/modules/<otra_version_kernel>, con lo que el sistema no los encontrará y esa es la causa de que no funcionen al reiniciar el router. Por lo tanto, lo único que tenemos que hacer es copiar los módulos que se encuentren en /lib/modules/<otra_version_kernel> a /lib/modules/<version_kernel> para que el sistema los intente cargar.

Como siempre, utilizad esta información bajo vuestra propia responsabilidad.

Hola, consulta sobre router ar5387un - compilación Barrier Breaker 14.07-rc3 - Kernel 3.10.49. He intentado instalar los siguientes paquetes: (iptables-mod-extra ; iptables-mod-conntrack-extra ; iptables-mod-ipopt) forzando la instalación "opkg --force-depends install <nombre del paquete>". En un primer momento, el proceso parecía que había funcionado, los paquetes estaban instalados en luci -> actualización de software, aunque no se había creado "otra_version_kernel" en el directorio /lib/modules/
 Al reiniciar el router, el "radio0" configurado como "Master" fallaba no me dejaba habilitarlo y en el firewall habían menos apartados de configuraciones que antes del reinicio. Al desinstalar y reiniciar todo volvió a la normalidad. Es normal o algo he hecho mal, mi intención es meterle unas reglas propias de iptables al firewall. Mil gracias por vuestro trabajo... Saludos!!

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 1940
Re: [Tutorial] Cómo intentar instalar paquetes dependientes del kernel
« Respuesta #4 en: 27-04-2015, 08:28 (Lunes) »
Hola, consulta sobre router ar5387un - compilación Barrier Breaker 14.07-rc3 - Kernel 3.10.49. He intentado instalar los siguientes paquetes: (iptables-mod-extra ; iptables-mod-conntrack-extra ; iptables-mod-ipopt) forzando la instalación "opkg --force-depends install <nombre del paquete>". En un primer momento, el proceso parecía que había funcionado, los paquetes estaban instalados en luci -> actualización de software, aunque no se había creado "otra_version_kernel" en el directorio /lib/modules/
 Al reiniciar el router, el "radio0" configurado como "Master" fallaba no me dejaba habilitarlo y en el firewall habían menos apartados de configuraciones que antes del reinicio. Al desinstalar y reiniciar todo volvió a la normalidad. Es normal o algo he hecho mal, mi intención es meterle unas reglas propias de iptables al firewall. Mil gracias por vuestro trabajo... Saludos!!

Como ya digo: "existen posibilidades de que no funcione al instalarlo".
Los módulos dependientes del kernel son una lotería que funcionen.
De todas formas, puede que sólo sea problema de configuración. Prueba a borrar la configuración de la wifi y recrearla de nuevo.
Si no se llevan bien los módulos que intentas instalar, con la versión que tienes instalada, toca recompilar...  ^-^
No habrás entendido algo, hasta que seas capaz de explicárselo a tu abuela...
Hacemos pantallas con píxeles casi invisibles, para luego ampliar la letra porque no la vemos... Bonita paradoja...
Creamos analfabetos tecnológicos con una velocidad pasmosa. Todo el mundo "maneja" tecnología, casi nadie sabe lo que tiene entre las manos, pero todo el mundo opina.
El analfabetismo, antes, pasaba desapercibido. Ahora, se transmite por Internet y las redes sociales.
Solo a un mandril epiléptico se le podría haber ocurrido diseñar la cinta de menú de M$.

wifino

  • Visitante
Re: [Tutorial] Cómo intentar instalar paquetes dependientes del kernel
« Respuesta #5 en: 27-04-2015, 16:11 (Lunes) »
Hola, consulta sobre router ar5387un - compilación Barrier Breaker 14.07-rc3 - Kernel 3.10.49. He intentado instalar los siguientes paquetes: (iptables-mod-extra ; iptables-mod-conntrack-extra ; iptables-o mod-ipopt) forzando la instalación "opkg --force-depends install <nombre del paquete>". En un primer momento, el proceso parecía que había funcionado, los paquetes estaban instalados en luci -> actualización de software, aunque no se había creado "otra_version_kernel" en el directorio /lib/modules/
 Al reiniciar el router, el "radio0" configurado como "Master" fallaba no me dejaba habilitarlo y en el firewall habían menos apartados de configuraciones que antes del reinicio. Al desinstalar y reiniciar todo volvió a la normalidad. Es normal o algo he hecho mal, mi intención es meterle unas reglas propias de iptables al firewall. Mil gracias por vuestro trabajo... Saludos!!

Como ya digo: "existen posibilidades de que no funcione al instalarlo".
Los módulos dependientes del kernel son una lotería que funcionen.
De todas formas, puede que sólo sea problema de configuración. Prueba a borrar la configuración de la wifi y recrearla de nuevo.
Si no se llevan bien los módulos que intentas instalar, con la versión que tienes instalada, toca recompilar...  ^-^

Ok, hare algunas pruebas a ver que tal y si no sale bien lo dejaré estar, que eso de compilar para mis conocimientos ya son "palabras mayores"  ???  Mil gracias por tu ayuda y paciencia... Saludos