¿Como hacer una imagen de un disco con Windows en Linux?

Hola a todos de nuevo.

Hoy vengo con un tip que seguro que a muchos de vosotros os vendrá que ni pintado. El asunto es cómo generar imagen de disco de un Windows recién instalado con el objetivo de que en el caso de que en el futuro tengamos que reinstalarlo simplemente podamos restaurar la imagen tomada, volviendo Windows a su estado origen sin necesidad de pasar de nuevo por la reinstalación de todo el sistema (que es un poco coñazo).

En mi caso, llevo algunas semanas notando que Windows me esta dando problemas gráficos bastante molestos y hoy me he decidido a reinstalarlo. He instalado el software que considero básico (actualización a la fecha del SO, Firefox con las extensiones necesarias, Winrar y Ultraedit) y así lo he dejado por el momento. La idea es hacer una imagen de ese disco con el estado actual del SO para restaurarlo en un futuro mas rápidamente y no tener que volver a instalar de nuevo.

Escenario

La mayor parte de nosotros conocemos las herramientas Windows que existen del estilo N.Gosth para hacer este tipo de labores e inicialmente, por que no decirlo, había pensado en hacer uso de una de ellas. Luego pensé ¿para que leches voy a instalar en Windows ese software (o alguno similar) si con el dd de linux puedo hacer eso mismo?

Con respecto a mi máquina, actualmente dispone de 2 discos SATA2 de 250Gb c/u. En el disco sda tengo instalado Windows y en sdb tengo instalado Linux Ubuntu 10.04 64b. La idea era desde mi flamante Linux generar una imagen del disco sda de forma directa. Así que ni corto no perezoso lanzo la orden para generar la imagen del primer disco sobre el segundo:

Imagen sin comprimir

Esta es la orden que se debe indicar para la generación de la imagen del disco 1 en el disco 2:

dd if=/dev/sda of=./sda.img

Esta es la imagen que usaríamos para restaurar el disco 1:

dd if=./sda.img of=/dev/sda

El problema de esta solución, es que para generar una imagen de un disco de XGb (capacidad de disco) se requieren XGb libres en el disco de destino, y como ya os habréis dado cuenta, no dispongo de ellos. Así que tenemos que de alguna forma comprimir la imagen del disco 1 (sda) para que quepa en el disco 2(sdb) ¿parece bastante lógico, no?

Por lo tanto y dado el problema de espacio planteado, pasamos a la segunda solución, una imagen de disco comprimida, y para ello nos valemos de dd + gzip:

Imagen comprimida

Para comprimir la imagen a medida que la creamos (unas 9h para un disco como el mio)

dd if=/dev/sda | gzip -c9 > sda.gz

Cuando necesitemos recuperar nuestro Windows a partir de la imagen comprimida con gzip:

gunzip -c sda.gz | dd of=/dev/sda

Bueno, espero que este articulo le valga a alguno. Yo ya tengo la imagen del disco lista para usar en el futuro.

Postdata: Esta misma solución que hemos aplicado hoy en el disco completo es de aplicabilidad en una partición de la misma forma. Lo digo para aquellas personas que tienen dividido el único disco del sistema en 2 particiones, normalmente una para Windows y la otra para Linux.

Saludos a todos y hasta la próxima.

En un capitulo posterior veremos como verificar la imagen generada. Con estas cosas hay que ser cauto así que la verificación de lo que hacemos nunca esta de mas.

Convertir archivos dmg (Mac) a img en Ubuntu 9.10 karmic

Hola a todos

Hoy traigo un articulo de conversión de formatos de ficheros. Estos días he descargado lo que se supone la imagen de Mac OS X 10.6.3 y resulta que al extraer el fichero obtengo un dmg (OMG!!!!, esto es la primera vez que lo veo).

Bien, puestos a investigar ya se lo que es, parece que es un fichero de imagen generado en el sistema operativo Mac. Así que raudo me pongo a investigar cómo leches convertir eso en algo compatible con mi bonito Linux.

