?>/script>'; } ?> mod-activate Widgets Magazine

Autor Tema: mod-activate  (Leído 6675 veces)

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

Desconectado lupox

  • *******
  • Mensajes: 529
  • volver....
mod-activate
« en: 05-12-2014, 14:32 (Viernes) »
incluir al final del script.


Código: [Seleccionar]
if [ -x /usr/bin/update-desktop-database ]; then
  /usr/bin/update-desktop-database -q /usr/share/applications >/dev/null 2>&1
fi

if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
  if [ -x /usr/bin/gtk-update-icon-cache ]; then
    /usr/bin/gtk-update-icon-cache /usr/share/icons/hicolor >/dev/null 2>&1
  fi
fi


para que cargue el menú... de la aplicación activada

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: mod-activate
« Respuesta #1 en: 05-12-2014, 22:51 (Viernes) »
entiendo que deben ir al final de los scripts

activate
kactivate

los son son referntes a la activacion de modulos.

_________________________________________________________________

imagino que es por que en xfce , las cosas no se "refrescan"  ...


en el de autoinstalar modulos , al final le pusimos este code ...


Código: [Seleccionar]
refresh_XFCE(){
##############################################
# xzmtool-actualizar-menu v1.3
# Actualizar menu de XFCE
# Basado e el Scipt "XZMTool v1.3" Por geminis_demon de SeguridadWireless.Net
##############################################


case $? in
  0)
update-desktop-database -q /usr/share/applications >/dev/null 2>&1
update-mime-database /usr/share/mime >/dev/null 2>&1
gtk-update-icon-cache -f -i /usr/share/icons/hicolor >/dev/null 2>&1
glib-compile-schemas /usr/share/glib-2.0/schemas >/dev/null 2>&1
gdk-pixbuf-query-loaders --update-cache >/dev/null 2>&1
ldconfig >/dev/null 2>&1
xfce4-panel -r >/dev/null 2>&1;;
  1)
clear && exit 0;;
  255)
    echo "ESC";;
esac
}

if [ -f /usr/bin/xfce* ]; then
refresh_XFCE
fi


lo que hace es que si estas en xfce , actualiza los caches ,el menu etc etc.

podria ponerselo a los scripts que comentaba de activate y kactivate

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: mod-activate
« Respuesta #2 en: 05-12-2014, 22:55 (Viernes) »
aunque bastaria esta parte ,

Código: [Seleccionar]
update-desktop-database -q /usr/share/applications >/dev/null 2>&1
update-mime-database /usr/share/mime >/dev/null 2>&1
gtk-update-icon-cache -f -i /usr/share/icons/hicolor >/dev/null 2>&1
glib-compile-schemas /usr/share/glib-2.0/schemas >/dev/null 2>&1
gdk-pixbuf-query-loaders --update-cache >/dev/null 2>&1
ldconfig >/dev/null 2>&1
xfce4-panel -r >/dev/null 2>&1

Desconectado lupox

  • *******
  • Mensajes: 529
  • volver....
Re: mod-activate
« Respuesta #3 en: 06-12-2014, 01:44 (Sábado) »
Haz lo que veas, pero creo que con modificar el script de activate es suficiente pues el resto lo llaman.
en su caso, el que habria que modificar es el deactivate, para que no queden menus invalidos.

No lo postee por que eso es meramente estético. pues si lo desactivas no vas a querer utilizarlo.
y al ser live... al reiniciar..

lo único que el código habria que ponerlo a la salida del script con exito. después de done.



Código: [Seleccionar]
#!/bin/bash
# Deactivate module from the root directory structure on the fly
# This may fail for many cases, most likely when your module is 'busy'
# - for example if you have files open from the module yet.
#
# Author: Tomas M. <http://www.linux-live.org>

if [ "$1" = "-k" ]; then
   CALLED_BY_KDE_HELPER=1
   shift
fi

if [ -e /usr/bin/kdeactivate -a "$DISPLAY" -a ! "$CALLED_BY_KDE_HELPER" ]; then
   exec /usr/bin/kdeactivate "$@" 2>/dev/null
fi

PATH=.:$(dirname $0):/usr/lib:$PATH
. liblinuxlive || exit 5

allow_only_root
MODULE=$(basename "$1" .xzm).xzm
IMAGES=/mnt/live/memory/images
IPREV=empty

if [ "$MODULE" = "" -o ! -e "$IMAGES/$MODULE" ]; then
   echo
   echo "Deactivate module from the root filesystem while running Linux Live"
   echo "Usage: $0 module.xzm"
   exit 1
fi

