View previous topic :: View next topic |
Author |
Message |
simonbcn n00b
Joined: 01 Aug 2011 Posts: 69 Location: Denmark
|
Posted: Wed Jan 02, 2013 2:04 am Post subject: [SOLUCIONADO] función preup() en /etc/conf.d/net |
|
|
Hola,
He añadido una función preup() en /etc/conf.d/net (tal como explica el wiki de Gentoo):
Code: | preup() {
elog "preup(): Configurando interface ${IFACE}."
echo "preup(): Configurando interface ${IFACE}."
[[ "${IFACE}" = "eth0" ]] || return 0
if interface_exists "${IFACE}"; then
/usr/bin/lua /root/debloat || ewarn "preup(): Error al configurar debloat en ${IFACE}."
fi
return 0
}
|
El problema es que no parece que ejecute esa función nunca. No solo porque no ejecuta el script debloat si no porque tampoco encuentro en ningún log ninguna de las dos primeras lineas "preup(): Configurando interface ${IFACE}." que puse adrede para comprobar si entraba o no en la función.
Incluso he comentado la comprobación de "if interface_exists "${IFACE}"; then" pero sigue sin ejecutar el script.
¿Alguien tiene alguna idea de lo que puede estar fallando?
Gracias. Un saludo.
Last edited by simonbcn on Wed Jan 02, 2013 2:30 pm; edited 1 time in total |
|
Back to top |
|
|
quilosaq Veteran
Joined: 22 Dec 2009 Posts: 1522
|
Posted: Wed Jan 02, 2013 12:30 pm Post subject: |
|
|
Quote: | "...Sus nombres se componen empezando con el nombre de interfaz..." |
Quizás tengas que llamarlas eth0_preup() o algo parecido. |
|
Back to top |
|
|
esteban_conde Veteran
Joined: 04 Jun 2003 Posts: 1670
|
Posted: Wed Jan 02, 2013 1:17 pm Post subject: |
|
|
Posiblemente debiera leerme la guia pero a bote pronto me parece que no es necesario tener net en /etc/init.d.
Lo que recuerdo de la guia de gentoo es que se crearan enlaces a net.lo de la forma siguiente:
ln -sf net.lo net.wlan0 de forma que el nombre de interface vaya detras del prefijo net con un punto como separador, net.eth1 net.eth0 lo que sea, luego rc.upadate add net.wlan0 default lo mete en el runlevel default y ahora sí en etc/conf.d se crea un archivo de nombre net para iniciarla siguiendo la sintaxis de un archivo etc.example.bz2 que en mi caso está en /usr/share/doc/openrc-x.y.z.bz2 pero en tu sistema puede que esté en otro sitio. _________________ Saludos a tod@s, Esteban. |
|
Back to top |
|
|
simonbcn n00b
Joined: 01 Aug 2011 Posts: 69 Location: Denmark
|
Posted: Wed Jan 02, 2013 1:28 pm Post subject: |
|
|
esteban_conde wrote: | Posiblemente debiera leerme la guia pero a bote pronto me parece que no es necesario tener net en /etc/init.d.
Lo que recuerdo de la guia de gentoo es que se crearan enlaces a net.lo de la forma siguiente:
ln -sf net.lo net.wlan0 de forma que el nombre de interface vaya detras del prefijo net con un punto como separador, net.eth1 net.eth0 lo que sea, luego rc.upadate add net.wlan0 default lo mete en el runlevel default y ahora sí en etc/conf.d se crea un archivo de nombre net para iniciarla siguiendo la sintaxis de un archivo etc.example.bz2 que en mi caso está en /usr/share/doc/openrc-x.y.z.bz2 pero en tu sistema puede que esté en otro sitio. |
Los enlaces ya están creados desde la instalación/configuración inicial de Gentoo:
Code: | # rc-update show
....
net.eth0 | default
net.lo | boot
....
|
En mi comentario especifico que el fichero que estoy modificando es el que explica el wiki y es: /etc/conf.d/net, no hablo en ningún momento de /etc/init.d que ya tiene el enlace correspondiente para eth0.
eth0 levanta y se configura correctamente, es más, en /etc/conf.d/net he definido Code: | txqueuelen_eth0="100" | y esto se ejecuta correctamente.
El problema es que parece que no entra nunca en la función preup(). ¿?
Por otro lado, en mi carpeta etc/conf.d aparece otro archivo que se llama network y se parece en el contenido a net pero con todo comentado. ¿Este fichero es un resto obsoleto de una configuración anterior de Gentoo? |
|
Back to top |
|
|
simonbcn n00b
Joined: 01 Aug 2011 Posts: 69 Location: Denmark
|
Posted: Wed Jan 02, 2013 1:43 pm Post subject: Solucionado |
|
|
quilosaq wrote: | Quote: | "...Sus nombres se componen empezando con el nombre de interfaz..." |
Quizás tengas que llamarlas eth0_preup() o algo parecido. |
He probado con "eth0_preup()" y "preup_eth0()" y nada. De todas formas la traducción está mal hecha. Esta es la versión original de esa página del wiki y dice:
Quote: | The functions are called with the interface name first so that one function can control multiple adapters. |
Es decir que la función es llamada con el nombre del interfaz como primer parámetro para que una misma función pueda controlar múltiples adaptadores: Code: | preup IFACE=eth0/eth1/wlan0/... |
Sigo investigando pero no debería ser tan complicado, a menos que sea un bug.
-----------------------------------------------------------------------
SOLUCIONADO:
El nombre de la función es "preup()" (sin más, tal como pone el wiki).
Uno de los problemas es que la función "elog" no existe (aunque esto no impedía la ejecución del script).
La segunda y que tiene que ver con el script que uso yo es que a pesar que la función recibe un parámetro llamado IFACE=(interface en cuestión), el script debloat no lo reconoce teniendo que añadir lo siguiente para que funcione:
Code: | IFACE=eth0 /root/debloat |
Last edited by simonbcn on Wed Jan 02, 2013 7:58 pm; edited 1 time in total |
|
Back to top |
|
|
esteban_conde Veteran
Joined: 04 Jun 2003 Posts: 1670
|
Posted: Wed Jan 02, 2013 6:50 pm Post subject: |
|
|
mira en /usr/share/doc/openrc-*/ a ver si tienes un archivo net.example.bz2, si lo tienes ... esto se puede hacer de muchas formas pero creo que la mejor es: desde usr/share/doc/openrc-*/ ejecutas bzcat net.example.bz2 >/etc/conf.c/net asi habras creado un archivo net en /etc/conf.d/ luego retocale segun el manual.
Aparte del manual suelen ser muy ilustrativos los comentarios del archivo.
Copia de la funcion que quieres emplear:
Quote: | #preup() {
# # Test for link on the interface prior to bringing it up. This
# # only works on some network adapters and requires the
# # sys-apps/net-tools package to be installed.
# if mii-tool "${IFACE}" 2> /dev/null | grep -q 'no link'; then
# ewarn "No link on ${IFACE}, aborting configuration"
# return 1
# fi
#
# # Test for link on the interface prior to bringing it up. This
# # only works on some network adapters and requires the ethtool
# # package to be installed.
# if ethtool "${IFACE}" | grep -q 'Link detected: no'; then
# ewarn "No link on ${IFACE}, aborting configuration"
# return 1
# fi
#
# # Test to see if we're docked or not and configure like so
# # config_docked="dhcp"
# if grep -q "1" /sys/devices/platform/dock.0/docked; then
# einfo "${IFACE} is docked - configuring"
# _configure_variables "docked"
# fi
#
# # Remember to return 0 on success
# return 0
#}
|
Siguiendo la sintaxis que tiene renombra lo que consideres necesario y descomentalo todo excepto claro está lo que son comentarios que vienen comentados con dos almohadillas # #.
Suerte y a probar. _________________ Saludos a tod@s, Esteban. |
|
Back to top |
|
|
|