martes, 27 de agosto de 2013

MacBook Pro 2008 pantalla en negro y no responde [2/2]

Todo comenzó con MacBook Pro 2008 pantalla en negro y no responde [1/2].

De esto ya hace bastante tiempo, pero no quería dejar pasar la oportunidad de dejar rastro en Internet sobre lo sucedido con mi MacBook Pro del 2008.

Tras mucho buscar y buscar me decidí por llevarlo al servicio técnico Appel oficial en Sevilla (http://www.fotiste.com/ ADVERTENCIA: la página es fantástica, si no tiene instalado flash te salta un javascript que fuerza a descargarlo y si no lo instalas no puedes ver la web). Allí me dieron un presupuesto de reparación que rondaba los 500€; la reparación consistía en sustituir la placa base del portátil (así también arreglo yo las cosas, lo montas nuevo y listo).

Les pregunté por un reballing, un resumen para el que no conozca el termino y no quiera perder el tiempo en leer un tostón; el reballing consiste en volver a soldar las conexiones de un micro. Me dijeron que eso a los Macs no se le puede hacer porque "llevan soldados de 4 capas". No encontré información sobre ese supuesto soldado de 4 capas en Internet y me extrañó bastante.

Me dispuse a probar con un reballing. Para esto es necesaria una máquina especial; casualmente tengo un colega con una tienda de informática que tiene la máquina (http://www.conecta-pc.es/ Dos Hermanas, Avd de España).

Tras desmontar la placa base del Mac, meterla en la máquina, realizar el proceso y volver a montarla... FUNCIONA... jaque mate al servicio técnico de Appel.




lunes, 26 de agosto de 2013

Estadísticas del servidor de correo con mailgraph

Pues mailgraph es muy útil para obtener información sobre el funcionamiento de nuestros servidores de correo, nos da bastante información sobre la carga que tiene el servidor y las horas punta de carga. Además es muy simple de instalar, apenas necesita un simple "apt-ge install" o "aptitude install" lo que más os guste y listo.
~# aptitude install mailgraph
Se instalarán los siguiente paquetes NUEVOS:  
  fontconfig{a} fontconfig-config{a} libcairo2{a} libdatrie1{a} libdbi1{a} libfile-tail-perl{a} libfontconfig1{a} libpango1.0-0{a}
  libpixman-1-0{a} libpng12-0{a} librrd4{a} librrds-perl{a} libthai-data{a} libthai0{a} libxcb-render0{a} libxcb-shm0{a} libxft2{a}
  libxrender1{a} mailgraph ttf-dejavu{a} ttf-dejavu-core{a} ttf-dejavu-extra{a}
0 paquetes actualizados, 22 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 6.554 kB de ficheros. Después de desempaquetar se usarán 16,6 MB.
¿Quiere continuar? [Y/n/?]
Des: 1 http://ftp.rediris.es/debian/ wheezy/main ttf-dejavu-core all 2.33-3 [1.021 kB]
Des: 2 http://ftp.rediris.es/debian/ wheezy/main fontconfig-config all 2.9.0-7.1 [233 kB]
Des: 3 http://ftp.rediris.es/debian/ wheezy/main libfontconfig1 amd64 2.9.0-7.1 [300 kB]
Des: 4 http://ftp.rediris.es/debian/ wheezy/main libpixman-1-0 amd64 0.26.0-4 [427 kB]                                                    
Des: 5 http://ftp.rediris.es/debian/ wheezy/main libpng12-0 amd64 1.2.49-1 [190 kB]                                                      
Des: 6 http://ftp.rediris.es/debian/ wheezy/main libxcb-render0 amd64 1.8.1-2 [18,5 kB]                                                  
Des: 7 http://ftp.rediris.es/debian/ wheezy/main libxcb-shm0 amd64 1.8.1-2 [10,3 kB]                                                      
Des: 8 http://ftp.rediris.es/debian/ wheezy/main libxrender1 amd64 1:0.9.7-1 [32,2 kB]                                                    

Des: 9 http://ftp.rediris.es/debian/ wheezy/main libcairo2 amd64 1.12.2-3 [912 kB]                                                        

Des: 10 http://ftp.rediris.es/debian/ wheezy/main libdatrie1 amd64 0.2.5-3 [28,6 kB]                                                      

Des: 11 http://ftp.rediris.es/debian/ wheezy/main libthai-data all 0.1.18-2 [154 kB]                                                      
Des: 12 http://ftp.rediris.es/debian/ wheezy/main libthai0 amd64 0.1.18-2 [42,3 kB]                                                        
Des: 13 http://ftp.rediris.es/debian/ wheezy/main libxft2 amd64 2.3.1-1 [61,0 kB]                                                        
Des: 14 http://ftp.rediris.es/debian/ wheezy/main fontconfig amd64 2.9.0-7.1 [348 kB]                                                    
Des: 15 http://ftp.rediris.es/debian/ wheezy/main libpango1.0-0 amd64 1.30.0-1 [461 kB]                                                  
Des: 16 http://ftp.rediris.es/debian/ wheezy/main ttf-dejavu-extra all 2.33-3 [1.759 kB]                                                  
Des: 17 http://ftp.rediris.es/debian/ wheezy/main ttf-dejavu all 2.33-3 [30,6 kB]                                                        
Des: 18 http://ftp.rediris.es/debian/ wheezy/main libfile-tail-perl all 0.99.3-5 [23,3 kB]                                                
Des: 19 http://ftp.rediris.es/debian/ wheezy/main libdbi1 amd64 0.8.4-6 [31,7 kB]                                                        
Des: 20 http://ftp.rediris.es/debian/ wheezy/main librrd4 amd64 1.4.7-2 [322 kB]                                                          
Des: 21 http://ftp.rediris.es/debian/ wheezy/main librrds-perl amd64 1.4.7-2 [116 kB]                                                    
Des: 22 http://ftp.rediris.es/debian/ wheezy/main mailgraph all 1.14-11 [34,6 kB]                                                          
Descargados 6.554 kB en 32seg. (204 kB/s)                                                                                                
Preconfigurando paquetes ...
Seleccionando el paquete ttf-dejavu-core previamente no seleccionado.
(Leyendo la base de datos ... 34481 ficheros o directorios instalados actualmente.)
Desempaquetando ttf-dejavu-core (de .../ttf-dejavu-core_2.33-3_all.deb) ...
Seleccionando el paquete fontconfig-config previamente no seleccionado.
Desempaquetando fontconfig-config (de .../fontconfig-config_2.9.0-7.1_all.deb) ...
Seleccionando el paquete libfontconfig1:amd64 previamente no seleccionado.
Desempaquetando libfontconfig1:amd64 (de .../libfontconfig1_2.9.0-7.1_amd64.deb) ...
Seleccionando el paquete libpixman-1-0:amd64 previamente no seleccionado.
Desempaquetando libpixman-1-0:amd64 (de .../libpixman-1-0_0.26.0-4_amd64.deb) ...
Seleccionando el paquete libpng12-0:amd64 previamente no seleccionado.
Desempaquetando libpng12-0:amd64 (de .../libpng12-0_1.2.49-1_amd64.deb) ...
Seleccionando el paquete libxcb-render0:amd64 previamente no seleccionado.
Desempaquetando libxcb-render0:amd64 (de .../libxcb-render0_1.8.1-2_amd64.deb) ...
Seleccionando el paquete libxcb-shm0:amd64 previamente no seleccionado.
Desempaquetando libxcb-shm0:amd64 (de .../libxcb-shm0_1.8.1-2_amd64.deb) ...
Seleccionando el paquete libxrender1:amd64 previamente no seleccionado.
Desempaquetando libxrender1:amd64 (de .../libxrender1_1%3a0.9.7-1_amd64.deb) ...
Seleccionando el paquete libcairo2:amd64 previamente no seleccionado.
Desempaquetando libcairo2:amd64 (de .../libcairo2_1.12.2-3_amd64.deb) ...
Seleccionando el paquete libdatrie1:amd64 previamente no seleccionado.
Desempaquetando libdatrie1:amd64 (de .../libdatrie1_0.2.5-3_amd64.deb) ...
Seleccionando el paquete libthai-data previamente no seleccionado.
Desempaquetando libthai-data (de .../libthai-data_0.1.18-2_all.deb) ...
Seleccionando el paquete libthai0:amd64 previamente no seleccionado.
Desempaquetando libthai0:amd64 (de .../libthai0_0.1.18-2_amd64.deb) ...
Seleccionando el paquete libxft2:amd64 previamente no seleccionado.
Desempaquetando libxft2:amd64 (de .../libxft2_2.3.1-1_amd64.deb) ...
Seleccionando el paquete fontconfig previamente no seleccionado.
Desempaquetando fontconfig (de .../fontconfig_2.9.0-7.1_amd64.deb) ...
Seleccionando el paquete libpango1.0-0:amd64 previamente no seleccionado.
Desempaquetando libpango1.0-0:amd64 (de .../libpango1.0-0_1.30.0-1_amd64.deb) ...
Seleccionando el paquete ttf-dejavu-extra previamente no seleccionado.
Desempaquetando ttf-dejavu-extra (de .../ttf-dejavu-extra_2.33-3_all.deb) ...
Seleccionando el paquete ttf-dejavu previamente no seleccionado.
Desempaquetando ttf-dejavu (de .../ttf-dejavu_2.33-3_all.deb) ...
Seleccionando el paquete libfile-tail-perl previamente no seleccionado.
Desempaquetando libfile-tail-perl (de .../libfile-tail-perl_0.99.3-5_all.deb) ...
Seleccionando el paquete libdbi1 previamente no seleccionado.
Desempaquetando libdbi1 (de .../libdbi1_0.8.4-6_amd64.deb) ...
Seleccionando el paquete librrd4 previamente no seleccionado.
Desempaquetando librrd4 (de .../librrd4_1.4.7-2_amd64.deb) ...
Seleccionando el paquete librrds-perl previamente no seleccionado.
Desempaquetando librrds-perl (de .../librrds-perl_1.4.7-2_amd64.deb) ...
Seleccionando el paquete mailgraph previamente no seleccionado.
Desempaquetando mailgraph (de .../mailgraph_1.14-11_all.deb) ...
Procesando disparadores para man-db ...
Configurando ttf-dejavu-core (2.33-3) ...
Configurando fontconfig-config (2.9.0-7.1) ...
Configurando libfontconfig1:amd64 (2.9.0-7.1) ...
Configurando libpixman-1-0:amd64 (0.26.0-4) ...
Configurando libpng12-0:amd64 (1.2.49-1) ...
Configurando libxcb-render0:amd64 (1.8.1-2) ...
Configurando libxcb-shm0:amd64 (1.8.1-2) ...
Configurando libxrender1:amd64 (1:0.9.7-1) ...
Configurando libcairo2:amd64 (1.12.2-3) ...
Configurando libdatrie1:amd64 (0.2.5-3) ...
Configurando libthai-data (0.1.18-2) ...
Configurando libthai0:amd64 (0.1.18-2) ...
Configurando libxft2:amd64 (2.3.1-1) ...
Configurando fontconfig (2.9.0-7.1) ...
Regenerating fonts cache... done.
Configurando libpango1.0-0:amd64 (1.30.0-1) ...
Configurando ttf-dejavu-extra (2.33-3) ...
Configurando ttf-dejavu (2.33-3) ...
Configurando libfile-tail-perl (0.99.3-5) ...
Configurando libdbi1 (0.8.4-6) ...
Configurando librrd4 (1.4.7-2) ...
Configurando librrds-perl (1.4.7-2) ...
Configurando mailgraph (1.14-11) ...
Creating config file /etc/default/mailgraph with new version
[ ok ] Starting : mailgraph.
Tras instalarlo simplemente vais a un navegado, poneis la dirección de vuestro servidor añadiendo "/cgi-bin/mailgraph.cgi" (http://xxx.xxx.xxx.xxx/cgi-bin/mailgraph.cgi) y disfrutáis de la información pasados unos minutos.

Os dejo una captura de ejemplo sobre lo que podéis ver.



domingo, 25 de agosto de 2013

Modo recuperación Debian

Recientemente he necesitado recuperar un servidor y descubrí una grata sorpresa que no había visto antes o la han incorporado recientemente. Es un modo recuperación en los CDs de instalación de Debian.

Las capturas que adjunto las he sacado del cd netinstall de debian 7.1, pero supongo que en cualquier debian 7.1 también podréis encontrar estas opciones.


En la primera pantalla que nos aparece cuando iniciamos el cd netinstall, seleccionamos la tercera opción "Avanced options" y en la siguiente pantalla "Rescue mode".




Esto da la sensación de que está comenzando una instalación de Debian estándar, pero no es así. Está recogiendo datos básicos de configuración del sistema para la consola de recuperación.







Aquí vemos algo diferente al instalador de Debian, no pide una partición donde montar el sistema raíz. En la máquina donde estaba haciendo las pruebas no tenía disco duro, así que no me muestra ningún sistema raíz disponible.

De todos modos esto no es necesario para entrar en la consola de recuperación. Y si lo que quieres es pasar un fsck al disco principal, este no debe estar montado.

Simplemente no montamos ningún sistema y continuamos.




Y finalmente se ejecuta la consola de recuperación, ahora ya podemos entrar en el sistema como si de un cdlive se tratara para realizar nuestras tareas de administración.


sábado, 24 de agosto de 2013

Cifrar particiones GNU/Linux

Pues el título lo dice todo, un pequeño manual sobre como cifrar particiones bajo GNU/Linux, como siempre yo los experimentos los hago bajo Debian, pero casi seguro que con algunas modificaciones funciona en otras distribuciones.

En primer lugar es necesario cargar los siguientes módulos, para ello utilizamos el comando "modprobe", recordad que tenemos el comando "lsmod" para ver los módulos cargados y que en el fichero "/etc/modules" definimos los módulos que queremos cargar en el inicio del sistema.
modprobe aes
modprobe dm-crypt
modprobe dm-mod
modprobe sha256
También necestiamos instalar el paquete "cryptsetup".
apt-get install cryptsetup
Y a continuación ejecutamos el siguiente grupo de comandos. Que en primer lugar encripta el dispositivo, accede a la información encriptada, crea el sistema de ficheros ext4 y finalmente monta el dispositivo.
cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/sdb1
cryptsetup luksOpen /dev/sdb1 decrypt
mkfs.ext4 /dev/mapper/decrypt
mount /dev/mapper/decrypt /mnt
Para montar el dispositvo simplemtne tendremos que ejecutar estas dos. Tras el primer comando nos pedirála clave que utilizamos para cifrar la partición y poder acceder al contenido. El segundo comando simplemente monta el dispositivo para poder leer o escribir.
cryptsetup luksOpen /dev/sdb1 decrypt
mount /dev/mapper/decrypt /mnt
Se pueden utilizar modificardores para que NO solicite la clave y se la pasemos directamente, pero no recomiendo para nada, las claves NUNCA deben estar escritas en ningún sitio, las claves se memorizan y puto. Si el sistema se cae ahí tiene que estar el administrador para volver a iniciarlo.

Este es un pequeño script que podemos dejar a mano para montar el sistema si se cae.
#!/bin/bash
cryptsetup luksOpen /dev/sdb1 decrypt
mount /dev/sdb1 /opt

viernes, 23 de agosto de 2013

Iniciar máquina virtualbox desde usb

En una ocasión necesité iniciar una máquina virtual virtualbox desde un dispositivo de almacenamiento usb; finalmente encontré como hacerlo http://agnipulse.com/2009/07/boot-your-usb-drive-in-virtualbox/ 

Realmente es bastante simple, únicamente hay que ejecutar el siguiente comando:

VBoxManage internalcommands createrawvmdk -filename usb.vmdk -rawdisk /dev/sdb -relative

Esto nos creará un fichero usb.vmdk que es un "enlace" a nuestro dispositivo usb. Por esta razón el fichero ocupa unos pocos bytes y no el tamaño completo de nuestro usb. Así pues es necesario que el usb esté conectado mientras queramos usarlo puesto que usb.vmdk es un "enlace" y no una copia del usb.

Una vez creado el vmdk simplemente lo vinculamos con la máquina virtual donde queremos utilizarlo y listo.

He tenido problemas de permisos; para solucionarlo simplemente lo he ejecutado todo como root y después he ejecutado virtualbox también como root. Parece que si no eres root tiene problemas al acceder al dispositivo usb.

jueves, 22 de agosto de 2013

Crear Debian usb booteable

Esto es un resumen rápido para crear un dispositivo usb que se pueda iniciar y así poder acceder a un sistema "roto" y realizar tareas de administración. Si necesitas más información os recomiendo buscar el wiki de debian, hay un articulo específico sobre este tema. Pero creo que este método que yo explico es más simple y rápido.

Para crear nuestro dispositivo usb que podamos iniciar un sistema Debian, necesitaremos:


Es posible que cuando leas este artículo existan nuevas versiones de los ficheros a los que hago referencia o que esos enlaces dejen de estar disponibles.

Respecto al fichero boot.img.tgz, lo podrás encontrar en cualquier repositorio de Debian, normalmente en el directorio "main/installer-i386/current/images/hd-media/".

La ISO puedes descargar cualquiera (os dejo un enlace con las isos cds de Debian 7.1), yo dejo el enlace de la netinstall para i386 porque es la que menos pesa, es la arquitectura que necesito y para cosas básicas es más que suficiente.

En primer lugar conectamos el dispositivo a nuestra máquina; no lo he comentado pero necesitamos  que nuestra máquina tenga un sistema operativo GNU/Linux. Los comandos que utilizaremos son muy estándar y están en todas las distribuciones GNU/Linux.

Dependiendo del la distribución que utilicemos puede que nos monte el dispositivo usb simplemente por conectarlo. Necesitamos que esté desmontado; puedes hacerlo desde el entorno de escritorio o desde linea de comandos con un "umount /dev/sdx1".

Es muy importante que nos aseguremos del nombre que el sistema le ha dado a nuestro dispositivo usb, /dev/sda suele ser el disco duro principal, si no tenemos más discos duros lo normal es que /dev/sdb sea nuestro nuevo dispositivo usb. Para asegurar puedes utilizar el comando "dmesg" tras conectar el dispositivo y al final del listado veremos algo así:

[ 7416.604129] usb 2-1: new high-speed USB device number 3 using ehci-pci
[ 7417.324920] usb 2-1: New USB device found, idVendor=090c, idProduct=1000
[ 7417.324932] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 7417.324940] usb 2-1: Product: Flash Disk
[ 7417.324947] usb 2-1: Manufacturer: USB
[ 7417.324953] usb 2-1: SerialNumber: FB08091700089215
[ 7418.012644] Initializing USB Mass Storage driver...
[ 7418.013058] scsi5 : usb-storage 2-1:1.0
[ 7418.013460] usbcore: registered new interface driver usb-storage
[ 7418.013462] USB Mass Storage support registered.
[ 7419.013550] scsi 5:0:0:0: Direct-Access     USB      Flash Disk       1100 PQ: 0 ANSI: 0 CCS
[ 7419.014893] sd 5:0:0:0: Attached scsi generic sg2 type 0
[ 7419.018379] sd 5:0:0:0: [sdb] 1957888 512-byte logical blocks: (1.00 GB/956 MiB)
[ 7419.019514] sd 5:0:0:0: [sdb] Write Protect is off
[ 7419.019518] sd 5:0:0:0: [sdb] Mode Sense: 43 00 00 00
[ 7419.020717] sd 5:0:0:0: [sdb] No Caching mode page present
[ 7419.020721] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[ 7419.026348] sd 5:0:0:0: [sdb] No Caching mode page present
[ 7419.026352] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[ 7419.028671]  sdb: sdb1
[ 7419.032739] sd 5:0:0:0: [sdb] No Caching mode page present
[ 7419.032743] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[ 7419.033480] sd 5:0:0:0: [sdb] Attached SCSI disk
Como podemos ver en mi caso ha llamado sdb al dispositivo usb. Así pues "umount /dev/sdb1" para desmontarlo. Si ejecutamos simplemente "mount" nos mostrará los dispositivos montados, tenemos que asegurarnos de que nuestro usb no esté montado.

Ahora vamos a hacer que nuestro usb sea booteable, para ello utilizaremos la imagen boot.img.tgz. Desde el directorio donde tengamos la imagen, ejecutaremos el siguiente comando. Prestad atención porque es /dev/sdb y no /dev/sdb1, no es necesario especificar la partición.

IMPORTANTE: Por si no lo suponías, esta acción borrará toda la información del dispositivo.
zcat boot.img.tgz > /dev/sdb 
Tras realizar esta operación, que puede tardar algunos minutos. Tenemos que montar el dispositivo con el comando "mount /dev/sdb /mnt/". Aquí podemos ver el contenido del dispositivo ahora.

root@test:~# mount /dev/sdb /mnt/
root@test:~# ls -l /mnt/
total 33436
-rwxr-xr-x 1 root root      361 jun 13 21:45 adgtk.cfg
-rwxr-xr-x 1 root root      259 jun 13 21:45 adtxt.cfg
-rwxr-xr-x 1 root root       62 jun 13 21:45 disk.lbl
-rwxr-xr-x 1 root root       56 jun 13 21:45 exithelp.cfg
-rwxr-xr-x 1 root root      568 jun 13 21:45 f10.txt
-rwxr-xr-x 1 root root      881 jun 13 21:45 f1.txt
-rwxr-xr-x 1 root root      665 jun 13 21:45 f2.txt
-rwxr-xr-x 1 root root      852 jun 13 21:45 f3.txt
-rwxr-xr-x 1 root root      486 jun 13 21:45 f4.txt
-rwxr-xr-x 1 root root      806 jun 13 21:45 f5.txt
-rwxr-xr-x 1 root root     1212 jun 13 21:45 f6.txt
-rwxr-xr-x 1 root root      916 jun 13 21:45 f7.txt
-rwxr-xr-x 1 root root     1041 jun 13 21:45 f8.txt
-rwxr-xr-x 1 root root      765 jun 13 21:45 f9.txt
-rwxr-xr-x 1 root root   159629 jun 13 21:45 g2ldr
-rwxr-xr-x 1 root root     8192 jun 13 21:45 g2ldr.mbr
-rwxr-xr-x 1 root root      132 jun 13 21:45 gtk.cfg
-rwxr-xr-x 1 root root 24459775 jun 13 21:45 initrdg.gz
-rwxr-xr-x 1 root root  6355044 jun 13 21:45 initrd.gz
-r-xr-xr-x 1 root root    32256 jun 13 21:45 ldlinux.sys
-rwxr-xr-x 1 root root  2510272 jun 13 21:45 linux
-rwxr-xr-x 1 root root      647 jun 13 21:45 menu.cfg
-rwxr-xr-x 1 root root      190 jun 13 21:45 prompt.cfg
-rwxr-xr-x 1 root root      154 jun 13 21:45 rqgtk.cfg
-rwxr-xr-x 1 root root      118 jun 13 21:45 rqtxt.cfg
-rwxr-xr-x 1 root root   366350 jun 13 21:45 setup.exe
-rwxr-xr-x 1 root root      141 jun 13 21:45 spkgtk.cfg
-rwxr-xr-x 1 root root    78821 jun 13 21:45 splash.png
-rwxr-xr-x 1 root root      691 jun 13 21:45 stdmenu.cfg
-rwxr-xr-x 1 root root       87 jun 13 21:45 syslinux.cfg
-rwxr-xr-x 1 root root      128 jun 13 21:45 txt.cfg
-rwxr-xr-x 1 root root   155792 jun 13 21:45 vesamenu.c32
-rwxr-xr-x 1 root root      196 jun 13 21:45 win32-loader.ini
Por último copiaremos la iso en la raiz del dispositivo "cp debian-7.1.0-i386-netinst.iso /mnt/", tras esta operación podemos desmontar el dispositivo usb y conectarlo a una máquina para poder iniciarla desde nuestro nuevo debian usb.

Recuerda que el inicio desde usb puede que no esté activado en la maquina, para ello tendrás que entrar  en la bios y activar el inicio desde dispositivos usb.

Finalmente ya puedes iniciar Debian desde el usb y puedes utilizar el modo recuperación para obtener una consola básica donde realizar algunas gestiones de administración.