En este tutorial voy a explicar como instalar un servidor de streaming de música (madsonic) en la Raspberry Pi con Arch Linux ARM.
Para ver un tutorial de como instalar Arch Linux en una Raspberry Pi pueden mirar este post
Es recomendable no instalar entorno gráfico en la Raspberry Pi, ya que utiliza mucha memoria. Es mejor trabajar siempre usando una conexión ssh
Las principales características de madsonic son las siguientes:
Los siguientes pasos son opcionales, pero yo recomiendo hacerlos para evitar que la Raspberry se quede con poca RAM
El servidor madsonic funciona bajo Java, por lo tanto, en una Raspberry Pi de 256 MB de RAM utiliza aproximadamente el 50% de la RAM. En este caso recomiendo crear un área de intercambio (swap) para evitar que la Raspberry Pi se quede corta de memoria.
1. Creamos un archivo que se utilizará como área de intercambio archivo y le asignamos un espacio de 512 MB
# fallocate -l 512M /swapfile
2. Asignamos permisos de lectura y escritura al archivo.
# chmod 600 /swapfile
3. Formateamos como swap
# mkswap /swapfile
3. Activamos swap
# swapon /swapfile
4. Agregamos la siguiente linea al archivo /etc/fstab para que monte la swap automáticamente.
/swapfile none swap defaults 0 0
5. Modificamos el archivo /etc/sysctl.d/99-sysctl.conf para que la escritura en swap sólo se haga en caso que tengamos poca RAM disponible. Agregamos la siguiente linea
vm.swappiness=10
6. Usando el comando free -h comprobamos la cantidad de RAM que tenemos.

