domingo, 12 de abril de 2015

FATAL: la autentificación Peer falló para el usuario «postgres»

Error de autentificación Peer en Psql

De manera predeterminada PostgreSQL en GNU/Linux Debian, deja habilitado el mecanismo de autentificación PEER para conexiones locales, por lo tanto si intenta conectarse desde la sesión de un usuario del sistema operativo, que no es usuario de base de datos, obtendrá un error de autentificación. (psql: FATAL:  la autentificación Peer falló para el usuario «postgres»), porque psql está obteniendo el nombre del usuario desde el propio Kernel para luego usarlo con nombre de usuario de base de datos al momento de intentar la autentificación.


Primer forma de arreglarlo

La primer solución no requiere cambiar nada. Solo consiste en utilizar la autentificación correctamente, iniciando sesión con postgres a nivel de sistema operativo y luego intentar autenticarse en psql.

usuario@laptop:~$ su postgres Contraseña: usuario@laptop:/home/usuario$ psql -d mi_basedatos psql (9.4.0) Digite «help» para obtener ayuda. mi_basedatos=#

La segunda forma de arreglarlo

La otra posibilidad es cambiar la configuración de autentificación, cambiándola de PEER a MD5, en el archivo de configuración de PostgreSQL.

Es muy recomendable hacer una copia del archivo de configuración antes de modificarlo, para hacer la copia introduzca el siguiente comando:
$ sudo cp /etc/postgresql/9.4/main/pg_hba.conf /etc/postgresql/9.4/main/pg_hba.conf_bk

Con el siguiente comando se hace la modificación automáticamente, pero tiene que copiar y pegar el comando con todos los espacios en blanco, tal y cómo está a continuación:
$ sed -i -e 's/local all postgres peer/local all postgres md5/g' /etc/postgresql/9.4/main/pg_hba.conf

Para comprobar que el cambio se aplicó correctamente introduzca el siguiente comando:
$ sudo diff /etc/postgresql/9.4/main/pg_hba.conf /etc/postgresql/9.4/main/pg_hba.conf_bk 85c85 < local all postgres md5 --- > local all postgres peer

Si el cambio no se hizo correctamente debe editar el archivo manualmente cambiando "peer" por "md5" en la linea que contiene el siguiente texto:
# Database administrative login by Unix domain socket local all postgres peer

Debería quedar así:
# Database administrative login by Unix domain socket local all postgres md5

Para editar el archivo introduzca el siguiente comando:
$ sudo gedit /etc/postgresql/9.4/main/pg_hba.conf

Finalmente, ya sea que haya hecho el cambio automáticamente o editando el archivo de configuración manualmente, deberá reiniciar el servicio de postgres para que los cambios surtan efectos, para hacerlo introduzca el siguiente comando:
$ sudo /etc/init.d/postgresql restart [sudo] password for usuario: [ ok ] Restarting postgresql (via systemctl): postgresql.service.

Ahora si podrá autentificarse en psql aunque el usuario del sistema operativo no sea usuario de base de datos. Tome en cuenta que siempre deberá indicar el usuario con el que intentará iniciar sesión, con el parámetro -U
usuario@laptop:~$ psql -U postgres -d mi_basedatos Contraseña para usuario postgres: psql (9.4.0) Digite «help» para obtener ayuda. mi_basedatos=#

viernes, 3 de abril de 2015

Galaxy S3 se queda pegado en el logo de Samsung


El presente artículo es una guía para solucionar el problema que describe el titulo, la misma está orientada a usuarios del GNU/Linux Debian (o similar), y se requiere algo de conocimiento previo en la interfaz de linea de comandos (Shell).

Al parecer un es un problema muy común en los terminales Samsung Galaxy S3, probablemente se deba a un error introducido por alguna actualización, realmente no indagué mucho la causa. En mi caso particular tengo instalada una distribución alternativa denominada CyanogenMod (basada en Android), específicamente la versión cm-10.2.0-i9300.zip.

Empezar por lo más sencillo

Lo primero que se puede intentar es "restaurar el teléfono al estado de fábrica". Este proceso también borrará la partición del datos del usuario, así que todos los datos se van a perder. Hay formas de respaldar los datos pero se escapan del alcance de esta guía.

Restaurar al estado de fábrica
Como el teléfono no carga el sistema operativo habrá que reiniciarlo en modo "recovery". Para hacerlo, reinicie o encienda el teléfono presionando simultáneamente los botones de: Volumen arriba + Encendido + Inicio, debe mantener los tres botones presionados hasta que vea el logo de Samsung, en ese momento los libera.


Si logró iniciar correctamente al "recovery mode" (modo de recuperación), debería ver un menú similar al que se muestra en la siguiente captura de pantalla. Para moverse entre las opciones utilice los botones volumen arriba y volumen abajo, para seleccionar una opción utilice el botón de encendido.

Para completar correctamente la restauración al modo de fábrica, seleccione y ejecute cada unas de las siguientes opciones, en el orden en que las enumero.
  1. Wipe cache partition
  2. Wipe data/factory reset
  3. Reboot system now
