23
1 Después de instalar Debian #nano /etc/default/grub GRUB_CMDLINE_LINUX=”gfxpayload=1024x768x24,1024x768 splash” (gfxpayload is the replacement for vga=xxx) GRUB_CMDLINE_LINUX=”vga=792” (vbeinfo para compatibidad de modos) (definición modo consola) 640×480 800×600 1024×768 1280×1024 08 bpp 769 771 773 775 16 bpp 785 788 791 794 32 bpp 786 789 792 795 GRUB_GFXMODE=1024x768 (definición modo gráfico) #update-grub Modificar la imagen de fondo: La imagen de fondo debe estar en formato .png, o .tga, preferiblemente tga, resolución 640x480 y copiar en el directorio /boot/grub/. Oor defecto GRUB busca la imagen ( boot/grub/moreblue-orbit-grub.tga ). No está demás actualizar con update- grub. #nano /etc/modprobe.d/blacklist.conf blancklist pcspkr 2 Montar pendrive fdisk -l ls /dev | grep sd mount -t vfat /dev/sdb1 /media/nombre_carpeta umount /media/nombre_carpeta Montar discos duros en Debian opción 1 Bueno como siempre no es solo en Debian pero en Ubuntu con GNOME no debería hacer falta. Aunque en KDE ya sea Debian o Kubuntu si que hace falta, o por lo menos a mi me ha pasado. Este tutorial da igual para que distribución lo uses aunque no lo he probado en otras más que en Debian y Kubuntu. Cuando instalamos nuestra Debian una de las cosas que a mi me chocó fue que no me montó ninguna de mis otras dos particiones (tengo dos discos duros y en uno de ellos hay dos particiones) asi que me busqué como siempre información y aquí la pongo: Lo primero es saber algo de los discos a montar con el comando: fdisk -l (hay que ejecutarlo como root) (para conocerl el ID sudo blkid) Lo siguiente es crear en /media/ la carpeta donde se van a montar nuestras particiones: mkdir /media/loquetedelagana (también como root) Como root nuevamente (por eso a veces es más cómodo logearse con sudo bash o su para no estar todo el rato sudo sudo sudo sudo que cansa) editamos el /etc/fstab con nuestro editor favorito, yo personalmente lo hago con nano /etc/fstab Al final del documento agregamos estas lineas recordando modificar la direccion del disco y la de /media/ (donde he puesto las XXX) Si la partición es FAT32: /dev/sdaX /media/XXX vfat iocharset=utf8,umask=000 0 0 Si la partición es NTFS: /dev/ sdaX /media/XXX ntfs-3g defaults,locale=es_ES.utf8,nls=utf8 0 0 Si la partición es EXT3 (o Linux) /dev/ sdaX /media/XXX ext3 defaults 0 0 Guardamos y si tenemos que montar un disco de NTFS antes tenemos que instalar el paquete ntfs-3g con un apt-get install ntfs-3g (sobra decir que es como root ¿no?) Después de todo esto tecleamos mount -a y listo cada vez que enciendas el PC se montarán solitos. Montar discos duros en Debian opción 2

Apuntes Linux 12-2012

  • Upload
    lfgh

  • View
    170

  • Download
    8

Embed Size (px)

DESCRIPTION

Recopilaciones aplicables a la instalación de debian squeeze 605, y finalmente lo esencial para escritorio minimalista openbox y tint.También como configurar zoneminder, apache, ssh, entre otras cosas

Citation preview

Page 1: Apuntes Linux 12-2012

1 Después de instalar Debian

#nano /etc/default/grub

GRUB_CMDLINE_LINUX=”gfxpayload=1024x768x24,1024x768 splash” (gfxpayload is the replacement for vga=xxx)GRUB_CMDLINE_LINUX=”vga=792” (vbeinfo para compatibidad de modos) (definición modo consola)

  640×480 800×600 1024×768 1280×1024

08 bpp  769 771 773 775

16 bpp   785 788 791 794

32 bpp   786 789 792 795

GRUB_GFXMODE=1024x768 (definición modo gráfico)

#update-grub

Modificar la imagen de fondo: La imagen de fondo debe estar en formato .png, o .tga, preferiblemente tga, resolución 640x480 y copiar en el directorio /boot/grub/. Oor defecto GRUB busca la imagen ( boot/grub/moreblue-orbit-grub.tga ). No está demás actualizar con update-grub.

#nano /etc/modprobe.d/blacklist.conf

blancklist pcspkr

2 Montar pendrive

fdisk -lls /dev | grep sdmount -t vfat /dev/sdb1 /media/nombre_carpetaumount /media/nombre_carpeta

Montar discos duros en Debian opción 1

Bueno como siempre no es solo en Debian pero en Ubuntu con GNOME no debería hacer falta. Aunque en KDE ya sea Debian o Kubuntu si que hace falta, o por lo menos a mi me ha pasado.

Este tutorial da igual para que distribución lo uses aunque no lo he probado en otras más que en Debian y Kubuntu.

Cuando instalamos nuestra Debian una de las cosas que a mi me chocó fue que no me montó ninguna de mis otras dos particiones (tengo dos discos duros y en uno de ellos hay dos particiones) asi que me busqué como siempre información y aquí la pongo:

Lo primero es saber algo de los discos a montar con el comando: fdisk -l (hay que ejecutarlo como root) (para conocerl el ID sudo blkid)

Lo siguiente es crear en /media/ la carpeta donde se van a montar nuestras particiones: mkdir /media/loquetedelagana (también como root)

Como root nuevamente (por eso a veces es más cómodo logearse con sudo bash o su para no estar todo el rato sudo sudo sudo sudo que cansa) editamos el /etc/fstab con nuestro editor favorito, yo personalmente lo hago con nano /etc/fstab

Al final del documento agregamos estas lineas recordando modificar la direccion del disco y la de /media/ (donde he puesto las XXX)

Si la partición es FAT32:/dev/sdaX /media/XXX vfat iocharset=utf8,umask=000 0 0

Si la partición es NTFS:/dev/ sdaX /media/XXX ntfs-3g defaults,locale=es_ES.utf8,nls=utf8 0 0

Si la partición es EXT3 (o Linux)/dev/ sdaX /media/XXX ext3 defaults 0 0

Guardamos y si tenemos que montar un disco de NTFS antes tenemos que instalar el paquete ntfs-3g con un apt-get install ntfs-3g (sobra decir que es como root ¿no?)Después de todo esto tecleamos mount -a y listo cada vez que enciendas el PC se montarán solitos.

Montar discos duros en Debian opción 2

Deben averiguar el ID del disco que desean montar, por ejemplo si desean montar sda1 deben ejecutar esta orden: sudo blkid /dev/sda1y obtendran algo como esto: /dev/sda2: LABEL=”pidsk” UUID=”1AA26276A2625673” TYPE=”ntfs”Lo que debemos anotar, es similar a lo que esta en negrita

Deben crear la carpeta donde será montado el disco, usualmente puede quedar en /mnt/algo o /media/algo  por ejemplo : /media/disco  para esto deben ejecutar la orden:cd /mntsudo mkdir disco

Deben editar el archivo fstab para decirle a raspbian que monte el disco cada vez que enciendan el raspberry pisudo nano /etc/fstaby agregan una linea como esta, recuerden poner el ID de su discoUUID=1AA26276A2625673 /media/disco ntfs-3g default 0 0

A4A424FBA424D19A3 Editar los repositorios

Page 2: Apuntes Linux 12-2012

Lo primero que debemos hacer después (suponiendo que no tengamos problemas con la conexión a internet) de instalar Debian Squeeze es editar nuestros repositorios, lo hacemos de la siguiente manera:

nano /etc/apt/sources.list

