Aplicar un patch al kernel de siguiente versión

Descargarte las fuentes del kernel es sencillo con sólo una linea de comandos:

neyder@log:~$ apt source linux-image-$(uname -r)

No olvides en instalar los paquetes necesario para compilar ese paquete, con esta linea basta:

neyder@log:~$ sudo apt build-dep linux-image-$(uname -r)

Con esto vas y compilas el kernel a la forma que te guste.

¿Y si quiero otro kernel (uno nuevo)?

A mi me tocó necesitar el kernel de la subsiguiente versión de Ubuntu; estoy en bionic y quería el de disco.
Pues me voy directamente al repo de ubuntu, aquí, y me descargo las fuentes linux_x.y.z.orig.tar.gz, linux_x.y.z-m.n.diff.gz y linux_x.y.z-m.n.dsc.
Siendo el tar y el diff los importantes.

Toca descomprimir el kernel y aplicarle el parche.

neyder@log:~$ tar xf linux_x.y.z.orig.tar.gz
neyder@log:~$ cd linux-x.y.z
neyder@log:~/linux-x.y.z$ zcat ../linux_x.y.z-m.n.diff.gz | patch -p1

Sólo te queda configurar el kernel a tu gusto, aplicarle mas parches y compilarlo. Para ubuntu:

neyder@log:~/linux-x.y.z$ make -j$(getconf _NPROCESSORS_ONLN) deb-pkg LOCALVERSION=-custom

et voilàe

Ubuntu Base

Base es un sabor de Ubuntu con sólo lo necesario para ser Ubuntu, osea una shell y APT.

Sirve como una base para poder usar la distro en algún sistema especifico, como cloud, contenedores o así.

Para usarla necesitas 3 cosas:

  • La imagen* de Ubuntu Base para tu arquitectura.
  • Un kernel adecuado para tu sistema.
  • Un método de arranque.

Por ejemplo, si quieres tener un sistema i386 en tu ubuntu corriendo amd64:

Obtener imagen*

Descargar desde http://cdimage.ubuntu.com/ubuntu-base/releases

Descomprimir

Ya que la imagen es un sistema completo, debemos tener cuidado al descomprimirlo, usaremos tar con privilegios de súper usuario

neyder@cande:~$ ls
ubuntu-base-18.04.2-base-i386.tar.gz
neyder@cande:~$ mkdir bionic-32 ; ls
bionic-32/ ubuntu-base-18.04.2-base-i386.tar.gz
neyder@cande:~$ sudo tar xf ubuntu-base-18.04.2-base-i386.tar.gz -C bionic-32
neyder@cande:~$

Usa tu sistema

Ahora solo falta chrootear a tu sistema de 32 bits. Para eso puedes usar chroot pero te recomiendo usar arch-chroot del paquete arch-install-scripts pues hace la vida más fácil.

neyder@cande:~$ sudo arch-chroot bionic-32/
root@cande:/#

¡Eso es todo! no te olvides de actualizar APT para instalar cosas y todo eso.

En esta ocasión sólo usamos la imagen de ubuntu-base, el kernel lo pone tu sistema, y como es chrooteado no necesita bootloader. Pero si lo pones en una USB, con syslinux o UEFI, ya necesitarías esas cosas.

(*) Imagen no sería el termino especifico, pero es lo que más se acerca.

Extraer JPEG de RAW

De la cámara Canon, que tomo fotos en formato raw CR2, necesito extraer imágenes JPEG, por alguna razón ufraw-batch no me permite hacerlo en lote (batch) , pues me manda un SEG FAULT después de la primera conversión. Esto se solventa fácil con un loop:

neyder@log:~$ for i in $(ls *.CR2); do ufraw-batch --embedded-image --out-path=$HOME/Images/jpeg/ $i ; done

--out-path es para que las imágenes JPEG no se mezclen con los CR2.