# if the module contains /var/lock/deactivatelock, deny deactivation
if [ -e "$IMAGES/$MODULE/var/lock/deactivatelock" ]; then
   echo "Can't deactivate the given module, I am sorry."
   exit 2
fi

try_remount()
{
   mount -t aufs -o remount,verbose,del:$IMAGES/$MODULE aufs / 2>/dev/null
}

# Try to simply remove the dir first. If succeeds, finish
rmdir "$IMAGES/$MODULE" 2>/dev/null && exit 0
# OK the previous trick didn't work. So we have a real module here.

# First, try to stop all daemons which may be started by this module
find_n_run_scripts $IMAGES/$MODULE stop deactivate

# detach it from aufs union. This may take a long time, remounting the
# root directory is an expensive operation.
try_remount

# if remount fails, try to free all inotify watchers and remount again
while [ $? -ne 0 -a "$IPREV" != "$INODE" ]; do
   IPREV="$INODE"
   INODE=$(dmesg | fgrep "test_inode_busy" | tail -n 1 | cut -d : -f 4 | cut -b 8-)
   if [ "$INODE" != "" ]; then
      find / -noleaf -xdev -inum "$INODE"
      find / -noleaf -xdev -inum "$INODE" | xargs touch
      try_remount
   fi
done
######    salida con exito insertar code
if [ -x /usr/bin/update-desktop-database ]; then
  /usr/bin/update-desktop-database -q /usr/share/applications >/dev/null 2>&1
fi

if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
  if [ -x /usr/bin/gtk-update-icon-cache ]; then
    /usr/bin/gtk-update-icon-cache /usr/share/icons/hicolor >/dev/null 2>&1
  fi
fi

if [ $? -ne 0 ]; then
   echo "The module can't be removed, because it's busy (used)." >&2
   exit 3
fi

# if we are here, the module has been successfuly removed from aufs union
# so now we have to umount the xzm file and then free the loop device
LOOP=$(cat /proc/mounts | grep "$IMAGES/$MODULE " | cut -d " " -f 1)
umount -n "$IMAGES/$MODULE" 2>/dev/null
if [ $? -ne 0 ]; then
   exit 4
fi
losetup -d "$LOOP" 2>/dev/null # sometimes it's freed by umount automatically
rmdir "$IMAGES/$MODULE" # if not empty or busy, a message will be shown


Código: [Seleccionar]
#!/bin/bash
# Activate a module, while running LiveCD.
# Include it into live directory structure on the fly
#
# Author: Tomas M. <http://www.linux-live.org>

if [ "$1" = "-k" ]; then
   CALLED_BY_KDE_HELPER=1
   shift
fi

if [ -e /usr/bin/kactivate -a "$DISPLAY" -a ! "$CALLED_BY_KDE_HELPER" ]; then
   exec /usr/bin/kactivate "$@" 2>/dev/null
fi

MODULE=$(readlink -f "$1")

if [ "$MODULE" = "" -o ! -e "$MODULE" -o -d "$MODULE" ]; then
   echo
   echo "Activate a module on the fly while running Linux Live"
   echo "Usage: $0 module.xzm"
   exit 1
fi

if [ "$(echo $MODULE | fgrep -i .xzm)" = "" ]; then
   echo
   echo "$(basename $MODULE): Module must end with .xzm"
   exit 2
fi

PATH=.:$(dirname $0):/usr/lib:$PATH
. liblinuxlive || exit 3

allow_only_root
IMAGES=/mnt/live/memory/images
MODULES=/mnt/live/memory/modules

# are we even using union?
if [ "$(grep '^aufs / ' /proc/mounts)" = "" ]; then
   echo "not in the live mode, can't continue. Try xzm2dir $MODULE /"
   exit 4
fi

mkdir -p "$MODULES"

# Test whether the module file is stored in union
# if yes, then we must move it somewhere else (to RAM) else it can't be added
if [ -e "/mnt/live/memory/changes/$(readlink -f "$MODULE")" ]; then
   echo "module file is stored inside the union, moving to $MODULES first..."
   TARGET="$MODULES/$(basename "$MODULE")"
   mv "$MODULE" "$TARGET"
   if [ $? -ne 0 ]; then
      echo "error copying module to memory, not enough free RAM? try df" >&2
      rm "$TARGET"
      exit 6
   fi
   MODULE="$TARGET"
fi

MOD=$(union_insert_module / "$MODULE" $IMAGES)
if [ $? -ne 0 ]; then echo "error inserting module to live filesystem" >&2; exit 3; fi

