Certificación LPIC-2

LPIC-2 diploma  LPIC-2 credential card

Por fin me llegó el certificado y el carnet de la certificación LPIC-2, que corresponde a los exámenes 201 y 202. A diferencia del certificado del LPIC-1 se tardaron mas en enviar los documentos (de hecho tuve que insistir en que los enviaran) pero finalmente ya me llegaron.

Si estás interesado en obtener esta certificación puedes obtener toda la información en la página del LPI para el LPIC-2

, , ,

No hay Comentarios

Respaldo y recuperación completo de GitLab con Postgresql

GitLab and Posgresql

GitLab tiene como la posibilidad de usar Postgresql como su motor de base de datos (a parte de MySQL) y todo viene ya listo para incluso hacer respaldos de su base de datos y sus repositorios Git haciendo uso de un script Ruby (un rake).  Esta es la forma recomendada ya que permite recuperar todo garantizando que no hay transacciones pendientes a nivel de base de datos ni de repositorios Git.

El  problema

En la documentación explican el detalle de cómo hacer un respaldo y restauración  manual, pero al momento de hacer la restauración esta falla porque al intentar insertar registros existentes estos generan conflictos como este:

ALTER SEQUENCE
psql:/home/git/gitlab/tmp/backups/db/database.sql:812: ERROR: relation "users" already exists

La solución

Se debe forzar el respaldo de pogresql para que primero borre las tablas para luego crearlas e insertar los registros en la restauración. Esto se consigue con la opción –clean o -c  de la orden pg_dump. Esta opción se debe editar en script ruby que realiza el respaldo, que por omisión es /home/git/gitlab/lib/backup/database.rb. En este archivo se debe ubicar esta porción del código y sustituir la línea en negrilla mostrada a continuación:

require 'yaml'
module Backup
 class Database
 attr_reader :config, :db_dir
def initialize
 @config = YAML.load_file(File.join(Rails.root,'config','database.yml'))[Rails.env]
 @db_dir = File.join(Gitlab.config.backup.path, 'db')
 FileUtils.mkdir_p(@db_dir) unless Dir.exists?(@db_dir)
 end
def dump
 success = case config["adapter"]
 when /^mysql/ then
 print "Dumping MySQL database #{config['database']} ... "
 system('mysqldump', *mysql_args, config['database'], out: db_file_name)
 when "postgresql" then
 print "Dumping PostgreSQL database #{config['database']} ... "
 pg_env
 system('pg_dump', config['database'], out: db_file_name)
 end
 report_success(success)
 end

Esta línea debe sustituirse por esta otra:

system('pg_dump', config['database'], '-c', out: db_file_name)

Aquí puede verse que la opción -c es pasada como argumento a la orden pg_dump. Esto hará que se incluyan todos los DROPS necesarios en el archivo .sql generado para el respaldo de GitLab.

,

No hay Comentarios

Curso Creative, Serious and Playful Science of Android Apps

Coursera androidapps101 2014 Computer Science and Programming Badge

Hace poco me llegaron los reconocimientos del curso de Android Creative, Serious and Playful Science of Android Apps dictado por Lawrence Angrave de la Universidad de Illinois en Urbana-Champaign. El curso está diseñado para aprender a desarrollar aplicaciones Android desde cero, por lo que si deseas aprender a desarrollar para esta plataforma este es un buen punto de partida. Los videos son en inglés, pero existen subtítulos en español e inglés, por lo que el idioma no es una barrera.

Los reconocimientos

Los reconocimientos que me otorgaron fueron:

  • Statement of Accomplishment: Esto es como un certificado de cumplimiento del curso con 70% o más. Yo obtuve 94.6%
  • Computer Science and Programming Badge: Esta es una especie de insignia que dan también por haber aprobado con más de 70%.

Estos reconocimientos no son los que dan con el Signature Track, el cual  permite compartir esta calificación con un sistema de validación comprobable, a cambio de $49 que se debe pagar para este beneficio.

