Moure partició arrel de SD a USB en la Raspberry

Després d’un temps utilitzant una raspberry amb el S.O. a la targeta SD ens podem trobar que aquest falla. Pel que he llegit ‘per ahí’ sol passar prou a sovint ja que en realitat la targeta SD no està preparada para tanta lectura/escriptura (això pareix). Però hi ha una solució per a aquest problema: Passar la partició arrel del S.O. a una unitat USB, és un canvi ben senzill però que depenent del tamany de la partició necessitarà més temps o menys (i estic parlant fins a varies hores).

El primer que es fa és identificar on està la nostra partició arrel, per a això es fa un df -h i localitzem la línia on indica que la partició és ‘/’:

Filesystem Size Used Avail Use% Mounted on
 rootfs 15G 1.9G 13G 14% /
 /dev/mmcblk0p2 15G 1.9G 13G 14% /
 devtmpfs 243M 0 243M 0% /dev
 tmpfs 49M 224K 49M 1% /run
 tmpfs 5.0M 0 5.0M 0% /run/lock
 tmpfs 98M 0 98M 0% /run/shm
 /dev/mmcblk0p1 56M 17M 40M 30% /boot

En aquest cas seria /dev/mmcblk0p2

Després identifiquem la nostra unitat USB, podem fer un ls /dev/sd* abans de connectar el nostre USB, connectar el nostre USB i tornar a fer un ls /dev/sd*, veurem que hi ha algun element nou. Imaginem que al nostre cas hem identificat el /dev/sda1 (sda és la unitat i el 1 és la partició, pot ser sda, sdb, sdc,…. i la partició 1, 2, 3,…).
Aleshores executem:

 sudo dd if=/dev/mmcblk0p2 of=/dev/sda1 bs=4M

Aquest comandament el que fa és fer una ‘foto’ de la partició arrel i plasmar-la a la partició que li hem indicat (borrant tot el que hi havia abans, per supost). Després es necessita revisar la nova partició en busca d’errors. Si no es fa no es podrà seguir al següent pas.

 sudo e2fsck /dev/sda1

Ara tenim una copia exacta de la partició de la SD en la unitat USB, però segurament la unitat USB té més espai i el estem desaprofitant. Per a ocupar tot l’espai possible executem:

 sudo resize2fs /dev/sda1

I ací podriem dir que acaba la primera part: la migració de dades. Ara comença la segona part: la configuració del S.O. per a iniciar amb la nova partició com a partició arrel.
Primer muntem la nova partició

 sudo mount /dev/sda1 /mnt

I editem el seu fitxer fstab

 sudo nano /mnt/etc/fstab

El que anem a fer és canviar el /dev/mmcblk0p2 que haviem vist al primer pas per el /dev/sda1 que és la nova partició (en aquest cas té aquest nom, recordeu al vostre cas pot tenir un altre nom)

Exemple:
Abans

 proc /proc proc defaults 0 0
 /dev/mmcblk0p1 /boot vfat defaults 0 2
 /dev/mmcblk0p2 / ext4 defaults,noatime 0 1
 # a swapfile is not a swap partition, so no using swapon|off...

Després

 proc /proc proc defaults 0 0
 /dev/mmcblk0p1 /boot vfat defaults 0 2
 /dev/sda1 / ext4 defaults,noatime 0 1
 # a swapfile is not a swap partition, so no using swapon|off...

Ara ja podem desmuntar la partició nova

 sudo umount /dev/sda1

I anem a editar un fitxer de configuració del boot

 sudo nano /boot/cmdline.txt

On modifiquem el root=/dev/mmcblk0p2 per root=/dev/sda1

Ara ja si que podem reiniciar i comprovar que estem a la nova partició. Ho podem comprovar amb un df -h per a veure les particions muntades i el tamany.

La partició vella la podem deixar ahí sense tocar, no se sap mai si algun dia es necessitarà per a alguna emergència com voler utilitzar la raspberry sense la unitat USB. Per a aquest cas sols fariem l’últim pass, tornant a posar el root=/dev/mmcblk0p2.

Aquesta informació l’he extret i mig traduït de:
http://travisred.github.io/using-a-usb-drive-as-os-root-on-a-raspberry-pi/

Configurar el comandament de la TV per a controlar Kodi

