Mostrando entradas con la etiqueta Pendrive USB. Mostrar todas las entradas
Mostrando entradas con la etiqueta Pendrive USB. Mostrar todas las entradas

domingo, 14 de abril de 2019

Cómo reparo GRUB con EFI en Ubuntu?

¡Trabajadores!

Desde los tiempos del Primer Peronismo he explicado cómo recuperar GRUB con el DVD de Ubuntu. Este procedimiento nos servirá para las instalaciones típicas, con viejo arranque desde el BIOS.

Sin embargo, de un tiempo a esta parte el efectivo arrancador GRUB ha debido afrontar la aparición del sistema de arranque firmado, llamado EFI o UEFI, que está presente en los equipos de más moderna factura.

UEFI/EFI es un arrancador compuesto, que es más complejo que el sistema convencional de arranque. GRUB puede utilizarlo, haciendo contacto desde lo que sería la UEFI que reside en la placa madre de nuestro sistema hasta una partición especial dentro del disco rígido que contiene el arrancador EFI. En el caso de Ubuntu 18.04LTS, esta partición tiene unos 512MiB de espacio y va formateada en FAT32 para máxima compatibilidad. Allí se deposita el arrancador en el punto de montaje /boot/sh, y luego en el resto de las particiones de sistema (si existen) continuarán en siguientes particiones, normalmente dentro del misma unidad de disco, o eventualmente en otras (según lo hayamos configurado especialmente).

Si hubiese habido una falla con GRUB o la partición EFI, y el sistema se niega a arrancar desde el disco rígido, podremos recuperarla, siempre y cuando no eliminemos las particiones de manera alguna.

Para ello utilizamos el DVD arrancable de Ubuntu, o un pendrive preparado con la ISO de Ubuntu (idealmente la misma versión que la utilizada para instalar la versión). La arrancamos y elegimos "Probar Ubuntu sin Instalar".

Una vez iniciado el escritorio Live, debemos identificar las particiones del disco. Para ello conviene utilizar gParted, que está incluido en el Ubuntu Live. Debemos prestar especial atención a la identificación de discos, pues la misma describe como /dev/sdx a la unidad de disco, /dev/sdxx es la partición donde se encuentra la EFI, y /dev/sdxxx es la partición de sistema.
Por ejemplo, en una instalación típica de Ubuntu 18.04LTS, en un único disco rígido, el disco podría ser /dev/sda, la partición EFI /dev/sda1 y la partición de sistema /dev/sda2. Sin embargo, debemos prestar atención pues la misma podría variar en otras condiciones, y es importante tomar nota de las identificaciones correctas.

Si lo deseamos hacer desde la terminal, abrimos una con Ctrl+Alt+T e ingresamos:

sudo fdisk -l

Una vez identificadas las particiones EFI y de sistema, debemos montarlas.

Ello lo haremos desde la terminal por medio de los comandos necesarios. Primero montamos la partición de sistema, usamos:

sudo mount /dev/sdxxx /mnt

Luego montamos la partición EFI:

sudo mount /dev/sdxx /mnt/boot/efi

for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done


Luego nos damos de alta como administrador en la partición de sistema recién montada:

sudo chroot /mnt


Confome estemos logueados como Root, tendremos al alcance nuestro disco rígido. Ahora debemos reinstalar la parte de GRUB que va en el disco. Ello se hace con:

grub-install /dev/sdX


...y lo actualizaremos con:


update-grub

Si nos dice que tuvo éxito, ingresamos:

exit

