Syszuka is a minimal buildroot image (kernel + rootfs) that can be used to profile applications. The main motivation for using this is to increase determinism and eliminate system noise when profiling applications. Similar to Sushi Roll, but without having to write your own kernel
- Minimal (<30MB) kernel+rootfs (glibc, no systemd)
- Small footprint enables booting remotely without reimaging disk and operating purely in memory
- SSH tools (
dropbear,gesftpserver,rsync) enabled for remote usage -
perfenabled for easy profiling -
tasksetfor core pinning - Kernel processor mitigations completely disabled for microarchitecture experiments
-
tsc_freq_khz1 module preconfigured to read TSC freq from/sys/devices/system/cpu/cpu0/tsc_freq_khz -
libpfc1 module preconfigured for userspace access to performance counters from Intel PMU
git clone https://github.com/Aniruddha-Deb/syszuka.git && cd syszuka
git submodule update --init --recursive
This will pull in buildroot. To configure and build:
cd buildroot
make BR2_EXTERNAL=../syszuka defconfig DEFCONFIG=../syszuka/defconfig
make -j
The resulting kernel + rootfs will be located in buildroot/output/images/bzImage.
As configured, the rootfs is baked into the kernel so you don't require a separate
initrd when booting. This is viable because of how minimal the build is: the resulting
bzImage is <30 MB.
To test boot the kernel, use qemu:
qemu-system-x86_64 \
-enable-kvm -cpu host \
-kernel buildroot/output/images/bzImage \
-append "console=ttyS0,115200" \
-nographic \
-no-reboot
You should see the kernel boot and present you with a login prompt:
Welcome to Syszuka
syszuka login:
login with user root and password root
Syszuka doesn't have an 'installer image', so you'll have to either pack a bootloader with it yourself (grub, u-boot etc), or boot it over PXE. The latter is much easier if you just want to profile on a machine without having to re-image it.
A boot.ipxe config file has been provided with optimal kernel cmdline parameters for
profiling. There are enough resources online on setting up/chainloading iPXE,
so I won't be covering them here. You'll need a DHCP/TFTP/HTTP server setup,
or a utility that does all of those in one (see PyPXE, netbootd or
pixiecore)
This setup was tested on a Dell Optiplex 9020 (Core i7 4770k), and it worked without any glitches. If the image doesn't work on your machine, report an issue and/or submit a patch :)
1 both their git repos are not tagged, so I use private forks with a tagged release. I'll try my best to keep the forks up to date, but from the looks of it both of these kernel modules are unmaintained as of Aug 2025.