A l’entrada anterior he explicar (ja se que molt per damunt) que podiem controlar Kodi amb el ‘mando’ de la ‘tele’. El que passa es que anirem descobrint poc a poc el funcionament de cada tecla del mando. L’activació o reconeiximent dels dispositius CEC de cada TV és diferent així que no ho explicaré, ademés no hi ha tantes opcions en una TV, navegueu per elles i ja la trobareu. Des de la meua experiència vaig a explicar com assignar tecles del ‘mando’ a accions del Kodi.

Al provar en diferents marques de TV he vist que en la Samsung no fa falta cap modificació des del meu punt de vista, es pot controlar be. Però al provar en LG em vaig emportar una gran desil·lusió ja que la funció ‘arrere’ no anava des del comandament i damunt ho volia utilitzar per a aquesta TV! Així que mirant per ahí i provant ho he pogut canviar, és molt senzill i ho vaig a explicar.

El primer a tenir en compte és que la TV no envia per HDMI la informació de totes les tecles que apretes al ‘mando’. No se si depén de models, marques de TV o versions del HDMI però el que si que se es que en la LG que tinc no es pot configurar qualsevol tecla. Després, per a canviar la configuració de les tecles es pot editar a pel el fitxer de configuració o utilitzar un plug-in que ens facilita aquesta tasca. Com a mi m’ha funcionat el plug-in (add-on), explicaré aquest apartat i no l’altre més interessant jeje.

Instal·lem el add-on “Keymap editor”. Executem aquest add-on i en l’apartat global busquem l’acció que volem configurar: ‘arrere’ en aquest cas, pulsem enter i editar. Durant 5 segons està esperant el sistema que apretes una tecla, be siga del teclat, del ‘mando’,…En aquest punt tenim 2 opcions: la primera és anar apretant tecles fins que alguna responga o monitoritzar les tecles que la TV envia al Kodi i elegir una d’aquestes. Jo primer em vaig decantar per la primera ja que pensava que el botó ‘exit’ del ‘mando’ si que funcionava (i no funcionava), després els botons de color (i tampoc funcionaven), i al final vaig triar la segon opció.

Per a monitorizar les tecles que envia la TV a Kodi per HDMI s’habilita l’accés SSH al sistema (que si ho hem fet en la configuració inicial ja no fa falta habilitar-ho) i també habilitarem la opció de debug del Kodi, que s’habilita des de les opcions de sistema del Kodi. Hi ha dos opcions de debug, si actives les dos opcions es pot monitorizar encara que crec que sols fa falta activar la segon opció. En la part superior esquerra de la TV apareixerà informació on indicarà la ruta del fitxer de log del sistema.

Ara toca accedir amb un client SSH des d’un altre equip a openELEC (usuari:root pass:openelec) i executar ‘cat /ruta/del/arxiu.log’, ens fixem en l’hora de l’últim event, apretem una tecla del ‘mando’ i tornem a executar l’ordre anterior, ens fixem si s’ha registrat un nou event. La veritat es que aquesta opció també és ‘prueba-error’ però al menys tens on mirar per a comprovar si ‘fa algo’ o no el botó que s’apreta. Una vegada tenim identificada una tecla que creguem que no fa res, tornem a executar el Keymap editor, anem a l’acció a configurar i quan ens demane una tecla… apretem eixa tecla.

Clar? si no està clar sempre podeu preguntar. Per a accedir per SSH es pot utilitzar qualsevol client com putty per a windows. També es necessitarà la IP de l’equip per a poder accedir, la podem trobar a opcions del sistema de OpenELEC.

Hi ha moltes accions a configurar, pot ser entretés perdres per ahí, també veure que hi ha accions que estan tant en global com en altres seccions i supose que la global tindrà més pes que les altres, no se. Tampoc he comrpovat qué passa si configures una mateixa tecla per a dos accions, però crec que el que farà és executar les dos accions. No crec que comprove primer si eixa tecla està fent una altra acció, aixina que si vols canviar la acció de una tecla primer et toca anar a eliminar tecla del event anterior i després assignar-la al nou event.

Kodi (XBMC) i Rpi (Raspberry)

Bon dia! Hui toca parlar del Kodi. Si, si Kodi, el que tota la vida ha sigut XBMC però ara ha canviat de nom. El canvi de nom és perquè en un principi aquest reproductor es va crear per a la XBox: Primer es deia Xbox Media Player, després va passar a Xbox Media Center (XBMC) i ja al final el nom s’ha quedat obsolet per a la funció que fa. Així que a partir de la v14 passa a ser Kodi.

