Hi all,
I have used TinyCore in the past also in company/consultant works (for USB bootable) like these project:
-
https://github.com/robang74/tinycore-editor/tree/main/busybox/patchesThese patches applied to the 1.34 allows to do complex scripting advanced debug because I coded bash like trap and signal handling.
About busybox itself, I created a fork which is 135+ commits haed and the branch presented is my cherrypicking integration:
-
https://github.com/robang74/busybox (branch uchaosys)
Which I use in this 2MB linux kernel + rootfs tiny system (boots in 0.1s with 32MB of RAM and with 64MB does qemu-in-qemu) with a reduced footprint 3MB (roms included) qemu q35, kvm-accel, tce but only virtio-hw compiled in:
-
https://github.com/robang74/uchaosysSo, how did I managed to shrink a 33MB dynamic linked binary into a 3MB static linked portable app? Cutting everything is obsolete, out of scope and not useful in the most general case (e.g. we love virtio HW emulation because tends to be passtrough as much as possible and do not bother us with insane proprietary bloatware drivers/firmwares because we already have on the bare-metal installation).
-
https://github.com/robang74/uchaosys/tree/v074/qemuHowever, cutting stuff brought to 7.5MB the next step as been accomplished creating a 512-byes (a single `dd` block) payload in Assembler which is able to read after itself take the gzip attached, send to zcat (or equivalent) and run the extracted ELF (or script) on the fly in RAM only
-
https://github.com/robang74/uzpexecThis tool is also very powerful / useful when it comes to run stuff from wget which arrived gzipped (or any other supported compression format that can be decompressed on STDOUT, like xzcat).
I am aware that TinyCore package system (like every distro) relies on compressed packages and smart compression tools skips to compress files that already has been compressed. Therefore there is no an immediate advantage using uzpack (conversion to compressed executable) in general.
Instead, when it comes to use single file binary like qemu or PractRand RNG_test, it becomes quite interesting because break down the barrier/separation between installation & run, and allows the idea that everything that can access by wget, can be put in run on the fly and only RAM (scary but also dawn useful).
I hope this helps, R-