He encontrado una herramienta que podría servir para el propósito buscado, se llama dmg2iso lo que pasa es que esta discontinuada y en su lugar se ha desarrollado dmg2img en la dirección http://vu1tur.eu.org/tools/ el problema es que el binario que esta en la página solo es para Windows….

Bien como tenemos la suerte de que esta disponible el código fuente, nos lo descargamos y desempaquetamos en el directorio que nos de la gana.

Para compilar la aplicación necesitamos los siguientes paquetes instalados en la máquina : libglobus-openssl-dev, libghc6-zlib-dev y libbz2-dev y por supuesto las dependencias necesarias, así que ejecutamos

sudo aptitude install libglobus-openssl-dev libghc6-zlib-dev libbz2-dev

y a tirar millas…..Esperamos que se instale todo……y cuando termine ya podemos irnos al directorio donde hemos extraído los fuentes para comenzar la compilación. Para compilar y enlazar la aplicación simplemente nos ponemos en el directorio donde hemos extraído los fuentes y hacemos make.

La salida del comando make es la siguiente:

root@ubuntueeebox:~/dmg2img-1.6.2# make
cc -O2 -Wall -s -o vfdecrypt vfdecrypt.c -lcrypto
vfdecrypt.c: In function ‘main’:
vfdecrypt.c:400: warning: ignoring return value of ‘system’, declared with attribute warn_unused_result
root@ubuntueeebox:~/dmg2img-1.6.2#

El resultado de make debería ser un fichero generado en el mismo directorio de los fuentes llamado dmg2img. En el caso de no tener ya el bit de ejecutable, se lo asignamos (chmod).

Ejecutamos la conversión del fichero dmg de la siguiente forma (estoy en el directorio donde se ha generado el binario):

./dmg2img -v /home/eloy/.jd/downloads/h-mosl1063.dmg h-mosl1063.img

Y esta es la salida del comando:

root@ubuntueeebox:~/dmg2img-1.6.2# ./dmg2img -v /home/eloy/.jd/downloads/h-mosl1063.dmg h-mosl1063.img

dmg2img v1.6.2 is derived from dmg2iso by vu1tur (to@vu1tur.eu.org)

/home/eloy/.jd/downloads/h-mosl1063.dmg –> h-mosl1063.img

reading property list, 1826429 bytes from address 6830548239 …
partition 0: begin=120, size=430, decoded=284
partition 1: begin=778, size=430, decoded=284
partition 2: begin=1428, size=430, decoded=284
partition 3: begin=2085, size=187880, decoded=126524
partition 4: begin=190195, size=430, decoded=284
partition 5: begin=190838, size=1629725, decoded=1097564

decompressing:
opening partition 0 …         [2] 100.00%  ok
opening partition 1 …         [2] 100.00%  ok
opening partition 2 …         [2] 100.00%  ok
opening partition 3 …      [3158] 100.00%  ok
opening partition 4 …         [2] 100.00%  ok
opening partition 5 …     [27434] 100.00%  ok

Archive successfully decompressed as h-mosl1063.img

You should be able to mount the image [as root] by:

modprobe hfsplus
mount -t hfsplus -o loop h-mosl1063.img /mnt

Y ahora ya solo queda probar este fichero de imagen a ver si logramos que funcione como debe…..

Saludos a todos y hasta la próxima.

Agfa SnapScan1212u en Lucid (Ubuntu 10.04)

Hola a todos

Resulta que hoy me he puesto a escanear unos documentos que necesito para un curso y el escaner no funcionaba.
Efectivamente la configuración de este escaner ya la había hecho para Ubuntu 9 el problema es que en su día me dio pereza escribir el articulo correspondiente y hoy he tenido que volver a inventar la rueda. Cosas que suelen pasar cuando las cosas no se dejan hechas cuando de debe.