Sucede que estos JPEG están sin data EXIF y su fecha de modificación es justo el momento que se realizaron. Como tengo un lote extenso de distintas fechas y me gustaría que mantengan su fecha de modificación, como no quiero cambiarle el nombre aún, utilizaré touch para cambiar la fecha de modificación:

neyder@log:~/Images/jpeg$ for foto in $(ls ../*.CR2) ;\
 do fotoname=$(basename -- "$foto") ;\
 fotodate=$(exiftool  ../${fotoname%.*}.CR2 | grep Create | tr -s " " | cut -d " " -f 4,5 | tail -n1 | sed 's/\:/-/' | sed 's/\:/-/' ) ;\
 touch -d "$fotodate" ${fotoname%.*}.embedded.jpg && echo ${fotoname%.*}.embedded.jpg $fotodate ;\
 done

Así tengo los JPEG junto a los RAW, para hacer se podría cambiar el nombre de los archivos a la fecha, o importar los datos EXIF del CR2 al JPEG.

Set de Robótica

Un set de robótica basado en arduino, esp32 o nrf, compatible con LEGO.

  • Core usando un SOC ESP32 o nRF52.
  • Primer firmware firmatta, pero desbloqueado para cualquier programación arduino*.
  • Librerías para principales lenguajes.
  • Etapa de potencia para controlar motores.
  • Conectores RJ-11 .
  • Carcasa compatible con LEGO technic®.
  • 10 construcciones demostrativas.

Maquinas virtuales en un 2×3

A veces cuando desarrollas o estas trasteando algo con tu servidor; te gustaría acceder rápidamente a una maquina virtual, sin mucha alharaca. UVTool será tu aliada

neyder@log:~$ sudo apt install uvtool
# Tip: debes reiniciar tu sesión para continuar

Primero que nada necesitas descargar las imágenes, esto con otro comando sencillo.

neyder@log:~$ uvt-simpletreams-libvirt sync release=bionic arch=amd64
neyder@log:~$ uvt-simpletreams-libvirt query
release=bionic arch=amd64 label=release (20190114)

Puedes cambiar release y arch acorde a tus gustos y necesidades. Y puedes escribir una tarea cron para estar al día con la última.

Ahora puede crear tu VM con un único comando:

neyder@log:~$ uvt-kvm create nuevaVM release=bionic arch=amd64
# Se creará la VM con tu llave ssh preexistente
neyder@log:~$ uvt-kvm wait nuevaVM
# Puedes acceder con 'ssh ubuntu@$(uvt-kvm ip nuevaVM)'
# o con 'uvt-kvm ssh nuevaVM'

Ya me acostumbré a poner los filtros release y arch pero puedes ignorarlos, en ambos casos.

Puedes en otro caso crear la VM un poco más especifica, pues por defecto será una con HDD-8GB y RAM-512MB, con las opciones:

neyder@log:~$ uvt-kvm create --memory 1024 --disk 40 --cpu 2 nuevaVM release=bionic arch=amd64
# También puedes usar '--packages <paquete-de-ubuntu>' y '--password <password-visible>'

Hay más opciones como usar un bridge para que la VM sea accesible desde otro PC, o usar una imagen de otro sitio.

Screencast de CLI

Osea como hacer una grabación de tu sesión de consola de solo texto, cuando te mandas a grabar un screencast de video, las letras no se ven bien y tal, con este comando será mucho más eficiente.

Descubrí esto por estar buscando algo con python, modbus, pyserial y así.

En eso descubrí Asciinema que es como un Youtube de CLI, leyendo descubrí que está inspirado en script y en scriptreplay . Son comandos incluido en el paquete bsdutils de Ubuntu.

Ya puestos por la curiosidad conocí ttyrec que como ven en el video inferior es más directo y permite grabar sesiones interactivas (las que usan interfaces ncurses y así) , es decir es más potente que script.

Finalmente Asciinema que a la vez de servicio web, puedes usarlo en privado, como la idea es compartir será este el que use al final. Su registro y uso es muy sencillo así:

asciinema rec

Para que puedas subir los videos su servicio primero debes autenticar, por única vez, con asciinema auth