Després d’aquesta xicoteta introducció anem a seguir…Kodi està disponible per a múltiples plataformes però ens centrem en Raspberry. Hi ha dos distribucions (que jo conega) amb aquest software: OpenELEC i OSMC, de les quals m’he decidit per OpenELEC. Aquesta elecció no ha sigut per res en especial, simplement perquè m’ha paregut veure més info al respecte o perquè porta més temps ‘al mercat’ i per a mi això suposa més estabilitat.

La instal·lació d’aquesta distro és molt senzilla, anar a la seva web oficial, baixar-se la imatge corresponent i ‘cremar-la’ a la SD. IMPORTANT: Rpi i Rpi2 no utilitzen la mateixa imatge. Com la funció d’aquest dispositiu és reproduïr imatge/música/video del NAS no ens importa molt la capacitat de la SD, en poder ‘cremar’ la imatge ja és suficient.

Anem al tema: Tot açò és per a poder veure per una TV sense connectivitat el contingut multimèdia del NAS. Si tens una Smart TV no fa falta que seguixques llegint més, si tens una TV capaç de reproduïr contingut via upnp val la pena que seguixques llegint ja que aquest ‘aparatet’ et servirà per a més (com per exemple escoltar radio via internet, veure TV online, youtube, evernote, jugar a emulador de mame/nes,…) ara que he comentat aquestes utilitats igual si tens Smart TV també voldràs canviar jeje.

La connectivitat entre Rpi i TV està clara: connectar el cable HDMI entre Rpi i TV, si tens un port USB lliure a la TV pots alimentar la Rpi amb aquest port.
La connectivitat entre Rpi i la xarxa: Pots utilitzar el cable ethernet o posar-li un adaptador Wifi USB, jo he provat un xicotet de Belkin i el OpenELEC l’ha reconegut sense fer jo res. Després s’accedix a les opcions de sistema de OpenELEC (hi ha que diferenciar entre opcions de sistema de OpenELEC i opcions de sistema de Kodi), es tria la xarxa que es vol i es configura (si tens una clau de xarxa que tinga simbols extranys com per exemple un % pot ser no et connecte, a mi m’ha passat i ho he tingut que canviar).

Ara ja tenim la Rpi connectada a la TV, la TV en marxa i vegent per pantalla el Kodi. Ja està! No, encara no. Com ‘maneje’ ara això? Es pot interactuar amb Kodi de 3 formes diferents (que jo conega):

  • Teclat: Li claves un teclat USB i a rodar!
  • Mòbil: Hi ha aplicacions per a aindroid i iphone que controlen el Kodi via wifi, no ho he provat però supose que serà connectar-se a la mateixa xarxa, configurar el dispositiu a controlar (via IP o automàticament) i a rodar!
  • ‘Mando a distancia’: Segurament és aquesta la opció que ens quedem, un teclar per damunt la taula no queda be, tenir que dependre del mòbil no està mal però no acaba d’agradar molt, però tindre el ‘mando’ si! En aquest punt podem diferenciar 2 subapartats:
    • ‘Mando’ dedicat: La TV té un ‘mando’, el DVD/Homecinema/… en té un altre, aleshores la Rpi en tindrà un altre, (no va a ser menys!). Hi ha receptors IR USB per la xarxa compatibles per a Kodi, podeu buscar a Google però jo he descartat aquesta opció perquè no m’ha fet falta.
    • ‘Mando’ de la TV: Controlar el Kodi amb el ‘mando’ de la TV seria la millor opció, no? Doncs si que es pot! A la versió 1.0 del HDMI (si no m’enganye de versió) va apareixer el CEC, amb el qual la comunicació HDMI ha passat a ser bidireccional: La TV rep la senyal de video i so però també envia senyal (les tecles que es presionen al ‘mando’).

Després d’aquesta explicació hem escollit interactuar amb Kodi mitjantçant el comandament de la TV. Qualsevol TV que tinga HDMI segurament serà compatible amb CEC. Segons la marca de la tele el CEC es nombra de forma diferent (LG:SYMLINK, SAMSUNG:ANYNET, SONY:BRAVIA LINK,…) però fan la mateixa funció. Per a comprovar si està configurat correctament sols tenim que pulsar els cursors del comandament i veure si es mou el menú del Kodi, si es mou es que per defecte està activat, si no es mou es que ho tens que activar. He provat en LG i automàticament ho reconeix, en canvi en Samsung he tingut que activar aquesta opció pulsant el botó de SYMLINK i seleccionar el dispositiu.

Ara el primer pas és comprovar si tenim connectivitat a la xarxa accedint a les propietats del sistema de OpenELEC, si tenim wifi la tindrem que configurar. Ja que estem en aquest apartat també va be habilitar l’accés SSH al sistema (després ens farà falta). Es pot canviar el nom del dispositiu, fer un backup, restaurar,…