# All executables (but symlinks) in /etc/rc.d/init.d/ from this module will be started
# with two arguments: "start" "activate".
# This is done only by the 'activate' script, not in the case when the module is loaded
# during OS startup (in that case, your distro is responsible for execution)
#
# For compatibility, /etc/init.d is also examined, but it's not recommended for you to put your startup scripts
# there in your module

MOD="$IMAGES/$(basename $MOD)"

find_n_run_scripts $MOD start activate

# update ld cache if new ld.so.conf/cache exists in the module
if [ -e "$MOD/etc/ld.so.conf" -o -e "$MOD/etc/ld.so.cache" ]; then
   echo "Module contains ld.so.conf or ld.so.cache, updating lib#!/bin/bash
# Activate a module, while running LiveCD.
# Include it into live directory structure on the fly
#
# Author: Tomas M. <http://www.linux-live.org>

if [ "$1" = "-k" ]; then
   CALLED_BY_KDE_HELPER=1
   shift
fi

if [ -e /usr/bin/kactivate -a "$DISPLAY" -a ! "$CALLED_BY_KDE_HELPER" ]; then
   exec /usr/bin/kactivate "$@" 2>/dev/null
fi

MODULE=$(readlink -f "$1")

if [ "$MODULE" = "" -o ! -e "$MODULE" -o -d "$MODULE" ]; then
   echo
   echo "Activate a module on the fly while running Linux Live"
   echo "Usage: $0 module.xzm"
   exit 1
fi

if [ "$(echo $MODULE | fgrep -i .xzm)" = "" ]; then
   echo
   echo "$(basename $MODULE): Module must end with .xzm"
   exit 2
fi

PATH=.:$(dirname $0):/usr/lib:$PATH
. liblinuxlive || exit 3

allow_only_root
IMAGES=/mnt/live/memory/images
MODULES=/mnt/live/memory/modules

# are we even using union?
if [ "$(grep '^aufs / ' /proc/mounts)" = "" ]; then
   echo "not in the live mode, can't continue. Try xzm2dir $MODULE /"
   exit 4
fi

mkdir -p "$MODULES"

# Test whether the module file is stored in union
# if yes, then we must move it somewhere else (to RAM) else it can't be added
if [ -e "/mnt/live/memory/changes/$(readlink -f "$MODULE")" ]; then
   echo "module file is stored inside the union, moving to $MODULES first..."
   TARGET="$MODULES/$(basename "$MODULE")"
   mv "$MODULE" "$TARGET"
   if [ $? -ne 0 ]; then
      echo "error copying module to memory, not enough free RAM? try df" >&2
      rm "$TARGET"
      exit 6
   fi
   MODULE="$TARGET"
fi

MOD=$(union_insert_module / "$MODULE" $IMAGES)
if [ $? -ne 0 ]; then echo "error inserting module to live filesystem" >&2; exit 3; fi

# All executables (but symlinks) in /etc/rc.d/init.d/ from this module will be started
# with two arguments: "start" "activate".
# This is done only by the 'activate' script, not in the case when the module is loaded
# during OS startup (in that case, your distro is responsible for execution)
#
# For compatibility, /etc/init.d is also examined, but it's not recommended for you to put your startup scripts
# there in your module

MOD="$IMAGES/$(basename $MOD)"

find_n_run_scripts $MOD start activate

# update ld cache if new ld.so.conf/cache exists in the module
if [ -e "$MOD/etc/ld.so.conf" -o -e "$MOD/etc/ld.so.cache" ]; then
   echo "Module contains ld.so.conf or ld.so.cache, updating libs cache..."
   /sbin/ldconfig
fi

if [ -x /usr/bin/update-desktop-database ]; then
  /usr/bin/update-desktop-database -q /usr/share/applications >/dev/null 2>&1
fi

if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
  if [ -x /usr/bin/gtk-update-icon-cache ]; then
    /usr/bin/gtk-update-icon-cache /usr/share/icons/hicolor >/dev/null 2>&1
  fi
fis cache..."
   /sbin/ldconfig
fi
### insertar code
if [ -x /usr/bin/update-desktop-database ]; then
  /usr/bin/update-desktop-database -q /usr/share/applications >/dev/null 2>&1
fi

if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
  if [ -x /usr/bin/gtk-update-icon-cache ]; then
    /usr/bin/gtk-update-icon-cache /usr/share/icons/hicolor >/dev/null 2>&1
  fi
fi

Respecto a lo de xfce y kde ambos utilizan estos scrips que están en el modulo desktop.

psdata habria que poner al inicio de los script  
#
# Author: Tomas M. <http://www.linux-live.org>
# mod  by wifixlax
 
