[Resultado do Desafio] Gerando distribuições Linux com o Yocto Project

- por Sergio Prado

Categorias: Desafios Tags:

O objetivo do desafio deste mês foi customizar uma distribuição Linux gerada com o Yocto Project, de forma que o tamanho final do rootfs gerado fosse o menor possível.

Todos que participaram me enviaram o local.conf, que utilizei para gerar a distro com os comandos abaixo:

$ git clone git://git.yoctoproject.org/poky -b krogoth
$ source poky/oe-init-build-env
$ cp <local.conf> conf/local.conf # copiando o local.conf do participante
$ bitbake core-image-minimal

E o vencedor foi o Cleiton Bueno, com um rootfs de 689373 bytes, mais de 70% menor que o rootfs original!

$ ls -Hl tmp/deploy/images/qemux86/core-image-minimal-qemux86.tar.bz2
-rw-r--r-- 1 sprado sprado 689373 Mai 15 21:15 tmp/deploy/images/qemux86/core-image-minimal-qemux86.tar.bz2

Este foi o local.conf utilizado por ele (comentários removidos):

MACHINE ??= "qemux86"
 
DL_DIR ?= "${TOPDIR}/../downloads"
SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
TMPDIR = "${TOPDIR}/tmp"
 
DISTRO ?= "poky-tiny"
 
IMAGE_INSTALL_remove = " kernel-modules"
 
BUILD_OPTIMIZATION = "-O2 -pipe"
 
MACHINE_FEATURES_remove = "alsa bluetooth usbgadget screen x86 rtc qemu-usermode"
MACHINE_FEATURES_BACKFILL_remove = " rtc qemu-usermode"
 
DEBUG_FLAGS = ""
IMAGE_FSTYPES_append = " tar.bz2"
 
DISTRO_FEATURES_DEFAULT = "ext2"
DISTRO_FEATURES_LIBC_DEFAULT = "libc-libm"
DISTRO_FEATURES_TINY_remove = " pci"
DISTRO_FEATURES_LIBC = "libc-libm"
DISTRO_FEATURES_USB_remove = " usbhost"
DISTRO_FEATURES_NET_remove = " ipv4 ipv6"
DISTRO_FEATURES_BACKFILL_remove = " pulseaudio sysvinit bluez5 gobject-introspection-data"
DISTRO_FEATURES_remove = " pci usbhost \${DISTRO_FEATURES_USBGADGET} \${DISTRO_FEATURES_WIFI} pulseaudio sysvinit bluez5"
 
VIRTUAL-RUNTIME_dev_manager = ""
VIRTUAL-RUNTIME_wireless-tools=""
VIRTUAL-RUNTIME_update-alternatives=""
VIRTUAL-RUNTIME_alsa-state=""
MACHINE_ESSENTIAL_EXTRA_RDEPENDS_qemux86 = ""
 
RM_OLD_IMAGE="1"
PACKAGE_CLASSES ?= "package_ipk"
 
EXTRA_IMAGE_FEATURES = ""
 
USER_CLASSES = " image-mklibs image-prelink"
 
PATCHRESOLVE = "noop"
 
BB_DISKMON_DIRS = "\
STOPTASKS,${TMPDIR},1G,100K \
STOPTASKS,${DL_DIR},1G,100K \
STOPTASKS,${SSTATE_DIR},1G,100K \
STOPTASKS,/tmp,100M,100K \
ABORT,${TMPDIR},100M,1K \
ABORT,${DL_DIR},100M,1K \
ABORT,${SSTATE_DIR},100M,1K \
ABORT,/tmp,10M,1K"
 
CONF_VERSION = "1"

Espero que todos que participaram tenham se interessado a aprender mais sobre o Yocto Project.

Este é o ranking atualizado dos desafios do blog:

 1. George Tavares          30 pontos
 2. Phillipe Magalhães      20 pontos
 3. Cleiton Bueno           15 pontos
 4. Daniel Junho            10 pontos
 5. Gabriel Almeida         10 pontos
 6. Marcelo Centenaro       10 pontos
 7. Bruno Rogerio Fernandes  5 pontos
 8. Daniel Silva             5 pontos
 9. Fábio Pereira            5 pontos
10. Fernando Mendonça        5 pontos
11. João Marcelo             5 pontos
12. José Inácio Serafini     5 pontos
13. Julião                   5 pontos
14. Luis Antônio             5 pontos
15. Rhobison Alves Pereira   5 pontos

Um abraço e até a próxima!

Sergio Prado

  • Fabiano Ferronato

    Esse Cleiton é fera! Seria interessante uma explicação da configuração ou comparação mostrando porque ficou tão pequeno

    • Ótima idéia Fabiano! Vou preparar um artigo sobre isso. Um abraço!

      • Fabiano Ferronato

        Maravilha! Assim os mortais também poderão participar! ;)

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.