7. Modificamos el archivo /boot/config.txt dependiendo del modelo de Raspberry Pi que tengamos, para limitar la cantidad de RAM asignada a los gráficos.
¡CUIDADO! Si ponemos muy poca RAM para la GPU, la Raspberry no arrancará y tendremos que introducir la SD Card a una computadora para reparar el archivo /boot/config.txt
Asignaremos 64 MB de RAM para gráficos.
Se recomiendo utilizar alguna fuente de enfriamiento para evitar que la Raspberry se sobrecaliente
Editaremos el archivo /boot/config.txt y descomentaremos alguna de las opciones de overclock que se encuentran al final del archivo.
##Modest
arm_freq=800
core_freq=300
sdram_freq=400
over_voltage=0
##Medium
#arm_freq=900
#core_freq=333
#sdram_freq=450
#over_voltage=2
##High
#arm_freq=950
#core_freq=450
#sdram_freq=450
#over_voltage=6
##Turbo
#arm_freq=1000
#core_freq=500
#sdram_freq=500
#over_voltage=6
Yo utilicé la opción Modesta (velocidad de 800), con dicha velocidad mi Raspberry Pi funciona bien.
Instalación de Madsonic
Madsonic se encuentra en el Arch Linux User Repository (AUR), por lo tanto necesitamos el paquete base-devel para poder compilar programas de AUR.
Instalamos los paquetes necesarios
# pacman -S wget curl base-devel yajl java-runtime libcups
Creamos un directorio para la compilación y descargamos madsonic desde AUR.
$ mkdir build
$ cd build
$ wget https://aur.archlinux.org/packages/ma/madsonic/madsonic.tar.gz
Extraemos los archivos y editamos el archivo PKGBUILD para agregar el soporte para procesadores ARM. Buscamos la linea arch=(‘i686′ ‘x86_64′) y agregamos
‘armv6h’.
$ tar zxf madsonic.tar.gz
$ cd madsonic
$ nano PKGBUILD
...
arch=('i686' 'x86_64' 'armv6h')
Usamos el comando makepkg para descargar y compilar el código de madsonic. Esto puede tardar un buen rato. Sean pacientes.
$ makepkg -g >> PKGBUILD
$ makepkg
El comando makepkg generará un archivo con extensión .xz, dicho archivo lo podemos instalar usando pacman.
# pacman -U madsonic-5.0.3860-1-armv6h.pkg.tar.xz
Instalación de Java Oracle para ARM
Después de instalar madsonic me he dado cuenta que openjdk utiliza casi el 100% de procesador y por lo tanto, esto representa un bajo rendimiento de la Raspberry Pi.
La solución a este problema es utilizar Java de Oracle para arquitectura ARM. Para mayor información sobre este tema, pueden revisar el articulo de oracle en donde muestran el Benchmark de Oracle Java vs OpenJDK en este link.
Descargamos Java Oracle para arquitectura ARM
wget --no-cookies \
--no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; \
oraclelicense=accept-securebackup-cookie" \
"http://download.oracle.com/otn-pub/java/jdk/7u55-b13/jdk-7u55-linux-arm-vfp-hflt.tar.gz"
Descomprimimos el archivo en la ruta /opt/java-oracle/
# mkdir /opt/java-oracle
# tar -zxf jdk-7u55-linux-arm-vfp-hflt.tar.gz -C /opt/java-oracle
Creamos la variable de entorno de Java Home y respaldamos los ejecutables de Java de OpenJDK.
# JHome=/opt/java-oracle/jdk1.7.0_55
# test -L /usr/bin/java && mv /usr/bin/java{,.backup}
Creamos enlaces simbólicos para para java y javac.
# ln -sf /opt/java-oracle/jdk1.7.0_55/bin/java /usr/bin/java
# ln -sf /opt/java-oracle/jdk1.7.0_55/bin/javac /usr/bin/javac
Ahora podemos probar la instalación de java con el comando java -version
[eroland@alarmpi ~]$ java -version
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) Client VM (build 24.55-b03, mixed mode)
Editamos el archivo de configuración de madsonic para que utilice Java Oracle y no Java OpenJDK.
# nano /var/madsonic/madsonic.sh
Y modificamos la lina JAVA_HOME para que quede de la siguiente manera
JAVA_HOME=/opt/java-oracle/jdk1.7.0_55/jre:/usr/lib/jvm/java-7-openjdk
Configuración de madsonic
La configuración de madsonic se realiza en el archivo /var/madsonic/madsonic.sh, lo primero que hacemos es respaldarlo.
cp /var/madsonic/madsonic.sh{,.backup}
En dicho archivo se puede modificar el puerto que usará madsonic (por defecto usa el puerto 4040), la ruta de la carpeta donde estarán almacenadas las canciones, etc.
Añadiremos un Disco Duro Externo conectado por USB en donde pondremos las canciones a reproducir.
Si el disco duro tiene formato NTFS, es necesario instalar el paquete ntfs-3g para poder montar el disco.
# pacman -S ntfs-3g
Creamos la carpeta donde se montará el disco duro y le damos los permisos necesarios
# mkdir /mnt/Datos
# chmod 775 /mnt/Datos
Obtenemos el punto de montaje de nuestro Disco Duro
$ ls -l /dev/disk/by-label/
total 0
lrwxrwxrwx 1 root root 10 Dec 31 1969 Datos -> ../../sda2
lrwxrwxrwx 1 root root 10 Dec 31 1969 PS3 -> ../../sda1
En mi caso me interesa el disco con etiqueta Datos que se encuentra en /dev/sda2
Sin embargo, utilizar la etiqueta para montar el disco no es muy recomendado, ya que si la etiqueta cambia, el disco no podrá montarse.
Obtenemos el identidificador unico (UUID) de nuestro disco duro.
ls -l /dev/disk/by-uuid/
Tendremos un resultado parecido a este
[eroland@alarmpi ~]$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Dec 31 1969 19F4-1917 -> ../../sda1
lrwxrwxrwx 1 root root 15 Dec 31 1969 2300-4E18 -> ../../mmcblk0p1
lrwxrwxrwx 1 root root 10 Dec 31 1969 58F6AA78F6AA55D2 -> ../../sda2
lrwxrwxrwx 1 root root 15 Dec 31 1969 b471cde8-2a15-44e7-acce-e9a2a54511a6 -> ../../mmcblk0p5
Anotamos el UUID de nuestro disco duro (en este caso 58F6AA78F6AA55D2)
Agregamos la siguiente linea al final del archivo /etc/fstab
UUID=58F6AA78F6AA55D2 /mnt/Datos ntfs-3g default 0 0
Recuerden cambiar el UUID, por el que obtengan de los comandos de arriba
Reiniciamos nuestro Raspberry Pi y automáticamente se montará el Disco Duro.
Finalmente iniciamos el servicio de madsonic
# systemctl start madsonic.service
Si queremos que el servicio se inicie automáticamente cada que el sistema cargue.
# systemctl enable madsonic.service
Y listo, tenemos nuestro servidor de streaming de música.
Una vez iniciado el servico de madsonic, podemos entrar desde nuestro navegador preferido a la dirección IP de nuestro Raspberry Pi junto con el puerto 4040, en mi caso es la 192.168.17.1:4040 y entramos usando los datos user=admin password=admin.

