Archive for the ‘Linux’ Category

Notas sobre el almacenamiento en la Samsung Galaxy Tab 7 (GT-P1000)

Friday, December 14th, 2012

La Galaxy Tab 7 (GT-P1000) tiene 3 sistemas de almacenamiento:

  • Memoria flash interna
  • Tarjeta SD interna
  • Tarjeta SD externa (extraíble)

Desde el punto de vista del sistema operativo, estos dispositivos son visibles con los siguientes nombres respectivamente:

/dev/block/bml0
/dev/block/mmcblk0
/dev/block/mmcblk1

La memoria flash está dividida en áreas llamadas particiones. Algunas de ellas tienen sistemas de archivos y otras son para uso crudo. Las harramientas como ODIN o Heimdall, utilizadas para grabar custom ROMs o kernels graban en esta memoria.

La tabla de particiones de la memoria flash interna se organiza como sigue (se muestran los nombres de los dispositivos BML, así como el nombre del archivo que es grabado por ODIN en cada zona):

/dev/block/bml1   IBL+PBL:[boot.bin]           # Initial Boot Loader + Primary Boot Loader
/dev/block/bml2   PIT:[gt-p1000.pit]           # Partition Information Table
/dev/block/bml4   SBL:[sbl.bin]                # Secondary Boot Loader
/dev/block/bml5   SBL2:[sbl.bin]               # Secondary Boot Loader 2
/dev/block/bml6   PARAM:[param.lfs]            # param file system
/dev/block/bml7   KERNEL:[zImage]              # Kernel image
/dev/block/bml8   RECOVERY:[zImage]            # Kernel image for recovery
/dev/block/bml9   FACTORYFS:[factoryfs.rfs]    # Factory file system
/dev/block/bml10  DBDATAFS:[dbdata.rfs]        # dbdata file system
/dev/block/bml11  CACHE:[cache.rfs]            # cache file system
/dev/block/bml12  MODEM:[modem.bin]            # Modem firmware

Los dispositos BML (Block Management Layer) dan acceso crudo a la memoria flash, ya sea como un dispositivo único (bml0) o a por particion (bml1, bml2, etc.)

Debido a que la memoria flash se va dañando con el uso, existe una capa de software llamada STL (Sector Translation Layer) que gestiona la asignación de los bloques que “ven” los sistemas de archivos montados en la flash, y así poder balancear su uso. En los dispositivos llamados USB Drives, esta gestión se hace en la propia circuitería y no requiere intervención del sistema operativo.

Por lo anterior, el kernel expone algunas áreas de la flash como dispositivos STL (/dev/block/stlx), y sobre éstos van montados los sistemas de archivos de la siguiente manera:

/dev/block/stl3   /efs        rfs
/dev/block/stl6   /mnt/.lfs   j4fs #(verificar)
/dev/block/stl9   /system     rfs
/dev/block/stl10  /dbdata     rfs
/dev/block/stl11  /cache      rfs

La tarjeta SD interna (/dev/block/mmcblk0) también está dividida en 3 particiones:

mmcblk0p1 /mnt/sdcard    vfat
mmcblk0p2 /data          rfs
mmcblk0p3 /preload       vfat

La partición /mnt/sdcard es el área a la que el usuario tiene acceso desde las aplicaciones.

La tarjeta SD externa (/dev/block/mmcblk1) tiene una sola partición:

mmcblc1p1  /mnt/sdcard/external_sd

GlobcalScale Technologies DreamPlug

Monday, August 13th, 2012

El DreamPlug de GlobalScale Technologies es un kit de desarrollo basado en el controlador SoC (“System-On-Chip”) Marvell® 88F6281 with Sheeva™. Estos dispositivos son, como su nombre lo indica, todo un “sistema en un chip” ya que integran en una sola pastilla lo siguiente:

  • CPU de arquitectura ARMv5TE con 256KB de cache L2
  • 2 puertos Ethernet Gigabit
  • 2 puertes SerialATA
  • Controlador USB 2.0
  • SDIO
  • Controlador DDR
  • Puerto PCI-E
  • 2 canales TDM
  • Audio y Video MPEG
  • Controlador NAND, 2 x UART, TWSI y SPI
  • 4 IDMA/XOR
DreamPlug de GlobalScale Technologies

DreamPlug de GlobalScale Technologies