(borramos lo que tiene y copiamos lo siguiente)

## Debian-establedeb http://ftp.us.debian.org/debian/ stable main contrib non-freedeb-src http://ftp.us.debian.org/debian/ stable main contrib non-free## Actualizaciones de seguridaddeb http://security.debian.org/ stable/updates main contrib non-freedeb-src http://security.debian.org/ stable/updates main contrib non-free## Multimedia establedeb http://www.debian-multimedia.org stable main non-free

Después de hacer esto guardamos los cambios y cerramos. Posteriormente actualizamos los repositorios:

#aptitude update

nos aparece un error como el siguiente:

W: Error de GPG: http://www.debian-multimedia.org stable Release: Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 07DC563D1F41B907

No se preocupen, al igual que en algunas versiones de Ubuntu esto ocurre por no tener la llave de seguridad de Debian-Multimedia, que instalamos escrbiendo en un terminal (logueados como root):

gpg --keyserver keys.gnupg.net --recv-key 1F41B907

Luego de eso aparece lo siguiente:

gpg: solicitando clave 1F41B907 de hkp servidor keys.gnupg.netgpg: /root/.gnupg/trustdb.gpg: se ha creado base de datos de confianzagpg: clave 1F41B907: clave pública "Christian Marillat <[email protected]>" importadagpg: no se encuentran claves absolutamente fiablesgpg: Cantidad total procesada: 1gpg: importadas: 1

Después de este paso escribimos lo siguiente en la terminal:

gpg --export --armor 1F41B907 | apt-key add -

Al aplicar este paso nos debe dar un OK, volvemos a actualizar la información de los repositorios con:

#aptitude update#aptitude install firmware-iwlwifi

4 Interface WIFI

#nano /etc/network/interfaces

“allow-hotplug eth1” no funciona con /etc/init.d/networking restar en cambio “auto eth1” si (usar este último)

ifconfig wlan0 upallow-hotplug wlan0

iface wlan0 inet dhcpwpa-ssid 2336wpa-psk ******

(inet=ipv4 ipv6=ipv6)

ifconfig wlan0 essid 2336 key s:*****dhclient wlan0

5 Instalar paquetes básicos

#aptitude install x-window-system-coreopenboxobconf obmenumotionwputcrontabv4l2ucp#aptitude install memtest86+

#aptitude install tint2mc

Page 3: Apuntes Linux 12-2012

treehwinfomesa-utils (glxinfo)mocmplayersmplayercamorama (not update since 2007)guvcviewkonquerorpcmanfmxfce4-panellxappearancelxpanelwbarcairo-docknitrogen (gestor wallpaper)feh (gestor wallpaper)conky wicdanypapermodule-assistant

#aptitude remove openbox-themes

En ocasiones es necesario tener las herramientas básicas de compilación para instalar paquetes desde su código fuente, para eso necesitamos el paquete build-essential

#aptitude install build-essential

3) Instalar los codecs básicos multimedia

Después de haber configurado los repositorios, podemos instalar los codecs multimedia básicos para la reproducción de los formatos de audio y video más comunes, para hacerlo escribimos lo siguiente en la terminal (logueados como root):

Para 32 bits#aptitude install w32codecs libdvdcss2 ffmpeg faad sox libfaac-dev libavcodec-dev vorbis-tools lame twolame gstreamer0.10-fluendo-mp3 gstreamer0.10-ffmpeg gstreamer0.10-plugins-bad avifile-divx-plugin (no oficiales)

#aptitude install gnome-codec-install

Para 64 bitsaptitude install w64codecs libdvdcss2 gstreamer0.10-fluendo-mp3 ffmpeg sox twolame vorbis-tools  lame faad gstreamer0.10-ffmpeg gstreamer0.10-plugins-bad avifile-divx-plugin libfacc0

alsa

#aptitude install alsa-utils

configure alsa by running the command 'alsactl init' as root

Revisión de modulos de audio

lspci | grep audiolsmod | grep sndcat /proc/asound/modules

6 Pulseaudio

#aptitude install pulseaudio pavucontrol (para controlar el audio de diferentes aplicaciones) padevchooser (applet que permite acceder desde el area de notificación a las preferencias de pulseaudio)

7 Otros codecs importantes (Java y Flash, Rar, 7z)

Para instalar sun-java6 en nuestro computador debemos escribir lo siguiente en la consola (logueados como root):#aptitude install sun-java6-plugin sun-java6-jdk sun-java6-sources

Para instalar el plugin para reproducir los videos en formato flash escribmos lo siguiente en la consola (logueados como root):#aptitude install flashplugin-nonfree

En ocasiones vamos a tener que lidiar con archivos compresos, especialmente con los de formato .rar que es privativo, para poder comprimir/descomprir archivos en este formato debemos instalar los paquetes rar, unrar, p7zip-full y p7zip-rar, para ello abrimos una terminal  y escribimos lo siguiente (logueados como root):#aptitude install rar unrar p7zip-full p7zip-rar

8 Utilidades “básicas” que se quedan por fuera de la instalación del primer CD de Debian Squeeze:

Hay algunas utilidades “básicas” que al instalar el primer CD de Debian Squeeze se nos quedan por fuera como la cálculadora de gnome, la utilidad para tomar captura de pantalla de gnome, el monitor del sistema, la utilidad de discos, entre otras, aquí cada uno de ustedes puede escoger que instalar y que no, yo instalé lo siguiente:

Utilidad para captura de escritorio de gnome:

En una terminal logueados como root escribimos lo siguiente:#aptitude install gnome-screenshot

Monitor del sistema

Page 4: Apuntes Linux 12-2012

#aptitude install gnome-system-monitor

Utilidad de discos#aptitude install gnome-disk-utility

Cálculadora#aptitude install gcalctool

GDebi

Es una utilidad que necesitamos para instalar paquetes .deb

#aptitude install gdebi

Utilidades de Nautilus y Terminal de root:

Hay ocasiones en las que necesitamos trabajar con archivos gráficamente pero con permisos de administrador (como copiar y pegar un wallpaper en /usr/share/backgrounds, por ejemplo), para ello hacemos uso de la extensión nautilus-gksu. Al instalar esta extensión también se instala el paquete gksu, que es una interfaz gráfica para el comando su y nos abre una entrada en el menú de gnome con un programa llamado Terminal de “Root”, que es de útil cuando queramos realizar tareas administrativas desde la consola como instalar paquetes, lo instalamos escribiendo en una consola (logueados como root):

#aptitude install nautilus-gksu

Motores de temas gtk+ 2.0 y temas básicos de gnome:

Al instalar Debian Squeeze este viene con el tema clearlooks y muy pocos temas alternativos, para tener más temas gtk a nuestra disposición, podemos instalar los siguientes paquetes, escrbiendo en un terminal (logueados como root) lo siguiente:

#aptitude install gtk2-engines gtk2-engines-murrine murrine-themes gnome-themes-more

9 Lo necesesario para trabajar con particiones NTFS

Si tienes particiones NTFS en tu computador, es probable que en algún momento quieras copiar o crear algún archivo un archivo en una de ellas, si lo haces con el sistema recién instalado te llevarías tremendo estrellón puesto que el soporte para escritura de particiones NTFS no viene por defecto al instalar el primer CD Debian Squeeze, pero descuiden no hay porque alarmarse esto se resuelve con un solo comando, instalando el paquete ntfs-3g, de la siguiente manera:

#aptitude install ntfs-3g

Después de que termine de instalar el paquete reiniciamos nuestro computador y listo.

10 Miscelaneos

Para los amantes de los programas que consumen pocos recursos y tienen muchas funcionalidades

En video#aptitude install vlc mozilla-plugin-vlc