,

No hay Comentarios

qBittorrent Client para Android

qBittorrent Client - UI qBittorrent Client - Torrent action  qBittorrent Client - Add URL

Cuando comencé los cursos de desarrollo de Android en Coursera lo tenía en mente para una aplicación que hace rato me daba vueltas en la cabeza: una aplicación en Android para gestionar torrents. Con qBitorrent Client puedes conectarte a un servidor qBittorrent y gestionar las descargas de forma que puedas agregar, pausar, o eliminar torrents.

Características

Con esta primera versión se puede:

  • Agregar URL directamente o al hacer clic sobre un enlace torrent desde el navegador del dispositivo
  • Se puede pausar, reanudar, borrar , o borrar torrents individuales y sus datos descargados en el servidor
  • Configurar una cuenta de conexión

Futuras características

En próximas versiones tengo planificado agregarle las siguientes características:

  • Actualización automática del estado de los torrents
  • Configuración de propiedades del servidor qBitorrent desde el dispositivo
  • Notificación de descarga completa de torrents, sin tener la aplicación abierta
  • Entre otros

Descarga de la aplicación

Si estas interesado en esta aplicación, puedes descargar el qBittorrent Client como apk e instalarlo en tu dispositivo. También por ser un proyecto Open Source licenciado bajo GPL, puedes obtener el código en GitHub.

,

2 Comentarios

Samsung Galaxy Tab P1000 con Android 4.3 – CyanogenMod 10.2

Cyanogenmod 10.2 - HumberOS Cyanogenmod 10.2 - HumberOS - Android 4.3 Cyanogenmod 10.2 - HumberOS - Android 4.3

Nuevamente quise darle un nuevo respiro a mi tableta Samsung Galaxy Tab 7, ya que los precios de las tabletas en Venezuela no son muy alentadores, por lo que me dispuse a instalar Cyanogenmod 10.2 con Android 4.3, cortesía de HumerOS.  Esta actualización es solo válida para el modelo para Latino América, es decir Samsung Galaxy Tab 7 P1000N (o P1000L). Coloco aquí lo que se necesita para realizar esto, así como algunos consejos.

Consideraciones

  • Recuerda que solo tú eres responsable de lo que haces con tu tableta. Aunque este método lo seguí y lo comparto, no me hago responsable por bricks en tu tableta.
  • Haz un respaldo de tu rom actual, así como de los datos. Esto permitirá volver a tu rom en caso de que algo no vaya bien.
  • Realiza el procedimiento con la batería cargada a más de 75%.
  • Esta rom es SOLO para modelos P1000N / P1000L.

Requisitos

  • Tener instalado un Recovery con opción para cargar actualizaciones (tipo  CWM Recovery). Esto lo puedes conseguir si ya instalaste HumberOS previamente.

Instalación

  1. Descargar  y copar en raíz de la sdcard externa o interna de la tableta los archivo cm-10.2-20130921-HumberOS-p1.zip, y gapps-jb-20130813-signed.zip. El primero es la ROM y el segundo son las aplicaciones de Google para esta versión de Android.
  2. Apagar la tableta y encenderla en el CWM Recovery presionado el botón de encendido y el de subir volumen (Power On + Volume Up). Al encender la tableta mostrará una imagen como esta:

     CyanogenMod 10.1 - Android 4.2.1 - Samsung Galaxy Tab 7

  3. Hacer el wipe data / factory reset y el  wipe dalvik cache desde el wipe menu.
  4. Desde Install menu seleccionar choose zip from internal sdcard (o choose zip from external sdcard si es tu caso). Selecciona el archivo cm-10.2-20130921-HumberOS-p1.zip para que sea instalado en la tableta.
  5. Luego se deben instalar las aplicaciones de Google. Para ello se debe seleccionar nuevamente  choose zip from internal sdcard para escoger el archivo gapps-jb-20130813-signed.zip.
  6. Una vez que haya terminado, ve al reboot menu y reinicia la tableta seleccionando reboot system. La tableta iniciará con el logo de CyanogenMod. Se tardará un tiempo, pero no apagues la tableta. Sé paciente.
  7. Al finalizar, sigue los pasos de configuración de la tableta, y a disfrutar!

