Spiga

Kernel 3.2.23 ARMHF para Raspberry Pi

 
Buenas de nuevo a todos :)

Estos días hemos estado trabajando en configurar y poner a punto nuestra Raspberry. Lo que hoy os traigo es un pequeño "Kit Kat" a los tutoriales que hemos visto hasta ahora. Se trata de un nuevo kernel, compilado con soporte para coma flotante, que agiliza bastante muchos procesos. Si lo comparamos con el 3.1.9 que trae por defecto Raspbian podremos ver que, además de una mayor rapidez en determinadas funciones, como mejoras tiene:

- Mayor cantidad de firmwares/drivers soportados
- Mayor estabilidad de la máquina

Por el momento he comprobado que soluciona los problemas de kernel panic que sufría de vez en cuando mi Raspberry cuando hacía trabajar en exceso a la CPU o en altas cargas de uso de red (esto va a servirnos para cuando veamos cómo convertirla en un cliente torrent). Aquí os dejo una captura de mi pequeña corriéndolo sin problemas:


 He intentado hacerlo algo más liviano compilándolo yo mismo, quitándole soporte para cosas que no uso, pero llevo varios días peleándome para que me funcione la imagen generada (he hecho una consulta para ver si me solucionan el problema, así que si recibo respuesta os lo cuento) 

Os dejo de momento con uno compilado, de jorisvergeer, a partir de la rama de bootc. Instalarlo es muy sencillo, así que paso a daros las instrucciones:

- Primero extrae la SD de tu Raspberry y renombra de la partición FAT el fichero "kernel.img" a "kernel.img.old" (por ejemplo)

- De la partición ext4 localiza /lib y las carpetas "modules" y "firmware". Renómbralas también añadiéndoles un ".old" al nombre (modules.old y firmware.old)

- Copia, del fichero descargado, el "kernel.img" a la partición FAT y las carpetas "modules" y "firmware" dentro de /lib en la partición ext4.

Hemos renombrado todas las carpetas y ficheros por si en algún momento queremos volver hacia atrás o no nos acaba de convencer el nuevo kernel. Para ello simplemente bastará con revertir el proceso que acabáis de hacer.

Os dejo con el enlace de descarga: Bootc Kernel 3.2.23 ARMHF

Nos vemos muy pronto con el siguiente tutorial que, como ya dije, montaremos un servidor de streaming DLNA.

Actualizar firmware, IP estática, acceso SSH + SFTP en Raspberry Pi


Como ya sabéis ésta es la segunda entrega de una serie de tutoriales que vamos a dedicar a la Raspberry Pi. Si has llegado directamente aquí, te recomiendo leer antes mi anterior tutorial: Raspberry Pi para novatos.

Para los que nos quedamos tras la primera configuración y ejecución del sistema base Raspbian os habréis dado cuenta que, tras varios inicios de vuestra máquina, la IP ha ido variando. Esto se debe a que, por defecto, Raspbian utiliza DHCP para asignar una IP a nuestra Raspberry, hecho nada recomendable si lo que pretendemos es montar algún tipo de servidor en ella, ya que dificultaría la localización de la misma en la red cada vez que se nos asignase una nueva IP. Existen dos posibles soluciones al problema:

  1. Seguir con DHCP, despreocupándonos de la configuración manual de los parámetros de red y configurar en nuestro router una asignación estática de IP, mediante DHCP, gracias a la dirección MAC de la ethernet de la Raspberry (supongo que a más de uno le habrá sonado a Chino).
  2. Editar los ficheros de configuración de red de Raspbian para que se le asigne la IP que nos interese a nosotros. No cabe decir que éste es el método que yo voy a utilizar y el que recomiendo.
Tal y como he dicho no voy a entrar en configuraciones de routers, ya que para cada modelo, fabricante, etc. es un proceso totalmente diferente y nos perderíamos. Siguiendo por lo tanto la segunda opción vamos a configurar nuestra IP para que sea estática, por lo tanto enciende tu Raspberry, haz login y prepárate.