El següent pas és configurar els accesos als continguts. Al NAS està configurat el servici de UPNP/DLNA (no és el mateix un protocol que l’altre, el segón deriva del primer i és un poc més restrictiu en alguns temes però per a un usuari normal casi que podriem que si no és el mateix… es pareix prou), aleshores el Kodi l’utilitzarem com a client upnp. Afegim els accesos upnp tant a la música com al video o imatge, no ho explique perquè és bastant fàcil.

L’últim pas és comprovar que funciona correctament!

Aquesta ha sigut una explicació ‘per damunt’ o poc tècnica del tema, ho he intentat encarar més a entendre de que va açò que a l’apartat tècnic del ‘açò’.

No ho he comentat però crec que el millor és utilitzar un teclat USB per a la primera vegada que es posa en marxa el sistema, així podem configurar més ràpidament els accesos, la configuració de la wifi, configuració del sistema,…. jo no ho he fet i he invertit més temps configurant la wifi, els accesos,…

Per a apartats més tècnics sempre tenim les wikis:
– Kodi: http://kodi.wiki/
– OpenELEC: http://wiki.openelec.tv/index.php/Main_Page

Augmentar la potència dels USB’s de la Raspberry B+

Una vegada ja instal·lat tot a la raspberry tire a connectar el meu disc USB i no té prou alimentació per a funcionar. Pel que he llegit els ports sols donen una potència de 600mA per port, és a dir que amb un cable amb doble connexió (com els que hi havia abans) si que em funcionaria. Però no és el cas perquè no tinc cable així. Aixina que he continuat navegant i he trobat diverses webs on expliquen com poder augmentar l’amperatge fins a 1200mA.

Aquesta configuració pot ser perillosa per a la placa ja que li donem massa canya i pot ser no acabe be la cosa, així que ho feu baix la vostra responsabilitat encara que si sols li connectes un disc dur i res més pels ports USB no tindràs cap problema. Ja vos diré més endavant jeje.

També dir que per a que funcione be la configuració l’alimentador que tinga deu ser d’una potència d’uns 2A (2000mA).

Per a habilitar aquesta funcionalitat cal editar el fitxer /boot/config.txt com a root i afegir la línia
safe_mode_gpio=4
Aquesta vegada no vos puc explicar qué vol dir, sols se que funciona. A la web on ho he vist també comenta que estaria be també afegir la línia
max_usb_current=1
No ens explica per a que és però supose que serà per a llimitar el número de dispositius alimentats per USB

Finalment cal reiniciar el dispositiu per a que faça efecte la nova configuració

http://www.element14.com/community/community/raspberry-pi/raspberry-pi-bplus/blog/2014/07/19/home-network-with-just-the-raspberry-pi-b-and-a-usb-external-hdd

 

Edite(2015/09/14):

Val la pena comprar un HUB alimentat externament per a alimentar els periferics que no aguante la raspberry. Després d’uns mesos sense para “l’aparatet” comença a funcionar mal (en el meu cas, clar). El que m’ha passat és que s’ha fotut el xip que controla els USB’s i que també controla la interfície de xarxa, fallant aleatòriament. Per tant ja no la puc utilitzar per al que jo vull i me’n he tingut que comprar una altra i configurar des de 0.

Instal·lació bàsica del Raspbian a Raspberry Pi B+ (i A+)

Al final m’he fet amb una Raspberry Pi B+, ja que per al tema de les còpies de seguretat de RSYNC que he anat comentant necessitava un pc amb USB i el servidor que tinc no em fa eixa funció. I com en la feina m’ho comentaven el tema de la Raspberry, he pensat que estaria be fer-se amb un aparell d’aquestos a veure que fa.

L’he comprat de PC Componentes i te l’envien amb una caixeta. Realment és menut, més o menys com un disc de 2’5″ i no porta cap accesori (ni carregador, ni res de res). Així que he tirat ma de telèfons retirats per a aconseguir alimentador (utilitza el mateix tipus d’USB que els telèfons d’ara, si si ixe que és xafadet!) i també per a aconseguir una microSD per a instal·lar el sistema, encara que si després vas a connectar-li un disc dur per USB i deixar-ho sempre així no és necessari perquè pots particionar el disc dur i aprofitar un trocet per al sistema.