IMEI no válido

Si al reiniciar aparece un mensaje de error que indica que el IMEI no es válido como se muestra a continuación, te recomiendo que hagas el proceso de actualización llevando la tableta a la Stock ROM 2.3.3, luego sustituir con el kernel de HumberOS que rootea la ROM,  y por último aplicar la actualización descrita anteriormente.

IMEI issue

Es un proceso algo tedioso pero se debe realizar para garantizar que el sistema operativo reconozca el IMEI del dispositivo, y estemos con una instalación más limpia.

, , , ,

2 Comentarios

Mi primera aplicación en Android: BatteryReporter

batteryreporter

Desde hace un tiempo estaba con la idea de aprender a desarrollar aplicaciones para Android, y en lo que vi que ofertaron un curso en Coursera de desarrollo de aplicaciones Android vi la oportunidad para hacerlo. Debo confesar que no es “copiar y pegar” (aunque se consigue códigos de ejemplos) y que se debe aprender nuevos conceptos, ya que aun y cuando hayas programado con anterioridad (incluso en Java) ahora debes aprender cómo se hace “a lo Android”.

Después de seguir los vídeos, leer y leer, ya hice mi primera aplicación en Android, que de hecho es parte de una asignación que exigen en el curso. Es una aplicación sencilla que lee el estado de la batería del dispositivo, y reporta si se está cargando así como el porcentaje de carga del mismo.

Para el que quiera probar mi primera aplicación, o simplemente echar una mirada al código por si quiere aprender, aquí dejo el archivo apk y el código del mismo.

El código (MainActivity.java)

Aquí les dejo el código java de la aplicación:

package com.lgallardo.batteryreporter;
import android.os.BatteryManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Resources;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 }
@Override
 public boolean onCreateOptionsMenu(Menu menu) {
 // Inflate the menu; this adds items to the action bar if it is present.
 getMenuInflater().inflate(R.menu.main, menu);
 return true;
 }
public void getStatus(View view) {
TextView statusValueTextView, chargingValueTextView, levelValueTextView;
 ImageView iconImageView;

 String charging = "";
int level, scale;
 float batteryPct;
// Get resources reference
 Resources res = getResources();
// Get values TextViews
 statusValueTextView = (TextView) findViewById(R.id.statusValue);
 chargingValueTextView = (TextView) findViewById(R.id.chargingValue);
 levelValueTextView = (TextView) findViewById(R.id.levelValue);

 // Get ImageView (icon)

 iconImageView = (ImageView) findViewById(R.id.imageView1);

 // Get battery's status
 IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
 Intent batteryStatus = registerReceiver(null, ifilter);
// Check if the battery is charging or is charged?
 int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
 boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING
 || status == BatteryManager.BATTERY_STATUS_FULL;
// Update UI status
 statusValueTextView.setText(Integer.toString(status));
// Update UI charging
 if (isCharging) {
 charging = res.getString(R.string.yes);
// Get charging method
 int chargePlug = batteryStatus.getIntExtra(
 BatteryManager.EXTRA_PLUGGED, -1);
 boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
 // boolean acCharge = chargePlug ==
 // BatteryManager.BATTERY_PLUGGED_AC;
if (usbCharge) {
 charging = charging + " " + res.getString(R.string.usb);
 } else {
 charging = charging + " " + res.getString(R.string.ac);
 }

 iconImageView.setImageResource(R.drawable.charging);
 } else {
 charging = res.getString(R.string.no);
 iconImageView.setImageResource(R.drawable.discharging);
 }
chargingValueTextView.setText(charging);
// Update UI level
 level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
 scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
 batteryPct = 100 * level / (float) scale;
levelValueTextView.setText(Float.toString(batteryPct)+"%");
}
}