Ya dentro de la interfaz web podemos agregar nuevos usuarios y cambiar la contraseña por defecto.
Bueno, este es mi primer aporte, espero les guste.
Fuentes:
http://d.stavrovski.net/blog/post/s...erver-with-madsonic-archlinux-and-cubieboard2
http://www.techjawab.com/2013/06/how-to-setup-mount-auto-mount-usb-hard.html
La entrada Madsonic: Instalar servidor de streaming de música en un Raspberry Pi aparece primero en Desde Linux.

Continúar leyendo...
Para ver un tutorial de como instalar Arch Linux en una Raspberry Pi pueden mirar este post
Es recomendable no instalar entorno gráfico en la Raspberry Pi, ya que utiliza mucha memoria. Es mejor trabajar siempre usando una conexión ssh
Las principales características de madsonic son las siguientes:
- Interfaz web intuitiva
- Soporta transcodificación a varios formatos (Ej. FLAC > mp3)
- Cuenta con clientes para Android e iOS
Los siguientes pasos son opcionales, pero yo recomiendo hacerlos para evitar que la Raspberry se quede con poca RAM
El servidor madsonic funciona bajo Java, por lo tanto, en una Raspberry Pi de 256 MB de RAM utiliza aproximadamente el 50% de la RAM. En este caso recomiendo crear un área de intercambio (swap) para evitar que la Raspberry Pi se quede corta de memoria.
1. Creamos un archivo que se utilizará como área de intercambio archivo y le asignamos un espacio de 512 MB
# fallocate -l 512M /swapfile
2. Asignamos permisos de lectura y escritura al archivo.
# chmod 600 /swapfile
3. Formateamos como swap
# mkswap /swapfile
3. Activamos swap
# swapon /swapfile
4. Agregamos la siguiente linea al archivo /etc/fstab para que monte la swap automáticamente.
/swapfile none swap defaults 0 0
5. Modificamos el archivo /etc/sysctl.d/99-sysctl.conf para que la escritura en swap sólo se haga en caso que tengamos poca RAM disponible. Agregamos la siguiente linea
vm.swappiness=10
6. Usando el comando free -h comprobamos la cantidad de RAM que tenemos.

