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.