« Última modificación: 06-12-2014, 01:55 (Sábado) por lupox »

Desconectado geminis_demon

  • Colaborador
  • *
  • Mensajes: 2378
  • Prácticas precisas precisan práctica
Re: mod-activate
« Respuesta #4 en: 06-12-2014, 02:01 (Sábado) »
Cierto, con ponerlo en los scripts activate y deactivate basta, ya que todos los demás llaman a esos dos.

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: mod-activate
« Respuesta #5 en: 06-12-2014, 02:35 (Sábado) »
ok ,te los pillo directamente del post.  ;D

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: mod-activate
« Respuesta #6 en: 06-12-2014, 03:32 (Sábado) »
Bueno , no me he complicado la vida en exceso.


he añadido al final de cada script

Código: [Seleccionar]
### insertar code
if [ -x /usr/bin/update-desktop-database ]; then
  /usr/bin/update-desktop-database -q /usr/share/applications >/dev/null 2>&1
fi

if [ -e /usr/share/icons/hicolor/icon-theme.cache ]; then
  if [ -x /usr/bin/gtk-update-icon-cache ]; then
    /usr/bin/gtk-update-icon-cache /usr/share/icons/hicolor >/dev/null 2>&1
  fi
fi


fijarse que antes faltaba una barra en una de las ordenes "/"

creo que donde decias de despues del "done" , ... no era el sitio , ya que realmente no se desmonta hasta el paso final..donde ya pone "umount"  ...y despues ya si ,refrescamos,.

asi que al final de cada uno  (activate/deactivate)  , he añadido ese trozo de code.

Desconectado lupox

  • *******
  • Mensajes: 529
  • volver....
Re:
« Respuesta #7 en: 06-12-2014, 09:28 (Sábado) »
Probaste el deactivate, en ese lugar creo que genera el mensaje de que no se puede desactivar por haber archivos en uso. Después de done funka bien.
Probado activando y desactivando xbmc . En kde


Una pregunta se pueden cargar scripts en un modulo xzm, para ejecutarse al instalar o activar. Pq en pp  este code podría ir , en el xzm. Bueno este y cualquier malware....

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re:
« Respuesta #8 en: 06-12-2014, 17:44 (Sábado) »
Probaste el deactivate, en ese lugar creo que genera el mensaje de que no se puede desactivar por haber archivos en uso. Después de done funka bien.
Probado activando y desactivando xbmc . En kde


Una pregunta se pueden cargar scripts en un modulo xzm, para ejecutarse al instalar o activar. Pq en pp  este code podría ir , en el xzm. Bueno este y cualquier malware....

no , por que las acciones de activar/desactivar , las gestiona el script que ya hay en sistema.

pero vamos , cualquier script que no sepas de dodne sale puede hacerte la gracia.

Desconectado lupox

  • *******
  • Mensajes: 529
  • volver....
Re:
« Respuesta #9 en: 07-12-2014, 18:31 (Domingo) »
Probaste el deactivate, en ese lugar creo que genera el mensaje de que no se puede desactivar por ..

probados ambos en la rc2  y correctos tenias razon en el sitio, cuando lo probe  ahi, algo debi hacer mal. porque daba error.

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re:
« Respuesta #10 en: 07-12-2014, 20:57 (Domingo) »
Probaste el deactivate, en ese lugar creo que genera el mensaje de que no se puede desactivar por ..

probados ambos en la rc2  y correctos tenias razon en el sitio, cuando lo probe  ahi, algo debi hacer mal. porque daba error.



no , no , ... lo deje como me dijisteis ,...en uno esta al final , y en otro esta despues del done.

aunque creo deberia estar tambien al final , por que el umount , va despues ..y despues del umount es cuando hay que refrescar , pero ... no se ...es que esas opciones no las uso jamas.... consumen infinitamente mas recursos, que si las cargas antes de arrancar el sistema en su carpeta modules.

esa funcion va bien , por si te has olvidado de cargar uno ..pues si , pero nada mas.

Desconectado lupox

  • *******
  • Mensajes: 529
  • volver....
Re:
« Respuesta #11 en: 07-12-2014, 21:18 (Domingo) »
Pues yo lo uso para cambiar la configuración en fly.
El activate bien, sobrescribe, pero el deactivate no esta muy claro que borre.

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re:
« Respuesta #12 en: 07-12-2014, 21:25 (Domingo) »
Pues yo lo uso para cambiar la configuración en fly.
El activate bien, sobrescribe, pero el deactivate no esta muy claro que borre.