Para empezar vamos a necesitar algunos valores, como la IP deseada, máscara de red, puerta de enlace y servidores DNS. De no conocer dichos valores escribiremos:

ifconfig

Una vez que tengamos todos los valores anotados editaremos el fichero de configuración con:
sudo nano /etc/network/interfaces

Allí deberíamos encontrarnos con el siguiente texto:


iface eth0 inet dhcp

Que básicamente lo que hace es asignarme a la interfaz eth0 una IP a través de DHCP. De tener más de una NIC irían sumando números, como por ejemplo eth1, eth2, etc. Para conseguir nuestro propósito lo que haremos será cambiar la línea por:

iface eth0 inet static
address 192.168.1.123
netmask 255.255.255.0
gateway 192.168.1.1

Debes tener en cuenta que en address vamos a poner la IP deseada para nuestra Raspberry, en mi caso 192.168.1.123 (fácil de recordar), en netmask la máscara de red y en gateway la puerta de enlace.

Ahora pasaremos a configurar los servidores DNS, para ello escribiremos:


sudo nano /etc/resolv.conf

Y borraremos lo que haya para agregar lo siguiente:

nameserver 192.168.1.1
nameserver 8.8.8.8

Con ambas líneas agregamos a la puerta de enlace como DNS primario, ya que muchos routers actúan como tal si están correctamente configurados, y con la segunda hemos agregado el servidor DNS de Google. Ambos valores pueden ser cambiados por los servidores DNS que más os gusten, ya sean los de vuestra compañía o cualquier otro (no hay problema en usar DNS que no son de nuestro propio ISP)

Ahora que ya tenemos una IP fija lista es momento de reiniciar para tomar nuevos valores. Para ello escribiremos el siguiente comando:

sudo reboot

Pasados unos segundos tendremos nuestra pequeña con su IP estática, lo que nos va a permitir tenerla bien localizada en la red en todo momento. El siguiente paso va a ser probar una conexión remota desde la propia red. Para ello encenderemos otra máquina que tengamos y accederemos mediante un cliente SSH. Tenemos dos soluciones:

Solución de acceso remoto con Windows:
Empezaremos descargando un cliente SSH, como por ejemplo PuTTy que es totalmente gratuito. Como pros son su reducido tamaño y portabilidad, puesto que no necesita instalarse y actúa como un portable. Una vez lo tengamos descargado, lo ejecutamos y le damos los valores necesarios:

PuTTy es un cliente SSH gratuito y completo para Windows

Le pinchamos a "Open" y si todo es correcto nos encontraremos con una pantalla que nos pide nuestro login y, de forma posterior, nuestra contraseña. Una vez identificado correctamente estarás dentro de la máquina pudiendo hacer lo mismo que si estuvieras delante. Para Linux es aún más sencillo, teniendo simplemente que escribir en una terminal lo siguiente:

ssh pi@192.168.1.123

O si queremos que nos importe la sesión gráfica (no os lo recomiendo, ya que si os acordáis redujimos a 32 MiB la capacidad de la GPU):


ssh -X pi@192.168.1.123

Y ahora ya podemos controlar totalmente nuestra máquina, sin necesidad de tenerla conectada a una salida de vídeo, dando servicio 24h/365 días al año, por un consumo de unos 6€ aproximados de luz. Genial, ¿verdad? Pues sigamos dándole más funcionalidades.
Ahora vamos a pasar a realizar una conexión por SFTP. Esto nos va a permitir transferir ficheros de un host determinado a nuestro "Raspberry Server". Siguiendo en la línea del software gratuito usaremos FileZilla. En Windows podéis descargarlo de aquí y para los usuarios de Linux bastará con instalarlo desde repositorios mediante:
sudo apt-get install filezilla

