martes, 31 de agosto de 2021

¿Cómo creo una tarjeta SD booteable con Ubuntu?

En una célebre nota costumbrista concedida a la revista Radiolandia, Juan Perón aconseja mientras se afeita y cuenta cómo crear una tarjeta SD booteable desde la terminal de Ubuntu

(...)

¡Vean bien!

La vida está para disfrutarse en una Comunidad Organizada.

Sin embargo, la fórmula de la Felicidad no está escrita. Existe en todas las gradaciones, y todas han de considerarse para establecer el justo Medio que otorgue la buenaventuranza que los trabajadores reclaman por Justo Derecho.

Es por ello que un buen Conductor ha de prever la experiencia que sólo ofrece experimentar responsablemente con múltiples estilos de conducción.


El campo del cómputo reclama esta misma omnicomprensión. Es por ello que la facilidad de contar con imágenes arrancables de sistemas operativos libres dotadas del llamado "arranque en vivo" es una gran facultad. Una que no podremos desaprovechar si lo que deseamos es hacernos peritos sin tener que estar gastando e instalando.

Muchos sistemas operativos libres cuentan ya con esta oportunidad. Pero para poder hacer uso de la misma, es imperioso contar un un medio de arranque capaaz de poder hacer efectivo este tipo de desarrollos.

Pues bien señores, esto es sencillo. Con sólo contar con un pendrive o un lector de tarjetas compatible (y su correspondiente tarjeta flash), podremos contar con instaladores arrancables.

El conocimiento requerido para crearlos y probarlos solía estar sólo al alcance del oligarca, pero os lo extenderé con el fundamento que el conocimiento en manos de las Masa Obreras es un herramental que las llevará a perdurar su liberación.

Normalmente podríamos utilizar un pendrive para tal cometido, atendiendo a la facilidad que el mismo tiene para crear un medio de arranque para una computadora, y que Ubuntu ya cuenta con un creador de pendrives.

Sin embargo, una tarjeta SD puede servir para el mismo propósito si contamos con un lector de tarjetas para la misma que cuente con interfaz USB (habrán de notar que la mayoría de los lectores de tarjetas USB internos también suelen contar con este tipo de interfaz normalizada).

 A tal motivo, podremos contar con una tarjeta SD y crear una tarjeta booteable (arrancable) utilizando nuestra terminal de Ubuntu. En primer lugar, insertamos la tarjeta SD en nuestro lector de tarjetas. Una tarjeta de 4 Gigabitios o de 8 Gigabitios puede servir para la mayoría de las distribuciones que pululan en nuestro ecosistema por la Liberación.



 Una tarjeta SD o MicroSD puede ser una opción simple.

1. Insertar la tarjeta SD en el lector y conectarlo

2. Descargar la imagen ISO