pues ya diras , ..solo abrelo , y mira ,despues del done, esta la parte que se añadio , simplemente pasala al final del todo , como ultima accion.


creo que siempre debio estar hay ,como ultima accion ,si el script lleva al final es que desmonta y entonces esta bien refrescar las mimetypes y la cache de iconos.

Desconectado lupox

  • *******
  • Mensajes: 529
  • volver....
Re:
« Respuesta #13 en: 07-12-2014, 21:30 (Domingo) »
Perdona no estaba hablando de la modificación de los scrips , eso esta ok.  Si quieres vuel vio a probarlo después de umount. Pero funciona.
Lo que comentaba era el funcionamiento normal de los scrips, que parece que el sistema recuerda configuraciones de módulos desactivados.

Código: [Seleccionar]
#!/bin/bash
# Deactivate module from the root directory structure on the fly
# This may fail for many cases, most likely when your module is 'busy'
# - for example if you have files open from the module yet.
#
# Author: Tomas M. <http://www.linux-live.org>
# Modded by www.seguridadwireless.net

if [ "$1" = "-k" ]; then
   CALLED_BY_KDE_HELPER=1
   shift
fi

if [ -e /usr/bin/kdeactivate -a "$DISPLAY" -a ! "$CALLED_BY_KDE_HELPER" ]; then
   exec /usr/bin/kdeactivate "$@" 2>/dev/null
fi

PATH=.:$(dirname $0):/usr/lib:$PATH
. liblinuxlive || exit 5

allow_only_root
MODULE=$(basename "$1" .xzm).xzm
IMAGES=/mnt/live/memory/images
IPREV=empty

if [ "$MODULE" = "" -o ! -e "$IMAGES/$MODULE" ]; then
   echo
   echo "Deactivate module from the root filesystem while running Linux Live"
   echo "Usage: $0 module.xzm"
   exit 1
fi

# if the module contains /var/lock/deactivatelock, deny deactivation
if [ -e "$IMAGES/$MODULE/var/lock/deactivatelock" ]; then
   echo "Can't deactivate the given module, I am sorry."
   exit 2
fi

try_remount()
{
   mount -t aufs -o remount,verbose,del:$IMAGES/$MODULE aufs / 2>/dev/null
}

# Try to simply remove the dir first. If succeeds, finish
rmdir "$IMAGES/$MODULE" 2>/dev/null && exit 0
# OK the previous trick didn't work. So we have a real module here.

# First, try to stop all daemons which may be started by this module
find_n_run_scripts $IMAGES/$MODULE stop deactivate

# detach it from aufs union. This may take a long time, remounting the
# root directory is an expensive operation.
try_remount

# if remount fails, try to free all inotify watchers and remount again
while [ $? -ne 0 -a "$IPREV" != "$INODE" ]; do
   IPREV="$INODE"
   INODE=$(dmesg | fgrep "test_inode_busy" | tail -n 1 | cut -d : -f 4 | cut -b 8-)
   if [ "$INODE" != "" ]; then
      find / -noleaf -xdev -inum "$INODE"
      find / -noleaf -xdev -inum "$INODE" | xargs touch
      try_remount
   fi
done


if [ $? -ne 0 ]; then
   echo "The module can't be removed, because it's busy (used)." >&2
   exit 3
fi

# if we are here, the module has been successfuly removed from aufs union
# so now we have to umount the xzm file and then free the loop device
LOOP=$(cat /proc/mounts | grep "$IMAGES/$MODULE " | cut -d " " -f 1)
umount -n "$IMAGES/$MODULE" 2>/dev/null
### insertar code
if [ -x /usr/bin/update-desktop-database ]; then
  /usr/bin/update-desktop-database -q /usr/share/applications >/dev/null 2>&1
fi

if [ -e /usr/share/icons/hicolor/icon-theme.cache ]; then
  if [ -x /usr/bin/gtk-update-icon-cache ]; then
    /usr/bin/gtk-update-icon-cache /usr/share/icons/hicolor >/dev/null 2>&1
  fi
fi
###
if [ $? -ne 0 ]; then
   exit 4
fi
losetup -d "$LOOP" 2>/dev/null # sometimes it's freed by umount automatically
rmdir "$IMAGES/$MODULE" # if not empty or busy, a message will be shown

Después de umount va ok. te adjunto el código. ??? ???
« Última modificación: 08-12-2014, 16:36 (Lunes) por lupox »

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: mod-activate
« Respuesta #14 en: 08-12-2014, 23:49 (Lunes) »
estaba cantao , que era despues de desmontar...

actualizas caches de icono .. y despues desmontas, ..no haces nada.


umount y despues update.