Con el DreamPlug, obtenemos una poderosa computadora de bajo consumo lista para usarse.  Viene con Debian 6.0.5 “squeeze” pre-instalado. El plug trae:

  • 2 puertos USB
  • 1 puerto eSATA
  • 1 puerto óptico S/PDIF para audio digital
  • 1 puerto mini-jack para audífonos
  • 1 puerto mini-jack para micrófono
  • 1 puerto JTAG
  • 1 puerto para memoria SD
  • 512 MB DDR2 de 800 MHz
  • 2 MB de memoria serial flash SPI para uBoot
  • 1 microSD interna
  • 1 ranura SD de expansión

El puerto JTAG sirve para tener acceso a la consola y requiere la compra del módulo opcional JTAG, cosa que recomiendo mucho si se desean hacer cosas como cambiar el sistema operativo o modificar los valores de la memoria flash.

DreamPlug con el módulo JTAG conectado. La caja de CD es para dar una idea del tamaño real del dispositivo.

DreamPlug con el módulo JTAG conectado. La caja de CD es para dar una idea del tamaño real del dispositivo.

La memoria microSD interna es utilizada para el sistema operativo y tiene 3 particiones: la primera, de tipo FAT-16, contiene el núcleo del sistema operativo en formato uImage; la segunda partición tiene el sistema de archivos raiz y la tercera tiene una copia de respaldo del núclero y del fileystem en un archivo .tgz.

El hecho de tener el filesystem en una memoria microSD es una gran ventaja respecto a los plug anteriores que utilizaban memoria flash para el SO, lo que los hacía mas difíciles de actualizar.

Para empezar a utilizarlo, sólo se conecta el plug al módulo JTAG y éste a la computadora por el puerto USB. Debemos descargar los controladores del convertidor UART a USB, después iniciamos nuestro emulador de terminal preferido (en mi caso, PuTTY) y lo configurarmos a 115200,8,1,N y listo.

Al encender el plug, la terminal mostrará lo siguiente:

U-Boot 2011.06 (Oct 15 2011 - 02:02:08)
Marvell-DreamPlug

SoC:   Kirkwood 88F6281_A0
DRAM:  512 MiB
SF: Detected MX25L1606 with page size 256, total 1 MiB
In:    serial
Out:   serial
Err:   serial
Net:   egiga0, egiga1
88E1121 Initialized on egiga0
88E1121 Initialized on egiga1
Hit any key to stop autoboot:  0
Marvell>>

Hasta aquí como intruducción al DreamPlug. En los próximos artículos hablaremos sobre cómo crear un sistema de video vigilancia con el software ZoneMinder.

Configuración de Postfix con Yahoo! Mail Plus

Wednesday, October 13th, 2010

El escenario consiste en un servidor con Ubuntu Server 10.4 que utilizará a los servicios de Yahoo! Mail Plus como relay host.

Lo que se debe hacer es lo siguiente:

# apt-get install postfix

Crear un nuevo archivo /etc/postfix/main.cf y con lo siguiente:

biff = on
append_dot_mydomian = yes
redme_direcotry = no
myhostname = tuhostname.dominio.tld
mydomain = dominio.tld
myorigin = /etc/mailname
mydestination = hostname.dominio.tld, localhost
smtp_use_tls = yes
smtp_tls_loglevel = 0 # Aumentar para diagnostico
smtp_tls_security_level = encrypt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl-passwords
smtp_sasl_mechanism_filter = !gssapi, !external, static:all
smtp_sasl_security_options = noanonymous
smtp_sender_dependent_authentication = yes relayhost = [plus.smtp.mail.yahoo.com]:587
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
relayhost = [smtp.bizmail.yahoo.com]:587
inet_protocols = ipv4

Se debe crear el archivo con las contraseñas SASL /etc/postfix/sasl-passwords:

usuario1@dominio.com usuario1@dominio.com:contraseña
usuario2@dominio.com usuario2@dominio.com:contraseña
...

Compilar el archivo de contraseñas:

# postmap hash:/etc/postfix/sasl-passwords

Finalmente, reiniciar el servicio de postfix:

# service postfix restart

Probar el envío de correos:

echo -e "Subject: Prueba\nEsta es una prueba" | sendmail -f usuario@yahoo.com destinatario@domino.com

En caso de problemas, verificar el archivo /var/log/syslog.