Autorecompilar debian al estilo gentoo.

Saludos, comunidad, en esta ocasión quiero mostrarles cómo compilar nuestro sistema entero al estilo gentoo de forma automática gracias a un script que he realizado para dicha tarea. Las ventajas son notables en rendimiento y uso de memoria al preferir la optimización agresiva del sistema. Para eso usamos apt-build pero el script lo instala desde apt si no estaba instalado. Luego el programa crea una lista entera de los paquetes instalados en la configuración de apt-build de /etc/apt que contiene el listado de los programas a recompilar incluidos el kernel.
Se puede eliminar archivos de la lista como el kernel y gcc si lo desea. Al recompilar gcc puede que no se hagan optimizaciones puesto que se está usando el mismo compilador contra el mismo pero es lo de menos porque para optimizar un programa con gcc basta usar la opción -O3 por ejempplo.
Para que todo funcione deben tener el repositorio de fuentes configurado en /etc/apt/sources.list. Yo por ejemplo yo lo tengo así:

deb http://deb.debian.org/debian bullseye main contrib non-free
deb-src http://deb.debian.org/debian bullseye main contrib non-free
deb http://security.debian.org/debian-security bullseye-security main contrib non-free
deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free

No recomiendo el uso de non-free pero pueden haber paquetes instalados non-free en su sistema que pueden tener el código disponible pero tener una licencia restrictiva por ejemplo.

Ahora crea el script /usr/local/bin/recompile-sis con el siguiente código:

#!/bin/bash

apt install apt-build
dpkg –get-selections |awk ‘{if ($2==»install») print $1}’ > /etc/apt/apt-build.list

apt-build world –yes –force-yes

Dele sus permisos con chmod +x /usr/local/bin/recompile-sis.
Y ejecútelo normalmente.

Si desean hacer un live-cd recompilable, puede por ejemplo usar testing o unstable para hacerlo rollin release y usar apt-build install paquete para instalar cualquier programa en vez de apt install y así asegurarno que todo este optimizado.

¿Te resultó interesante? Compártelo ...



haylemhcb

Publicado por haylemhcb

Forma parte de GUTL desde el 12 mayo, 2020. Me gusta la programación y el software libre. Soy autodidacta. Trabajo en el policlínico de Stgo de las Vegas René Bedia Morales como responsable de Seguridad informática y Administrador de red. Anteriormente trabajé en el INOR(Oncológico como técnico y luego Jefe de seguridad informática)

