qm unlockSe desbloquea la máquina virtual y se puede ejecutar normalmente. El "vmid" es el número que identifica a la máquina virtual dentro del sistema.
verificación google
lunes, 30 de diciembre de 2013
Proxmox "Error: VM is locked (backup)"
Encontré este error "Error: VM is locked (backup)" en mi servidor de virtualización Proxmox; al intentar arrancar una de las máquinas virtuales. Realmente no había ningún backup en ejecución. La solución es bastante simple, con el siguiente comando:
jueves, 26 de diciembre de 2013
The PostgreSQL server failed to start. Please check the log output
Hace poco con un PostgreSQL 8.4 tuve este problema; devolvía este error "The PostgreSQL server failed to start. Please check the log output" en el arranque del sistema. Pero después PostgreSQL funcionaba correctamente, y en los log no conseguí encontrar nada.
Finalmente descubrí que en el fichero "pg_hba.conf" había una IP fuera de rango y esto parece que confundía al servidor PostgreSQL, le quité esa linea e inició sin devolver ningún error en el inicio de PostgreSQL.
Finalmente descubrí que en el fichero "pg_hba.conf" había una IP fuera de rango y esto parece que confundía al servidor PostgreSQL, le quité esa linea e inició sin devolver ningún error en el inicio de PostgreSQL.
jueves, 19 de diciembre de 2013
Problemas con teclado en Ubuntu 13.10
No sabría decir porqué, pero en ocasiones cuando inicio mi nuevo Ubuntu 13.10 no tiene la misma configuración de teclado que cuando lo apagué. El problema está que mueve las teclas de sitio, es decir, el teclado que tiene configurado no es el mismo que el que tengo físicamente en mi pc y por ejemplo al intentar escribir una "/" el carácter que me aparece es un "&", también tengo problemas con los signos de puntuación o los caracteres "* } { [ ] < >".
Esto tiene una fácil y rápida solución, ejecutamos el siguiente comando y ya está:
Esto tiene una fácil y rápida solución, ejecutamos el siguiente comando y ya está:
sudo setxkbmap -layout 'es,es' -model pc105Nuestro teclado volverá a ser el de siempre.
viernes, 22 de noviembre de 2013
RAID status not OK. Exiting Debian 7.2
Jugando con un RAID software montado en Debian 7.2 me encontré que todo funcionaba bien, pero uno de los RAID que tenía montado no funcionaba bien. El RAID donde estaba montado el sistema funcionaba perfectamente porque tras unas pruebas de ruptura, lo había recuperado. Pero el que me producía el error correspondía al RAID destinado a la memoria de intercambio (swap).
Me di cuenta del error en el arranque del sistema, justo cuando comenzaba a arrancar Debian lo primero que hace es montar los RAID y este proceso devolvía un error. Puesto que el problema estaba en el RAID destinado a memoria de intercambio no notaba nada en el sistema. Para confirmar el error monté "bootlogd" para ver algo más de información, en la pantalla de carga no me daba tiempo a leer nada, simplemente vi un "FAIL" y me puse a investigar de donde venía.
Para el que no esté familiarizado con "bootlogd" en su día escribí un pequeño artículo sobre como instalarlo y configurarlo.
Tras la instalación simplemente tienes que ver el contenido de "/var/log/boot" y yo me encontré con "RAID status not OK. Exiting", así que efectivamente algo no estaba cargando bien en el RAID.
Para verificar el estado de los RAID utilizaremos el comando "mdadm" indicando el RAID que queremos verificar, en mi caso tengo dos RAID; /dev/md0 y /dev/md1. Cuando verifiqué el estado de /dev/md1 efectivamente encontré "State : clean, resyncing (PENDING)" en lugar de un simple "State : clean".
root@debian:~# mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Thu Nov 14 12:13:46 2013
Raid Level : raid1
Array Size : 14744448 (14.06 GiB 15.10 GB)
Used Dev Size : 14744448 (14.06 GiB 15.10 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Nov 14 12:39:40 2013
State : clean, resyncing (PENDING) Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : debian:1 (local to host debian)
UUID : 58db8a25:19229d31:ec4eb31f:6dc16a4a
Events : 3
Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda2
1 8 18 1 active sync /dev/sdb2
Así pues hay que lanzar un "mdadm --readwrite /dev/md1" para que comience el proceso de recuperación. Este comando lanzará un proceso backgrund, es decir, no nos bloqueará el terminal desde el que lancemos el proceso con el consecuente miedo de que se cierre y perdamos el proceso.
root@debian:~# mdadm --readwrite /dev/md1Para tener una estimación del tiempo que va a tardar en terminar el proceso debemos visualizar el contenido del fichero "/proc/mdstat":
root@debian:~# cat /proc/mdstatFinalmente el proceso llegará a su fin; sin hace nada más el RAID funcionará correctamente, ya no volveremos a ver errores en el inicio del sistema. Nuestro RAID ha sido recuperado.
Personalities : [raid1]
md1 : active raid1 sda2[0] sdb2[1]
14744448 blocks super 1.2 [2/2] [UU]
[====>................] resync = 22.6% (3337408/14744448) finish=2.9min speed=64360K/sec
md0 : active raid1 sda1[3] sdb1[2]
473500480 blocks super 1.2 [2/2] [UU]
unused devices:
root@debian:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda2[0] sdb2[1]
14744448 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sda1[3] sdb1[2]
473500480 blocks super 1.2 [2/2] [UU]
unused devices:
jueves, 21 de noviembre de 2013
Crear RAID 1 Software Debian
Esta entrada en mi blog no es original mía. La he sacado de "http://www.lintips.com/?q=node/88" pero no es la primera vez que hago referencia a algún manual externo y éste termina por desaparecer por una u otra razón, ya sea por problemas temporales en el servidor donde está alojado o porque el dueño del documento decidió eliminarlo.
Para evitar estos problemas que puede ser bastante incómodo, replicado el post dentro de mi blog. Esta replica la realizo para apoyar mi entrada sobre recuperación de RAID software. Y que siempre que alguien acceda a la recuperación de RAID software, también pueda tener acceso a este manual sobre como montar el RAID desde la instalación de Debian.
Repetimos el mismo paso para el disco secundario.
Creamos, en el primer disco, las particiones que necesitemos y las definimos de tipo "volumen físico para RAID". En este caso los discos son de 85.9GB y voy a crear 2 particiones primarias: sda1 de 83,9 GB (será el volumen donde irá la /) y sda2 de 2GB (será el volumen swap o "área de intercambio").
Repetimos los mismos pasos para el segundo disco, asegurándonos que las particiones las definimos exactamente con el mismo tamaño. Tras este paso nos quedará algo como esto:
Ahora desde esa misma pantalla seleccionamos la primera opción "Configurar RAID por software"
y indicamos que escriba los cambios en los dispositivos.
y indicamos que escriba los cambios en los dispositivos.
Nos aparecerá el menú de configuración de multi-discos (MD) y RAID por software, donde seleccionamos la acción Crear un dispositivo MD
De tipo RAID 1, con 2 dispositivos activos y 0 libres (spare discs).
Y selecciono la partición de cada disco físico que se va a utilizar para este primer MD (md0).
Repito estos pasos para el segundo volumen (md1) y una vez definidos todos los MD, seleccionamos Terminar para que se creen. Con lo que en la utilidad de Particionado ya aparecen los dos dispositivos RAID.
Solo faltara definir en estos volúmenes el sistema de ficheros a utilizar, el uso que le vamos a dar (punto de montaje) y formatearlos. Con ello ya hemos terminado y continuamos la instalación de Debian como si fuese un disco real.
Como nota final deciros que es muy importarte que la partición swap también este en un volumen raid, como he definido aquí, si solo esta en un disco y este falla el sistema se bloquearía.
miércoles, 20 de noviembre de 2013
Virtualizar máquina física
Para virtualizar una máquina física, únicamente necesitamos pasar el disco duro físico a un estándar de virtualización. Esto es suficiente para sistemas operativos GNU/Linux, pero para otros sistemas operativos el proceso puede ser algo más complicado y existen herramientas especificas para este fin.
Desde GNU/Linux necesitamos clonar el disco del sistema de la máquina física al disco duro del sistema de la máquina virtual. Esto es tan simple como ejecutar el comando:
dd of=/dev/sda). Pero claro, esto no podemos ejecutarlo tal cual en un sistema que está ejecutándose, porque no podemos copiar directamente un disco duro mientras el sistema lo está utilizándolo. Corremos el riesgo de que se modifiquen cosas que ya hemos copiado y el disco no sería consistente.
Este proceso es recomendable hacerlo en frio, es decir, con el sistema parado. Utilizaremos un CD Live que nos permite tener funciones de red y que disponga de servidor SSH instalado. Yo he utilizado Clonezilla, lo puedes descargar desde la web oficial de clonezilla o te dejo aquí el enlace de la versión que yo utilicé clonezilla-live-2.2.0-29-i686-pae.iso
Para el que no tenga experiencia con clonezilla, os comento algunas peculiaridades; el usuario root no tiene clave de acceso, para acceder como root necesitamos entrar como usuario "user" con clave "live" y después ejecutar "sudo -s" para pasar a ser "root". Necesitarás utilizar la cuenta de "root" directamente en una conexión SSH, cambia la clave de "root" con el comando "password".
Para virtualizar una máquina física necesitaremos; por una lado la máquina física y por otro lado una máquina virtual. Las dos deben iniciarse con clonezilla, activar la red y levantar el servidor ssh.
Este proceso puede tardar algunas horas, dependiendo de la velocidad de nuestra red y del tamaño del disco a copiar. Recomiendo utilizar el comando "pv" entre el "dd" y "ssh" para que nos informe sobre la transferencia de datos.
"pv" nos mostrará tanto la transferencia actual, como el total de datos transferidos. Esto será bastante cómodo y nos ayuda a hacer una estimación del tiempo que le queda al proceso. El resultado es algo parecido a esto:
Asegúrate de tener instalado el comando "pv" antes de lanzar el proceso. Si no lo tienes instalado no funcionará. Finalmente así queda el comando:
También es importante destacar que este proceso cargará en gran medida en hardware donde lancemos el comando "dd if=/dev/sda | ..."; ya que recorrerá por completo el disco duro y lo transferirá por la red. Si hemos decidido virtualizar una máquina física es probable que se trate de una máquina vieja y puede que este proceso termine de matarla y no sobreviva.
Para evitar matar a la máquina que pretendáis virtualizar y no hacer que toda la espera sea una perdida de tiempo, os recomiendo sacar el disco de la máquina a virtualizar y o bien montarlo en una unidad usb externa y lanzar el "dd" desde otra máquina o conectarlo directamente en la maquina que hospedará a la máquina virtual.
Desde GNU/Linux necesitamos clonar el disco del sistema de la máquina física al disco duro del sistema de la máquina virtual. Esto es tan simple como ejecutar el comando:
dd if=/dev/sda | ssh root@Es decir, clonamos de un disco principal (dd if=/dev/sda) al disco principal de una máquina remota (ssh root@dd of=/dev/sda
Este proceso es recomendable hacerlo en frio, es decir, con el sistema parado. Utilizaremos un CD Live que nos permite tener funciones de red y que disponga de servidor SSH instalado. Yo he utilizado Clonezilla, lo puedes descargar desde la web oficial de clonezilla o te dejo aquí el enlace de la versión que yo utilicé clonezilla-live-2.2.0-29-i686-pae.iso
Para el que no tenga experiencia con clonezilla, os comento algunas peculiaridades; el usuario root no tiene clave de acceso, para acceder como root necesitamos entrar como usuario "user" con clave "live" y después ejecutar "sudo -s" para pasar a ser "root". Necesitarás utilizar la cuenta de "root" directamente en una conexión SSH, cambia la clave de "root" con el comando "password".
Para virtualizar una máquina física necesitaremos; por una lado la máquina física y por otro lado una máquina virtual. Las dos deben iniciarse con clonezilla, activar la red y levantar el servidor ssh.
- Activar la red: para meter la máquina dentro de nuestra red. Si tenemos corriendo un DHCP en nuestra red, podemos solicitarle que le asigne una IP a la tarjeta de red de nuestra máquina iniciada con el CD live. Para esto utilizaremos el comando "dhclient eth0".
- Servidor SSH: una vez tenemos la máquina dentro de la red vamos a iniciar el servidor SSH ejecutando el comando "/etc/init.d/ssh start". Ahora podemos conectarnos desde una máquina remota a esta.
dd if=/dev/sda | ssh root@< ip >Esto nos pedirá la clave de root de la máquina destino. Y comenzará con el proceso de clonado enviando los datos por la red, son devolver ningún tipo información sobre el estado del proceso.dd of=/dev/sda
Este proceso puede tardar algunas horas, dependiendo de la velocidad de nuestra red y del tamaño del disco a copiar. Recomiendo utilizar el comando "pv" entre el "dd" y "ssh" para que nos informe sobre la transferencia de datos.
"pv" nos mostrará tanto la transferencia actual, como el total de datos transferidos. Esto será bastante cómodo y nos ayuda a hacer una estimación del tiempo que le queda al proceso. El resultado es algo parecido a esto:
1,32GB 0:02:06 [10,9MB/s] [ <=> ]Cuando el proceso ha terminado tiene que mostrar un resumen total como este:
156301488+0 records in
156301488+0 records out
80026361856 bytes (80 GB) copied, 7069.71 s, 11.3 MB/s
Asegúrate de tener instalado el comando "pv" antes de lanzar el proceso. Si no lo tienes instalado no funcionará. Finalmente así queda el comando:
dd if=/dev/sda | pv | ssh root@< ip > dd of=/dev/sdaRecordad que este proceso es bastante largo, si lanzas el proceso desde una consola SSH es muy probable que pierdas la conexión y no puedas volver a consultar el estado del proceso. Para evitar este problema recomiendo siempre utilizar "screen" para lanzar este tipos de proceso que presumiblemente tardarán mucho en terminar. Hace ya algún tiempo que escribí un artículo sobre el uso de "screen", pero sigue estando en vigor y os puede servir de ayuda.
También es importante destacar que este proceso cargará en gran medida en hardware donde lancemos el comando "dd if=/dev/sda | ..."; ya que recorrerá por completo el disco duro y lo transferirá por la red. Si hemos decidido virtualizar una máquina física es probable que se trate de una máquina vieja y puede que este proceso termine de matarla y no sobreviva.
Para evitar matar a la máquina que pretendáis virtualizar y no hacer que toda la espera sea una perdida de tiempo, os recomiendo sacar el disco de la máquina a virtualizar y o bien montarlo en una unidad usb externa y lanzar el "dd" desde otra máquina o conectarlo directamente en la maquina que hospedará a la máquina virtual.
lunes, 18 de noviembre de 2013
Proxmox "The requested URL returned error: 401"
Como ya sabréis Proxmox ha dejado de ser gratuito, ahora si no estas suscrito, tienes que utilizar los repositorios de test, no recomendados para servidores en explotación. Pero no obstante yo tenía configurado el servidor de test en mi /etc/apt/sources.list y tenía este error al ejecutar un "aptitude update" o "apt-get update".
Simplemente comentamos la linea que aparece en el fichero "/etc/apt/sources.list.d/pve-enterprise.list" y volvemos a ejecutar el "update" y todo funcionará correctamente.
Err https://enterprise.proxmox.com wheezy/pve-enterprise amd64 PackagesAl final el error está en la carga del fichero "/etc/apt/sources.list.d/pve-enterprise.list" por alguna razón ha cargado el repositorio enterprise y hay que comentarlo para evitar este error 401.
The requested URL returned error: 401
Ign https://enterprise.proxmox.com wheezy/pve-enterprise Translation-es_ES
Ign https://enterprise.proxmox.com wheezy/pve-enterprise Translation-es
Ign https://enterprise.proxmox.com wheezy/pve-enterprise Translation-en
94% [Trabajando]W: Se produjo un fallo al descargar https://enterprise.proxmox.com/debian/dists/wheezy/pve-enterprise/binary-amd64/Packages: The requested URL returned error: 401
E: Some index files failed to download. They have been ignored, or old ones used instead.
E: No se pudo reconstruir el almacén de paquetes
Simplemente comentamos la linea que aparece en el fichero "/etc/apt/sources.list.d/pve-enterprise.list" y volvemos a ejecutar el "update" y todo funcionará correctamente.
#deb https://enterprise.proxmox.com/debian wheezy pve-enterprise
sábado, 16 de noviembre de 2013
Selección kernel por defecto inicio grub Debian
¿Alguna vez has necesitado seleccionar un nuevo kernel en el arranque de tu Debian y no estás frente a la máquina para poder seleccionar con los cursores en la pantalla de selección de kernels de grub? Pues durante la instalación de Proxmox yo lo he necesitado.
Es bastante simple, en primer lugar tenemos que ver cuál es el kernel que queremos iniciar. Con el comando "grep menuentry /boot/grub/grub.cfg" podemos ver los que tenemos disponibles en la pantalla de carga de grub.
En mi ejemplo aparecen dos kernel; 3.2.0 amd64 y 2.6.32 pve, con sus correspondientes "recovery mode"; si contamos tenemos 4 lineas.
Por tanto el contador de kernel comienza a contar en "0"; si queremos seleccionar el kernel "Debian GNU/Linux, with Linux 2.6.32-26-pve" que está en la tercera linea, tendremos que darle valor "2".
Tras modificar el fichero únicamente nos queda refrescar la configuración de grub con el comando "update-grub". Ahora cuando reiniciemos nuestro sistema aparecerá la tercera opción seleccionada por defecto.
En mi caso tras cargar el kernel "Debian GNU/Linux, with Linux 2.6.32-26-pve" voy a desinstalar "Debian GNU/Linux, with Linux 3.2.0-4-amd64" y ahora "2.6.32-26-pve" pasará a la primera posición de la lista. Es muy importante volver a poner el valor de "GRUB_DEFAULT=0" para que cargue correctamente.
Es bastante simple, en primer lugar tenemos que ver cuál es el kernel que queremos iniciar. Con el comando "grep menuentry /boot/grub/grub.cfg" podemos ver los que tenemos disponibles en la pantalla de carga de grub.
En mi ejemplo aparecen dos kernel; 3.2.0 amd64 y 2.6.32 pve, con sus correspondientes "recovery mode"; si contamos tenemos 4 lineas.
root@debian:~# grep menuentry /boot/grub/grub.cfgDesde el fichero "/etc/default/grub" podemos modificar el parámetros "GRUB_DEFAULT=2" donde definiremos el kernel que queremos que se seleccione por defecto. Cuando abrimos el fichero por primera vez "GRUB_DEFAULT" tendrá valor "0", que corresponde con el primer kernel de la lista.
menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-26-pve' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-26-pve (recovery mode)' --class debian --class gnu-linux --class gnu --class os {
Por tanto el contador de kernel comienza a contar en "0"; si queremos seleccionar el kernel "Debian GNU/Linux, with Linux 2.6.32-26-pve" que está en la tercera linea, tendremos que darle valor "2".
Tras modificar el fichero únicamente nos queda refrescar la configuración de grub con el comando "update-grub". Ahora cuando reiniciemos nuestro sistema aparecerá la tercera opción seleccionada por defecto.
root@debian:~# update-grubTenemos que tener cuidado con futuras actualizaciones o instalaciones/desinstalaciones de kernels. Estas acciones modificarán el orden de nuestros kernels en el listado de carga y es muy probable que el valor de "GRUB_DEFAULT" no corresponda con el kernel que queremos iniciar.
En mi caso tras cargar el kernel "Debian GNU/Linux, with Linux 2.6.32-26-pve" voy a desinstalar "Debian GNU/Linux, with Linux 3.2.0-4-amd64" y ahora "2.6.32-26-pve" pasará a la primera posición de la lista. Es muy importante volver a poner el valor de "GRUB_DEFAULT=0" para que cargue correctamente.
viernes, 15 de noviembre de 2013
bootlogd Debian 7.2
En más de una ocasión he necesitado leer detenidamente lo que se carga en el arranque del sistema sin estar delante de la pantalla del servidor. Con bootlogd se puede solucionar este problema. Devuelve a un fichero de log todo lo que sucede en el inicio del sistema. Con esta herramienta podemos averiguar si tenemos algún problema en la carga inicial del sistema.
Para ponerlo en funcionamiento es bastante simple. Simplemente instalamos el paquete "bootlogd":
https://wiki.debian.org/bootlogd
Para ponerlo en funcionamiento es bastante simple. Simplemente instalamos el paquete "bootlogd":
aptitude install bootlogdDespués creamos el fichero "/etc/default/bootlogd" con añadiendo la linea "BOOTLOGD_ENABLE=yes", ahora solo nos falta reiniciar y ver el contenido del fichero "/var/log/boot" para ver qué ha pasado en el inicio del sistema.
https://wiki.debian.org/bootlogd
miércoles, 30 de octubre de 2013
Calcular día par o impar #!/bin/bash
Hace poco necesité una acción dentro de un script que se ejecutase únicamente los días pares del calendario. Calculando el módulo 2 del número del día se puede calcular fácilmente.
#!/bin/bash
dia=`date +%_d`
check=$(($dia % 2))
if [ $check = 0 ]; then
echo "es un día par";
fi
martes, 29 de octubre de 2013
Menús de NetBeans 7.3 en negrita tras actualizar Ubuntu 13.10
Tras la actualización de Ubuntu 13.10, su última versión más reciente, el IDE Netbeans (versión 7.3.1) comienza a hacer de las suyas; poniendo todos los menús y títulos de archivos abiertos (en la pestaña correspondiente al fichero) en negrita.
Algo un poco incomodo, ahora no sé los ficheros que están modificados, pues cuando antes modificabas un fichero el título del fichero aparecía en negrita.
Pues esto tiene fácil solución; desinstalar el paquete fonts-unfonts-core y listo.
Parece que las actualizaciones de Ubuntu fuerzan la instalación de este paquete desde hace ya varias versiones.
Fuente: http://josemanuelruizbaena.blogspot.com.es/2012/09/netbeans-72-linux-menus-negrita.html
Algo un poco incomodo, ahora no sé los ficheros que están modificados, pues cuando antes modificabas un fichero el título del fichero aparecía en negrita.
Pues esto tiene fácil solución; desinstalar el paquete fonts-unfonts-core y listo.
sudo apt-get remove fonts-unfonts-core
Parece que las actualizaciones de Ubuntu fuerzan la instalación de este paquete desde hace ya varias versiones.
Fuente: http://josemanuelruizbaena.blogspot.com.es/2012/09/netbeans-72-linux-menus-negrita.html
lunes, 7 de octubre de 2013
Descargar Java con wget
Cuando descargamos JAVA desde la web oficial, necesitamos aceptar la licencia para poder descargar el fichero. Alguna vez ha necesitado descargar un jre en un servidor que no tenía entorno gráfico, lo único que tenía era wget para hacer descargas http. ¿Como podemos hacer esto con wget?
Pues no es muy complicado, simplemente tenemos que incluir algunos parámetros en el wget para que descargue sin problemas:
Pues no es muy complicado, simplemente tenemos que incluir algunos parámetros en el wget para que descargue sin problemas:
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http://www.oracle.com/"Ejemplo para "jre-6u25-linux-x64.bin":
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http://www.oracle.com/" http://download.oracle.com/otn-pub/java/jdk/6u25-b06/jre-6u25-linux-x64.bin
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.
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.
/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.
~# aptitude install mailgraphTras instalarlo simplemente vais a un navegado, poneis la dirección de vuestro servidor añadiendo "/cgi-bin/mailgraph.cgi" (http://xxx.xxx.xxx.xxx
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.
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.
Este es un pequeño script que podemos dejar a mano para montar el sistema si se cae.
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 aesTambién necestiamos instalar el paquete "cryptsetup".
modprobe dm-crypt
modprobe dm-mod
modprobe sha256
apt-get install cryptsetupY 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/sdb1Para 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
mkfs.ext4 /dev/mapper/decrypt
mount /dev/mapper/decrypt /mnt
cryptsetup luksOpen /dev/sdb1 decryptSe 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.
mount /dev/mapper/decrypt /mnt
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.
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:
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í:
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.
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.
Para crear nuestro dispositivo usb que podamos iniciar un sistema Debian, necesitaremos:
- ISO Debian
- Img Boot
- Dispositivo de almacenamiento USB
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-pciComo 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.
[ 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
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/sdbTras 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/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.
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
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.
martes, 9 de julio de 2013
Restaurar backup ipcop
Me encontré con algunos problemas para restaurar una copia de seguridad de ipcop.El problema es que al intentar importar una copia de seguridad de otro servidor da un error diciendo que NO puede desencriptar la copia de seguridad.
Bajo mi punto de vista lo complican bastante, os dejo la solución.
En primer lugar desde el servidor donde hemos creado la copia de seguridad (servidor origen) tenemos que extraer el certificado de cifrado de copias de seguridad.
Para ello hacemos click en "Exportar clave de respaldo" esto nos descargará un fichero .key que tendremos que descifrar con openssl.
Una vez tenemos nuestro fichero .key ejecutamos desde nuestra máquina:
openssl enc -a -d -aes256 -salt -pass pass:Ya tenemos descifrado el certificado y tenemos que copiarlo a nuestro nuevo servidor donde queremos restaurar la copia de seguridad (servidor destino). En concreto tenemos que copiarlo (reemplazar por el que exista):-in encrypted.backup.key -out decrypted.backup.key
/var/ipcop/backup/backup.keyPara copiar el fichero .key a nuestro nuevo servidor ipcop podemos hacerlo utilizando utilizando el comando:
scp -P 8022 decrypted.backup.key root@192.168.x.x:/var/ipcop/backup/backup.keyAhora ya podremos importar la copia de seguridad sin problemas.
viernes, 28 de junio de 2013
dbmail con PostgreSQL Debian (Wheezy)
Este manual sigue en la linea del escrito hace ya algunos años sobre dbmail y postgresql. Tras 5 años de escribir el primer manual de dbmail bajo postgresql, toca actulizarse. Así pues describo como instalar dbmail 3.0.2 y postfix 2.9.6-2, utilizando como base de datos postgresql 9.2.4 y todo corriendo sobre Debian 7.
Os dejo por aquí el enlace al manual anterior, por si alguien necesita tocar algún servidor antiguo y no sabe por donde comenzar. Encontrará algunas pautas de administración.
http://josemanuelruizbaena.blogspot.com.es/2008/09/dbmail-con-postgresql-debian-etch.html
Para el funcionamiento de dbmail es imprescindible tener instalado un sistema gestor de base de datos. He encontrado en internet muchos manuales que enseñan como montar dbmail bajo MySQL. Pero después de mi experiencia y tras probar las bondades de PostgreSQL, sin duda este manual de dbmail será para montarlo utilizando como motor de base de datos PostgreSQL.
Puesto que la instalación de PostgreSQL puede no ser trivial para algunos usuarios os dejo por aquí un manual para instalar PostgreSQL en Debian 7 desde código fuente. Si ya es robusto cuando se instala desde los repositorios de Debian, imaginad cuanto no lo será compilando tu código fuente directamente.
http://josemanuelruizbaena.blogspot.com/2013/06/compilar-postgresql-en-debian.html
Requisitos de dbmail:
Hay algunos requisitos que necesitas tener en el sistema para poder instalar dbmail desde la compilación de su código fuente. Si has seguido el manual de instalación de postgresql desde su código fuente o alguna vez has compilado no necesitarás in
aptitude install build-essential
aptitude install gcc libglib2.0-dev libmhash-dev libevent-dev libssl-dev flex automake
Es necesario también instalar libzdb y libgmime-2.4-dev, pero no están disponibles por ahora (27 de junio de 2013) en el repositorio de Debian 7. Así pues lo instalamos directamente desde el código fuente.
wget http://www.tildeslash.com/libzdb/dist/libzdb-2.10.2.tar.gzPara instalar libgmime-2.4-dev lo descargamos de http://ftp.acc.umu.se/pub/GNOME/sources/gmime/2.4/.
tar xvzf libzdb-2.10.2.tar.gz
cd libzdb-2.10.2
./configure --with-postgresql=/opt/postgresql-9.2.4/bin/pg_config
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... none
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking whether gcc needs -traditional... no
checking for re2c... re2c_not_found
checking for flex... /usr/bin/flex
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for pthread_create in -lpthread... yes
checking for library containing crypt... -lcrypt
checking for mysql... yes
checking for mysql_config... no
configure: WARNING: mysql_config is required to build libzdb with mysql
checking for postgresql... yes
checking for /opt/postgresql-9.2.4/bin/pg_config... yes
checking libpq-fe.h usability... yes
checking libpq-fe.h presence... yes
checking for libpq-fe.h... yes
checking for SQLite3... yes
checking for sqlite3_open in -lsqlite3... no
checking for oracle... checking if Oracle support is enabled... no
checking for ANSI C header files... (cached) yes
checking for an ANSI C-conforming const... yes
checking whether byte ordering is bigendian... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating test/Makefile
config.status: creating zdb.pc
config.status: creating src/xconfig.h
config.status: executing libtool_patch commands
config.status: executing depfiles commands
config.status: executing libtool commands
+------------------------------------------------------------+
| License: |
| This is Open Source Software and use is subject to the GNU |
| GENERAL PUBLIC LICENSE, available in this distribution in |
| the file COPYING. |
| |
| By continuing this installation process, you are bound by |
| the terms of this license agreement. If you do not agree |
| with the terms of this license, you must abort the |
| installation process at this point. |
+------------------------------------------------------------+
| Libzdb is configured as follows: |
| |
| Optimized: DISABLED |
| Protected: DISABLED |
| Profiling: DISABLED |
| Zild: DISABLED |
| Sqlite3 unlock notification API: DISABLED |
| Openssl: DISABLED |
| Unit Tests Build: ENABLED |
|------------------------------------------------------------|
| SQLite3: DISABLED |
| MySQL: DISABLED |
| PostgreSQL: ENABLED |
| Oracle: DISABLED |
+------------------------------------------------------------+
make
make install
wget http://ftp.acc.umu.se/pub/GNOME/sources/gmime/2.4/gmime-2.4.33.tar.xz
tar -Jxf gmime-2.4.33.tar.xz
cd gmime-2.4.33
./configure
make
make install
Instalar postfix
Ya hemos instalado todas las librerías y requisitos para dbmail, pero necesitamos un gestor SMTP que se comunique a la perfección con nuestro dbmail y orqueste todo el sistema.Yo prefiero Postfix y por ahora instalaremos el del sistema, que va perfectamente. No sé si el día de mañana haré un nuevo manual con postfix compilado.
Cuando intentamos instalar Postfix nos advierte el sistema que ya existe un SMTP funcionando en el sistema, se trata de exim4. La solución que nos propone apt es la correcta, desinstalará exim4 (y los subpaquetes instalados) e instalará postfix.
aptitude install postfix
Se instalarán los siguiente paquetes NUEVOS:
postfix{b} ssl-cert{a}
0 paquetes actualizados, 2 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 1.566 kB de ficheros. Después de desempaquetar se usarán 3.380 kB.
No se satisfacen las dependencias de los siguientes paquetes:
exim4-config : Entra en conflicto: postfix pero se va a instalar 2.9.6-2.
postfix : Entra en conflicto: mail-transport-agent que es un paquete virtual.
exim4-daemon-light : Entra en conflicto: mail-transport-agent que es un paquete virtual.
Las acciones siguientes resolverán estas dependencias
Eliminar los paquetes siguientes:
1) exim4
2) exim4-base
3) exim4-config
4) exim4-daemon-light
¿Acepta esta solución? [Y/n/q/?]
También nos preguntará sobre el dominio (o subdominio, como es el caso de la captura) que queremos controlar con nuestro postfix.
Tras estos dos pasos terminará la instalación y configuración básica de postfix, más adelante continuaremos con configuración de postfix.
Crear base de datos (almacén de correos)
Tras instalar todos los requisitos, creamos el usuarios dentro de PostgreSQL para que dbmail pueda almacenar los datos para la gestión del sistema de correos.su postgres
echo "create user dbmail with password 'xxxx' " | /opt/postgresql-9.2.4/bin/psql template1
echo "create database dbmail owner dbmail encoding='UNICODE'" | /opt/postgresql-9.2.4/bin/psql template1
Instalar dbmail
Compilar dbmail
Ahora ya estamos preparados para compilar dbmail. Lo primero es descargar el paquete con el código fuente directamente de la web del proyecto http://www.dbmail.org/, en la sección download. Como comentamos al principio en este manual instalaremos la versión 3.0.2, es la última publicada (marzo de 2012) tiene más de un año, pero funciona perfectamente.
Descargamos, descomprimimos, configuramos, compilamos e instalamos con los siguientes comandos:
wget http://www.dbmail.org/download/3.0/dbmail-3.0.2.tar.gz
tar xvzf dbmail-3.0.2.tar.gz
cd dbmail-3.0.2
./configure --with-zdb=/usr/local
make
make install
Configurar dbmail
Tras instalar dbmail, lo primero que tenemos que hacer es crear la estructura de la base de datos con el fichero de inicialización. El fichero con la estructura de la base de datos se encuentra en el paquete que hemos descargado (dbmail-3.0.2.tar.gz) en "sql/postgresql/create_tables.pgsql".
Para cargar la estructura de la base de datos, necesitamos tener creada la base de datos. Esto lo hicimos en un paso anterior.
cat sql/postgresql/create_tables.pgsql | /opt/postgresql-9.2.4/bin/psql -U dbmail dbmailAhora procedemos a copiar el fichero de configuración en el directorio de configuración de nuestro sistema y configurar algunas parametrizaciones.
cp dbmail.conf /etc/
nano /etc/dbmail.confParametrizamos la conexión a la base de datos.
driver = postgresqlUsuario del sistema que lanzará los procesos dbmail. Puede ser dbmail o el que creeis para este fin, si queréis crear el usuario dbmail basta con ejecutar "adduser dbmail", esto os pedirá las claves de acceso así como información descriptiva del usuario.
authdriver = sql
host = localhost
sqlport = 5432
pass = xxx
db = dbmail
effective_user = dbmailDefinimos los ficheros de log, tanto para errores generales como para errores. Será necesario crear el directorio "/var/log/dbmail". Por defecto intentará crear los ficheros en "/var/log" directamente, pero a mi personalmente me gusta más tener un directorio para los ficheros de log de cada aplicación. Así será más rápido localizar los ficheros cuando sean necesarios.
effective_group = dbmail
logfile = /var/log/dbmail/dbmail.log
errorlog = /var/log/dbmail/dbmail.err
Hacemos igual para el fichero donde se guarda el pid del proceso en ejecución.
# cambiamos el directorio donde están los pidfileEs muy importante no olvidar asignar permisos a los directorios "/var/run/dbmail" y "/var/log/dbmail/" para el usuario "dbmail" para que el proceso pueda escribir en ellos. Puede asignar permisos ejecutando "chown -R dbmail:dbmail /var/log/dbmail/" y "chown -R dbmail:dbmail /var/run/dbmail".
pid_directory = /var/run/dbmail
Encontrarás también instrucciones para definir los certificados necesarios para tls. Si vas a utilizar tls será necesario definirlos.
tls_cafile = /etc/ssl/certs/ssl-cert-*.pemPara realizar envíos de correos desde nuestro SMTP por parte de los clientes de nuestro servidor de correos, me gusta configurar estas opciónes: pop_before_smtp y imap_before_smtp, esto hace que el SMTP no requiera autenticación, simplemente verifica si el usuario ha realizado una lectura de una cuenta POP o IMAP, y si la ha realizado en los últimos 5 minutos, permitirá que realice el envío SMTP.
tls_cert = /etc/ssl/certs/ssl-cert-*.pem
tls_key = /etc/ssl/private/ssl-cert-*.key
Para establecer esta configuración es necesario definir las siguientes instrucciones.
[POP]
pop_before_smtp = yes
[IMAP]
imap_before_smtp = yes
Configurar postfix
En un apartado anterior se ha descrito como instalar postfix./etc/postfix/main.cf
transport_maps = pgsql:/etc/postfix/sql-transport.cf
mydestination = localhost, $transport_maps
mynetworks = 127.0.0.0/8, pgsql:/etc/postfix/sql-pop-before-smtp.cf
receive_override_options = no_address_mappings
local_recipient_maps =
smtpd_recipient_restrictions =
permit_mynetworks,
reject_unauth_destination,
permit
Otro enlaces de interés para dbmail
Listas grises
MailGraph
jueves, 27 de junio de 2013
Compilar PostgreSQL en Debian
Llevo trabajando unos años con PostgreSQL y no he tenido problemas, pero tenía la necesidad de utilizar funcionalidades de PostgreSQL 9 en un sistema que aún no lo incorporaba en su repositorio de paquetes y me aventuré a compilarlo. Descubrí que es bastante simple y adquiere aún más robustez si es posible.
Para poder compilar el código fuente de postgresql necesitamos descargar de http://www.postgresql.org/ftp/source/ el paquete de postgresql que quieras instalar en tu sistema. En principio todos deben seguir el mismo procedimiento de instalación. Pero este manual lo he realizado con la versión 9.2.2 y probado con versiones posteriores (9.2.3 y 9.2.4).
Requisitos
Antes de comenzar con la instalación de PostgreSQL compilando el código fuente, es necesario instalar algunos paquetes.
aptitude install bison
aptitude install libreadline-dev libreadline5-dev libreadline6-dev
aptitude install flex
aptitude install zlib1g-dev
Configurar, compilar e instalar
Simplemente con estos comandos ya tendremos nuestro postgres listo para comenzar a funcionar. Obiamente es necesario crear el directorio "/opt/postgresql-9.2.2" para ubicar ahí nuestro motor de base de datos../configure --prefix=/opt/postgresql-9.2.2
make
make install
Puesta en explotación
Creamos el usuario postgres que será el encargado de iniciar el sistema, así como el directorio contenedor de la instancia de la base de datos y le asignamos como propietario al usuario postgres.adduser postgres --home /opt/postgresql-9.2.2
mkdir /opt/postgresql-9.2.2/data
chown -R postgres:postgres /opt/postgresql-9.2.2
Inicializar la base de datos.
Para iniciar la base de datos utilizaremos el usuario postgres, antes hay que inicializar la instancia de la base de datos.su postgres
/opt/postgresql-9.2.2/bin/initdb -D /opt/postgresql-9.2.2/data
/opt/postgresql-9.2.2/bin/initdb --pgdata=/opt/postgresql-9.2.2/data
Iniciar la base de datos.
su postgres
/opt/postgresql-9.2.2/bin/pg_ctl -D /opt/postgresql-9.2.2/data -l logfile start
Test de funcionamiento
Ya tenemos funcionando el motor de base de datos y probamos a crear una base de datos y conectarnos a ella./opt/postgresql-9.2.2/bin/createdb test
/opt/postgresql-9.2.2/bin/psql test
Script iniciar/parar/recargar
Un script bastante simple para el inicio y paro del sistema.#!/bin/bash
### BEGIN INIT INFO
# Provides: postgresql
# Required-Start: $local_fs $remote_fs $network $time
# Required-Stop: $local_fs $remote_fs $network $time
# Should-Start: $syslog
# Should-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: PostgreSQL RDBMS server
### END INIT INFO
case "$1" in
start)
su postgres -c "/opt/postgresql-9.2.2/bin/pg_ctl --pgdata /opt/postgresql-9.2.2/data --log /opt/postgresql-9.2.2/logfile start"
;;
stop)
su postgres -c "/opt/postgresql-9.2.2/bin/pg_ctl stop --pgdata /opt/postgresql-9.2.2/data -m fast"
;;
status)
su postgres -c "/opt/postgresql-9.2.2/bin/pg_ctl status --pgdata /opt/postgresql-9.2.2/data"
;;
restart)
$0 stop
sleep 2
$0 start
;;
reload)
su postgres -c "/opt/postgresql-9.2.2/bin/pg_ctl reload --pgdata /opt/postgresql-9.2.2/data"
;;
*)
echo "Usage: $0 {start|stop|restart|reload|status} "
exit 1
;;
esac
exit 0
Primeros pasos
Ya podemos utilizar nuestra nueva instalación de postgres, aquí os dejo como crear vuestro primer usuario.
postgres@miequipo:/opt/postgresql-9.2.2$ echo "create user miusuario with password 'miclave' " | bin/psql template1
CREATE ROLE
Rotado de log
Escribí un artículo sobre el rotado de log para un xampp, basándome en ese artículo; recomiendo encarecidamente meter el fichero de log dentro del sistema de rotación de log. Es muy simple, únicamente tardarás unos minutos y puede quitarte quebraderos de cabeza posteriores.Simplemente crea el fichero "/etc/logrotate.d/postgres" con el contenido:
/opt/postgresql-9.2.2/logfile {Tendrás que crear el directorio "/opt/postgresql-9.2.2/log/" donde se almacenará el histórico de log comprimidos. Para terminar solo nos falta ejecutar el procesado del fichero por primera vez para ver que todo está correcto.
copytruncate
compress
dateext
rotate 365
size=+100M
olddir /opt/postgresql-9.2.2/log/
notifempty
missingok
}
logrotate --force /etc/logrotate.d/postgres
Suscribirse a:
Entradas (Atom)