He estat mirant per la web de la Raspberry quins sistemes se li pot instal·lar, i com jo estic acostumat al Debian i totes les seves versions he vist que la que millor m’anava a mi es la de Raspbian.

Revisant els mètodes d’instal·lació he vist que per regla general existix una imatge, que la “cremes” al disc i arreando! Clar com el hardware és sempre el mateix… en tenir una imatge creada ja no fa falta res mes. Aquestes imatges, al menys la del raspbian, ocupen uns 8Gb descompreses i ve un sistema complet amb el seu entorn gràfic i tot.

Aquest era per a mi el problema, que porta massa coses instal·lades. Jo ho vull per a utilitzar-ho com a ‘miniservidoret’ i no necessite tants programes corrent. He vist també que la gent es desinstal·la l’entorn gràfic però vulgues o no sempre es queden paquets instal·lats ocupant espai i/o memòria RAM. He revisat una mica més per la web oficial de Raspbian, allí explica com fer la instal·lació, també hi ha gent que ha fet el seu “unattended installation” i m’ha agradat un que sols fa una instal·lació bàsica i ademés instal·la un servidor SSH per a poder connectar-te. Altre punt a favor es que en compte d’ocupar 8Gb, aquesta cap en 512Mb

Aquesta instal·lació és ben senzilla: Es copia els fitxes que s’indiquen a la targeta microSD, es posa la targeta a la Raspberry i es connecta aquesta a la xarxa elèctrica i a la ethernet. També es pot connectar per HDMI a la televisió i connectar també un teclat però no és necessari, al iniciar buscarà un servidor DHCP per a que li done IP i es connectarà al servidor dels repositoris per a baixar-se el sistema.

Per a copiar els fitxers primer es formata la targeta en FAT32, després d’ací es baixa l’arxiu, que descomprimim el contingut a la targeta. I ja està tot! Ara posar la targeta a la Raspberry, enxufar-la i esperar més o menys 30 minuts. Realment no recorde el que m’ha tardat a mi però en 30 minuts ja està, és més, en la web diu que en 15 minuts ja pots tenir accés SSH (depenent de la teva connexió a internet).

Una vegada acabada la instal·lació es podrà accedir per SSH al ‘aparatet’, la direcció IP la podem averiguar connectant-nos al nostre servidor DHCP (casi sempre el router) i veure la nova concessió.

En la web ens recomana que el primer a fer després de connecar-se per SSH és deshabilitar l’usuari “pi” i canviar la contrasenya de root (per defecte “raspbian”), després configurar el locale (pel tema de configuració regional, teclat,…) i finalment el fús horari. I tot açò es fa d’aquesta manera:
passwd root (per a canviar la contrasenya de root)
dpkg-reconfigure locales (per a reconfigurar el locale)
En aquesta triarem es-ES UTF8
dpkg-reconfigure tzdata (per a configurar el fús horari)
Per a millorar l’administració de la memòra recomanen també instal·lar el següent paquet:
apt-get install raspi-copies-and-fills

Customitzar la instal·lació

També podem definir paràmetres com la IP (per si no tenim servidor DHCP o per si volem assignar-la manualment des d’un principi), la contrasenya de root, fús horari, mirror del repositori…. A la web ho expliquen, simplement és crear un fitxer a l’arrel de la targeta amb el nom de installer-config.txt i després incloure el que volem modificar. A continuació mostre tots els paràmetres que es poden modificar i els seus valors per defecte

preset=server
packages= # comma separated list of extra packages
mirror=http://mirrordirector.raspbian.org/raspbian/
release=wheezy
hostname=pi
domainname=
rootpw=raspbian
cdebootstrap_cmdline=
bootsize=+50M # /boot partition size in megabytes, provide it in the form '+M' (without quotes)
rootsize= # / partition size in megabytes, provide it in the form '+M' (without quotes), leave empty to use all free space
timeserver=time.nist.gov
ip_addr=dhcp
ip_netmask=0.0.0.0
ip_broadcast=0.0.0.0
ip_gateway=0.0.0.0
ip_nameservers=
online_config= # URL to extra config that will be executed after installer-config.txt
usbroot= # set to 1 to install to first USB disk
cmdline="dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 elevator=deadline"
rootfstype=ext4
rootfs_mkfs_options=
rootfs_install_mount_options='noatime,data=writeback,nobarrier,noinit_itable'
rootfs_mount_options='errors=remount-ro,noatime'

I això és tot! vos deixe les URL’s d’interés

Pàgina oficial de la Raspberry Pi
Pàgina oficial de Raspbian
Pàgina oficial de la instal·lació