A estas alturas no es un secreto para nadie que las tarjetas SD no son el mejor soporte para instalar lo que sea en una Raspberry Pi, por su escasa durabilidad.
Si tienes una instalación de Jeedom basada en una RPi con tarjeta SD, es sólo cuestión de tiempo: en algún momento la tarjeta SD se corromperá y te llevarás un buen susto al comprobar que no puedes acceder ni hacer nada.
Las tarjetas SD no están diseñadas para soportar durante años procesos constantes de lectura/escritura como los que genera Jeedom, por ejemplo.
Y optar por un pincho USB no soluciona el problema porque la tecnología es la misma, sólo que con un formato distinto.
Hace tiempo que me rondaba la cabeza pasar mi instalación de Jeedom a un SSD y un reciente susto con una tarjeta SD me ha recordado la necesidad de hacer el cambio lo antes posible.
En este post te cuento paso a paso cómo lo he hecho.
1. Comprobar si la RPi está preparada
La Raspberry Pi 3 es capaz de bootear desde uno de sus conectores USB. Pero para eso, tiene que tener el firmware adecuado.
Para comprobar si la mía estaba preparaba, he hecho lo siguiente:
- He conectado la tarjeta SD que contenía mi instalación de Jeedom a mi ordenador con un lector de tarjetas.
- He accedido a la partición denominada “boot” de la tarjeta (la única legible desde Mac o Pc) y he localizado en ella el archivo llamado config.txt.
- He abierto config.txt con un editor de texto (en mi caso TextWrangler, soy usuario de Mac) y al final del mismo he añadido estas dos líneas:
# Activar el USB Boot para Jeedom program_usb_boot_mode=1
- He guardado el archivo config.txt
- Aprovechando que estaba ahí, con el mismo editor de texto he creado un archivo de texto en blanco con el nombre ssh (sin extensión) y lo he copiado también en la partición boot. Esto último es para habilitar el acceso por ssh en la RPi (ya que viene desactivado por defecto).
- He vuelto a colocar la tarjeta SD en la RPi y he arrancado ésta de nuevo.
- En mi Mac he abierto Terminal y me he conectado a la RPi por ssh tecleando lo siguiente (suponiendo que la IP de mi RPi sea 192.168.0.10):
ssh pi@192.168.0.10
- He introducido la contraseña (la contraseña por defecto es raspberry, aunque si tienes ésta, deberías cambiarla por seguridad)
- En Terminal he introducido el siguiente comando:
vcgencmd otp_dump | grep 17
- Esperaba obtener la siguiente respuesta, lo que hubiera significado que mi RPi estaba preparada para arrancar desde USB.
17:3020000a
- Pero obtuve un número distinto después de 17:, por lo que procedí a actualizar el firmware de la RPI tecleando lo siguiente:
sudo apt-get update; sudo apt-get install rpi-update
- Después he tecleado lo siguiente:
sudo rpi-update
- Y finalmente he reiniciado la RPi con el siguiente comando:
sudo reboot
- Una vez que ha vuelto a arrancar la RPi, me he vuelto a conectar por ssh desde Terminal, y para asegurarme de que ahora sí mi RPi estaba preparada para arrancar desde el USB, he vuelto a introducir lo siguiente:
vcgencmd otp_dump | grep 17
- Y felizmente esta vez sí he obtenido la siguiente respuesta:
17:3020000a
- He desconectado la RPi y he retirado la tarjeta SD (importante).
2. Instalación de Raspbian Stretch en el SSD
En primer lugar tengo que decir que yo quería aprovechar un SSD de 32 Gb que tenía en un cajón. Se trata de un SSD con interfaz Sata instalado en una caja externa para poder conectarlo por USB. Por consiguiente es bastante exigente en cuanto a amperaje. Sabía que la fuente de alimentación de la RPi (3A en mi caso) no sería suficiente para alimentar tanto la RPi como el SSD y los distintos dongles USB que tengo pinchados para Jeedom (Z-Wave, BT y Edisio), por lo que me hice con un cable USB en Y, para poder alimentar el SSD con una alimentación externa adicional (5V 2A ha sido suficiente).
Todo eso para decirte que si te planteas comprar un SSD expresamente para eso, opta por uno que tenga interfaz mSata de bajo consumo (con la caja externa correspondiente), para ahorrarte lo de la alimentación externa.
Después, he formateado el SSD en FAT y he procedido a la instalación de Raspbian Stretch propiamente dicha.
Para eso, me he descargado la imagen de Raspbian Stretch Lite, más liviana, sin entorno gráfico, óptima para instalar después Jeedom.
Éste es el enlace de descarga.
Como he dicho anteriormente, yo soy usuario de Mac y para hacer instalaciones de Raspbian para RPi hasta ahora siempre he usado Applepi Baker.
Pero resulta que Applepi Baker, al menos en mi caso, sólo permite restaurar imágenes de Raspbian (y otras) en una tarjeta SD o un pincho USB, pero no en un disco duro o un SSD (aunque esté pinchado por USB).
Así que he restaurado la imagen de Raspbian Stretch Lite en el SSD a través de Terminal.
Pero si lo de Terminal te parece un engorro, puedes usar la aplicación Etcher para restaurar la imagen de Raspbian en tu SSD. Puedes descargar Etcher desde aquí.
3. Paso previo a la instalación de Jeedom en el SSD
Una vez terminada la restauración de la imagen de Raspbian en el SSD, aprovechando que el disco estaba aún conectado a mi Mac, he hecho lo siguiente.
- He accedido a la partición boot del SSD (la única legible desde el Mac).
- He localizado el archivo config.txt, lo he abierto con un editor de texto y he añadido estas dos lineas al final del mismo:
# Activar el USB Boot para Jeedom program_usb_boot_mode=1
- Además, con el mismo editor de texto he creado un archivo llamado ssh (sin extensión) y lo he copiado en la partición boot del SSD (esto es para activar el ssh en la RPi, como he explicado antes).
- He expulsado el SSD de mi Mac, lo he conectado a la RPi y he conectado a ésta la fuente de alimentación para que arrancara.
4. Instalación de Jeedom en el SSD
- En mi Mac he abierto Terminal y me he conectado de nuevo a la RPi por ssh tal y como he explicado anteriormente.
- He descargado el script de instalación de Jeedom en la RPI con el siguiente comando:
wget https://raw.githubusercontent.com/jeedom/core/stable/install/install.sh
- He aplicado los permisos necesarios:
sudo chmod +x install.sh
- Finalmente he ejecutado el script de instalación de Jeedom:
sudo ./install.sh
El proceso de instalación puede ser bastante largo. Debes tener paciencia. Si no recuerdo mal, la instalación se hace en 7 pasos que se van indicando en pantalla.
- Una vez terminada la instalación, he reiniciado la RPi:
sudo reboot
- Después del reinicio de la RPi, he realizado algunos ajustes que recomienda el equipo de Jeedom para optimizar el sistema cuando no usamos una pantalla externa. Estos ajustes consisten en añadir unas pocas líneas en el archivo config.txt.
- Así que me he vuelto a conectar a la RPi por ssh y he introducido el siguiente comando para abrir el archivo config.txt:
sudo nano /boot/config.txt
- En config.txt he añadido las siguientes líneas:
gpu_mem=16 disable_l2cache=0 gpu_freq=250
- He guardado los cambios pulsando ctrl+X y a continuación he cambiado la contraseña del usuario pi, para lo cual he introducido el siguiente comando:
sudo passwd pi
- Y he introducido la nueva contraseña (dos veces, tal y como me pidió el sistema). Y finalmente he reincido la RPi:
sudo reboot
4. Configuración de Jeedom
Una vez reiniciada la RPi, en mi navegador de Internet he introducido la IP de Jeedom en mi red local y me he logeado con las credenciales por defecto (usuario: admin, contraseña: admin).
Una vez en Jeedom, lo primero que he hecho es cambiar la contraseña del usuario admin y he restaurado la última copia de seguridad que tenía de mi instalación previa de Jeedom en tarjeta SD. Para ello, en el menú superior derecho he ido a rueda dentada/Copias de seguridad.
Como por arte de magia, he recuperado todo lo que tenía en mi instalación anterior. Lo único que he hecho para que todo volviese a funcionar es volver a iniciar las dependencias y/o los demonios de los plugins que lo necesitaban para funcionar correctamente, entre ellos los del plugin Z-Wave (dado que he usado la misma “antena” Z-Wave que tenía en mi instalación anterior, no he tenido que clonar el chip Z-Wave).
En mi caso he procedido así (con una instalación totalmente nueva de Raspbian) porque la versión de Raspbian que tenía en la tarjeta SD no estaba actualizada (era Jessie).
Después de estos pasos ya tengo Jeedom instalado en un SSD y ya puedo dormir tranquilo. Aún así, ni que decir que seguiré haciendo copias de seguridad en Jeedom porque cualquier soporte es susceptible de estropearse en algún momento.
Parece muy tedioso, pero en realidad no lo es tanto. Si tenéis una instalación de Jeedom corriendo en una tarjeta SD, os animo a pasar a un disco duro o un SSD. Espero que este post os ayude a conseguirlo de forma rápida y sencilla.
El post Cómo instalar Jeedom en un SSD aparece primero en Domótica Doméstica.