Con la tercera opción se reiniciará el teléfono y si esto funcionó ya debería iniciar el sistema operativo correctamente. Si no tuvo suerte debe continuar con un proceso un poco más complicado que se describe a continuación.

Reinstalar una ROM de fábrica

Si no funcionó el procedimiento anterior probablemente algo se estropeó con la imagen de recuperación de su smartphone. Por lo que procede ahora es intentar reinstalando una ROM de fábrica.

Descargar la ROM original de Samsung
Debe descargar la una versión reciente para su dispositivo, si no tiene una a mano a continuación dejo un enlace con el "Android 4.3 Jelly Bean" para el Galaxy S3 I9300.

I9300XXEMC2_I9300OXAEMC2_BTU.zip

Formatear particiones problemáticas
Para este propósito se necesita el "adb" (Android Debug Bridge), que permitirá manipular el dispositivo desde la PC, por medio de cable de datos USB, a través de una linea de comandos.

Para instalar el "adb" en GNU/Linux Debian, desde una terminal ejecute el siguiente comando.
$ sudo apt-get install android-tools-adb

Una vez instalado el "adb" debe arrancar el smartphone en modo "recovery", conectar el cable USB y desde una terminal en GNU/Linux ejecutar los siguientes comandos. Lo que está en este color no se digita, es parte del símbolo del sistema.
$ adb shell ~ # parted /dev/block/mmcblk0
(parted) print

Lo que debería arrojar la siguiente salida:
print Model: MMC VTU00M (sd/mmc) Disk /dev/block/mmcblk0: 15.8GB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 4194kB 8389kB 4194kB BOTA0 2 8389kB 12.6MB 4194kB BOTA1 3 12.6MB 33.6MB 21.0MB ext4 EFS 4 33.6MB 41.9MB 8389kB PARAM 5 41.9MB 50.3MB 8389kB BOOT 6 50.3MB 58.7MB 8389kB RECOVERY 7 58.7MB 92.3MB 33.6MB RADIO 8 92.3MB 1166MB 1074MB ext4 CACHE 9 1166MB 2777MB 1611MB ext4 SYSTEM 10 2777MB 3364MB 587MB ext4 HIDDEN 11 3364MB 3372MB 8389kB OTA 12 3372MB 15.8GB 12.4GB ext4 USERDATA (parted)

De esa salida se obtienen los datos que se necesitan para formatear las particiones "CACHE", "SYSTEM", "HIDDEN" y "USERDATA". Para salir de "parted", introduzca el comando "quit".
(parted) quit

Antes de formatear se debe intentar desmontar las particiones, si el comando retorna el error "Invalid argument", no hay de que preocuparse, solamente es porque la partición no estaba montada.
~ # umount /dev/block/mmcblk0p8
~ # umount /dev/block/mmcblk0p9 umount: can't umount /dev/block/mmcblk0p9: Invalid argument
~ # umount /dev/block/mmcblk0p10 umount: can't umount /dev/block/mmcblk0p10: Invalid argument
~ # umount /dev/block/mmcblk0p11 umount: can't umount /dev/block/mmcblk0p11: Invalid argument
~ # umount /dev/block/mmcblk0p12 umount: can't umount /dev/block/mmcblk0p12: Invalid argument

Para formatear la partición "CACHE" introduzca el siguiente comando
~ # mke2fs -t ext4 /dev/block/mmcblk0p8

El proceso de formateo arrojará la siguiente salida
mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 65536 inodes, 262144 blocks 13107 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=268435456 8 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 35 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.

Para formatear las particiones "SYSTEM", "HIDDEN" y "USERDATA" introduzca los siguientes comandos, uno a la vez. (omitiré la salida de cada comando, es muy parecida a la obtenida al formatear la partición "CACHE").
~ # mke2fs -t ext4 /dev/block/mmcblk0p9 ~ # mke2fs -t ext4 /dev/block/mmcblk0p10 ~ # mke2fs -t ext4 /dev/block/mmcblk0p12

Con esto se habrá terminado el proceso de formateo de las particiones problemáticas. Para salir de "adb", introduzca el comando "exit".
~ # exit


Descargar e instalar Heimdall
Para poder "flashear" (actualizar el firmware) en el dispositivo Samsung Galaxy S3, se necesita un programa, existe uno que es mejor que el popular Odin, sobre todo porque es multiplataforma, lo que permitirá realizar el proceso desde nuestro GNU/Linux Debian, estoy hablando de Heimdall, el cual se puede descargar desde bitbucket.


Para descargar la versión para GNU/Linux Debian de 32bits, utilice el siguiente vinculo
debian7-heimdall_1.4.0-0_i386.deb

Para descargar la versión para GNU/Linux Debian de 64bits, utilice el siguiente vinculo
debian7-heimdall_1.4.0-0_amd64.deb

Para instalar Heimdall, abra una terminal, cámbiese al directorio donde hizo la descarga y ejecute el siguiente comando.
$ sudo dpkg -i debian7-heimdall_1.4.0-0*.deb


