Categories
Desarrollo

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

Categories
Desarrollo

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.

Categories
Servidores

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-simplestreams-libvirt sync release=bionic arch=amd64
neyder@log:~$ uvt-simplestreams-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.

Actualización

Si reiniciaste tu PC host, puedes iniciar la VM con:

neyder@log:~$ virsh start nuevaVM

Gracias @lyas por tu comentario.