Este artículo tiene 7 comentarios

  1. La paqueteria de Debian asocia muchas librerias y prerrequisitos que sobrecarga el OS, por Optimizar te refieres a hacer menos redundante el code o a hacerlo mas afin a la arch del sistema.
    Saludos

    Responder
    • Me refiero a optimizarlo para la arquitectura en particular tanto en rendimiento como en tamaño, la diferencia es notable, cuando tienes un ejecutable genérico este ejecutable tiene intrucciones extras a veces innecesarias que están ahi para otras arquitecturas como amd, cuando, recompilas todo esto se reduce a solo las intrucciones para tu cpu que son realmente relevantes. Si usas una optimizacion agresiva con la opcion -O de gcc/g++ este elimina algunas intrucciones y el ejecutable esta a la medida de tu cpu lo que pudiera no funcionar bien en otra maquina,(raros casos) puesto que la mayoría de las CPU tienen intrucciones compatibles, pero el resultado es notable realmente y más cuando se aplica al kernel o a un juego por ejemplo.

      Responder
    • La paqueteria dependiente en general no solo la de debian, a veces incluso en windows pasa por ejemplo con net framework cuando instalas algo y no tienes tal cosa como por ejemplo nuendo o cubase que depende de Asio, Muchos programas en windows requieren instalar cosas de antemano para que trabajen zapya depende de framwrowk 4x/5x da igual si tienes el 7 el que te pde es el que tienes que instalar y luego tienes la fasmilia completa de net framework desde la 1 hasta la 1000 instaladas jjjj

      Responder
  2. Esto no se sentira muchi si el programa es un programa python por ejemplo o javascript, en dicho caso se debe recompilar el interprete o navegador y en el caso de python con solo recompilar el python3 se beneficiaran todas las aplicaciones que dependan de el.

    Yo tengo un truquito que me ha funcionado, yo recompilo libc6 y libgtk y con eso la pc me va muy bien se nota!!!, tambien puede mejorar recompilando xorg y otro truquito que me he dado cuenta es que si instalo libglfw3 se expande el soporte opengl3.3 a programas en los xorg se queja de dicho soporte. Es por eso que wayland tiene mejor soporte opengl3 porque ya se preinstala la libreria libglfw3-wayland que da conflicto con la de xorg o sea puedes tener o uno o la otra pero no las 2 al mismo tiempo.

    Responder
  3. cordial saludos … muy interesante pero y …. ¿como seria con lmde?., ya que la versionitis se vuelven cada vez mas pesadas y no podemos estas comprando pc cada 10 años acá en latín eso no se puede y hasta da lastima porque aun dan la batalla.

    lo de la recopilar me dejo muchas inquietudes, crea una nueva imagen? o compila en vivo ? y sustituye??… como funciona esa parte no me quedo clara, muchas gracias y muy buena la pagina gracias.

    otras preguntas…
    1- como seria crear esa nueva especificación y crear una imagen para luego crear un usb o cd de arranque .
    2- como podría crear una particion de recuperacion con la imagen de mi sistema como lo hacen los pc de fabrica que no necesitan de cd pues lo trae incorporado a manera de reinstalar el sistema
    3 como podríamos alimentar esa imagen de ese disco con aplicaciones que deseamos y no volverlas a instalar
    perdon que lo bombardee de preguntas pero seria bueno crear un buena versión y creo que fuera lmde con lxqt como seria ese sistema así recopilado voladora.

    Responder
    • Con lmde es similar solo instala apt-build y sigue la configuracion.

      Al recompilar, se descarga el codigo fuente de cada programa se recomp[ila, se autocrea un .deb y este se instala reemplazando la version anterior. Para lo que pides puedes crear un live cd y convertir la iso a hibrida con el comando isohybrid imagen.iso y luego la pasas a una usb o particion con dd

      dd if=./miIso.iso of=/dev/sdb bs=1M conv=fdatasync (En el mbr de todo el disco, mas compatible)

      dd if=./miIso.iso of=/dev/sdb1 bs=1M conv=fdatasync (en la particion de una usb o disco)

      Responder
    • isohybrid se encuentra en el paquete syslinux-utils. Si vas a crear una imagen del disco para otra pc o un live cd, en el caso de un live cd debes instalar primero live-boot, limpiar el /etc/fstab para quitar los puntos de montaje y eliminar las carpetas de /media/usuario/* antes para que trabaje todo bien. Si lo que quieres es clonar debes primero limpiar el /etc/fstab o si no dara error de booteo el sistema, instala live-boot porque este hace que si no hay puntos de montajes en /etc/fstab autodetecta como bootear correctamente adem’as que autoconfigura el sistema al inicio y luego que ya este restaurado en el otro disco puedes eliminar live-boot y configurar el /etc/fstab con las nuevas particiones. Prefiero eliminar live boot luego para acelerar el arranque. Luego instala el grub y dale update-grub. Para instalar el grub correctamente solo debes montar la particion del sistema en una carpeta, luego montas los sistemas de archivos en el sistema montado

      mount –bind /dev ./carpeta/dev
      mount –bind /proc ./carpeta/proc
      mount –bind /sys ./carpeta/sys

      Luego le haces chroot
      chroot ./carpeta

      Y ahi dentro hace update-grub

      Luego exit

      Desmontas todo
      umount ./carpeta/dev
      umount ./carpeta/proc
      umount ./carpeta/sys

      Responder

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

diecisiete − once =