Arrancar el smartphone en modo "download"
Para instalar la ROM original que se descargó en unos de los pasos anteriores, se debe iniciar el dispositivo en modo de descarga. Para hacerlo, reinicie o encienda el teléfono presionando simultáneamente los botones de: Volumen abajo + Encendido + Inicio, debe mantener los tres botones presionados hasta que vea el logo de Samsung, en ese momento los libera.


Si logró iniciar correctamente al "download mode" (modo de descarga), debería ver algo similar a lo que se muestra en la siguiente captura de pantalla. Para confirmar el modo de descarga presione el botón volumen arriba.


Reinstalando la ROM original con Heimdall
El "flasheo" de la ROM con Heindall se hace en partes. Normalmente para este proceso se ocupa un archivo .pit, que es como un descriptor de la particiones, pero para no complicar más esta guía voy a omitir el cómo generarlo. Ustedes no lo van a necesitar porque yo les daré el nombre exacto de las particiones a sobre escribir.

Lo primero es descomprimir el archivo con ROM original de Samsung.
$ unzip I9300XXEMC2_I9300OXAEMC2_BTU.zip Archive: I9300XXEMC2_I9300OXAEMC2_BTU.zip inflating: KIES_HOME_I9300XXEMC2_I9300OXAEMC2_1042335_REV00_user_low_ship.tar.md5 inflating: SS_DL.dll 

Se cambia el nombre al archivo, eliminando la extensión el ".md5" para posteriormente desempaquetarlo.
$ mv KIES_HOME_I9300XXEMC2_I9300OXAEMC2_1042335_REV00_user_low_ship.tar.md5 KIES_HOME_I9300XXEMC2_I9300OXAEMC2_1042335_REV00_user_low_ship.tar

Finalmente se desempaqueta el archivo ".tar", para extraer los archivos recovery.img, system.img, modem.bin, cache.img, hidden.img, sboot.bin, tz.img, con los que se hará la reinstalación.
$ tar xvf KIES_HOME_I9300XXEMC2_I9300OXAEMC2_1042335_REV00_user_low_ship.tar boot.img recovery.img system.img modem.bin cache.img hidden.img sboot.bin tz.img

Ahora lo que procede es "flashear" cada uno de estos archivos. Para prevenir daños permanentes en el dispositivo, siga las siguientes instrucciones.
  • Asegúrese de que la batería del dispositivo tenga al menos un 80% de la carga
  • Es deseable que la PC tenga respaldo eléctrico (UPS), si es una portátil conéctela al toma corriente 
  • Conecte el smartphone a la PC con el cable USB
  • Inicie el smartphone en modo descarga como se indicó en el paso previo
  • Nunca desconecte el dispositivo mientras se ejecuta una actualización

Desde una terminal, permaneciendo en el directorio donde se desempaquetaron los archivos ejecute los siguientes comandos.
$ sudo heimdall flash --BOOT boot.img --no-reboot

Este proceso arrojará la siguiente salida.
Heimdall v1.4.0 Copyright (c) 2010-2013, Benjamin Dobell, Glass Echidna http://www.glassechidna.com.au/ This software is provided free of charge. Copying and redistribution is encouraged. If you appreciate this software and you would like to support future development please consider donating: http://www.glassechidna.com.au/donate/ Initialising connection... Detecting device... Claiming interface... Attempt failed. Detaching driver... Claiming interface again... Setting up interface... Initialising protocol... Protocol initialisation successful. Beginning session... Some devices may take up to 2 minutes to respond. Please be patient! Session begun. Downloading device's PIT file... PIT file download successful. Uploading BOOT 100% BOOT upload successful Ending session... Rebooting device... Releasing device interface... Re-attaching kernel driver...

Continúe el proceso ejecutando los siguientes comandos (debe reiniciar manualmente en modo "download" luego de hacer cada carga, omitiré la salida por ser prácticamente igual a la descrita al flashear "boot").
$ sudo heimdall flash --CACHE cache.img --no-reboot //Debe reiniciar el dispositivo en modo "download" //antes de ejecutar el siguiente comando $ sudo heimdall flash --HIDDEN hidden.img --no-reboot //Debe reiniciar el dispositivo en modo "download" //antes de ejecutar el siguiente comando $ sudo heimdall flash --RADIO modem.bin --no-reboot //Debe reiniciar el dispositivo en modo "download" //antes de ejecutar el siguiente comando $ sudo heimdall flash --RECOVERY recovery.img --no-reboot //Debe reiniciar el dispositivo en modo "download" //antes de ejecutar el siguiente comando $ sudo heimdall flash --BOOTLOADER sboot.bin --no-reboot //Debe reiniciar el dispositivo en modo "download" //antes de ejecutar el siguiente comando $ sudo heimdall flash --SYSTEM system.img --no-reboot //Debe reiniciar el dispositivo en modo "download" //antes de ejecutar el siguiente comando $ sudo heimdall flash --TZSW tz.img

Luego de esto, puede reiniciar su smartphone de manera normal y el mismo debería iniciar el sistema operativo original satisfactoriamente. Luego de eso puede proceder a reinstalar su distro CyanogenMod de la manera habitual e igualmente el teléfono seguirá arrancando de manera normal.
Mizaq's Blog

Entradas populares