Bien, los pasos que he seguido para la instalación del escanner AGFA SnapScan1212u en lucid han sido:

  • Conectar el escaner a la alimentación y al PC. Verificar que al conectar el escaner al PC con el comando dmesg sale algo similar a:
  • [ 4804.530325] usb 1-5.4: new full speed USB device using ehci_hcd and address 7
    [ 4804.644091] usb 1-5.4: configuration #1 chosen from 1 choice

  • Del disco del escaner he obtenido un fichero de firmware necesario para que el escaner funcione correctamente en Linux. Concretamente el fichero se llama SnapScan1212U_2.bin. De todas formas me ha costado un poco encontrar el puñetero disco, así que aquí dejo el enlace a la descarga del fichero, para poneros las cosas mas fáciles, que para eso estamos. Aquí lo dejo SnapScan1212U firmware (0)
  • El fichero de configuración importante lo podéis encontrar en /etc/sane.d/snapscan.conf. En este fichero si lo abrís veréis que una de las primeras lineas dice algo como:

    firmware ……

    Bien, pues creamos los directorios necesarios /usr/share/sane/snapscan/ y copiamos en él el fichero de firmware del Agfa SnapScan1212u con nombre SnapScan1212U_2.bin

  • Modificamos la linea de firmware del fichero /etc/sane.d/snapscan.conf para que sea como esta (o la que corresponda con la instalación que tu hayas efectuado):

    firmware /usr/share/sane/snapscan/SnapScan1212U_2.bin

  • Ahora ya podéis abrir xsane para ver cómo funciona. Aquí tenéis una captura:


Bueno, saludos a todos y hasta la próxima.

Solucionando problemas de nombres de ficheros estraños/peculiares en Linux

Hola a todos de nuevofoto de Eloy Mier Pérez

De vez en cuando, normalmente debido a entradas anteriores, el sistema acaba teniendo algunos nombre de ficheros extraños o peculiares. De forma habitual son fácilmente eliminables del sistema, pero ¿que pasaría si nos encontramos con un fichero cuyo nombre comienza por – (por ejemplo -file o incluso -f)?, el comando:

rm -file

no funcionará. rm entenderá que se le están pasando cuatro opciones -f, -i, -l y por ultimo -e, y finalizará en la opción -l, por que no es una opción válida.

Podrías intentar usando un carácter de escape en el shell de la siguiente forma:

rm \-file

No obstante, si piensas un poco en lo que esta sentencia hace te darás cuenta de que así tampoco funcionará. El shell verá el código de escape, lo eliminará y pasará completo -file al comando rm; por lo tanto nos encontraremos con el mismo problema. Lo que necesitamos es escapar el comando rm, no el shell.

Existen varias formas de solucionar esto. La primera es usando --. Esta opción la usan muchos comandos para indicar el fin de las opciones. Si quisieses crear un directorio con nombre -test y posteriormente quisieses borrar ese directorio y todo su contenido el siguiente comando debiera funcionar:

rm -rf -- -test

-rf establece las opciones iniciales; el -- señala el final de las opciones, y que el resto después de esa señal debe ser pasado tal cual al comando. En el caso que nos ocupa, es el nombre del directorio a borrar.

Puedes probar con los siguientes comandos:

mkdir -- -test
ls -l -- -test
rm -rf -- -test

La otra opción posible es especificar el directorio del fichero. Para borrar el fichero -file en el directorio actual, debemos usar:

rm ./-file

Esta solución debería funcionar con otros comandos también. Para probar puedes ejecutar:

touch ./-file
ls -l ./-file
rm ./-file

Desde este momento, cuando te encuentres con este tipo de problemas en los nombres de fichero en tus directorios, ya no creo que tengas problema para dar buena cuenta de ellos ¿verdad?

Un saludo a tod@s y hasta la próxima.

Tip: Instalación rt2860 de Asus EEEBox B202 en Ubuntu 9.10