En otro caso, podremos contar con el fichero de la distribución. En este ejemplo, podremos disponer de un fichero con extensión img.gz (un archivo de imagen comprimido con GNU Gzip, o bien el más convencional archivo ISO, que denota una imagen normalizada para grabar en un disco compacto virgen.
 
En el primer caso, descomprimimos el fichero con:
 
gunzip -d fichero.img.gz

3. Verificar el /dev de la tarjeta

Es sumamente importante conocer que la ruta exacta al fichero de dispositivo de la tarjeta SD depende de la distribución Linux que utilicemos y de la configuración específica del sistema. Asumirlo "a tontas y a locas" puede ser el causal de gravísimos errores. Por tal motivo, conviene averiguar específicamente cual es. Para ello, ingresaremos el siguiente comando sin insertar tarjeta SD alguna en el lector.

df -h

Nuestro sistema nos devolverá todos los componentes de nuestro sistema de archivado. Dentro de ellos debemos identificar el de nuestra tarjeta SD insertada en base a su identificador de dispositivo y su capacidad particionada, o ruta. Por ejemplo, en el caso de Ubuntu, podría indicarnos el contenido de la tarjeta SD de marca Kingston de 8Gigabytes, como:

/dev/sdg1        8G   8G     0 100% /media/peron/Kingston_8GB

Esto nos indica que la ruta de dispositivo de la tarjeta es /dev/sdg1. Deben estar atentos a la suya propia podría variarl, o estar particionada en distintos identificadores.

4. Formatear la tarjeta y desmontarla

Necesitaremos desmontar todas las particiones de la tarjeta SD ante de grabar la tarjeta. Deben recordar imponer la ruta de dispositivo que obtuvieron en el paso anterior:

sudo mkfs.vfat /dev/sdg1 -I

unmount /dev/sdg1

5. Grabar la imagen ISO en la tarjeta SD

Grabaremos la imagen en la tarjeta SD dando empleo a la potente utilidad dd. Por favor tengan sumo cuidado al especificar la ruta correctamente, ya que este comando es irreversible ¡y sobreescribirá cualquier contenido preexistente en dicha ruta! Por ejemplo, el comando en Ubuntu sería:

sudo dd bs=4M if=archivo.img of=ruta_de_dispositivo

Por favor sean pacientes, ya que esto suele tardar bastante (varios minutos) dependiendo de la computadora y de la velocidad de la tarjeta SD utilizada. En este caso, el comando sería:

sudo dd bs=4M if=archivo.img of=/dev/sdg1

6. Asegurarse que todas las escrituras se hayan completado

Este paso es opcional, pero un reaseguro. Consiste en sincronizar todas las funciones de escritura en los dispositivos determinados. Para ello introducimos el comando:
 
sync

domingo, 22 de agosto de 2021

¿Cómo uso el comando sed para editar texto en Ubuntu?

Reunido con los Obreros, el Coronel Juan Perón explica sobre la organización para la defensa de sus intereses y explica cómo utilizar el editor de texto comandable sed en Ubuntu.

¡Compañeros!

Un buen trabajador ha de contar en su avío con las mejores herramientas para realizar su justa labor.

Esto lo saben ustedes en cada una de las profesiones. Para ello se han asociado en estas organizaciones; para la defensa de sus intereses. Yo de esto algo he hecho también, aunque como político, yo no soy mas que un mero un aficionado. Mi profesión es la de Conductor.

Pero también he buscado dominar las herramientas que - creo - me puedan servir en un momento u otro para hacer determinadas tareas. Un conductor no ha de contar sólo con un martillo, porque si no a todos los vé clavos.

En la conducción de un sistema computado, sucede mas o menos lo mismo, y esto se replica en los editores de texto. Han de saber que sed es un editor de cadenas de texto muy extendido en el cómputo arqueológico.

¡Os enseñaré como disponer del poder de sed para editar archivos!

Han de saber que el aprendizaje del comando sed se asemeja al ajedrez: lleva una ahora aprenderlo, y una vida dominarlo (o, al menos, debe practicárselo mucho). Con este tutorial aprenderás lo mismo que una apertura o gambito para cada una de las funcionalidades principales de sed.

sed es un editor de cadenas capaz de operar introduciéndole entrada en forma de cadenas (a través de caños), o bien con ficheros de texto enteros. Como carece de una interfaz interactiva propia de cualquier editor de texto que se precie moderno, deberán introducir órdenes para que él interpretará y ejecutará en la medida que avanza sobre el texto. 

Gracias a esto podrá operar también sobre el intérprete Bash así como en otros shells.

Con sed será posible:

  • Seleccionar texto
  • Sustituír texto
  • Agregar líneas al texto
  • Borrar líneas de un texto
  • Modificar (o preservar) un fichero original

Se han estructurado estos ejemplos para presentar y demostrar conceptos, y no para producir los comandos de sed más rígido (y más complejos) posibles. Incluso así, verás que en sed las funcionalidades de coincidencia de cadenas y selección de texto operan a través del uso de expresiones regulares (regexes). Deberías familiarizarte con ellas para obtener lo mejor de sed.

Un Ejemplo Simple

Primero vamos a usar echo para enviar algún texto a sed a través de un caño, y haremos que sed sustituya una porción del texto. Para hacerlo, ingresamos:

echo como_gorilear | sed 's/gorilear/peronizar/'

El comando echo genera una cadena de texto y el caño ("|") envía dicha la cadena "como_gorilear" a sed. Y a continuación le ordena aplicar una regla de sustitución simple (la "s" significa sustituir). sed buscará así la cadena de texto especificada en el texto contenido en el fichero, y reemplazará cualquier coincidencia con la segunda cadena.

La cadena "gorilear" será reemplazada por "peronizar", y la nueva cadena será presentada como una salida en la terminal.


Si bien las sustituciones son probablemente el empleo mas común que se hace de sed, es conveniente también saber cómo seleccionar y hacer coincidir texto.

Seleccionar Texto

Utiliza un fichero de texto para nuestro ejemplo. Usa uno que contiene un poema gauchesco décimas de Martín Castro, "Hachando los Alambrados". Lo podrán descargar con el comando:

wget https://caja.texto-plano.xyz/peron/hachando.txt

Ingresamos lo siguiente para mirarlo con el comando less:

less hachando.txt

Podremos abandonar el visualizador less presionando la tecla q

Para seleccionar algunas líneas del finchero, proveemos la línea inicial y la línea final del rango de selección. Si usamos un número aislado, sólo seleccionaremos dicha línea.

Para extraer las diez líneas que componen la primer décima, ingresa este comando:

sed -n '3,12p' hachando.txt

Observad la coma entre 3 y 12. La p significa "presenta las líneas coincidentes". Si actuase por defecto, sed presentaría todas las líneas. Veríamos todo el texto en el fichero, y las líneas coincidentes resultarían impresas dos veces (repetidas). Para impedirlo, emplea la opción -n ("sin salida") para suprimir todas las líneas no coincidente.

Ahora cambiarán los números de línea de modo de podeer seleccionar un verso diferente, como se indica:

sed -n '14,23p' hachando.txt

Podrán usar la opción -e ("expresión") para realizar selecciones múltiples. Si emplean dos expresiones, podrán seleccionar dos versos, tal como:

sed -n -e '3,12p' -e '14,23p' hachando.txt


 

Y si reducen el primer número en la segunda expresión, podrán insertar una línea en blanco entre los dos versos. A tal fin tipeen lo siguiente:

sed -n -e '3,12p' -e '13,23p' hachando.txt

También podrán escoger una línea de comienzo e indicarle a sed que avance a lo largo del fichero e imprima las líneas alternadamente, cada cinco líneas, o bien que saltee un número dado de líneas. El comando es similar a aquellos que empleamos anteriormente para seleccionar un rango. Para ello habrán de utilizar un tilde (~) en lugar de una coma (,) con el fin de separar los números.

El primer número indicará el comienzo de la línea. El segundo número le indicará a sed qué líneas luego de la línea de comienzo debe presentar. El número 2 significa cada segunda línea, 3 denota cada tercer línea, y así sucesivamente.

Ingresen lo siguiente:

sed -n '1~3p' hachando.txt

Lo normal es que desconozcamos el lugar preciso dónde se localiza un texto buscado, por lo cual suele ser imposible proveer los números de línea. Sin embargo, podremos utilizar sed para seleccionar las líneas que contienen la cadena de texto buscadas. Por ejemplo, probemos extraer todas las líneas que comienzan con "Y".

El caret (^) representa el comienzo de una línea. Delimiten el término a buscar entre barras (/). También incluirán un espacio luego de "Y", a fin de excluir del filtrado a palabras tales como "Yo".

Tal vez no sea obvio la primera vez que observemos un script de sed. Pero han de recordar que en los comandos anteriores expliqué que /p significa "presentar", o bien "imprimir". Sin embargo, ahora una barra la antecede, de esta manera:

sed -n '/^y /p' hachando.txt

Como resultado de esto se extraerán del archivo quince líneas que comiencen con  "y"y se las presentará en la terminal:


 

Realizar Sustiticiones

En nuestro primer ejemplo, expuse el primer formato básico para usar la substitución en sed:

echo como_gorilear | sed 's/gorilear/peronizar/'

La s indicaba a sed que lo que viene a continuación es una sustitución lineal. La primer cadena consistirá en la cadena a buscar ("origen"), mientras que la segunda cadena será la cadena a reemplazar ("destino"). Por supuesto, como sucede en la política, el problema está en los detalles.

Ingresa entonces el siguiente comando para cambiar todas las apariciones de la cadena "donde" a "ande", y le daremos a Serapio una voz más pampeana:

sed -n 's/donde/ande/p' hachando.txt

En la primer línea, sólo se cambiará la segunda ocurrencia de "donde". Eso es así porque sed se detiene luego de encontrar la primer coincidencia por cada línea. Si queremos realizar una búsqueda global - tal que se procesen todas las coincidencias existentes en cada línea del fichero, debemos agregar un modificador g, de la siguiente manera:

sed -n 's/donde/ande/gp' hachando.txt

Esto encontrará "donde" y lo reemplazará con "ande". Pero si la palabra fuese "Donde", sed es sensible a mayúsculas, y no considerararía que dicha instancia sea lo mismo que "donde".

Para solucionar esto, ingresaremos el siguiente comando, agregándole una i al final de la expresión que le asigne a la orden insensibilidad a mayúsculas:

sed -n 's/Donde/donde/gip' hachando.txt

Esto funcionará, pero la mayoría de las veces no querrás activar la insensibilidad a mayúsculas para todo. En tales casos, podrías usar un grupo de expresión regular que agregue insensibilidad de mayúsculas a cadenas específicas.

Por ejemplo, si encierras los caracteres entre corchetes ([]), serán interpretados como "cualquier caracter de esta lista de caracteres".

Introduce lo siguiente para incluir "D" y "d" en el grupo a buscar, de forma de asegurar que en la coincidencia entren tanto "Donde" como "donde" (o sea, se haga indistinta si está con minúscula o mayúscula "donde":

sed -n 's/[Dd]onde/ande/gp' hachando.txt

También podrás restringir la sustituciones a determinadas secciones del fichero. Supongamos que el fichero contiene un espaciado erróneo en su primer décima. Podrás usar entonces el siguiente comando ya conocido para analizar el primer verso:

sed -n '3,12p' hachando.txt


Buscaremos ahora dos espacios (aparecen luego de "facón"), sustituyéndolos por uno. Podrán hacer esto globalmente de manera que la acción se repita a lo largo de toda la primer línea. Para ser mas claro, la cadena de búsqueda es "espacio, espacio asterisco (*)", y la cadena de sustitución es "espacio". El 3,12 restringe la sustitución a únicamente las diez líneas del fichero que componen el primer verso.

Todo esto tendrá la forma del siguiente comando:

sed -n '3,12 s/ */ /gp' hachando.txt

¡Excelente! Lo que importa aquí es el patrón de búsqueda. El asterisco (*) representa cero o más del caracter precedente, que es un espacio. por ello, el patrón a buscar hará que sed analice cadenas de un espacio o más.

Si sustituyes un espacio simple por cualquier secuencia múltiple de espacios, corregirás el fichero a un espaciado regular, con un espacio simple entre cada palabra. En realidad, esto también sustituirá el uso de espacios simples por otro espacio simple igual, y aunque no es adverso en el resultado, enlentecerá la sustitución.

Si tipeas lo siguiente y reduces el patrón de búsqueda a un espacio simple, se hará inmediatamente evidente la necesidad de incluir los dos espacios:

sed -n '3,12 s/ */ /gp' hachando.txt

Como el asterisco busca cero o más del caracter precedente, interpretará cada carácter que no sea un espacio como un "cero espacio" y le aplicará la sustitución ¡agregando un espacio tras cada caracter!.


Sin embargo, si incluyes dos espacios en la cadena de búsqueda, sed deberá encontrar al menos un caracter de espacio antes de aplicar la substitución. Esto asegurará que los caracteres que no son espacioes permanezca inalterados.

El texto contiene dos errores. Si ingresas lo siguiente, usando la -e (expresión) que ya has utilizado anteriormente, podrás realizar dos o más sustituciones en simultáneo:

sed -n -e 's/gaucho/hombre/gip' -e 's/obrera/overa/gip' hachando.txt


Podrás lograr el mismo resultado utilizando un punto y coma (;) para separar ambas expresiones, de la siguiente manera:

sed -n 's/gaucho/hombre/gip;s/obrera/overa/gip' hachando.txt

Con esto sustituimos "obrera" por "overa". 

En el siguiente comando queremos corregir "la Quiaca". Si buscamos "la" para reemplazar la Quiaca a La Quiaca, se presentarán todas las "la" de texto con La (con mayúscula):

sed -n 's/[Ll]a/la/gp' hachando.txt


Para impedir esto, deberás sólo intentar sustituir en líneas que coincidan con otro patrón. Si modificas el comando para tener una cadena de búsqueda al comienzo, sólo consideraremos operar en líneas que coincidan con dicha cadena.

Ingresa lo siguiente para hacer que tu patrón de búsqueda sea la palabra "Quiaca".

sed -n '/Quiaca/s/[l]a/La/gp' hachando.txt

Esto te dará el resultado buscado.

También puedes usar el comando Cortar (c) para sustituir líneas entera que coincidan con la cadena de búsqueda propuesta. Tipearemos lo siguiente para buscar una línea con la palabra "neck" en ella, y la reemplazaremos con una nueva cadena de texto:

sed '/pachamama/c el amor de Pachamama.' hachando.txt

Nuestra nueva línea aparecerá en la parte inferior de nuestro extracto.

Insertar Líneas y Texto

También podremos insertar nuevas líneas y texto en nuestro fichero. Para insertar líneas nuevas a continuación de cualquieras que coincidan, usaremos el comando Agregar (a).

He aquí el fichero con el que queremos trabajar:

cat hachando.txt

Hemos numerados las líneas para hacerlo más simple de entender.

Tipea el siguiente comando para buscar líneas que contengan la palabra "He," e inserta una nueva línea debajo de ellas:

sed '/Castro/a Poeta uruguayo' hachando.txt

Tipea lo siguiente e incluye el comando Insertar (i) para insertar la nueva línea por encima de aquellas que contienen el texto coincidente:

sed '/Castro/i Poesía Gauchesca' hachando.txt


Podemos usar el caracter et o ampersand ("&"), que representa al texto coincidente original, para agregar una cadena de texto nuevo a la línea coincidente. \1 , \2 y demás, representan las subexpresiones coincidentes.

Para agregar texto al comienzo de todas las línea, se utiliza un comando de sustitución que haga coincidir todo en la línea, combinado con una cláusula de reemplazo que combine nuestro nuevo texto con la línea original.

Para hacerlo, introduce lo siguiente

sed 's/.*/--> agregado! &/' hachando.txt

Tipea lo siguiente, incluyendo el comando G, que agregará una línea en blanco entre cada línea:

sed 'G' hachando.txt

Si deseas agregar dos, o tres líneas en blanco, puedes usar G;G, G,G,G, y así.

Borrar líneas

El comando Borrar (d) borra las líneas que coincidan con el patrón de búsqueda, o aquellas líneas especificadas números de líneas o rangos de líneas.

Por ejemplo, para borrar la tercer línea, tipearíamos lo siguiente:

sed '3d' hachando.txt

Para borrar el rango de líneas siete a la doce, tipearíamos lo siguiente:

sed '7,12d' hachando.txt

Para borrar las líneas por fuera de un rango dado, usaríamos un signo de exclamación, de la siguiente manera:

sed '6,7!d' hachando.txt

Guardar los Cambios

Hasta ahora, todos los resultados se han presentado en la terminal, pero no los hemos guardado en ningún lado. Para hacerlos permanente, o bien se pueden guardar los cambios en el fichero original, o redirigir la salida a un fichero nuevo.

Sobreescribir el fichero original podría parecer lo obvio a realizar, pero suele requerir amplios cuidados. Si el comando ingresado con sed es incorrecto, podría realizar cambios al fichero original que fuesen muy difíciles de revertir.

Es una buena política instruir a sed para que cree una copia de respaldo del fichero original antes de ejecutar cualquier comando.

Puedes usar la opción En el Lugar (-i) para indicar a sed que escriba los cambios al fichero original, pero si le agregas una extensión de archivo, sed procederá a respaldar el fichero original con dicha extensión. Tendrá el mismo nombre que el fichero original, pero con una nueva extensión.

Para demostrarlo, buscaremos cualquier línea que contiene la palabra "simiente" y la borraremos. También respaldaremos nuestro fichero original a uno nuevo aplicándole la extensión .BAK.

Para hacerlo así, han de ingresar lo siguiente:

sed -i'.bak' '/^.*simiente.*$/d' hachando.txt

Tipeen lo siguiente para asegurarte que tu fichero de respaldo no presenta cambio alguno.

cat hachando.txt.bak

También podrán tipear el siguiente comando para redirigir la salida a un fichero nuevo y lograr un resultado similar:

sed -i'.bak' '/^.*simiente.*$/d' hachando.txt > nuevo_hachando.txt

Utilicen cat para confirmar que los cambios han sido realizados y escritos en un fichero nuevo, como se indica a continuación:

cat nuevo_hachando.txt

Habiendo dicho Todo esto

Como han notado, incluso este pequeño apunte de sed es bastante extenso. Existen muchas posibilidades para este comando, y existen muchísimas cosas que pueden realizar con él en pos de la Liberación.

Con suerte, estos conceptos básicos os habrán provisto de un cimiento sólido sobre el que podréis continuar aprendiendo. ¡saciando la sed de sed!

lunes, 9 de agosto de 2021

Curso para Docentes: "Introducción a Huayra Linux"

El programa educativo Juana Manso, ha abierto la inscripción para el curso para docentes "Introducción a Huayra", en modalidad virtual. 


Huayra 5 es el sistema operativo GNU con kernel Linux oficial de las netbooks del nuevo plan educativo argentino, llamado Juana Manso. Consiste en un veloz sistema operativo optimizado con mas de diez mil aplicaciones y contenidos educativos de muy alta calidad.

No es necesario conocimientos previos (aunque la plataforma requiere un número CUIL para acceder).

Curso Introducción a Huayra

El curso, dirigido a la comunidad, está desarrollado para acompañar a los usuarios y/o futuros usuarios del Sistema Operativo Huayra para dar los primeros pasos dentro del entorno. 

Se propone conocer, recorrer y poner en práctica los elementos funcionales básicos, recursos y aplicaciones que integra Huayra versión 5, incorporado a las netbooks del Plan Federal Juana Manso.

Fecha de inscripción: del 09/08 al 18/08
Fechas de cursada: del 25/08 al 24/09

Web del curso

Inscripción: https://formacion.juanamanso.edu.ar/cursos_educar
info@juanamanso.edu.ar

Duración10 Horas
Destinatarios Docentes, Equipos directivos, Supervisores / inspectores
Oferta formativa Autoasistida
Nivel educativo Capacitación
Contenidos temáticos Plan Federal Juana Manso, Sistema Operativo Huayra, Huayra 5.0, Software libre, LibreOffice, Recursos Educativos Abiertos, Aplicaciones informáticas, Linux
ModalidadEn línea / virtual