miércoles, 1 de octubre de 2014

Deshabilitar una interfaz controlada por "Network-Manager"


Deshabilitar la interfaz a través del archivo "interfaces"

Esta configuración te permite deshabilitar la interfaz por su nombre.



  • Configuración de Archivo "interface"

  •     Editar la configuración de "interfaces":


    # vi /etc/network/interfaces
    

        Agregar:

    auto <if>
    iface <if> inet manual
    

        * Donde <if> corresponde al nombre de la interfaz (Ej: wlan0)


  • Configuración de Archivo "Network-Manager"

  •     Editar la configuración del "Network-Manager":


    # vi /etc/NetworkManager/NetworkManager.conf
    

        Cargar plugin "ifupdown":

    [main]
    plugins=ifupdown
    

        * Pueden haber otros plugins, estos no interferirán.

        Especificar que no sobreescriba la configuración del archivo "interfaces":

    [ifupdown]
    managed=false
    



    Deshabilitar la interfaz a través del archivo "Network-Manager"

    Esta configuración te permite deshabilitar la interfaz por medio de la dirección MAC de esta.



  • Configuración de Archivo "interface"

  •     Poco interesa este archivo, ya que se puede ignorar la definición que tenga, gracias al plugin de NetworkManager: "ifupdown"


  • Configuración de Archivo "Network-Manager"

  •     Editar la configuración del "Network-Manager":

    # vi /etc/NetworkManager/NetworkManager.conf
    

        Cargar los plugins "keyfile" e "ifupdown".

    [main]
    plugins=keyfile,ifupdown
    

        * Pueden haber otros plugins, estos no interferirán.

        Especificar que sobreescriba la configuración del archivo "interfaces":

    [ifupdown]
    managed=true
    

        Agregar la dirección MAC de la interfaz a deshabilitar:

    [keyfile]
    unmanaged-devices=mac:<mac>
    

        * Donde <mac> corresponde a la dirección MAC de la interfaz (Ej: 00:11:22:33:44:55)

        Información complementaria:

            * La configuración sobre el plugin "ifupdown" es opcional, pero se recomienda para asegurar la toma de control de las interfaces.
            * Mediante las pruebas realizadas, se mantuvo deshabilitada la interfaz aún cambiándole la dirección MAC y reiniciando el "Network-Manager".
            * La siguiente configuración no me funciona y no logré encontrar información sobre la versión donde aplica:

    [keyfile]
    unmanaged-devices=interface-name:<if>
    




    Anexo 1:

        Reinicio del servicio "Network-Manager:

    # service network-manager stop
    # rm /var/lib/NetworkManager/NetworkManager.state
    # service network-manager start
    


    miércoles, 14 de mayo de 2014

    [OpenWRT] Agregar Timezone de America/Santiago


    Código tzdata de America/Santiago actualizado al 2014:

    CLT4CLST,M9.1.0/0,M4.4.0/0


    vi /usr/lib/lua/luci/sys/zoneinfo/tzdata.lua
    

    Agregar:

            { 'America/Santarem', 'BRT3' },
          + { 'America/Santiago', 'CLT4CLST,M9.1.0/0,M4.4.0/0' },
            { 'America/Santo Domingo', 'AST4' },




    vi /usr/lib/lua/luci/sys/zoneinfo/tzoffset.lua
    

    Agregar:

            wft   =  43200, -- WFT
          + clt   = -14400, -- CLT
          + clst  = -10800, -- CLST

    }    



    Después es necesario reiniciar.
    Done!



    Para entender como crear la estructura, les dejo un fragmento del manual de "tzset":

        std offset dst [offset],start[/time],end[/time]

    There are no spaces in the specification. The initial std and offset specify the standard timezone, as described above. The dst string and offset specify the name and offset for the corresponding daylight saving timezone. If the offset is omitted, it default to one hour ahead of standard time.

    The start field specifies when daylight saving time goes into effect and the end field specifies when the change is made back to standard time. These fields may have the following formats:

    ...

    Mm.w.d

    This specifies day d (0 <= d <= 6) of week w (1 <= w <= 5) of month m (1 <= m <= 12). Week 1 is the first week in which day d occurs and week 5 is the last week in which day d occurs. Day 0 is a Sunday.
    The time fields specify when, in the local time currently in effect, the change to the other time occurs. If omitted, the default is 02:00:00.


    [http://linux.die.net/man/3/tzset]


    y... ¿por qué no aparece?

    La razón, por la que Santiago no aparece en el listado de zonas horarias, se debe a que el archivo de zoneinfo, correspondiente a Santiago, no contiene la estructura que se detalló al comienzo de este post.

    Existe un script, utilizado por LuCi ("zoneinfo2lua.pl"), para rescatar las estructuras de forma automática a fin de generar el listado de zonas horarias, pero al no dar con la información, descarta dichas zonas como la de Santiago (ya que hay otras que tienen el mismo problema)

    El archivo de Santiago no tiene la información requerida:

    (últimos bytes de /usr/share/zoneinfo/America/Santiago)
    00023b0: ffff bdba 0000 ffff bdba 0004 ffff b9b0 ................
    00023c0: 0008 ffff c7c0 0008 ffff c7c0 010c ffff ................
    00023d0: b9b0 0008 ffff c7c0 010c ffff d5d0 010c ................
    00023e0: ffff c7c0 0008 4c4d 5400 534d 5400 434c ......LMT.SMT.CL
    00023f0: 5400 434c 5354 0000 0000 0000 0101 0101 T.CLST..........
    0002400: 0000 0000 0001 0101 010a0a              ...........


    TZ -> ""


    Pero, por ejemplo, el archivo de "Santa Isabel" si lo tiene:

    (últimos bytes de /usr/share/zoneinfo/America/Santa_Isabel)
    00008d0: 0004 ffff 8f80 0008 ffff 9d90 010c ffff ................
    00008e0: 9d90 0110 ffff 9d90 0114 4c4d 5400 4d53 ..........LMT.MS
    00008f0: 5400 5053 5400 5044 5400 5057 5400 5050 T.PST.PDT.PWT.PP
    0000900: 5400 0000 0000 0001 0000 0000 0001 0a50 T..............P
    0000910: 5354 3850 4454 2c4d 342e 312e 302c 4d31 ST8PDT,M4.1.0,M1
    0000920: 302e 352e 300a                          0.5.0.


    TZ -> "PST8PDT,M4.1.0,M10.5.0"

    Espero que se haya entendido.

    viernes, 14 de marzo de 2014

    PulseAudio en modo sistema (Arch Linux)

    En mi caso, tengo una Raspberry Pi con un parlante corriendo MPD.
    Para configurar PulseAudio en modo sistema, es necesario ejecutar los siguientes pasos como root:

    1.- Instalar PulseAudio

    pacman -Sy pulseaudio
    

    2.- Darle permisos para utilizar DBus

    vi /etc/dbus-1/system.d/pulseaudio.conf
    
    <!DOCTYPE busconfig PUBLIC
     "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
     "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
    <busconfig>
         <policy user="pulse">
             <allow own="org.pulseaudio.Server"/>
             <allow send_destination="org.pulseaudio.Server"/>
             <allow receive_sender="org.pulseaudio.Server"/>
         </policy>
    </busconfig>
    

    3.- Crear usuario 'pulse'

    useradd pulse
    

    4.- Crear grupo 'pulse-access'

    groupadd pulse-access
    

    5.- Agregar el usuario 'pulse' al grupo 'audio'

    usermod -a -G audio pulse
    

    6.- Agregar al grupo 'pulse-access' todos los usuarios que utilizaran PulseAudio

    usermod -a -G pulse-access <your_user>
    

    7.- Cambiar el directorio 'home' del usuario 'pulse'

    usermod --home /var/run/pulse pulse
    

    8.- Cambiar la linea del archivo client.conf

    vi /etc/pulse/client.conf
    
    - ;autospawn = yes
    + autospawn = no
    

    9.- Agregar PulseAudio como servicio dentro de Systemd

    vi /usr/lib/systemd/system/pulseaudio.service
    
    [Unit]
    Description=PulseAudio Daemon
    Documentation=man:pulseaudio(1)
    
    [Service]
    ExecStart=/usr/bin/pulseaudio --system --high-priority --disallow-exit --disable-shm --disallow-module-loading=1 --log-target=stderr --exit-idle-time=-1
    ExecReload=/bin/kill -HUP $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    

    10.- Refrescar la configuración del Systemd

    systemctl --system daemon-reload
    

    11.- Habilitarlo dentro de Systemd

    systemctl enable pulseaudio
    

    12.- Crear el home de pulseaudio

    mkdir -p /var/run/pulse
    chown -R pulse: /var/run/pulse
    

    13.- Reiniciar el equipo

    reboot
    

    miércoles, 26 de febrero de 2014

    Manejar el volumen de PulseAudio mediante CLI


    Subir:
    pactl set-sink-volume @DEFAULT_SINK@ -- +10%
    

    Bajar:
    pactl set-sink-volume @DEFAULT_SINK@ -- -10%
    

    Mute:
    pactl set-sink-mute @DEFAULT_SINK@ toggle