En cuanto sonido mi reproductor preferido es guayadeque#aptitude install guayadeque

Otra de mis aplicaciones#aptitude install radiotray

11 Ofimática

En aplicaciones minimalistas, el procesador de textos Abiword y la hoja de cálculo Gnumeric:

#aptitude install abiword gnumeric gnumeric-plugins-extra

Para quienes quieran una solución más completa pueden instalar OpenOffice 3.2.1-11 desde los repositorios de Oficiales de Debian Squeeze instalando el metapaquete openoffice.org, escribiendo en una terminal (logueados como root) lo siguiente:#aptitude install openoffice.org openoffice.org-gnome openoffice.org-l10n-es myspell-es openclipart

12 LibreOffice en Debian Squeeze

Modo 1deb http://backports.debian.org/debian-backports squeeze-backports main

#aptitude -t squeeze-backports install libreoffice

Modo 2Descomprimimos los 3 archivos comprimidos que acabamos de descargar. tar -xvzf LibO_3.3.2_Linux_x86_install-deb_en-US.tar.gz tar -xvzf LibO_3.3.2_Linux_x86_langpack-deb_es.tar.gz tar -xvzf LibO_3.3.2_Linux_x86_helppack-deb_es.tar.gz Instalacion. Primero LibreOffice. dpkg -i LibO_3.3.2rc2_Linux_x86_install-deb_en-US/DEBS/*.deb Si nos da algún error le pedimos a apt que nos lo resuelva : apt-get -f install Ahora la integración con los menus del escritorio Debian. dpkg -i LibO_3.3.2rc2_Linux_x86_install-deb_en-US/DEBS/desktop-integration/*.deb El idioma en castellano.

Page 5: Apuntes Linux 12-2012

dpkg -i LibO_3.3.2rc2_Linux_x86_langpack-deb_es/DEBS/*.deb Y por último la ayuda en castellano. dpkg -i LibO_3.3.2rc2_Linux_x86_helppack-deb_es/DEBS/*.deb Limpiando la "basura". Si no quieres guardar nada de lo que has utilizado para instalar lo puedes borrar : rm -r LibO_3.3.2*

13 Conky en openbox

#nano ~/.config/openbox/autostart.sh (copiar /etc/xdg/openbox/autostart.sh/ a ~/.config/openbox/)

conky -c ~/.conky/conkyrc_orange(sleep 2 && tint2) &. Esto hace que espere dos segundos antes de iniciarse

14 Wallpaper en openbox

fehpick a wallpaper and try this command in a terminal:feh --bg-scale /path/to/your/background/image.jpgOnce you have chosen a wallpaper, feh stores its name in a file called .fehbg. That means you can tell it to restore the wallpaper on the next boot by checking that file. Add the following to the autostart.sh file.

eval `cat $home/lfgh/.fehbg` & (es ` y no es ‘)

15 Seudotrasparencia para conky

En sistemas que no soportan trasparencia, editar conkyrc y al final agregar

${texeci 600 feh --bg-scale '/path/to/your/wallpaper'} (nota: mejor usar sleep para conky en autoexec.sh de openbox)

16 Actualización menus openbox

Metodo 1 mediante script

#aptitude install menu (incluye su-to-root)Generar scrip menupdate.sh

#!/bin/bashupdate-menus (actualiza menu debian)openbox --reconfigure (actualiza menu openbox)

Para ejecutar sh /rutadelarchivo/ menupdate.sh

Metodo 2 mediante menumaker

Para instalarlo:Lo primero es ir a la web del programa y bajarlo.Lo siguiente es descomprimirlo y hacer un:./configureMakemake installNo debería haber problemas (solo depende de python)Para ejecutarlo en un terminal ponemos la siguiente orden (es un ejemplo, para dudas mmaker --help)mmaker -fv OpenBoxAhora abrir el editor de menús (obmenu en el caso de OpenBox por ejemplo) y listo.

17 Tint2

#nano .config/tint2/tint2rc (ver configuración archivo al final)

v4l2ucp is an universal control panel for V4L and V4L2 devices (ver conectar con las cámaras via v4l2loopback)

v4l2ctrl (se instala junto a v4l2ucp)v4l2ctrl –d /dev/video0 –s /tmp/v4l2pp (genera archivo parámetros)v4l2ctrl –d /dev/video0 –l /tmp/v4l2pp (lanzador)

18 Cambiar la hora

Queremos poner como fecha 29-abril-2012 y la hora 19:47.Nos hacemos root y luego:# date --set "2012-04-29 19:47"

luego actualizamos la BIOS.# hwclock --set --date="2012-04-29 19:47”

Para comprobarlo tecleamos:# hwclock

19 Instalar Firefox

En este caso explico como hacerlo para arquitecturas de 64 bits. Descargamos la última versión de Mozilla Firefox. 

Page 6: Apuntes Linux 12-2012

Entramos a la consola y descomprimimos lo que hemos descargado recientemente.  #tar xvf firefox-8.0.1.tar.bz2 Desinstalamos iceweasel (en caso que lo tengamos)aptitude remove iceweasel Movemos la carpeta a /opt mv firefox/ /opt Nos colocamos en la carpeta donde vamos a colocar un enlace simbólico:cd /usr/bin/ Creamos el enlace simbólico: ln -s /opt/firefox/firefox Descargamos estoaptitude install ia32-libs ia32-libs-gtk Ahora ya podremos usar Mozilla firefox, escribiendo firefox en la consola. 

20 Activar click touchpanel

#nano /etc/rc.localy al final (previo a exit 0) agregar

rmmod psmousemodprobe psmouse proto=imps

21 SSH

# aptitude install ssh openssh-server

Configuración mayor nivel de seguridad

nano /etc/ssh/sshd_config

port 403Protocol 2LoginGraceTime 30PermitRootLogin noMaxAuthTries 2MaxStartups X

#nano /etc/hosts (hacer que se vea así)

.0.0.1 localhost

.0.1.1 nombre_equipo

# The following lines are desirable for IPv6 capable hosts::1 ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters

#/etc/init.d/ssh start# /etc/init.d/hostname.sh start

22 Nombre de la Maquina

Editamos el fichero /etc/hostname y le cambiamos el nombre_equipo, en caso de no existir se crea y con esto ya esta cambiado.

Ahora solo falta cambiar nuestro ficheros hosts.

sudo nano /etc/hosts

127.0.0.1 localhost127.0.1.1 nombre_equipo

Verificación

# hostname# hostname -f

Es importante que ambos muestren el nombre_equipo

23 Autentificación trasparente por clave pública/privada con OpenSSH

El primer paso es generar la pareja de claves pública/privada en el cliente con el comando ssh-keygen:

$ ssh-keygen -t dsa

Save the key in its default location and type a password.

Change directory to ~/.ssh using:

$ cd .ssh/

Page 7: Apuntes Linux 12-2012

Two files will be created: id_dsa and id_dsa.pub. The first is your private key and should not be distributed. The second is your public key and should be placed in the ~/.ssh/authorized_keys file for every computer you would like to log in to with this private key. To do this use:

$ cat id_dsa.pub >> authorized_keys

and finally make authorized_keys read only with:

$ chmod 400 authorized_keys

Getting your public key to work with putty

Unfortunately, SSH2 private keys have various formats, so we will need to import the DSA private key we just made into PuTTYgen and save it in a format that PuTTy can use.

Copy your id_dsa (your private key) to your windows machine (using a USB pen drive, ftp, etc)

Select the 'Import' command from the 'Conversion' menu on PuTTYgen. Select SSH-2 DSA in the parameters section and then select File -> save private key and save your key as an .ppk file.

Configuring Putty

Under the Connection -> SSH -> Auth category click the browse button and select your new private key with the .ppk extension. Click open and logon to your linux box with the new key!

Removing password-based authentication from SSH

Once you are sure key-based logins are working (you should see something like Authenticating with public key "something"after entering your user name), you can 'turn off' password-based logins.

On your linux box switch to root and edit the /etc/ssh/sshd_config file. Look for the PasswordAuthenticaion line and make sure it reads no. Save the file, and run:

(Una vez que esté configurado correctamente, podemos incluso querer configurar el servidor de SSH para que no acepte clientes que quieran entrar por el método estándar, la contraseña. Para ello, partiendo de la configuración estándar de Debian, sólo tenemos que cambiar los parámetros ChallengeResponseAuthentication y PasswordAuthentication del fichero /etc/ssh/sshd_config a “no“:)

# kill -HUP 'cat /var/run/sshd.pid'

to have sshd reload its config files.

24 Ejemplos SSH

La sintaxis para crear un túnel local es:

ssh -L [puerto_local]:localhost:[puerto_remoto] servidor_remoto

Ejemplo

ssh -L 10080:localhost:80 [email protected] –L 5901:localhost:5901 [email protected] (ip servidor) (para crear acceso ssh)

Con esto, creamos un Túnel entre el puerto 10080 de nuestra computadora y un servicio corriendo en puerto 80 del servidor Web remoto. Si tecleamos en el navegador web http://localhost:10080 podremos acceder sin problemas al servidor web remoto con la seguridad de que todos los datos viajan encriptados.

La sintaxis para crear un túnel remoto es:

ssh -R [puerto_remoto]:localhost:[puerto_local] terminal_remoto

Imaginemos un servidor Web escuchando el puerto 80 y deseamos que una computadora remota pueda tener acceso al puerto del servidor web y en éste caso, nos encontramos del lado del servidor. Para realizar el túnel remoto ejecutamos:

ssh -R 10080:localhost:80 usuario@pc-cliente-remoto

Ejemplo 1

una máquina con ssh accesible desde internet (etxea.net) tiene que hacer de puente a otra máquina que no es accesible desde internet (maquina 192.168.1.254), concretamente a su puerto HTTPS.

ssh -R 8080:192.168.1.254:443 -f -N etxea.net

Page 8: Apuntes Linux 12-2012

Con este comando lograremos que el puerto 8080 de etxea.net sea redirigido a través de SSH al puerto 443 de la máquina 192.168.1.254 a traves de la maquina etxea.net.

Las opciones -f (background) y -N (no lanzar comando en el otro extremo) son utiles cuando solo queremos lanzar un tunel SSH.

Ejemplo 2

Tenemos nuestra maquina en internet que tiene un servicio corriendo en el puerto 5000, al cual queremos acceder desde etxea.net por un tunel ssh. Accedemos a esa maquina en Internet y lanzamos:

ssh -R 5000:localhost:5000 etxea.net

Con ello, desde etxea.net accediendo a localhost:5000 seremos redirigidos por el tunel SSH al puerto 5000 de la maquina remota.

25 Acceso escritorio remoto VNC

#aptitude install tightvncserver

#aptitude install xrdp (para el control mediante escritorio remoto de windows)

Desde Windows

En PuTTy damos a expandir en la opción SSH y marcamos X11 y señalamos como enable la primera opción y debajo escribimos localhost:1.

Después nos vamos a la pestaña de tunnels y especificamos el puerto en el que vamos a realizar el tunnels y a donde lo vamos realizar en este caso pondremos localhost:5901 y depues le damos a añadir.

Una vez configurado le damos a la pestaña sesión y ponemos la dirección IP de nuestro servidor e iniciamos sesión en él.

Desde Linux

$ tightvncserver (o vncserver)

Desde Windows

Ejecutamos tightviewer y configuramos la dirección del puerto (5901), para luego conectarnos y así obtener un modo grafico

Type IP address: hostname:1 (debian:1) to connect to linux desktop

Xvnc, que es el servidor en si. vncviewer, el programa cliente. vncpasswd, para cambiar la contraseña de cada sesión. vncconnect, para conectarnos a un servidor VNC. vncserver, para iniciar sesiones VNC.

vncserver -kill :1 (kill display 1) “espacio en blanco entre –kill y : “

26 Acceso escritorio remoto NX

nxclient_3.5.0-7_i386.debnxnode_3.5.0-7_i386.debnxserver_3.5.0-9_i386.deb

En windows

Instalar nxclient

27 Motion

# nano /etc/motion/motion.conf

on_picture_save echo | mutt -a %f -s “Captura de Imagen” -c [email protected]

on_picture_save wput ftp://usuario:pass@servidor/carpeta

# nano /etc/default/motion

start_motion_daemon = yes

Una vez lanzado motion:

http://localhost:8080 (imagen)http://localhost:8081 (configuración)

dpkg-reconfigure exim4-config

mail sent by smarthost; no local mail (si nos interesa, de momento, solo es enviar e-mails, y no queremos convertirnos en una fuente de spam, activamos lo mínimo)

28 Configurar exim4

Resulta muy práctico poder enviar correos desde el sistema, para enviarnos avisos, logs, etc.

Page 9: Apuntes Linux 12-2012

Utilizaremos exim4 que es el que instalan debian y ubuntu por defecto y que es más sencillo de configurar que sendmail. En caso de que sendmail estuviera instalado se pueden dar incompatibilidades, por lo que es conveniente desinstalarlo previamente.

Primero instalamos exim4:

apt-get install exim4

Ejecutamos el asistente de configuración:

dpkg-reconfigure exim4-config

++++++++++++++++

(aplica para IP fija)

Contestando lo siguiente:

En “configuración general del correo” seleccionamos “Internet site”. En “Nombre del sistema de correo” escribimos el nombre del dominio que cualificará las direcciones de correo sin nombre de dominio, generalmente será el nombre de la

máquina, por ejemplo “nombredemimaquina.int”. Debemos asegurarnos de que como tal esté definida en /etc/hosts. En “Direcciones IP en las que recibir conexiones SMTP entrantes” escribimos “127.0.0.1” para que no acepte peticiones de otras máquinas. En “Otros destinos para los que se acepta el correo” podemos dejar el valor por defecto, que será el nombre del equipo. En “Dominios para los que se reenvía el correo” dejamos el valor en blanco. En “Máquinas para las cuales reenviar correo” también lo dejamos en blanco. En “Limitar el número de consultas de DNS” dejamos el valor “No”. En “Mecanismo de entrega para el correo local” seleccionamos “formato mbox”. Y en “Dividir la configuración en pequeños ficheros” seleccionamos “No”.

Con esto ya podemos enviar correos: #echo "Texto" | mail -s "Asunto" [email protected]

+++++++++++++++++

El principal problema de utilizar el servidor SMTP local es el proveedor: Debido al aumento de correos SPAM, los proveedores y los servidores de correo que van a recepcionar tu email comprobarán si realmente el servidor del que procede el email es realmente un servidor “oficial” o bien un servidor que se dedica a enviar SPAM, y como el servidor local no es realmente un servidor en toda regla (no tiene registros MX en el DNS de algún dominio, tiene una dirección IP dinámica, o ha sido utilizado por otro spamer) es por lo que se aconseja encarecidamente utilizar una cuenta de algún servidor de emails ya verificado y seguro.

Posiblemente, tras la instalación de nuestra distribución preferida, podremos enviar emails con el comando:

echo “Prueba de email” |mail -s “Prueba de email” [email protected]

Pero cuando hayamos enviado varios de este tipo y empecemos a confiarnos, veremos como nuestro cliente de correo empezará a considerarlo spam, o puede que ni llegue. Es entonces cuando tendremos que configurar nuestro servidor SMTP local para que envíe los emails mediante una cuenta autentificada.

++++++++++++++++

(aplica para IP dimámica)

Volvemos a configurar exim4:

dpkg-reconfigure exim4-config

Pero esta vez en la primera opción seleccionamos "el correo se envía mediante un smarthost; se recibe a través de SMTP".

Ahora preguntará varias cosas. Las respuestas son:

mail sent by smarthost; received via SMTP or fetchmail localhost 127.0.0.1 en blanco en blanco smtp.gmail.com::587 No No mbox format in /var/mail/ Yes

Editar el archivo /etc/exim4/passwd.client donde añadiremos:

*.google.com:[email protected]:p4ssw0rd

Protegemos el archivo para que nadie tenga acceso a leer nuestros datos:

# chown root:Debian-exim /etc/exim4/passwd.client# chmod 640 /etc/exim4/passwd.client

Si estamos configurando nuestra cuenta de Gmail, hay que indicarle (otra vez) que el envío debe hacerlo por el puerto 587 en lugar del estandar (el 25), por lo que tendremos que editar el archivo:

# /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp_smarthost

Page 10: Apuntes Linux 12-2012

y justo encima de la línea que dice algo como: (hosts_try_auth…) añadir lo siguiente: port=587

Por último, vamos a configurar nuestra identificación saliente: echo “root@localhost: [email protected]" >> /etc/exim4/email-addresses

Reiniciamos Exim: /etc/init.d/exim4 restart

Finally, run

# update-exim4.conf# invoke-rc.d exim4 restart# exim4 -qff

+++++++++++++++++++

Podemos configurar el servidor para que nos envíe el correo interno a una cuenta de email. Para ello editamos el fichero /etc/aliases y editamos/añadimos lineas de la siguiente manera:

root: usuariosistemausuariosistema: [email protected]

De esta forma los mensajes dirigidos a root serán entregados a usuariosistema y los de este enviados a la dirección de correo indicada.

Para evitar que se marque nuestro correo como spam, podemos utilizar una configuración alternativa para que se envíen los correos a través de nuestro servidor smtp.

Editamos el fichero:

/etc/exim4/passwd.client

Y añadimos una linea con la forma:

servidor.smtp:nombreusuario:password

29 Crontab

Ejecutamos la edicion del crontab con crontab -e, en algunas distros (como ubuntu) nos da la opcion de ejegir el editor de textos que deseemos, los demas nos quedamos con vi, el archivo crontab lucira algo asi.

# m h dom mon dow user command

donde:

m corresponde al minuto en que se va a ejecutar el script, el valor va de 0 a 59h la hora exacta, se maneja el formato de 24 horas, los valores van de 0 a 23, siendo 0 las 12:00 de la medianoche.dom Hace referencia al dia del mes, por ejemplo se puede especificar 15 si se quiere ejecutar cada dia 15dow Significa el dia de la semana, puede ser numerico (0 a 7, donde 0 y 7 son domingo) o las 3 primeras letras del dia en ingles: mon, tue, wed, thu, fri, sat, sun.user Define el usuario que va a ejecuatr el comando, puede ser root, u otro usuairo diferente siempre y cuando tenga permisos de ejecucion del script.command refiere al comando o a la ruta absoluta del script a ejecutar, ejemplo: /home/usuario/scripts/actualizar.sh, si acaso llama a un script este debe ser ejecutable

Para que quedara claro unos cuantos ejemplos de tareas de cron explicados:

15 10 * * * usuario /home/usuario/scripts/actualizar.sh

Ejecutara el script actualizar.sh a las 10:15 a.m. todos los dias

30 Cámara WEB

lsusb (identificar cámara)ls /dev/video* (lista /dev/video)ls –l /dev/video* (lista /dev/video con mayo información)

lsmod | grep usb (chequea la configuración)

rm /dev/video0 (desconectar camara)

#modprobe spca50x (cargar modulo spca50x)#modprobe videodev (cargar modulo de video)

#ln -s /dev/video0 /dev/video (enlaza /dev/video0 sino no veras nada aunque se encienda tu webcam)#addgroup (nombre usuario) video (añade al grupo video a tu usuario)

31 Apache2

#aptitude install apache2

a2enmod ssl (añade modulo ssl)a2dismod modulo (desactivar modulo)a2ensite sitiossl (añade sitios ssl)a2dissite (desactivar sitio)

Fix Apache2 error: "Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName"

#nano /etc/apache2/httpd.confServerName localhost

Page 11: Apuntes Linux 12-2012

#/etc/init.d/apache2 restart

/etc/apache2/ports.conf ya tiene especificado en que puerto debe escuchar.

Listen 80Listen 443

Autenticación y control de acceso basica

Para crear usuarios para el método de autenticación Básico se utiliza la orden htpasswd.

#htpasswd -c /etc/apache2/.htpasswd lfgh

La opción -c permite crear el archivo .htpasswd con el primer usuario dado de alta, que además no tiene porque ser un usuario existente en el sistema.

En el archivo /etc/apache2/ httpd.conf, o en el archivo relativo al host virtual correspondiente, habrá que añadir un bloque <Directory>...</Directory> o un bloque por cada directorio que se quiera protege

<Directory />AuthType BasicAuthName "Privado"AuthUserFile /etc/apache2/passwd/.htpasswdRequire valid-user

</Directory>

mysql -u root -p tupasswordroot

htpasswd -c /var/www/claves usuario

Leer documento 580-elvira-mifsud.htm

#nano /etc/apache2/sites-enabled/000-default

Change “DocumentRoot /var/www” to “DocumentRoot /var/www/zm” and “Directory /var/www/” to “Directory /var/www/zm/”

On hpptd.conf include

StartServers 1MinSpareServers 1MaxSpareServers 5MaxClients 5MaxRequestsPerChild 300

What I’m basically saying is, “set the maximum amount of requests that this server can handle at any one time to 5.” This is pretty low, and I wouldn’t try to do this on a high volume server. However, there is something you can and should do on your webservers to get the most out of them, whether you’re going for low memory or not. That is tweak the keepalive timeout.

KeepAlive OnKeepAliveTimeout 2

Essentially KeepAlive keeps each listening connection alive for a short time to receive a potential followup request. Assuming that a client wishes to make several requests to your server it can do so en masse without having to make multiple distinct connections.

In this scenario KeepAlive is a useful optimisation, but it can mean that you have a lot of connections open uselessly waiting for followup requests which never occur.

32 Zoneminder

#aptitude install

php5 libapache2-mod-php5 mysql-server mysql-client zonenminder

Configure apache, this is from /usr/share/doc/zoneminder/README.Debian

Agregar un alias en apache para poder acceder a ZoneMinder desde el servidor web y reiniciamos

#ln -s /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf

#/etc/init.d/apache2 restart (o apache2ctl restart)

Cambiamos permisos a zmfix y Ejecutamos zmfix

#chmod 4755 /usr/bin/zmfix#zmfix -a

No Link to Webserver directories. If you get a 404 error when browsing to http://localhost/zm, Zoneminder has failed to setup a correct link to the Apache2 web directories. This can be fixed via (must be root):

#ln -s /usr/share/zoneminder /var/www/zm

Page 12: Apuntes Linux 12-2012

Se asigna a www-data como el propietario del directorio temporal de ZoneMinder:# chown www-data.www-data /usr/share/zoneminder/temp

Arreglamos un problema de exportacion#chown www-data.www-data /usr/share/zoneminder/temp#adduser www-data video

Based on my experience, and looking over the zoneminder forums, the vast majority of crashes experienced have to do with inadequate sysctl values for shmall and shmax. This can be avoided by using mapped memory. until that is available, we could ship an /etc/sysctl.d if we can come up with some sane default values. (reported is fixed in the latest version of zoneminder 1.24.4-1)

#aptitude install libcache-mmap-perl

Editamos y agregamos al final en /etc/sysctl.conf para aumentar a 128megas de memoria compartida y reiniciamos

kernel.shmall = 134217728kernel.shmmax = 134217728

#sysctl -p

That's all. Now you have to setup your zoneminder under http://localhost/zm .

El status 127 sucede porque en el php script: /usr/share/zoneminder/skins/classic/views/monitorprobe.php se debe especificar la ruta completa del ejecutable ‘arp’:

Código: $command = “arp -a”; debe ser cambiado a: $command = “/usr/sbin/arp -a”;

$zmu -d /dev/video0 -q -v (entrega la información necesaria para configurar la webcam)

#/etc/init.d/zoneminder start (0 service zoneminder restart)

ZoneMinder usa por default un usuario y contraseña débil para las query con la base de datos. Por ello, se recomienda cambiar el usuario y contraseña que usa ZoneMinder. Esto se hace editando el archivo "/etc/zm/zm.conf" y modificando las directivas ZM_DB_USER y ZM_DB_PASS:# nano /etc/zm/zm.confZM_DB_USER=nuevouserZM_DB_PASS=nuevopasswd

Una vez modificado se crea el usuario con su password en MySQL:

$ mysql -uroot -pGRANT all ON zm.* to nuevouser@localhost IDENTIFIED BY 'nuevopasswd';exit;

Lo primero que se presenta es la vista inicial cuando se está ejecutando en modo nonauthenticated (por defecto). La autentificación es una opción que permite especificar para cadausuario que se registra en ZoneMinder los permisos para ejecutar ciertas tareas. Se recomienda la ejecución en modo “authenticated” si nuestro sistema está abierto a internet. Durante la instalaciónse crea un usuario con todos los privilegios cuyo login y password son “admin”. Se recomiendacambiar el password tan pronto como sea posible. Para crear usuarios accedemos al link “options”en la esquina superior derecha y en la pestaña “system” marcamos la casillaZM_OPT_USE_AUTH. A continuación podemos añadir, eliminar y establecer permisos deusuarios en la nueva pestaña “users” dentro de “options”

El usuario y password por defecto es “admin”.

33 Configurar WebCam en Zoneminder

Descargar e instalar:

MJPG-streamer takes JPGs from Linux-UVC compatible webcams, filesystem or other input plugins and streams them as M-JPEG via HTTP to webbrowsers, VLC and other software. It is the successor of uvc-streamer, a Linux-UVC streaming application with Pan/Tilt

#mjpg_streamer -i "input_uvc.so (-y) -d /dev/video0 - r 320x240 -f 6" -o "output_http.so -p 8081" -b

(-y) en caso de camara con formato YUYV

Para visualizar en

http://localhost:8081/?action=stream

En zoneminder configurar:

En viñeta general => monitor=remoto En viñeta source => protocol=http; method=simple; host name= localhost; host port=8081; host pach=?action=stream

script dos cámaras web

#nano webcam_start.sh

#!/bin/bashmjpg_streamer -i "input_uvc.so -d /dev/video0 - r 320x240 -f 30" -o "output_http.so -p 8081" -bmjpg_streamer -i "input_uvc.so -d /dev/video1 - r 320x240 -f 30" -o "output_http.so -p 8082" -b

#nano webcam_stop.sh

#!/bin/bashkillall /usr/bin/mjpg_streamer

Page 13: Apuntes Linux 12-2012

conceder permisos de ejecutable al archivo

#chmod 0777 webcam_start.sh#chmod 0777 webcam_stop.sh

Ejecutar script

./webcam_start.sh

uvcvideo: Failed to set UVC probe control : -110 (exp. 26).2:3:1: cannot set freq 16000 to ep 0x86

After unloading and reloading uvcvideo (rmmod uvcvideo && modprobe uvcvideo) and starting eViacam it works. But then I have to choose the camera in the selection dialog again. I discovered that the "snd_usb_audio" module caused the uvcvideo error. So I blacklisted the "snd_usb_audio" module (add "blacklist snd_usb_audio" in /etc/modprobe.d/blacklist.conf). Maybe there exists a better solution because now the embedded microphone doesn't work, but I'm not using it so that doesn't bother me.

34 Configurar Correo en Zoneminder

An alarm has been detected on your installation of the ZoneMinder.

The details are as follows :-

Filter: %FN%Monitor: %MN%Event Id: %EI%Duration: %ED%Length: %EL%Frames: %EF% (%EFA%)Total Score: %EST% Maximum Score: %ESM%Average Score: %ESA%Date Time: %ET%

%EI1% Attached first alarmed event image.%EIM% Attached (first) event image with the highest score.%EV% Attached event mpeg video.

This alarm was matched by the %FN% filter and can be viewed at %EPS%

(otras configuraciones en ZM1.pdf y ZM2.pdf)

35 Comando aptitude

aptitude purge ~c (remover configuración programas desinstalados)aptitude clear (elimina paquetes descargados)

36 Comando mount

mount (montar dispositivo)unmount (desmontar dispositivo)

37 Comando modprobe

modprobe modulo /cargar modulo)rmprobe (descargar modulo = mopdrobe -r modulo)

Ejemplo descarga modulo ehci_hcd al inicio de sistema#nano /etc/rc.local y al final (previo a exit 0) agregar mmod ehci_hcd

38 Comandos dkpg

Instalar paquetedpkg -i nombredelpaquete.deb

desinstalar paquete (major usar aptitude)dpkg -r nombredelpaquete.deb

listar paquetesdpkg -l

dpkg-reconfigure exim4-config (correo)dpkg-reconfigure xserver-xorg (resolución)

39 Listar paquetes instalados

Cuando trabajamos con un manejador de paquetes es comun necesitar listar los paquetes instalados. En Ubuntu o Debian lo anterior se logra con:

dpkg --get-selections

La lista suele ser larga, por lo cual es comun combinarla con un grep:dpkg --get-selections | grep php

Page 14: Apuntes Linux 12-2012

Luego para listar los archivos contenidos en un paquete:dpkg -L php5-gd

Lo anterior nos data el listado de archivos contenidos en el paquete php5-gd.

40 module-assistant

# m-a prepare# m-a update# m-a a-i paquete

41 Conflictos

dmesg | grep conflicthwinfo --framebuffer

42 Lanzador modo consola

abrir la terminal en el lugar a generar el enlace, con la orden ln -s más la ruta del archivo:ln -s /usr/bin/avidemux

Con eso ya tengo un lanzador de ese programa en mi directorio personal, en dado caso.

43 Menús activos openbox

Primero descargamos el archivo y lo copiamos a la carpeta de scripts de OpenBox:

$ cp sysinfo.sh ~/.config/openbox/scripts/sysinfo.sh

El siguiente paso será editar el archivo de menús con la orden:

$ gedit ~/.config/openbox/menu.xml

Y añadir donde queramos que aparezca las siguientes lineas:

<menu id="root-menu-0548" label="Sistema"> <menu execute="~/.config/openbox/scripts/sysinfo.sh" id="sysinfo-menu" label="SysInfo"/> </menu>

44 Comando udevadm

#udevadm info -a -p $(udevadm info -q path -n /dev/video0)

The items that contain specific information regarding my USB disc have been coloured red. These are the two items of interest to me, the device is connected to the USB bus, and the product is identified

The next step is to create the udev rule concerning this device. I'll start by creating my own .rules file

nano /etc/udev/rules.d/10-local.rules

SUBSYSTEM=="video4linux", BUS=="usb", SYSFS{idVendor}=="XXXX", SYSFS{idProduct}=="XXXX", NAME="video0"

in it and repeat for the other device.

To start using these new rules, you need to run the command

udevstart or /etc/init.d/udev restart

The Rule

Rule files are stored in the /etc/udev/rules.d/ directory. We got some advice from the README in that directory on how to name rule files:Files should be named xx-descriptive-name.rules, the xx should be chosen first according to the following sequence points:< 60 most user rules; if you want to prevent an assignment being overriden by default rules, use the := operator. these cannot access persistent information such as that from vol_id< 70 rules that run helpers such as vol_id to populate the udev db< 90 rules that run other programs (often using information in the udev db)>=90 rules that should run lastWe plan to run a script with this rule so we gave it a name that started with a higher number than our other rules but lower than 90. We used the filename:81-thumbdrive.rules

45 bind / unbind

Modo 1

In order to unbind a device from a driver, simply write the bus id of the device to the unbind file:

#tree /sys/bus/usb/drivers#echo -n 2-1:1.0 > /sys/bus/usb/drivers/sn9c102/unbind

Page 15: Apuntes Linux 12-2012

Then, simply write the bus id of the device you wish to bind, into the bind file for that driver:

#echo -n "1-1:1.0" > /sys/bus/usb/drivers/ sn9c102/bind

Ejemplo

# cd /sys/bus/pci/drivers/ehci_hcd/

# ls -ltotal 0lrwxrwxrwx 1 root root 0 2010-03-19 14:12 0000:00:1a.7 -> ../../../../devices/pci0000:00/0000:00:1a.7--w------- 1 root root 4096 2010-03-19 14:12 bindlrwxrwxrwx 1 root root 0 2010-03-19 14:12 module -&gt; ../../../../module/ehci_hcd

In order to unbind a device from a driver, simply write the bus id of the device to the unbind file:

#echo -n 0000:00:1a.7 > /sys/bus/pci/drivers/ehci_hcd/unbind

# ls -ltotal 0--w------- 1 root root 4096 2010-03-19 14:12 bindlrwxrwxrwx 1 root root 0 2010-03-19 14:12 module -&gt; ../../../../module/ehci_hcd

In order to bind a device from a driver, simply write the bus id of the device to the bind file:

#echo -n 0000:00:1a.7 > /sys/bus/pci/drivers/ehci_hcd/bind

46 Conectar con las cámaras via v4l2loopback (obsoleto)

Al ejecutar Motion el flujo de datos de las cámaras queda bloqueado por el programa y no es accesible por ningun otro, con lo cual no es posible ver las imágenes que están emitiendo las cámaras y está procesando Motion a no ser lo hagamos accesible desde una página web.

Para solventar esto, el equipo de Motion desarrolló un módulo que se encarga de recibir el flujo de imágenes despues de ser tratadas por Motion y ponerlas nuevamente disponibles como si se tratase de un nuevo dispositivo.

47 Tubería V4L2

Originalmente, para Video4Linux existió vloopback, pero este proyecto se abandonó tras la retirada de V4L1 a favor de V4L2 desde la versión 2.6.15 del kernel de Linux. AVLD es otra herramienta parecida para V4L1, también abandonada. Para V4L2, hay otros dos proyectos: v4l2vd (no compila a partir del kernel 2.6.31) y v4l2loopback (compila en mi 2.6.38). Así que la idea básica es crear un dispositivo virtual con v4l2loopback, y luego enviarle los datos de vídeo necesarios para nuestras aplicaciones. Para ello, podemos usar GStreamer y su componente v4l2sink, por ejemplo. Esto da mucho más juego que una simple webcam: podríamos enviar cualquier vídeo o aplicar cualquier efecto a través de esa “webcam”. Pero claro, todo tiene su complicación .

Primero, tenemos que compilar e instalar v4l2loopback, y luego cargar el módulo instalado:

#aptitude install v4l2loopback-source

Preparamos module-assistant y compilamos e instalamos el modulo "v4l2loopback" :

# m-a prepare# m-a update# m-a a-i v4l2loopback-source

Cuando acabe el proceso tendrás el modulo v4l2loopback instalado.

Cargamos el modulo:

modprobe v4l2loopback

Comprobamos que lo tenemos cargado:

# lsmod | grep v4l2loopback

V4l2loopback 10249videodev 26605 v4l2loopback,webcamstudio

Comprobamos que no ha habido errores y de que dispositivos de video disponemos :

# dmesg | grep v4l2

[11.299294] [vloopback_init] : video4linux loopback driver v1.3

Page 16: Apuntes Linux 12-2012

[11.301873] [vloopback_init] : Loopback 0 registered, input: video0, output: video1[11.304366] [vloopback_init] : Loopback 0 , Using 2 buffers

Vemos que la versión del driver es la 1.3, que tengo como entrada "video0"(/dev/video0) y como salida "video1"(/dev/video1).

Tras el primer reinicio de mi Debian me he dado cuenta que el modulo no carga en el inicio del sistema, así que para solucionarlo lo añadimos al /etc/modules :

# echo "vloopback" >> /etc/modules

Si todo ha ido bien, deberíamos tener un fichero /dev/video* más que antes. Ese será nuestra tubería. Por lo pronto, supongamos que es /dev/video0, el primero de todos. Si queremos que este módulo se cargue automáticamente al iniciar el ordenador, tendremos que añadir estas dos líneas tras la última línea de /etc/modules:

videodevv4l2loopback

Con el módulo cargado, ya podemos ver si capturamos bien la señal de la webcam. Para ello, iremos a la interfaz web de IP Webcam y cogeremos la URL del flujo MJPEG, que será de la forma http://ip:puerto/videofeed. Con esa dirección, lanzaremos estas órdenes desde una terminal. Si todo ha ido bien, debería salir una ventana con lo que se ve en la pantalla de nuestro Android:

sudo apt-get install gstreamer-0.10-toolsgst-launch souphttpsrc location="http://ip:puerto/videofeed" is_live=true ! \jpegdec ! ffmpegcolorspace ! autovideosink

Ahora podemos salir con Ctrl+C de gst-launch, y empezar a reenviar el flujo MJPEG a nuestro dispositivo V4L2 virtual. Tendremos que repetir esto cada vez que reiniciemos el ordenador, por cierto:

gst-launch souphttpsrc location="http://ip:puerto/videofeed" is_live=true ! \jpegdec ! ffmpegcolorspace ! v4l2sink device=/dev/video0

Vamos a diseccionar un poco esto:

Primero, la fuente souphttpsrc accede a la dirección HTTP especificada y va bajando información en directo, sin ningún búfer (is_live=true). A continuación, jpegdec identifica cada imagen en el flujo MJPEG y las reúne en un vídeo en el espacio de colores YUV. El componente ffmpegcolorspace convierte el vídeo YUV en el formato preferido por el dispositivo V4L2 virtual. Finalmente, el sumidero v4l2sink escribe la información en el dispositivo /dev/video0, para que sea visible por Cheese/Skype/etc.

Ahora deberíais poder abrir Cheese o Skype (2.1.0.81, ojo, que la 2.2 beta ahora no va) y veros por pantalla . Si tenéis curiosidad, añadid un par de filtros, como:

gst-launch souphttpsrc location="http://ip:puerto/videofeed" is_live=true \! jpegdec ! ffmpegcolorspace ! mirror ! videobalance saturation=0.0 \! v4l2sink device=/dev/video0

Para más ideas, mirad los complementos que hay en la web oficial de GStreamer. Hay para todo. Una recomendación: si queréis video suave y sesiones largas, lo mejor es que mantengáis el móvil conectado por USB al ordenador y uséis el reenvío de puertos de ADB para enviar los datos a través de USB, en vez de por Wi-Fi. Para ello, tenéis que instalaros el SDK de Android y ejecutar esta orden:adb forward tcp:8080 tcp:8080

Con esta orden, todo lo que enviéis al puerto 8080 de vuestro ordenador irá al 8080 del móvil, a través del cable USB. Cuando hagáis eso, será mucho más rápido acceder a IP Camera por http://127.0.0.1:8080/ que con vuestra conexión Wi-Fi.

Actualización (12:28): he conseguido que funcione el micrófono en Linux también. El esquema es un poco enrevesado: el flujo WAV de la webcam va a un sumidero nulo de PulseAudio, y la fuente asociada al monitor del sumidero nulo se usa como dispositivo de grabación de la aplicación de videoconferencia. Funciona bien, pero olvidaos de conectar por Wi-Fi . Además, he creado un guión para facilitar el uso de la cámara y el micrófono, aunque tendréis que instalar el SDK de Android y v4l2loopback a mano de todos modos. Lo he colgado por Github, por si alguien lo quiere.

48 Instalar WebcamStudio en Debian Squeeze

WebcamStudio crea una cámara virtual en la que puede mezclar varias fuentes de vídeo y pueden ser utilizadas para la radiodifusión en directo a través de Bambuser, UStream o Stickam.

En esta cámara virtual, puedes difundir su escritorio, tus webcams, una película.Si quieres saber más sobre WebcamStudio visita su pagina web.

Para que WebcamStudio funcione es necesario tener instalado el modulo "vloopback" para poder crear tuberias con flujo de video. Quizás esto pueda servirte.

Puedes usar varias webcam a la vez, pero si quieres usarlas, evidentemente ya tienen que funcionar. Hoy no voy a escribir sobre configuración de webcams, pero si Debian Squeeze no te ha reconocido la tuya quizás esto pueda ayudarte a identificarla y buscar el driver que necesita.

Descargamos Webcamstudio

Voy a descargar el paquete deb de la última versión que a día de hoy es la "0.57alpha2" porque la estable que es la "0.56" está preparada exclusivamente para Ubuntu.

$ wget http://webcamstudio.googlecode.com/files/webcamstudio_0.57alpha2_all.deb

Si quieres comprobar si han publicado alguna nueva versión puedes comprobarlo aquí.

Instalamos

Primero instalamos WebcamStudio.

# dpkg -i webcamstudio_0.57alpha2_all.deb

Page 17: Apuntes Linux 12-2012

La instalación acaba con errores de dependencias,o dicho de otra forma porque falta software o programas que WebcamStudio necesita para funcionar. No te preocupes, lo arreglamos con apt :

# apt-get -f install

Ultimos Retoques

Cuando acaba la instalación, además de instalarse WebcamStudio también se ha compilado un modulo necesario para su funcionamiento. Tenemos que añadirlo al /etc/modules para que cargue cada vez que iniciemos Debian.

# echo "webcamstudio" >> /etc/modules

En la web de WebcamStudio dicen que es necesario crear un grupo de nombre "video" y añadir tu usuario a este grupo, en mi caso no ha sido necesario.

Para comprobarlo miramos el /etc/group

# cat /etc/group | grep videovideo:x:44:exbian

Puedo ver que el grupo "video" existe y mi usuario "exbian" pertenece al grupo.

Si no existe el grupo "video" podemos crearlo :

# addgroup video

Y añadimos nuestro usuario al grupo video, en mi caso el usuario se llama "exbian".Sustituye "exbian" por tu nombre de usuario.

# adduser exbian video

Si has añadido el grupo ahora quizás tengas que reiniciar las X

para que tu usuario obtenga todos los privilegios del grupo "video".

Lanzamos Webcamstudio

$ webcamstudio

Open VLCFile--> OPen capture deviceGo to Video4Linux tabSpecify your video device name (mine was /dev/video0)(My webcam audio doesn't work, so I left audio device as it is)Norm: Automatic

Check "stream output" boxClick settingsSpecify a filename (make sure you have write permissions there - usually a file on desktop or home directory is the best bet)Unselect "dump raw input" (it must reamain empty)Encapsulation method: MPEG1Video codec: mp1vAudio codec: mpga"select all elementary streams" should remain empty.

Press OK

Press OK

Now press PLAY button on VLC.The video should start recording. You can check this while VLC is recording video by right clicking on the recording file and selecting properties (it will show increasing file size).

Page 18: Apuntes Linux 12-2012

#---------------------------------------------# TINT2 (SVN) CONFIG FILE#---------------------------------------------

#--------------------------------------------# BACKGROUND AND BORDER#---------------------------------------------rounded = 0border_width = 0#background_color = #5E5E5E 25#background_color = #ffffff 20background_color = #000000 30border_color = #9b9b9b 35

rounded = 5border_width = 1background_color = #000000 40border_color = #9b9b9b 15

rounded = 5border_width = 0background_color = #000000 30border_color = #999999 40

# tooltiprounded = 5border_width = 0background_color = #bbbbbbborder_color = #bbbbbb 30

#---------------------------------------------# PANEL#---------------------------------------------panel_monitor = all#panel_position = center left verticalpanel_position = top center horizontalpanel_size = 100% 40panel_margin = 0 0panel_padding = 7 4 7font_shadow = 0panel_background_id = 1wm_menu = 1panel_dock = 0panel_layer = bottompanel_items = LTSBC

#---------------------------------------------# TASKBAR#---------------------------------------------#taskbar_mode = multi_desktoptaskbar_mode = single_desktoptaskbar_padding = 2 2 2taskbar_background_id = 1taskbar_active_background_id = 2

#---------------------------------------------# TASK#---------------------------------------------task_icon = 1task_text = 0task_maximum_size = 40 15task_centered = 1task_padding = 4 4task_font = kiloji 8task_font_color = #a0a0a0 100task_active_font_color = #d4d4d4 100#task_icon_asb = 0 -45 -10task_icon_asb = 100 -10 -10task_active_icon_asb = 100 -10 -10task_background_id = 0task_active_background_id = 3

#---------------------------------------------# SYSTRAYBAR#---------------------------------------------systray = 1systray_padding = 8 4 5systray_background_id = 1systray_sort = left2rightsystray_icon_size = 0

#---------------------------------------------# BATTERY#---------------------------------------------battery = 0battery_hide = neverbattery_low_status = 7battery_low_cmd = notify-send "battery low"bat1_font = arial 10bat2_font = arial 8battery_font_color = #ffffff 76battery_padding = 8 2battery_background_id = 2

#---------------------------------------------# CLOCK#---------------------------------------------time1_format = %H:%Mtime1_font = arial 10time2_format = %A %d %Btime2_font = arial 8clock_font_color = #ffffff 76clock_padding = 8 2clock_background_id = 2#clock_lclick_command = xclockclock_rclick_command = orage#clock_tooltip = %A %d %B#time1_timezone = :US/Hawaii#time2_timezone = :Europe/Berlin#clock_tooltip_timezone = :/usr/share/zoneinfo/Europe/Paris

#---------------------------------------------# TOOLTIP#---------------------------------------------tooltip = 1tooltip_padding = 2 2tooltip_show_timeout = 0.7tooltip_hide_timeout = 0.3tooltip_background_id = 4tooltip_font_color = #000000 80tooltip_font = sans 10

#---------------------------------------------# MOUSE ACTION ON TASK#---------------------------------------------mouse_middle = nonemouse_right = closemouse_scroll_up = togglemouse_scroll_down = iconify

#---------------------------------------------# AUTOHIDE OPTIONS#---------------------------------------------autohide = 0autohide_show_timeout = 0.3autohide_hide_timeout = 2autohide_height = 4strut_policy = minimum

set and a GMA 950 integrated graphics card