Y luego reiniciamos el sistema (se nos solicitará retirar el DVD o Pendrive de Ubuntu, y el equipo debería reiniciar correctamente desde el disco rígido con EFI, como lo hacía normalmente.


Editar errores de GRUB

Puede haber sucedido que hayamos cometido errores en la configuración de GRUB. Si tal fuese el caso y tuviésemos que editarlo que editarlo, lo haremos con:

mount /dev/sdxxx /mnt
chroot /mnt

Una vez montado el sistema de archivo del disco, lo editamos con:

nano /etc/default/grub

...y revisamos que todo esté correcto.


Si no tuviésemos la referencia del archivo de configuración de GRUB, econtraremos una muestra en /usr/share/grub/default/grub

Recrear la partición EFI para GRUB
Si por alguna causa catastrófica hubiésemos perdido la partición EFI, es fácil hacerla de nuevo.

Podemos usar fdisk o gParted para crear una nueva partición GPT con el tipo "EFI partition (1)", idealmente al principio del disco. Acto seguido la formateamos con:

sudo mkfs.msdos /dev/sdx

...luego la montamos con:

sudo mount /dev/sdXX /mnt/boot/efi

...y seguimos montando el resto del sistema, como en el caso anterior.

sudo mount /dev/sdXXX /mnt
sudo grub-install /dev/sdx


Recuperar la EFI cuando tenemos nuestro sistemas de archivos repartido en distintos discos rígidos
Indudablemente que si al instalar el sistema operativo se repartió el sistema de archivos largo de diferentes particiones (la carpeta raíz "/" en un disco y la carpetas /home, /tmp y /var en otro), la tarea de recuperación de la EFI será algo más desafiante.

En tal caso tenemos que proceder a averiguar y tomar adecuada nota de qué identificador de discos y en qué particiones está cada componente del sistema de archivos (lo averiguamos con sudo fdisk -l).

Ejemplo:
Suponiendo que tenemos dos discos, y que nuestro sistema de archivos está estructurado de la siguiente manera:

Disco de estado sólido de arranque y sistema /dev/sda:
Partición /dev/sda1 -> particion EFI
Partición /dev/sda2 -> carpeta "/" del sistema

Disco rígido de trabajo /dev/sdb:
Partición /dev/sdb1 -> carpeta /home
Partición /dev/sdb2 -> carpeta /tmp
Partición /dev/sdb3 -> carpeta /var,

En tal caso, si deseamos recuperar la partición EFI en este sistema de archivos dividido entre dos discos, deberíamos ingresar los siguientes comandos:


sudo mount /dev/sda2 /mnt
sudo mount /dev/sdb1 /mnt/home

sudo mount /dev/sdb2 /mnt/tmp
sudo mount /dev/sdb3 /mnt/var
sudo mount /dev/sda1 /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sda



update-grub

Si nos dice que tuvo éxito, ingresamos:

exit

Y reiniciamos el sistema.


Copiar la EFI a la UEFI de la placa madre

Este ejemplo puede resultar útil cuando cambiamos de disco rígido, o bien cambiamos de placa madre en el equipo. En tal caso la placa madre no podrá encontrar la ruta de UEFI (no tiene que ver aún con el arrancador GRUB. Para resolver este problema deberemos copiar EFI a la memoria UEFI de la placa madre.
  • Si nuestro disco es reconocido como /dev/sda (lo cual suele ser típico en computadoras portátiles o nettops, ya que llevan un único disco), el comando será:

sudo efibootmgr -c -l "\EFI\UBUNTU\SHIMX64.EFI" -L ubuntu

  • En cambio, si el disco es otro (en caso de instalaciones en sistemas con varios discos), habremos de adaptar el idenfiticador del disco /dev/sdX para que quede así:

sudo efibootmgr -c -l "\EFI\UBUNTU\SHIMX64.EFI" -L ubuntu -d /dev/sdX -p N

lunes, 16 de octubre de 2017

¿Cómo uso un emulador de diskettes floppy en Ubuntu?

Juan Perón habla sobre los predicamentos que necesitamos contabilizar en nuestra acción de Conducción, a la vez que explica cómo utilizar un emulador de disquetes 3 1/2 pulgadas y 1,44MB para memoria Flash Gotek en Ubuntu.


¡Trabajadores!

Siempre que puedo doy consejos que pueden servir a todos en su vida diaria, a fin de lograr el sano bienestar y la felicidad que merecemos por justo derecho. La Conducción tiene un espacio, pero sobre todo, tiene un tiempo. El dominio de esta dimensión temporal es imprescindible también para el éxito de nuestra Lucha. El tiempo puede manejarse, pero ello requiere un cabal conocimiento de las técnicas necesarias.
Así como el nuestro no es un Partido sino un Movimiento, debemos reconocer también en el hardware informático ciertas particularidades. Estos equipos computados no son en exclusiva propiedad de los sistemas de la información, sino que pueden y son empleados en una amplia variedad de recursos. Por tal motivo no es extraño actualmente encontrar electrónica de consumo dentro de máquinas de tejer o bordar eléctricas, etiquetadoras de volumen, fresadoras CNC, instrumentos musicales electrónicos, etc.
Contar con el último hardware es una bendición, pero también hemos estar en condiciones de contemplar el uso de hardware más veterano, que podría ser de dificultoso o costoso recambio. En ocasiones, podremos encontrarnos que no podemos reemplazar al hardware viejo así como así... Y en otras ocasiones no querremos hacerlo por un humano sentido de cariño dispensado hacia las máquinas.

Como Conductor, puedo decirles que - siempre y cuando nuestras capacidades técnicas y ganas lo permitan - podemos continuar usando hardware del ayer. Uno ha de prever los naturales inconvenientes que hacer esto representa, pero en ocasiones lo veremos ampliamente justificado.

Uno de los inconvenientes intrínsecos consiste en el de la obsolescencia de los medios de almacenamiento, ya sea por la dificultad de conseguirlos, o por el natural deterioro de sus partes móviles. Muchos equipos industriales presentan unidades de disquete como medio de almacenamiento y control de sus funciones, y si bien tales aparatos operan adecuadamente dentro de sus parámetros de mantenimiento (tal vez pensados para varias décadas de trabajo), sus unidades de disco son las que se encuentran obsoletas.

La computación llamada "retro" también suele responder a los mismos esquemas, ya sea operativo real o puramente de coleccionismo aficionado.

En la política es necesario conocer la historia para llegar a un buen puerto en cualquiera de los quehaceres que podamos emprender, y en el caso de los sistemas computados, esta también será práctica como base para apreciar. Hemos de saber que las unidades de discos rígido u ópticos actuales emplean el estándar Serial ATA desde el año 2004, pero en equipos de antaño (1986 en adelante) se empleaba el estándar de conexión IDE de 40 pines (ya no se fabrica). Con anterioridad a ello se usaban una variedad de estándares MFM que requería placas controladoras especiales. Esto hace que los discos ópticos CD-ROM constituyan una opción viable para equipos desde mediados de los 90s dotados de tales lectoras, pero no para todo tipo de equipos. Estas unidades lectoras sufren el mismo problema de estándares, y las de conexión IDE se dejaron de fabricar hace tiempo.

La posibilidad de aplicación en estos caso es la de recurrir a los disquetes, medios de almacenamiento portátiles de bajo costo, tradicionales en dicha era. Se trata de discos magnéticos de ánima flexible orientados al transporte físico de los datos; desde principios de los 80s se popularizaron los discos de 5 1/4 pulgadas (de varias capacidades hasta su definitiva en la IBM PC, de 1,2MB). Estos no se utilizaron mayormente en aplicaciones de la industria.
A principio de los 90s los disquetes de 5 1/4" quedaron ampliamente obsoletos. y fueron progresivamente reemplazados por los modelos de 3 ½ pulgadas, con medios de carcasa plástica rígida y con aleta metálica deslizante.

Estas unidades inicialmente permitían una capacidad de 720Kb y en seguida pasan a permitir 1,44MB.
Como conexionado de interfaz a la controladora de discos flexible, estas disqueteras emplean un cable FDC normalizado de 34 pines tipo cinta, junto a un cable de alimentación de 5v a Molex.


Desde el punto de vista lógico en la arquitectura IBM PC pueden emplearse dos unidades por controlador, las cuales reciben la nomenclatura GNU con Linux de /dev/fd0 y /dev/fd1 (A: y B: en MS-DO$ o Window$).

Las unidades capaz de leerlos se hicieron increíblemente populares a partir de 1990 no sólo en la IBM PC, sino que por su tamaño y consumo de 12v estandarizado, se incluyeron en una gran variedad de dispositivos diferentes. Es por ello que son los más requeridos y adecuados para mantener en funcionamiento dicho hardware. Se fabricaron hasta aproximadamente el año 2010, y si bien pueden encontrarse usadas en precios relativamente asequibles y buena condición de funcionamiento, esto no será así por siempre, ya que dependen también de la calidad de los medios, que ya no se fabrican.

Debemos tener en cuenta también que a principios de la década del 2000 aparecieron las disqueteras externas de 3 1/2" con interfaz USB, capaces de operarlos en los entornos munidos de este dispositivo, pero estas no son capaces de operar en sistemas que no estan dotados de esta interfaz aparecida en 1996 (y recién masificada unos años después).

Los disquetes fabricados entre principios de los 90s y mediados de los 90s - incluso hoy - suelen operar de muy buena forma, pero lamentablemente a partir de mediados de los 90s la calidad de fabricación de los mismos disminuyó drásticamente, al punto de que los discos fabricados a partir del año 2000 suelen tener muy graves problemas de durabilidad, y operar de forma mediocre. Tal vez ello es uno de los motivos por el cual muchos los recuerdan así.

Por tal motivo y para solucionar estos inconvenientes que he expuesto - amén de evitar tirar un hardware viejo por la ventana - es que surgen los emuladores de discos floppy para memorias Flash. Estos aparatos de distintas marcas (Flexidrive, Gotek, Ipcass) vienen dotados con los nombrados conectores traseros normalizados (una toma miniMolex para alimentación e interfaz de 34 pines para floppy) a fin de conectarlos a un dispositivo provisto ya de una controladora de disquetes, y reemplazar finalmente la antigua disquetera.
Básicamente estos aparatos funcionan de la siguiente manera: debemos colocar en el puerto USB un pendrive (no incluido) y luego formatearlo usando particionado MSDOS/FAT. Para ello se emplea funciones incorporadas en el mismo emulador o un programa incluido. Como los pendrives actuales cuentan con mucha más capacidad que los 1,44MB (1,39MiB luego de formateado), el software incluido se encarga de dividir lógicamente la capacidad del pendrive en 99 o 999 particiones (dependiendo el modelo de emulador). Cada una de estas particiones opera como un banco de memoria independiente, y almacena el contenido de un diskette. Una vez insertado este pendrive formateado, y por lo cual por medio de los botones y el display luminoso que el emulador cuenta en su frente, podremos acceder hasta 99 o 999 disquetes virtuales con fin de realizar operaciones de lectura y escritura. Solo podremos "usar" un banco de memoria por vez (salvo que poseamos dos unidades de disquete o emuladores en un sistema).

En este caso particular versaremos sobre un modelo bastante común y tal vez algo antiguo, de la marca "Gotek" (provienen de la República Popular China). A este lo acompaña una documentación mediocre escrita en el idioma de Mao, por lo cual os ilustraré en su uso particular de forma Justicialista. Por ejemplo, algunos modelos de emuladores mas avanzados como el Ipcass realizan particiones  "virtuales" armando directorios o carpetas numeradas, cada una de ellas limitada para almacenar aquel máximo de 1,44MiB. Sin embargo, en este modelo Gotex y varios otros el esquema es más complejo ya que las particiones de imagenes quedan todas unidas en un archivo "img", y además el software provisto para realizar el formateo específico en el pendrive, además de estar en chino, funciona solo en Windows 98 o XP.

Este emulador Gotek sólo soporta el formato IBM/PC de Alta Densidad, 1,44MB MFM (emulando un disquete de 3½ pulgadas). Puede operar en FAT16 (tipo MSDOS) o FAT32 (tipo Window$). No soporta 720kb ni otros formatos como los disponibles en diskettes de 5 1/4 pulgadas, en 1,2MB o 360kB, por lo cual podría fallar en otros equipos que no tengan un controlador de discos flexibles (FDC) "tipo IBM". El FDC de los equipos IBM PC espera que la unidad produzca 300rpm al girar el disco, y produce una señal MFM de 500kbit/s de transferencia, codificando 18 sectores por pista en sincronismo con el esquema estandar IBM. Por tal motivo, esto hace que no existe posibilidad de emular disquetes protegidos contra copia o de instalación tipo DMF, formatos de doble densidad o GCR utilizados en otros equipos diferentes.

Aún así, si lo queremos para reemplazar una disquetera de PC en 1,44MB, no presenta falla alguna.

Formatear el pendrive y preparar su uso

Desde el emulador:

Afortunadamente existe una solución a nivel hardware preprogramada en este emulador Gotek particular que nos evita tener que usar tal software mediocre. Por lo que he evaluado, cualquier pendrive funciona correctamente. Idealmente deben ser de 256MB o mayores, pero no recomiendo muy grandes con este tipo de dispositivo. Si no hay un pendrive conectado, en el display se indica C4. Una vez que insertamos uno indicará C5, luego C6 y finalmente 00.

Para formatear el pendrive en el emulador debemos apagar el equipo, dejar colocado un pendrive en el puerto USB (usaremos un viejo pendrive de 1GB), y reencendemos el equipo mientras mantenemos presionados los dos botones del frente del emulador (el indicado con las flechas → y ←). En pocos segundos nuestro pendrive recibirá el formato FAT requerido. Ello hará que el emulador borre todo contenido que hubiese en el pendrive y lo prepare (indicará progresivamente U01, 126, F01, 00 en el display).

Al formatear el pendrive, el banco 00 recibe el tamaño del pendrive completo (y no funcionará correctamente en este modo, recibiremos errores erráticos de lectura y escritura). De modo que no funciona si queremos usarlo como un medio de almacenamiento mayor a 1,44MB en nuestro viejo sistema. Debemos avanzar el emulador hasta el banco 01 usando el botón →, para pasar al primer disquete virtual en el emulador. Debemos estar atentos a que en este modelo no existe protección de escritura para los discos virtuales (por lo cual el sistema siempre podrá borrar los datos existentes en los floppys virtuales).

Desde GNU con Linux:

Nuevamente, el emulador viene con un software para este menester, pero el mismo está en chino y sólo opera bajo Window$. Por tal motivo, os enseñaré como usar la poderosa aplicación de dd de GNU con Linux para realizar los procedimientos básicos que hace este software. Su uso en GNU con Linux es algo más complejo - naturalmente - pero también mucho más poderoso, con la ventaja de que lo podremos hacer perfectamente con software completamente libre y de bajo nivel.

En los siguientes comandos, emplearemos bloques de datos de 1024 bytes sólo a manera de facilitar los cálculos (los disquetes reales de 1,44MB usan sectores de 512 bytes).

Debemos crear en nuestro disco rígido una imagen "virgen" de 153.600KB (150MB aproximadamente) con cero contenido, llamado imagenesunidas.img. Este tamaño  con el tamaño total adecuado para almacenar todos los 100 bancos de disquetes virtuales en el formato usado por el emulador. Para ello abrimos una Terminal con Ctrl+Alt+T e ingresamos el siguiente Comando de Organización:

dd if=/dev/zero of=imagenesunidas.img bs=1024 count=153600

...y luego copiamos estos 100 bancos de floppys virtuales unidos al pendrive, a partir de la posición count=1 (lo que representa el inicio físico del pendrive):

dd if=imagenesunidas.img of=/dev/sd? bs=4M


(naturalmente reemplazamos /dev/sd? con la nomenclatura de dispositivo que corresponda a nuestro pendrive, si no la sabemos podemos usar:

sudo fdisk -l 

...para que el sistema nos liste nuestros dispositivos y ver a cuál letra corresponde el pendrive).


Usar el emulador de diskettes Gotek

Si estamos en GNU con Linux, podremos colocar el pendrive en el emulador de floppys, pasar al banco 01, montarlo, y comenzarlo a usar.

Si estamos en Window$ / FreeDOS / MS-DO$, tal vez queramos formatear el diskette virtual de la posición 01 antes de comenzar a utilizarlo. Para ello indicamos:

format a:

Ya con ello podremos usarla como si se tratara de un disquete común. Podremos hacer lo mismo con el resto de los bancos de disquetes virtuales (hasta el 99). Si quisiéramos hacer un disquete virtual de arranque, el comando bajo MS-DO$ o FreeDOS sería:

format a: /s


Escenario 2: Tenemos una disquetera funcional real y queremos crear archivos de imágenes a partir de disquetes físicos, en GNU con Linux:

Supongamos que tenemos un sistema que cuenta con una disquetera real y disquetes que queremos virtualizar. Para crear un archivo de imagen espejo (img) a partir de estos disquetes físico podremos utilizar:

cat /dev/fd0 > /ruta/a/imagendediskette.img

De esta manera podremos respaldar nuestros viejos disquetes a una serie de archivos de imagen *.img, los cuales podremos guardar en otros medios de almacenamiento (incluyendo el emulador) y asegurar su contenido congelado. Esto sirve independientemente del formato que haya tenido el disquette en sí.

Para hacer el paso inverso y restaurar un disquete a partir de una de estas imágenes *.img, podríamos colocar un disquete virgen en la disquetera e ingresar el siguiente comando de organización:

cat /ruta/a/imagendediskette.img > /dev/fd0



Escenario 3: queremos copiar las imágenes de diskettes al pendrive, para usarlo en el emulador.

Para ello debemos copiar 1.440kB desde imagendediskette.img al fichero de los 100 bancos de memorias (al que habíamos llamado imagenesunidas.img). A estos 1.440KB no debemos ponerlos en cualquier lado, sino en la posición física que tenga el corrimiento correcto (offset). Esta se delimita haciendo el cálculo de 1536 multiplicado por el número de banco de memoria del pendrive que querramos utilizar). La sintaxis del comando sería:

dd if=imagendediskette.img of=imagenesunidas.img bs=1024 count=1440 seek=(1536 x nro. del banco de memoria del emulador) conv=notrunc

Un ejemplo suele aclararlo todo, como decía Napoleón. Supongamos que quisiéramos copiar una imagen llamada floppy1win311.img al archivo de 100 imágenes de discos unidas llamadas imagenesunidas.img, pero lo queremos colocar específicamente en el banco memoria número 5 del emulador. Para ello ingresaríamos debemos usar el offset adecuado en el parámetro "seek", en este ejemplo sería 7680 (1536 por la variable, que es el banco 5, nos da 7680):

dd if=floppy1win311.img of=imagenesunidas.img bs=1024 count=1440 seek=7680 conv=notrunc

...con esto habremos inyectado la imagen del floppy "floppy1win311" en el banco número 5 de las 100 imágenes unidas del pendrive. Acto seguido hemos de copiarlas de nuevo al pendrive, como hicimos al formatear desde GNU con Linux, a través de la siguiente sintaxis:

dd if=imagenesunidas.img of=/dev/sd? bs=4M

Recordemos averiguar cual es la nomenclatura de nuestro pendrive en el sistema, por medio del comando sudo fdisk -l. En nuestro ejemplo, si el pendrive recibe la nomenclatura /dev/sde, entonces el comando de organización sería:

dd if=imagenesunidas.img of=/dev/sde bs=4M

Nota: Al final del artículo os dejaré como anexo los Offsets adecuados que deben indicarse dentro del parámetro "seek" para cada uno de los 99 bancos de memoria.


Escenario 4: queremos respaldar las 100 imágenes unidas desde un pendrive USB

En GNU con Linux, enviamos el siguiente comando para respaldar las 100 imágenes de disquetes desde el pendrive nomenclado /dev/sd? a respaldodelasimagenes.img

dd if=/dev/sd? of=respaldodelasimagenes.img bs=1024 count=153600


Escenario 5: Si queremos sólo respaldar uno de los bancos de memoria del pendrive del emulador a un archivo de imagen

Supongamos que queremos crear un archivo de imagen llamado disketteespecifico.img, entonces anotamos el banco de memoria en donde estaba, colocamos el pendrive en nuestro sistema GNU con Linux e ingresamos:

dd if=/dev/sd? of=disketteespecifico.img bs=1024 count=1440 skip=(1536 x nro. de banco de memoria del emulador)


Escenario 6: Queremos reemplazar un disquete virtual específico dentro de la imagen unida de 100 disquetes dentro del pendrive USB.

Esto lo podemos hacer directamente bajo GNU con Linux si sabemos el banco específico que queremos reemplazar. Debemos usar la siguiente sintaxis:

dd if=undisquete.img of=/dev/sd? bs=1024 count=1440 seek=(1536 x  nro. de banco de memoria del emulador)


Escenario 7: Queremos generar un nuevo disco floppy, copiarle un archivo, y escribir dicho fichero en uno de los bancos de memoria del emulador.

Ahora bien, si quisiéramos crear una imagen de un disquete virgen de 1,44MB formateado según el sistema de archivo clásico de MS-DOS, pero desde nuestro GNU con Linux, tendríamos que usar:

mkfs.msdos -C /ruta/a/imagenvacia.img 1440

...y para montarla en nuestro sistema:

sudo mkdir /media/floppy1/
sudo mount -o loop imagenvacia.img /media/floppy1/



Dentro de la carpeta /floppy1 montada, podremos guardar los ficheros que nos hagan falta, y luego podremos copiar la carpeta entera al banco de memoria deseado del pendrive como ya se ha explicado (sólo debemos tener presente que no podremos superar en esta carpeta los 1.440kB o 1,44MB de almacenamiento).

En resumen, el emulador de discos floppys de 3 ½" en memoria Flash opera adecuadamente a partir del banco de memoria 01 en GNU con Linux, y también operan excelentemente bajo MS-DOS 6.22, Windows 3.1, Windows 95, y FreeDOS. Si bien los programas incluidos no son prácticos, gracias a estas líneas de comando podrán almacenar en un pendrive una buena cantidad de archivos de imágenes. En mi caso he copiado las imagenes de MS-DOS 6.22 en castellano junto con las de Windows 3.11 en castellano.

Os incluiré los valores de desvío (Offset) que debemos indicar como variable del argumento "seek" para acceder a cada banco de memoria del emulador. Junto a cada banco podremos también anotar

Banco Offset (Decimal)
0     0
1
     1536
2
     3072
3
     4608
4
     6144
5
     7680
6
     9216
7
     10752
8
     12288
9
    13824
10
   15360
11
   16896
12
    18432
13
    19968
14
   21504
15
    23040
16
   24576
17
   26112
18
   27648
19
    29184
20
   30720
21
   32256
22
   33792
23
   35328
24
   36864
25
   38400
26
   39936
27
   41472
28
   43008
29
   44544
30
   46080
31
   47616
32
   49152
33
   50688
34
   52224
35
   53760
36
   55296
37
   56832
38
   58368
39
   59904
40
   61440
41
   62976
42
   64512
43
   66048
44
   67584
45
   69120
46
   70656
47
   72192
48
   73728
49
   75264
50
   76800
51
   78336
52
   79872
53
   81408
54
   82944
55
   84480
56
   86016
57
   87552
58
   89088
59
   90624
60
   92160
61
   93696
62
   95232
63
   96768
64
   98304
65
   99840
66
   101376
67
   102912
68
   104448
69
   105984
70
   107520
71
   109056
72
   110592
73
   112128
74
   113664
75
   115200
76
   116736
77
   118272
78
   119808
79
   121344
80
   122880
81
   124416
82
   125952
83
   127488
84
   129024
85
   130560
86
   132096
87
   133632
88
   135168
89
   136704
90
   138240
91
   139776
92
   141312
93
   142848
94
   144384
95
   145920
96
   147456
97
   148992
98
   150528
99
   152064

sábado, 1 de abril de 2017

¿Cómo puedo hacer un pendrive o tarjeta flash booteable desde un ISO en Ubuntu?

Al asumir su primera presidencia el 4 de junio de 1946, Juan Perón pronuncia un sonado discurso en el que reivindica las necesidades políticas de cambio en la Argentina, y enseña cómo crear un pendrive arrancable a partir de una imagen ISO Live desde la Terminal en Ubuntu.


(...)
"El esplendoroso pronunciamiento del pueblo me autoriza a pedir y me mueve a esperar la colaboración de todos. La pido con la sinceridad y la humildad compatible con la dignidad con que un gobernante puede pedir para el bien de la Nación. No me guían intenciones ocultas; no hay, ni jamás ha existido, doblez en mis palabras; nada desvía ni empaña la trayectoria de mis convicciones. Llamo a todos al trabajo que la Patria tiene derecho a esperar de cada uno. Quienes quieran oír que oigan; quienes quieran seguir que sigan. Mi empresa es alta y clara mi divisa; mi causa es la causa del pueblo; mi guía es la bandera de la Patria.
Al ocupar la primera magistratura de la República, quedan borradas las injusticias de que he sido objeto y los agravios que se me hayan podido inferir. De mi voluntad, de mi mente y de corazón han desaparecido las pasiones combativas y sólo pido a Dios que me conceda la serenidad que requieren los actos de gobierno. Por ello, creo tener derecho a recabar de todos que juzguen mis actos y los de mi gobierno con igual imparcialidad. En definitiva, no aspiro a otra cosa sino al reconocimiento público –ya obtenido electoralmente– de que en todo momento, con paso firme y desoyendo a menudo capciosos cantos de sirena, encaminé al país hacia el completo restablecimiento de nuestras normas institucionales democráticas; y de que mi labor pretérita y mi labor futura se ha
inspirado y se ha de inspirar en la defensa del bien público. Si consigo esto, me daré por suficientemente compensado de las amarguras, de la heridas, de los desgarrones que todo hombre público va dejando a través de su vida en las zarzas del camino. Y no creáis que por ello guarde rencor porque, al igual que un insigne ingenio de nuestra América, “si una espina me hiere, la aparto del
camino, pero no la aborrezco”.

La objetividad de mi posición para con todos y cada uno de los ciudadanos y de los partidos políticos, no ha de representar un obstáculo para que mi gobierno se oriente en el sentido de mis antecedentes. Hacer otra cosa, sería traicionar a la mayoría de los electores. En los regímenes republicanos de tipo presidencialista, inversamente a lo que sucede en otros, el presidente no es
un mero poder moderador sino que desempeña el propio Poder Ejecutivo de la Nación
, que ha de ejercer como emanación de la voluntad general. Es decir: para ser fiel a sus antecedentes y a la consagración popular, el presidente de la Nación Argentina, ha de llevar a buen termino “su política”, orientándola hacia el bienestar de todos los argentinos.

Mi política es la de dar a todos los Argentinos el software libre que tanto anhelan. Normalmente, ello no constituye gran problema, pues podremos armar CDs o DVDs arrancables de distintas distribuciones GNU descargando de Internet las imágenes en formato normalizado (ISO), y usando una grabadora de discos compactos para lograr nuestra copia. Luego podríamos utilizar el disco compacto para arrancar el instalador del sistema operativo, o directamente probarlo sin instalar (modo vivo o "live").

Naturalmente, en varias ocasiones esto deja de ser práctico. Cada disco compacto permite una única imagen, y por otro lado necesitamos un sistema que cuente con una lectora de CD/DVD para poder grabarla. A veces puede resultarnos eficiente un DVD-RW (regrabable), pero ineludiblemente necesitaríamos contar con una grabadora.

Por todo ello, el método que considero más práctico para hacernos con imágenes arrancables, es almacenarlas en un Pendrive, pues al ser un medio de almacenamiento conformado por memoria Flash, podremos reescribirlo fácilmente para cargarles otra imagen ISO, amén de poder arrancarse fácilmente en todo tipo de equipo (por ejemplo, equipos próximos a la obsolescencia).

Para grabar la imagen ISO en un Pendrive, se pueden emplear programas de interfaz gráfica especialmente preparados para tal menester (en Ubuntu lo activamos uno desde Sistema / Administración / Creador de discos de arranque).

Ahora bien ¿qué sucede si deseo hacer el mismo predicamento desde la Terminal Linux?

Para ello no usaremos el conocido comando cp (copiar) sino que es imprescindible usar el viejo y peludo dd. Esta poderosa utilidad nos permite convertir entre distintos tipos de ficheros y esquemas. 

El comando de organización a utilizar tendrá la siguiente sintaxis:

sudo dd if=archivo.iso of=dispositivo_de_almacenamiento bs=4M; sync

Un ejemplo suele aclararlo todo, como decía Napoleón.

Vean señores, dispongo de un viejo y peronista pendrive de tan sólo 512 MB (medio giga), y por tanto obsoleto para la mayoría de los usos. Antes de "tirar un viejo por la ventana" mas vale darle nueva vida como medio de arranque USB para un sistema operativo GNU con Linux. A dicho pendrive le incorporaremos Puppy Linux Ubuntu Tahr, de 32 bits. Dicha distribución nos permitirá contar con un sistema operativo completo de tamaño reducido (Puppy requiere apenas 235MB, por lo que cabe en el viejo pendrive). Por lo demás, Puppy es capaz de arrancar en equipos escasa potencia (por ejemplo, netbooks con 1GB de memoria RAM). Naturalmente, podríamos usar cualquier ISO arrancable que deseemos, en este caso usaremos Puppy Linux a modo de ejemplo.

En primer lugar descargamos la ISO deseada. Desde la Terminal, podríamos hacernos con la ISO de Puppy Linux abriendo una consola con Ctrl+Alt+T e ingresando los siguientes Comandos de Organización:

cd ~/Descargas/ ;
wget http://distro.ibiblio.org/puppylinux/puppy-tahr/iso/tahrpup%20-6.0-CE/tahr-6.0.5_PAE.iso ;

Mientras se descarga el fichero tahr-6.0.5_PAE.iso, podremos abrir una segunda terminal con Ctrl+Alt+T y aprovechar el tiempo para identificar fehacientemente cuál nomenclatura de dispositivo que nuestro sistema asigna al Pendrive que queremos utilizar. Esta información es relativamente sencilla de obtener, pero es de capital importancia, pues si no la conocemos con exactitud, podríamos sobreescribir los datos en un dispositivo de almacenamiento diferente al deseado con consecuencias catastróficas (por ejemplo, sobrescribir el sector de arranque de nuestro disco rígido).

Para conocer la nomenclatura con el cual nuestro GNU con Linux designa nuestros medios de almacenamiento, debemos conectarlo (normalmente, a través de un puerto USB, pero también podríamos usar un lector de tarjetas si estamos utilizando tarjetas de memoria Flash). 
Acto seguido, usaremos el comando fdisk y le ordenaremos un listado de dispositivos de almacenamiento. La orden sería la siguiente:

sudo fdisk -l

A ella el sistema nos devolverá un listado bien detallado de los discos y sus particiones (aquellos internos y los conectados por USB). En nuestro sistema de ejemplo existen dos discos: el disco nomenclado como /dev/sda es un disco SSD de 120 GB (o sea, 111,8 Gigabytes luego de ser formateado), mientras que el /dev/sdb es un disco rígido de 1TB (931,5 Gigabytes luego de ser formateado). Pero también se hace presente nuestro pendrive de 512 MB, nomenclado como /dev/sdc (de apenas 488 Megabytes luego de ser formateado).

Disco /dev/sda: 111,8 GiB, 120 GB, 234441648 sectores
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de Sector (lógico/físico): 512 bytes / 512 bytes
Tamaño E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de Etiqueta de Disco: dos
ID de Disco: 0xyyyyyyy

Disposit. Inicio Start Final Sectores Size Id Tipo
/dev/sda1 * 2048 234440703 234438656 111,8G 83 Linux

Disco /dev/sdb: 931,5 GiB, 1000 GB,, 1953525168 sectoresUnidades: sectores de 1 * 512 = 512 bytesTamaño de Sector (lógico/físico): 512 bytes / 4096 bytesTamaño E/S (mínimo/óptimo): 4096 bytes / 4096 bytesTipo de Etiqueta de Disco: dosID de Disco: 0xzzzzzzz

Disposit. Inicio Start Final Sectores Size Id Tipo
/dev/sdb1 2048 1816408297 1816406250 866,1G 83 Linux
/dev/sdb2 1919924224 1953523711 33599488 16G 82 Intercambio Linux / Solaris

Disco /dev/sdc: 488,8 MiB, 512 MB, 1000944 sectores
Unidades: sectores de 1 * 512 = 512 bytesTamaño de Sector (lógico/físico): 512 bytes / 512 bytesTamaño E/S (mínimo/óptimo): 512 bytes / 512 bytesTipo de Etiqueta de Disco: dosID de Disco: 0xxxxxxxx

Disposit. Inicio Start Final Sectores Size Id Tipo
/dev/sdc1 2048 999423 997376 487M b W95 FAT32

Estos datos nos permiten inferir que que el dispositivo /dev/sdc de 488,8 MiB es el viejo pendrive de 512 MB. Para hacer un doble chequeo (pues podrían coincidir en el sistema varios dispositivos del mismo tamaño, o particiones que justo coincidan) usaremos también el comando:

df -l

y el sistema debería devolvernos algo como:

S.ficheros bloques de 1M Usados Disponibles Uso% Montado en
udev          7983           0         7983   0% /dev
tmpfs         1601          10         1592   1% /run
/dev/sda1   112547       52333        54475  49% /
tmpfs         8003           5         7999   1% /dev/shm
tmpfs            5           1            5   1% /run/lock
tmpfs         8003           0         8003   0% /sys/fs/cgroup
/dev/sdb1   872871      470553       357957  57% /home

tmpfs         1601           1         1601   1% /run/user/1000
/dev/sdc1      487           1          487   1% /media/peron/PENDRIVE512

...esta lista nos confirma que el dispositivo /dev/sdc es el pendrive de 512MB (y que además está vacío y montado como una subcarpeta dentro de la carpeta /media/usuario). Tomamos nota de /dev/sdc.

Como dijimos, en este ejemplo anhelamos sobrescribir en el pendrive /dev/sdc usando los datos contenidos en el archivo ISO descargada, de manera que nos quede arrancable. Según la sintaxis del comando dd, el archivo de entrada (if, o "input file") será la ISO de Puppy Linux, llamada tahr-6.0.5_PAE.iso, en tanto que el dispositivo de salida (of, "output file") será el pendrive /dev/sdc. Naturalmente, vosotros habrán de cambiar las variables por las que os correspondan en vuestro casos particulares. En nuestro ejemplo, para copiar dicha ISO al pendrive ingresamos:

cd ~/Descargas ;


sudo dd if=tahr-6.0.5_PAE.iso of=/dev/sdc bs=4M; sync 

El sistema comenzará a copiar la ISO al dispositivo. Debemos tener en cuenta que en muchas ocasiones puede suceder que el sistema nos informe que los registros han sido escritos, pero esto no significa que los datos hayan sido físicamente copiados aún. En realidad sólo significa que se ha emitido la orden de copia al dispositivo, pero sucederá que la misma todavía estará en transfiriéndose y escribiéndose en el dispositivo (si el pendrive cuenta con una luz LED, la misma indicará "escritura"). La velocidad de copiado depende puramente de la velocidad del medio de almacenamiento y los buses de transporte. En resumen, sólo debemos asumir que la escritura ha sido finalizada cuando el sistema nos devuelva al Prompt de la terminal.
Una vez finalizada la copia, podremos extraer el pendrive y volver a conectarlo para ver si el sistema lo monta (o sea, "levanta" sus datos normalmente como cualquier otro pendrive bien formateado). Si este es el caso, ya contaremos con el pendrive preparado y listo para arrancarlo con Puppy Linux derivado de Ubuntu, en cualquier computadora compatible.

Simplemente hay que reiniciar el sistema, y durante el arranque ingresar al Boot Menú, y seleccionar el pendrive como medio temporal de arranque. Al cabo de un par de minutos arrancará Puppy Linux Tahr, que es un excelente sistema operativo para contar con una sesión operativa capaz de arrancar en cualquier equipo.