7. Modificamos el archivo /boot/config.txt dependiendo del modelo de Raspberry Pi que tengamos, para limitar la cantidad de RAM asignada a los gráficos.
¡CUIDADO! Si ponemos muy poca RAM para la GPU, la Raspberry no arrancará y tendremos que introducir la SD Card a una computadora para reparar el archivo /boot/config.txt
Asignaremos 64 MB de RAM para gráficos.
- Para Raspberry Pi modelo A (con 256 MB de RAM) modificamos la linea gpu_mem_256=128 por gpu_mem_256=64
- Para Raspberry Pi modelo B (con 512 MB de RAM) modificamos la linea gpu_mem_512=316 por gpu_mem_512=64
Se recomiendo utilizar alguna fuente de enfriamiento para evitar que la Raspberry se sobrecaliente
Editaremos el archivo /boot/config.txt y descomentaremos alguna de las opciones de overclock que se encuentran al final del archivo.
##Modest
arm_freq=800
core_freq=300
sdram_freq=400
over_voltage=0
##Medium
#arm_freq=900
#core_freq=333
#sdram_freq=450
#over_voltage=2
##High
#arm_freq=950
#core_freq=450
#sdram_freq=450
#over_voltage=6
##Turbo
#arm_freq=1000
#core_freq=500
#sdram_freq=500
#over_voltage=6
Yo utilicé la opción Modesta (velocidad de 800), con dicha velocidad mi Raspberry Pi funciona bien.
Instalación de Madsonic
Madsonic se encuentra en el Arch Linux User Repository (AUR), por lo tanto necesitamos el paquete base-devel para poder compilar programas de AUR.
Instalamos los paquetes necesarios
# pacman -S wget curl base-devel yajl java-runtime libcups
Creamos un directorio para la compilación y descargamos madsonic desde AUR.
$ mkdir build
$ cd build
$ wget https://aur.archlinux.org/packages/ma/madsonic/madsonic.tar.gz
Extraemos los archivos y editamos el archivo PKGBUILD para agregar el soporte para procesadores ARM. Buscamos la linea arch=(‘i686′ ‘x86_64′) y agregamos
‘armv6h’.
$ tar zxf madsonic.tar.gz
$ cd madsonic
$ nano PKGBUILD
...
arch=('i686' 'x86_64' 'armv6h')
Usamos el comando makepkg para descargar y compilar el código de madsonic. Esto puede tardar un buen rato. Sean pacientes.
$ makepkg -g >> PKGBUILD
$ makepkg
El comando makepkg generará un archivo con extensión .xz, dicho archivo lo podemos instalar usando pacman.
# pacman -U madsonic-5.0.3860-1-armv6h.pkg.tar.xz
Instalación de Java Oracle para ARM
Después de instalar madsonic me he dado cuenta que openjdk utiliza casi el 100% de procesador y por lo tanto, esto representa un bajo rendimiento de la Raspberry Pi.
La solución a este problema es utilizar Java de Oracle para arquitectura ARM. Para mayor información sobre este tema, pueden revisar el articulo de oracle en donde muestran el Benchmark de Oracle Java vs OpenJDK en este link.
Descargamos Java Oracle para arquitectura ARM
wget --no-cookies \
--no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; \
oraclelicense=accept-securebackup-cookie" \
"http://download.oracle.com/otn-pub/java/jdk/7u55-b13/jdk-7u55-linux-arm-vfp-hflt.tar.gz"
Descomprimimos el archivo en la ruta /opt/java-oracle/
# mkdir /opt/java-oracle
# tar -zxf jdk-7u55-linux-arm-vfp-hflt.tar.gz -C /opt/java-oracle
Creamos la variable de entorno de Java Home y respaldamos los ejecutables de Java de OpenJDK.
# JHome=/opt/java-oracle/jdk1.7.0_55
# test -L /usr/bin/java && mv /usr/bin/java{,.backup}
Creamos enlaces simbólicos para para java y javac.
# ln -sf /opt/java-oracle/jdk1.7.0_55/bin/java /usr/bin/java
# ln -sf /opt/java-oracle/jdk1.7.0_55/bin/javac /usr/bin/javac
Ahora podemos probar la instalación de java con el comando java -version
[eroland@alarmpi ~]$ java -version
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) Client VM (build 24.55-b03, mixed mode)
Editamos el archivo de configuración de madsonic para que utilice Java Oracle y no Java OpenJDK.
# nano /var/madsonic/madsonic.sh
Y modificamos la lina JAVA_HOME para que quede de la siguiente manera
JAVA_HOME=/opt/java-oracle/jdk1.7.0_55/jre:/usr/lib/jvm/java-7-openjdk
Configuración de madsonic
La configuración de madsonic se realiza en el archivo /var/madsonic/madsonic.sh, lo primero que hacemos es respaldarlo.
cp /var/madsonic/madsonic.sh{,.backup}
En dicho archivo se puede modificar el puerto que usará madsonic (por defecto usa el puerto 4040), la ruta de la carpeta donde estarán almacenadas las canciones, etc.
Añadiremos un Disco Duro Externo conectado por USB en donde pondremos las canciones a reproducir.
Si el disco duro tiene formato NTFS, es necesario instalar el paquete ntfs-3g para poder montar el disco.
# pacman -S ntfs-3g
Creamos la carpeta donde se montará el disco duro y le damos los permisos necesarios
# mkdir /mnt/Datos
# chmod 775 /mnt/Datos
Obtenemos el punto de montaje de nuestro Disco Duro
$ ls -l /dev/disk/by-label/
total 0
lrwxrwxrwx 1 root root 10 Dec 31 1969 Datos -> ../../sda2
lrwxrwxrwx 1 root root 10 Dec 31 1969 PS3 -> ../../sda1
En mi caso me interesa el disco con etiqueta Datos que se encuentra en /dev/sda2
Sin embargo, utilizar la etiqueta para montar el disco no es muy recomendado, ya que si la etiqueta cambia, el disco no podrá montarse.
Obtenemos el identidificador unico (UUID) de nuestro disco duro.
ls -l /dev/disk/by-uuid/
Tendremos un resultado parecido a este
[eroland@alarmpi ~]$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Dec 31 1969 19F4-1917 -> ../../sda1
lrwxrwxrwx 1 root root 15 Dec 31 1969 2300-4E18 -> ../../mmcblk0p1
lrwxrwxrwx 1 root root 10 Dec 31 1969 58F6AA78F6AA55D2 -> ../../sda2
lrwxrwxrwx 1 root root 15 Dec 31 1969 b471cde8-2a15-44e7-acce-e9a2a54511a6 -> ../../mmcblk0p5
Anotamos el UUID de nuestro disco duro (en este caso 58F6AA78F6AA55D2)
Agregamos la siguiente linea al final del archivo /etc/fstab
UUID=58F6AA78F6AA55D2 /mnt/Datos ntfs-3g default 0 0
Recuerden cambiar el UUID, por el que obtengan de los comandos de arriba
Reiniciamos nuestro Raspberry Pi y automáticamente se montará el Disco Duro.
Finalmente iniciamos el servicio de madsonic
# systemctl start madsonic.service
Si queremos que el servicio se inicie automáticamente cada que el sistema cargue.
# systemctl enable madsonic.service
Y listo, tenemos nuestro servidor de streaming de música.
Una vez iniciado el servico de madsonic, podemos entrar desde nuestro navegador preferido a la dirección IP de nuestro Raspberry Pi junto con el puerto 4040, en mi caso es la 192.168.17.1:4040 y entramos usando los datos user=admin password=admin.

Ya dentro de la interfaz web podemos agregar nuevos usuarios y cambiar la contraseña por defecto.
Bueno, este es mi primer aporte, espero les guste.
Fuentes:
http://d.stavrovski.net/blog/post/s...erver-with-madsonic-archlinux-and-cubieboard2
http://www.techjawab.com/2013/06/how-to-setup-mount-auto-mount-usb-hard.html
La entrada Madsonic: Instalar servidor de streaming de música en un Raspberry Pi aparece primero en Desde Linux.
Continúar leyendo...