,

2 Comentarios

Problema de debmirror: gpgv: Can’t check signature: public key not found

NoMirror.jpg

Tengo un repositorio donde son servidos paquetes de Debian y Ubuntu de forma que las perosnas en la red interna puedan actualizar usando este repositorio. Pero el otro día me di cuenta que este no podía sincronizarse contra el repositorio de Debian como se describe en el artículo Cómo crear un mirror de Debian y Ubuntu con debmirror. Cuando trataba de ejecutar el script de sincronización este arrojaba errores y abortaba.

Síntomas

Cuando se ejecuta el ascript de debmirro este falla con un error similar a este:

gpgv: Signature made Wed 17 Jul 2013 04:40:31 PM CST using RSA key ID 473041FA
[GNUPG:] ERRSIG AED4B06F473041FA 1 2 00 1374050431 9
[GNUPG:] NO_PUBKEY AED4B06F473041FA
gpgv: Can’t check signature: public key not found
gpgv: Signature made Wed 17 Jul 2013 04:40:31 PM CST using RSA key ID 46925553
[GNUPG:] ERRSIG 8B48AD6246925553 1 2 00 1374050431 9
[GNUPG:] NO_PUBKEY 8B48AD6246925553
gpgv: Can’t check signature: public key not found
Release signature does not verify.

Causa

 Los paquetes son validados usando una llave, de forma que podamos confiar en lo que descargamos desde los repositorios de origen y qué es instado finalmente en nuestros computadores. Algunos repositorios tienen un juego de llaves con llaves conocidas, y es probable que una nueva llave firmada fue agregada al juego de llaves de Debian/Ubuntu. Esto puede ocurrir si hay una nueva versión de la distro, y nuevas llaves son añadidas, haciendo que nuestro juego de llaves quede obsolote (les falta las nuevas llaves).

Solución

Para arreglar este inconveniente, sigue los siguientes pasos dependiendo de la distro a la que le estés haciendo mirror:

Debian

Actualiza el repoitorio e importa las nuevas llaves:

aptitude update
aptitude safe-upgrade
gpg --keyring /usr/share/keyrings/debian-archive-keyring.gpg  --export | gpg --no-default-keyring --keyring /var/data/keyrings/debian/trustedkeys.gpg --import

Nota: Si las llaves no fueron agregadas, descarga el último paquete  debian-archive-keyring desde los repoitorioes, extráelo y usa este juego de llaves. Ejemplo:

wget http://ftp.us.debian.org/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2012.4_all.deb
dpkg -x debian-archive-keyring_2012.4_all.deb  ~
gpg --keyring ~/usr/share/keyrings/debian-archive-keyring.gpg  --export | gpg --no-default-keyring --keyring /var/data/keyrings/debian/trustedkeys.gpg --import

Ubuntu

Descarga el último paquete ubuntu-archive-kering y extraélo, luego usa este juego de llaves. Ejemplo:

wget http://mirror.pnl.gov/ubuntu//pool/main/u/ubuntu-keyring/ubuntu-keyring_2012.05.19_all.deb
dpkg -x ubuntu-keyring_2012.05.19_all.deb ~
gpg --keyring ~/usr/share/keyrings/ubuntu-archive-keyring.gpg --export|gpg --no-default-keyring --keyring /home/hdrepo/keyrings/ubuntu/trustedkeys.gpg --import

Luego el script de sincronixación del mirror debe correr sin  errores, descargando las últimas actualizaciones.

, ,

No hay Comentarios

Cómo instalar VMWare Tools en Debian 7

VMWare Tools - Debian 7.1

Instalar los VMWare Tools en Debian 7 no es tan distinto de, por ejemplo, instalar los Guest Additions de VirtualBox. En esencia es tener las herramientas de compilación del sistema operativo, los headers del kernel, montar una unidad de CD virtual para correr el utilitario que compilará los módulos de kernel, y reiniciar la máquina.