Arrancamos el programa y lo configuramos de la siguiente manera:

SFTP es un protocolo que transfiere ficheros en conexiones fiables

Es importante que cambiéis el puerto al 22, porque de lo contrario va a intentar conectar al puerto FTP, mientras que nosotros estamos sirviendo SFTP. Al conectar deberemos ver el contenido de la Rasp a la derecha y, al lado izquierdo, nuestro host.

FileZilla es un cliente FTP y SFTP con licencia GNU/GPL. Es multiplataforma.

Llegados a este punto ya podemos controlar remotamente, pasar ficheros y lo único que nos queda es poner al día nuestro firmware. Para ello vamos a utilizar la herramienta rpi-update de Hexxeh. Para poder utilizar vamos a necesitar hacer un par de cosas antes, así que empezaremos instalando la utilidad git, que nos permitirá utilizar el updater. Para ello escribiremos en nuestra raspberry los siguientes comandos:

sudo apt-get install git
sudo apt-get install ca-certificates
sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update
sudo chmod +x /usr/bin/rpi-update

Momento de actualizar nuestros firmwares, con la pequeña diferencia que aquí no hay riesgo alguno de quedarnos con un ladrillo, ya que todo es mediante software. Para ello escribiremos en la Raspberry:

sudo rpi-update 224

Consiguiendo así actualizar en apenas unos minutos y haciendo, a su vez, la repartición de memoria en 224 MB para CPU y 32 para GPU como ya habíamos hecho antes.

Tras actualizar el firmware deberemos reiniciar para que surja efecto

Al finalizar se nos mostrará un mensaje advirtiéndonos que es necesario reiniciar para activar el nuevo firmware, así que procederemos a ello con la instrucción que vimos tras guardar los ficheros de configuración de IP estática.

Y con esto hemos acabado con el segundo tutorial de configuración básica para novatos. En el próximo personalizaremos los mensajes de bienvenida de nuestra Raspberry e instalaremos un cliente DLNA (streaming UPnP) para que sirva todo el contenido multimedia de nuestros discos o SD al resto de dispositivos compatibles en la red. Si hasta entonces quieres seguirme con mayor regularidad puedes hacerlo en mi Twitter (@drkbcn) en el que publico, entre otras cosas, noticias y proyectos interesantes relacionados con la Raspberry Pi.

¡Hasta entonces! 

PD: Gracias a la gente de Farnell España / element14 por difundir, a través de su Twitter, mis tutoriales.


Raspberry Pi para novatos

Buenas a tod@s los que aún estáis en el blog por alguna razón.

Tras un largo periodo vacacional por parte de NeoDaVe voy a tomar su relevo para todos aquellos que tengan una Raspberry Pi y no sepan cómo empezar con ella. Para los que tampoco sepan realmente de lo que hablamos hagamos una pequeña introducción a este maravilloso gadget.

La Raspberry Pi es un pequeño computador del tamaño de una tarjeta de crédito (bueno, en realidad es un pelín más grande, pero se lo perdonamos) capaz de conectarse a tu TV o monitor y actuar como un fantástico reproductor multimedia, un mini servidor o todo lo que se te llegue a ocurrir que puedas hacer con Linux. Sus características son las siguientes:
  • Broadcom BCM2835 (CPU, GPU, DSP, y SDRAM)
  • CPU: 700 MHz ARM1176JZF-S core (família ARM11)
  • GPU: Broadcom VideoCore IV, OpenGL ES 2.0, 1080p30 h.264/MPEG-4 AVC
  • 256 MB SDRAM
  • Salidas vídeo: RCA, HDMI
  • Salidas de audio: jack 3.5 mm, HDMI
  • Almacenamiento: ranura SD, MMC, SDIO
  • Red: RJ45 10/100 Ethernet
