Finalmente me decidí a cambiar mi viejo y querido Slackware 14.2 por Devuan Jessie 1.0 en mi notebook. Fue una decisión difícil pero lo hice por un motivo loable: colaborar con el soporte y difusión del proyecto Devuan.
El primer paso fue descargar una imagen ISO de Devuan y grabarla en un pendrive para bootear e instalar el sistema. Por ello, este artículo explica cómo crear un USB booteable en Linux, desde línea de comandos, utilizando la herramienta dd
. Simple, fácil y rápido.
Descargar la imagen ISO que se desea copiar al pendrive. Típicamente se tratará de una imagen de instalación o LiveCD de una distribución GNU/Linux o cualquier otro sistema operativo o utilitario.
Conectar el dispositivo USB al sistema e identificar el nombre de dispositivo asignado por el kernel Linux. Esto se hace examinando los mensajes del kernel con la herramienta grep
:
20:21 root@vaio emi # grep -i disk /var/log/dmesg [ 0.636781] VFS: Disk quotas dquot_6.6.0 [ 3.758494] sd 0:0:0:0: [sda] Attached SCSI disk [ 14.110446] sd 8:0:0:0: [sdb] Attached SCSI removable disk
Buscar (ignorando mayúsculas/minúsculas con el parámetro -i
) palabras como "disk", "removable", "scsi" u otras. En los mensajes del kernel Linux, el nombre de dispositivo asignado al (valga la redundancia) dispositivo USB aparece entre corchetes. En este caso se observa que el kernel ha asignado el nombre "sdb".
Para asegurarse de no cometer errores que puedan provocar la pérdida de datos e información (al escribir la imagen ISO en el dispositivo equivocado), es posible corroborar que se trata del pendrive USB conectado examinando su tabla de particiones. Es posible listar las aprticiones del dispositivo /dev/sdb
utilizando la opción -l
:
20:21 root@vaio emi # fdisk -l /dev/sdb Disk /dev/sdb: 28.9 GiB, 30979129344 bytes, 60506112 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xa6885f4f Device Boot Start End Sectors Size Id Type /dev/sdb1 8064 60506111 60498048 28.9G c W95 FAT32 (LBA)
Efectivamente se trata de un pendrive de 32 GB (28,9 GiB) que contiene una única partición "sdb1" con un sistema de archivos FAT32.
También es posible recurrir a herramientas como lsusb
, las cuales presentan información acerca de los dispositivos conectados vía USB, aunque éstas no suelen estar instaladas por defecto en la mayoría de las distribuciones GNU/Linux.
A continuación es posible utilizar dd
para copiar la iamgen ISO al pendrive. Este proceso reemplaza la tabla de particiones del dispositivo por una nueva, tal como lo especifica la imagen.
El utilitario dd
posee dos argumentos importantes: if
y of
:
if
: (input file) indica el archivo o dispositivo origen, en este caso deberá indicar la ruta al archivo de la iamgen a grabar.of
: (output file) indica el archivo o dispositivo destino, en este caso deberá indicar la ruta al dispositivo USB.
Luego los parámetros bs=4096 conv=sync,noerror
indican el tamaño de bloque a utilizar durante la coopia (4096 bytes) y las opciones de conversión para ignorar los errores en la copia del último bloque (difícilmente el tamaño de archivo sea múltiplo de 4096, lo que arrojaría un error de entrada al intentar copiar el último bloque, de tamaño menor a 4096). Se utiliza un tamaño de bloque grande para que la copia sea más rápida.
De esta forma se copia el archivo que contiene la imagen ISO al dispositivo /dev/sdb
:
20:22 root@vaio emi # dd if=/home/emi/Downloads/devuan_jessie_1.0.0_amd64_desktop-live.iso of=/dev/sdb bs=4096 conv=sync,noerror 213794+1 records in 213795+0 records out 868221495 bytes (868 MB, 828 MiB) copied, 367.554 s, 2.4 MB/s
Al finalizar la copia es posible extraer la unidad USB, previamente forzando la completación de todas las escrituras pendientes en los buffers del sistema operativo (para garantizar que se haya finalizado la escritura en el pendrive) mediante sync
:
20:22 root@vaio emi # sync
Extraer la unidad y conectar donde sea necesario.
Para más información, revisar las páginas de manual de los utilitarios mencionados:
man grep man dmesg man fdisk man dd man sync