Si quieres saber más en detalle, aquí te dejo el procedimiento:

  1. Instalar las herramientas de compilación de los módulo (GCC y otras cosas):
    aptitude install build-essential
  2. Instalar los headers del kernel actual:
    # aptitude install linux-headers-$(uname -r)
  3. Montar el disco con el utilitario de VmWare (se debe seleccionar el el vSphere Client que se va a instalar los VMWare Tools para que se presente la unidad de CD en la VM)
    # mount /dev/sr0  /mnt/
  4. Se copia el utilitario en una carpeta local del sistema, y se extrae:
    # cp /mnt/VMwareTools-8.6.10-913593.tar.gz /opt/
    # cd /opt/
    # tar xfzv VMwareTools-8.6.10-913593.tar.gz
  5. Por último  corre el script utilitario que creará los módulos necesarios del kernel:
    # cd vmware-tools-distrib/
    # ./vmware-install.pl

El script  una serie de preguntan para construir los módulos necesarios, las cuales coloco a continuación.  Coloco algunas de las preguntas y parte de la salida del script. Para tu caso particular, responde según tus necesidades:

Creating a new VMware Tools installer database using the tar4 format.
Installing VMware Tools.
In which directory do you want to install the binary files?
 [/usr/bin]
What is the directory that contains the init directories (rc0.d/ to rc6.d/)?
 [/etc]
What is the directory that contains the init scripts?
 [/etc/init.d]
In which directory do you want to install the daemon files?
 [/usr/sbin]
In which directory do you want to install the library files?
 [/usr/lib/vmware-tools]
The path "/usr/lib/vmware-tools" does not exist currently. This program is
 going to create it, including needed parent directories. Is this what you want?
 [yes]
In which directory do you want to install the documentation files?
 [/usr/share/doc/vmware-tools]
The path "/usr/share/doc/vmware-tools" does not exist currently. This program
 is going to create it, including needed parent directories. Is this what you
 want? [yes]
The installation of VMware Tools 8.6.10 build-913593 for Linux completed
 successfully. You can decide to remove this software from your system at any
 time by invoking the following command: "/usr/bin/vmware-uninstall-tools.pl".
Before running VMware Tools for the first time, you need to configure it by
 invoking the following command: "/usr/bin/vmware-config-tools.pl". Do you want
 this program to invoke the command for you now? [yes]
Initializing...
 Making sure services for VMware Tools are stopped.
Stopping VMware Tools services in the virtual machine:
 Guest operating system daemon: done
 Unmounting HGFS shares: done
 Guest filesystem driver: done
 [EXPERIMENTAL] The VMware FileSystem Sync Driver (vmsync) is a new feature that
 creates backups of virtual machines. Please refer to the VMware Knowledge Base
 for more details on this capability. Do you wish to enable this feature?
 [no]
 Before you can compile modules, you need to have the following installed...
make
 gcc
 kernel headers of the running kernel
 Searching for GCC...
 Detected GCC binary at "/usr/bin/gcc-4.6".
 The path "/usr/bin/gcc-4.6" appears to be a valid path to the gcc binary.
 Would you like to change it? [no]
Searching for a valid kernel header path...
 Detected the kernel headers at "/lib/modules/3.2.0-4-amd64/build/include".
 The path "/lib/modules/3.2.0-4-amd64/build/include" appears to be a valid path
 to the 3.2.0-4-amd64 kernel headers.
 Would you like to change it? [no]