Lo mejor de todo es el precio que tiene y es que por unos 40€ podemos tenerla puesta en casa por mensajería privada urgente. Yo personalmente la compré a los chicos Farnell España, que son una gente muy seria y maja que además tienen un servicio de atención al cliente eficiente. Además estaremos colaborando con una buena causa destinando parte de las ganancias a la fundación (puedes leer en su web toda la información al respecto). Su aspecto al llegar es este:


Una "simple" placa con la que, os aseguro, vais a disfrutar como enanos.  ¿Problema que os puede surgir? Que no viene con sistema instalado y si no habéis tocado demasiado Linux podéis encontraros algo perdidos... ¡Pero para eso estamos aquí! Tampoco debe preocuparos en exceso su aspecto, porque venden en muchísimos sitios cajitas para ponerla dentro y muchas de ellas le dan un look chulísimo. En mi caso particular compré una de ModMyPi, que además colabora con la Pi Foundation por cada cajita vendida. El aspecto con una cajita es totalmente diferente y la mía ha quedado así:


Lo primero de todo es descargar todo el software e imágenes que vamos a necesitar para preparar nuestra tarjeta SD con el sistema operativo. Haciendo caso de la web oficial vamos a descargar Raspbian Wheezy de aquí, que es la más estable de todas que he probado (y ya de paso podemos aprovechar la mayoría de tutoriales del blog :P) Al acabar tendremos un comprimido que contiene un fichero con extensión "img" que no es más que la imagen del sistema lista para ponerla en nuestra SD. Pasemos a la acción:

Paso 1, creación de la SD:
Si nos encontramos en un sistema Linux (ya sé que muchos estaréis aquí por eso mismo, pero por si acaso lo haré para Windows también) podemos hacer uso de la herramienta "ImageWriter". Dicha herramienta nos volcará el contenido del fichero "img" a la tarjeta SD con particionado incluído. Para instalarla abriremos una terminal y escribiremos:

$ sudo apt-get install usb-imagewriter

Si estáis en Ubuntu siempre podéis hacer uso del creador de discos de inicio (usb-creator-gtk) En el caso de los que estáis usando Windows usaremos otro programa totalmente distinto: Win32DiskImager. Para ello cargaremos el fichero con extensión "img" en el programa (sea cual sea de los dos, supongo que no es ningún problema cargar dicho fichero en ellos) y escribiremos en la unidad o punto de montaje en el que hayamos cargado nuestra SD. Os pongo una captura de Win32DiskImager, que al ser un tutorial más enfocado a novatos supongo que la mayoría estará tomando contacto con Linux por primera vez.

 Win32 Disk Imager nos permite escribir y leer imágenes desde una SD

Como veis la interfaz es realmente sencilla. Para proceder a la escritura de la imagen de Raspbian Wheezy a nuestra SD (en mi caso la unidad I:\) bastará con pulsar sobre el botón "Write" y esperar a que nos diga que ha finalizado el proceso. Más adelante os enseñaré a hacer copias de seguridad de vuestro sistema con el mismo programa, así que no lo eliminéis de vuestro sistema ;)


Paso 2, puesta en marcha:

Ahora que ya tenemos nuestra imagen en la tarjeta SD la introducimos en la ranura de nuestra Raspberry Pi, conectamos un cable de red, una pantalla/TV al HDMI y un teclado y ratón con cable (es preferible por compatibilidad). Por último conectamos nuestro alimentador microusb, del que nos habremos asegurado que trabaja a 5V y un mínimo de 750mA, y esperamos a tener señal de vídeo. En apenas unos segundos nos encontraremos con la siguiente pantalla de configuración:

Pantalla de configuración inicial (raspi-config)