Hola a todos de nuevo, aquí estamos un día mas.foto de Eloy Mier Pérez

Como ya he comentado en este enlace, ayer recibí mi Asus EEEBox B202 reparado. Originalmente escribí un post en el que comentaba sobre la instalación de Ubuntu 8.10 en la máquina que lo tenéis también disponible en este otro enlace.

Con respecto a aquella instalación he notado alguna diferencia en cuanto al tema de la instalación de la tarjeta WIFI que la máquina trae instalada. Es por ello que quiero documentar la instalación para futuras referencias.

La máquina retorna la siguiente información relacionada con la tarjeta WIFI para el comando lspci -v:

02:00.0 Network controller: RaLink RT2860
Subsystem: RaLink Device 2790
Flags: bus master, fast devsel, latency 0, IRQ 17
Memory at fbef0000 (32-bit, non-prefetchable) [size=64K]
Capabilities: [40] Power Management version 3
Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/5 Enable-
Capabilities: [70] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Kernel driver in use: rt2860
Kernel modules: rt2860sta

No recuerdo exactamente por que en la instalación de Ubuntu 8.10 tuve que echar mano de ndiswrapper, pero lo que si que es cierto es que para Ubuntu 9.10 ya no es necesario. Es mas, puedo asegurar que si seguís los pasos indicados para la 8.10, la tarjeta no funciona.

Esta máquina proporciona servicios a la red, así que necesito que levante la WIFI desde el momento en el que el sistema se encuentra operativo. Es por ello que el Network-Manager que proporciona Ubuntu es de los primeros paquetes que elimino casi siempre, aquí teneis información para hacerlo. En su lugar defino direcciones estáticas para la placa de red.

Bien pues para que la placa funcione simplemente hay que preparar la configuración estática de la tarjeta mediante 2 ficheros:

  1. /etc/network/interfaces
  2. eloy@ubuntueeebox:~$ cat /etc/network/interfaces
    # The loopback network interface
    auto lo
    iface lo inet loopback

    auto ra0
    iface ra0 inet static
    address 192.168.2.XXX <- Dirección fija de la máquina en la LAN
    netmask 255.255.255.0
    network 192.168.2.0
    broadcast 192.168.2.255
    gateway 192.168.2.XXX
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf <<– Ruta del fichero de config, que no tiene por que ser esta
    wpa-driver wext
    dns-nameservers 192.168.2.15 192.168.2.16 127.0.0.1 WWW.XXX.YYY.ZZZ <- Ips de las máquinas DNS usadas
    dns-search CASAMIER

  3. /etc/wpa_supplicant/wpa_supplicant.conf. Este fichero define los parámetros necesarios para que wpa_supplicant conecte con la Red WIFI. En mi caso el fichero queda de la siguiente forma:
  4. eloy@ubuntueeebox:~$ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
    [sudo] password for eloy:
    ctrl_interface=/var/run/wpa_supplicant
    ap_scan=2

    network={
    bssid=00:18:39:XX:YY:ZZ <– el que corresponda con tu router
    ssid=”la que corresponda con tu SSID”
    scan_ssid=1
    proto=WPA
    key_mgmt=WPA-PSK
    pairwise=TKIP
    group=TKIP
    psk=clave generada con wpa_passphrase
    }

Solo como comentarios:

  1. Con la creación y ajuste de los ficheros comentados es suficiente para que después de un reinicio la máquina levante la tarjeta WIFI sin mas complicaciones.
  2. Si te da algún problema la conexión en un 90% de los casos es problema del fichero wpa_supplicant.conf.
  3. Y ya por último un solo comentario sobre la tarjeta de red. Si os fijasteis en la instalación de Ubuntu 8.10 la tarjeta estaba asociada al dispositivo wlan0, pero ahora en Ubuntu 9.10 el dispositivo es ra0. Creo que esto es debido al driver especifico de la tarjeta que ya está incluido en los núcleos actualmente usados.

Saludos a todos y suerte.