The vmblock enables dragging or copying files between host and guest in a
 Fusion or Workstation virtual environment. Do you wish to enable this feature?
 [no] yes
 make: Leaving directory `/tmp/vmware-root/modules/vmblock-only'
No X install found.
Creating a new initrd boot image for the kernel.
 update-initramfs: Generating /boot/initrd.img-3.2.0-4-amd64
 Checking acpi hot plug done
 Starting VMware Tools services in the virtual machine:
 Switching to guest configuration: done
 VM communication interface: done
 VM communication interface socket family: done
 File system sync driver: done
 Guest operating system daemon: done
 The configuration of VMware Tools 8.6.10 build-913593 for Linux for this
 running kernel completed successfully.
You must restart your X session before any mouse or graphics changes take
 effect.
You can now run VMware Tools by invoking "/usr/bin/vmware-toolbox-cmd" from the
 command line or by invoking "/usr/bin/vmware-toolbox" from the command line
 during an X server session.
To enable advanced X features (e.g., guest resolution fit, drag and drop, and
 file and text copy/paste), you will need to do one (or more) of the following:
 1. Manually start /usr/bin/vmware-user
 2. Log out and log back into your desktop session; and,
 3. Restart your X session.
Enjoy,
--the VMware team
Found VMware Tools CDROM mounted at /mnt. Ejecting device /dev/sr0 ...

Luego se debe reiniciar la máquina virtual y verificar que los VMWare Tools están corriendo, viendo el estado en el vSphere Client como se puede apreciar en la imagen de arriba o consultando el estatus en la máquina virtual:

# service vmware-tools status
vmtoolsd is running

,

2 Comentarios

Instalación de Raspbmc

Raspbmc = Rasberry Pi   XBMC

Un amigo me recomendó esta distro para correr XBMC, ya que según me comentó el desarrollador de XBMC sacó optimizaciones específicas para que corriera mejor en el hardware del Rasberry. Entonces me animé a probarla y explicó aquí todo lo que tuve que hacer para realizar la instalación, que dicho sea de paso me pareció algo accidentada pero al final satisfactoria.

Raspbmc desde el instalador|

Raspbmc install error

Desde la página del proyecto recomiendan usar el instalador o Network Image, un script en python que prácticamente hace todo el proceso de instalación, particionamiento y configuración inicial…o por lo menos lo intenta, ya que en mi caso no funciono debido a que la conexión a Internet en casa no ayudaba y por ende no podía descargarme la imagen. Por lo que tuve que usar la imagen completa de Raspbmc.

Imagen completa de Raspbmc

La otra opción que ofrecen en la página del proyecto es la de descargar la versión completa de 235 MB llamada Standalone Image, la cual al descomprimirse queda en 1.4 GB aproximadamente. Esto fue un problema ya que mi SD es de 1 GB y no pensaba comprar otra porque tengo un disco duro de 320 GB dedicado al Rasberry Pi. Entonces se me ocurrió que podía reducir el tamaño de esta imagen para que entrara en la SD de 1 GB.

Reparticionado de la imagen

Similar a como hice en el artículo que explica cómo Correr Raspberry Pi desde un disco USB, volqué la imagen en un pendrive de 8 GB para poder extraer luego la partición /boot y la partición del sistema operativo o partición raíz. Para copiar la imagen en el pendrive se debe descomprimir la imagen y luego volcar en crudo, como se muestra  a continuación:

# gunzip raspbmc-final.img.gz
# dd if=raspbmc-final.img of=/dev/sdb

Si verificamos con gparted veríamos algo como esto:

Rasbmc image

Luego con el mismo gparted se debe redimensionar el tamaño de la partición /dev/sdb2 para que ocupe 800 MB aproximadamente, de esta forma podría meter también la partición /boot de 74 MB en mi tarjeta SD de 1 GB.

Raspbmc

Luego para extraer la partición /boot del pendrive se debe hacer lo siguiente:

# dd if=/dev/sdb1 of=raspbmc-final_boot.img

Y de forma similar para extraer el sistema de archivos de 800 MB  que se encuentra en la otra partición:

# dd if=/dev/sdb1 of=raspbmc-final_fsext4.img

Configuración inicial

La configuración inicial se realiza desde el instalador, que en esencia es un script que realiza una serie de preguntas como parámetros de red, etc. Luego esto se puede modificar desde el mimos XBMC con un script que se agregó para Raspbmc:

Raspbmc

Reparticionado del disco

Si bien la instalación detectó el disco duro de forma automática no me dejó particionarlo, de hecho borra todo el contenido y crea una única partición que se monta en /media con el UUID de la partición. Pero lo que quería era tener tres particiones: una para el sistema operativo (/), otra para la memoria de intercambio (swap) y el resto para los datos (/media/Toshiba320), aparte de la partición /boot que debe estar en la tarjeta SD .

Para particionar el disco, borré y creé las particiones usando para ello fdisk. Al final el disco quedó distribuido de la siguiente manera:

Raspbmc

Luego edité el /etc/fstab para reflejar estos cambios:

proc /proc proc defaults 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620 0 0
#/dev/sda2 / ext4 defaults,noatime 0 0
UUID=e7db90716-9911-4fc8-95da-86c463f926a4 / ext4 defaults,noatime 0 0
UUID=70a55bca-9fdb-4073-87f6-c15fd7b351dc none swap sw 0 0
UUID=1ff934a3-f7ce-451f-9a07-0915e174a007 /media/Toshiba320 ext4 defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults,noatime 0 0

Y por último modifiqué el archivo /boot/cmdline.txt, en particular para que la partición del sistema operativo fuese leída desde el disco duro y no desde la tarjeta SD:

dwc_otg.lpm_enable=0 root=/dev/sda1 rootfstype=ext4 noatime quiet rootwait loglevel=1   persistent-logs sdhci-bcm2708.enable_llm=1 dwc_otg.microframe_schedule=1 dwc_otg.fiq_fix_enable=1

Deshabilitar el Firewall

Para deshabilitar el firewall que viene por omisión con una regla  DROP  en el Raspbmc,  hay que editar el archivo /etc/network/if-up.d/secure-rmc, donde se debe comentar la línea:

iptables -A INPUT -i $IFACE -j DROP

También puedes deshabilitar el firewall desde el script de configuración desde XBMC como se muestra a continuación:

Raspbmc settings

Control remoto

Si bien tengo un teclado un un ratón conectado al Rasberry Pi, lo ideal es tener un control remoto. Como el Rasberry Pi está conectado a la red WiFI lo ideal es usar este medio y no tener que usar IR o Bluetooth. Por eso pensé en una aplicación en Android y mi primera elección fue XBMC Remote pero pareciera que tiene un problema de comunicación que vuelve loco al XBMC (tanto del Raspbmc como el XBMC que se puede conseguir por ahí para el Rasberry Pi), pero al final conseguí otra llamada Yatse que funciona correctamente y la presentación es mucho mejor como puede verse a continuación de las capturas que tomé desde mi teléfono:

Yatse XBMC remote  Yatse XBMC remote  Yatse XBMC remote

Desempeño

Comparado con el XBMC que había probado con Raspbian, esta versión verdaderamente se comporta muy bien. Reproduce las películas en varios formatos (.avi, .mkv, .mp4, etc) de forma fluida. Adicionalmente como tiene Linux también es mi centro de descarga con qbittorrent-nox, y otras cosas adicionales que le estoy colocando para pruebas. Y esto es lo que reporta XBMC como consumo de recursos:

Raspbmc

Referencias

, ,

9 Comentarios

100 preguntas de Linux!

LPI CompTIA Linux+

100 Preguntas de Linux

Este cuestionario busca evaluar qué tanto sabes de Linux, además de ayudarte en los exámenes de certificación de Linux existente en el mercado, tales como LPI o CompTIA.

Puedes ir respondiendo cada pregunta, marcar algunas en las que tengas dudas para revisarlas posteriormente, y finalmente terminar con el cuestionario donde se mostrará el resultado obtenido. También puedes revisar las respuestas si haces clic en Comprobar las preguntas para que sepas las preguntas que respondiste correcta e incorrectamente, para que en caso de que te hayas equivocado sepas qué temas debes revisar.

Suerte!!

, ,

13 Comentarios