Aquí vamos a poder configurar, de manera muy sencilla, varios parámetros esenciales para que nuestra Raspberry Pi se adapte a nuestras necesidades. En nuestro caso vamos a realizar una configuración para tenerla como servidor SSH, SFTP, DLNA y torrent por lo que vamos a priorizar el funcionamiento sin interfaz gráfica (nos vamos a olvidar de LXDE, que es lo que ahora mismo lleva instalado). Tal vez todos los servicios que te he dicho te han sonado a Chino, pero si te digo que podremos acceder de forma remota, transferir ficheros por conexión segura, hacer streaming de nuestro contenido multimedia (música, fotos, películas, series, etc.) o que la vamos a poder dejar descargando nuestras distribuciones de Linux favoritas sin tener que preocuparnos por el consumo... ¿verdad que te suena mejor? Pues eso es básicamente lo que vamos a hacer en los próximos tutoriales.

Empezaremos cambiando la contraseña por defecto por una que sea más segura, para ello iremos a "change_pass" y confirmaremos por dos veces la nueva contraseña. A partir de ahora nuestro usuario pasa a ser "pi" y nuestra contraseña la que acabamos de introducir. Como siguiente punto vamos a hacer que no inicie el entorno gráfico por defecto, ya que en nuestro servidor vamos a trabajar en el 99% de los casos mediante una conexión remota por SSH, por lo tanto nos desplazamos hasta la opción "boot_behaviour" y responderemos que "No" evitando así el arranque automático de XFCE. Seguimos con las opciones, ahora activaremos SSH, así que nos dirigimos a "ssh" y responderemos "Enable".

El paso que voy a realizar ahora sirve para restarle unos Megas de la GPU y cedérselos al sistema, consiguiendo así un mejor rendimiento en programas que puedan consumir un poco más de RAM como podrían ser los clientes torrent, que manejan gran cantidad de conexiones. Para ello nos vamos a "memory_split" y marcaremos la opción de 224 MiB para ARM y 32 MiB para VideoCore. Aceptamos y tras reiniciar -que no lo haremos ahora- ya tendremos activos los nuevos valores. Dicho procedimiento lo repetiremos más adelante, ya que veremos cómo actualizarle el firmware a nuestra máquina y deberemos volver a repartir la memoria de igual manera. 

Como último paso, y únicamente para aquellos con una SD de tamaño superior a 2 GB, iremos a la opción "expand_rootfs". Dicha opción redimensionará la partición del sistema (en la que tenemos la raíz, vamos) hasta llenar la totalidad del espacio libre en nuestra SD, por lo que si tenemos una de mayor tamaño aprovecharemos todo el espacio "muerto" que nos había quedado al meterle la imagen de 2GB. Opcionalmente podéis cambiar la distribución de teclado, zona horaria, etc en las opciones "configure_keyboard", "change_locale" y "change_timezone", pero eso lo dejo a vuestra elección.

Si en cualquier momento queréis volver a iniciar la configuración podréis hacerlo escribiendo:

sudo raspi-config 

Ha llegado el momento de reiniciar ahora nuestra pequeña para que tome la nueva configuración que hemos hecho, para ello saldremos de la configuración y escribiremos:

sudo reboot

Tras el reinicio, que no tardará más de un minuto, nos pedirá nuestros credenciales. Recuerda que el nombre de usuario es pi y la contraseña la cambiamos en primera instancia (por defecto es raspberry). Ahora ya puedes empezar a probar cosas en tu sistema, incluso experimentar un poco con la interfaz gráfica si quieres. Si lo que deseas es iniciar el entorno gráfico bastará con que escribas:

startx

 Entorno gráfico LXDE en Raspbian

Y con esto hasta el próximo tutorial, en el que actualizaremos el firmware de la Raspberry Pi para solucionar algunos problemas, agilizar el arranque e incluso dar soporte a algunas tarjetas SD que no funcionan con el que actualmente tenemos. También veremos cómo acceder a ella desde máquinas remotas para controlarla o transferirle ficheros, personalizar algunos ficheros de sistema -como por ejemplo asignarle una IP estática- y alguna cosita más.

Espero que os haya servido de ayuda. ¡Un saludo y hasta entonces!