Downloads

The toy, the toy specialised for each of frr, BIRD, Suricata, BIND and Asterisk, the bundle, the sources with the store they compile from, and four directories of guest images to put in /var/lib/cloonix/bulk.

Cloonix

cloonix-toy.tar.xz 23 MB, 111 MB extracted. cloonix inside its own container. No root, nothing installed: extract, ./setup.sh nemo, ./nemocmd start. The images go in /var/lib/cloonix/bulk before ./setup.sh: a bulk made after it is not seen by the toy. Get started uses this one.
cloonix-bundle.tar.gz 35 MB. The compiled run-time for a machine several people share. Installed once as root by sudo ./install_cloonfs, under /usr/libexec/cloonix.
cloonix-source-102.tar.gz the source tree: cloonix, the demos, the image builders of vm_create, the tests, the two books. The same tree as github.com/clownix/cloonix; ./doitall at its root builds the bundle, toy_targz/create_toy_targz.sh the toy, toy_targz/create_<name>_toy_targz.sh the specialised toys; build_tools/vmbuild/doitall.sh makes all of them in a builder machine.
cloonix-targz_store-102.tar.gz goes with the sources, and is needed before anything compiles: the open sources cloonix rebuilds, qemu, open vswitch, crun, passt and patchelf, each at the commit this version was made with, and the base root file-system. Extracted at the root of the source tree it is the targz_store directory, which ./doitall reads instead of the internet.

The toy, specialised for one project

The same toy, for one open source project, containers only: no kvm, and the project installed in the root of the toy itself, which its containers run on as self_rootfs, so nothing else is to fetch. Only its demos, among them the examples of its own documentation. Each one is used like the toy: extract, ./setup.sh nemo, ./nemocmd start, then the Demo button of the canvas. Any other container image goes in /var/lib/cloonix/bulk before ./setup.sh: a bulk made after it is not seen by the toy. Of the image of its project, such a toy takes the commands its demos run, the packages they need and the libraries of both, nothing else: frr without python, BIRD and Suricata with only the python modules their demos import, and BIND without python.

cloonix-frr-toy.tar.xz frr, from the frr_trixie image: the three demos of routing/ (frrspider, frrspider_bgp, frrmix) and, in frr_demo/, 26 examples of the FRR User Guide, segment routing, SR-TE driven by the Pola PCE and L3VPN over SR-MPLS and SRv6 among them.
cloonix-bird-toy.tar.xz BIRD, from the bird_trixie image: the demo of routing/ (bird) and, in bird_demo/, 13 examples of the BIRD User's Guide.
cloonix-suricata-toy.tar.xz Suricata, from the suricata_trixie image: the demo of security/ (suricata) and, in suricata_demo/, 7 examples of the Suricata User Guide, the sensor as a router or inline as an IPS.
cloonix-bind-toy.tar.xz BIND 9, from the dns_trixie image: the demo of address/ (dns) and, in bind_demo/, 12 examples of the BIND 9 Administrator Reference Manual, from a primary and its secondary to a resolver walking a lab internet from its root, DNSSEC, catalog zones and a DNS firewall.
cloonix-asterisk-toy.tar.xz Asterisk, from the asterisk_trixie image: the demo of services/ (asterisk) and, in asterisk_demo/, 14 demos of the Asterisk documentation with baresip phones, SIPp and Kamailio, from a first registered call to TLS and SRTP, NAT, voicemail, conferences, queues, IAX2, load tests and a load-balancing proxy.

To compile, the two together:

wget https://clownix.net/downloads/cloonix-source-102.tar.gz
wget https://clownix.net/downloads/cloonix-targz_store-102.tar.gz
tar xf cloonix-source-102.tar.gz
cd cloonix-source-102
tar xf ../cloonix-targz_store-102.tar.gz
./doitall

The build runs inside a debian trixie machine made by build_tools/vmbuild/doitall.sh; the chapter on building of the documentation has the steps. To run cloonix and not compile it, the toy alone:

wget https://clownix.net/downloads/cloonix-toy.tar.xz
tar xf cloonix-toy.tar.xz

Guest images

A guest needs an image in /var/lib/cloonix/bulk, the same directory for the bundle and for the toy. The four directories below hold what vm_create/allbulk.sh of the source tree builds, from a local mirror of each distribution, without root.

A container image: .tar.gz

Copied into bulk as it is. The first add cnt on it extracts it once, into <image>_targz, for every network and every user of the machine.

cd /var/lib/cloonix/bulk
wget https://clownix.net/downloads/cnt_bulk/trixie.tar.gz
cloonix cli nemo add cnt c1 eth=1 trixie

The extracted tree is never modified and takes no --persistent. For an image to change, extract it under another name: mkdir mytrixie && tar xpf trixie.tar.gz -C mytrixie.

A machine image: .qcow2.gz

Gunzipped into bulk. A machine started on it writes to a disk of its own derived from the image, which stays as downloaded.

cd /var/lib/cloonix/bulk
wget https://clownix.net/downloads/kvm_bulk/trixie.qcow2.gz
gunzip trixie.qcow2.gz
cloonix cli nemo add kvm k1 ram=1000 cpu=2 eth=1 trixie.qcow2

The account needs /dev/kvm, /dev/vhost-net and /dev/net/tun: step 1.

cnt_bulk — the distributions, as containers

alpine.tar.gzalpine linux
trixie.tar.gzdebian 13; the image of the first demos, cloonix/cnt.py, and of the switching demos
resolute.tar.gzubuntu 26.04
rocky.tar.gzrocky linux
fedora44.tar.gzfedora 44
fedora45.tar.gzfedora 45
arch.tar.gzarch linux
tumbleweed.tar.gzopensuse tumbleweed
openwrt.tar.gzopenwrt 25.12
trixie_systemd.tar.gzdebian 13 started with systemd as its init

kvm_bulk — the distributions, as virtual machines

Nine base machines with a serial console, then the desktops, each built from the base of its distribution and shown by the canvas in a noVNC panel.

alpine.qcow2.gzalpine linux
trixie.qcow2.gzdebian 13; cloonix/kvm.py, and the machine the bundle is built in
resolute.qcow2.gzubuntu 26.04
rocky.qcow2.gzrocky linux
fedora44.qcow2.gzfedora 44
fedora45.qcow2.gzfedora 45
arch.qcow2.gzarch linux
tumbleweed.qcow2.gzopensuse tumbleweed
openwrt.qcow2.gzopenwrt 25.12
alpine_xfce.qcow2.gzalpine with the xfce desktop
trixie_lxde.qcow2.gzdebian 13 with the lxde desktop
trixie_gnome.qcow2.gzdebian 13 with the gnome desktop
resolute_gnome.qcow2.gzubuntu 26.04 with the gnome desktop
rocky_gnome.qcow2.gzrocky with the gnome desktop
fedora45_gnome.qcow2.gzfedora 45 with the gnome desktop
arch_plasma.qcow2.gzarch with the plasma desktop
tumbleweed_plasma.qcow2.gztumbleweed with the plasma desktop

cnt_demo_bulk — one container image per subject

Each is the trixie container plus the packages of one subject, and nothing else. The third column names the demos of demos/ that ask for it.

imagetrixie plusdemos
frr_trixie.tar.gzfrr, the Pola PCErouting/frrspider.py frrspider_bgp.py frrmix.py isis.py address/ipv6.py switching/vxlan.py
bird_trixie.tar.gzbirdrouting/bird.py
babel_trixie.tar.gzbabeldrouting/babel.py
batman_trixie.tar.gzbatctlrouting/batman.py
ovn_trixie.tar.gzopen vswitch and ovnswitching/ovn.py
arp_trixie.tar.gzdsniff (arpspoof) and arpingsecurity/arp.py
dns_trixie.tar.gzbind9, frr, the dns query toolsaddress/dns.py
unbound_trixie.tar.gzunbound, the dnssec toolsaddress/unbound.py
knot_trixie.tar.gzknot dnsaddress/knot.py
dhcp_trixie.tar.gza dhcp server, a relay, two clientsaddress/dhcp.py wifi/cntkvm_home.py
ntp_trixie.tar.gzchronyaddress/ntp.py
wg_trixie.tar.gzwireguardsecurity/wg.py cloonix/a2b.py cloonix/snf.py
strongswan_trixie.tar.gzstrongswansecurity/ipsec.py
libreswan_trixie.tar.gzlibreswansecurity/ipsec.py
openvpn_trixie.tar.gzopenvpnsecurity/openvpn.py security/tls.py
tinc_trixie.tar.gztincsecurity/tinc.py
proxy_trixie.tar.gzhaproxy, nginx, curlservices/proxy.py cloonix/nginx.py
squid_trixie.tar.gzsquidservices/squid.py
smtp_trixie.tar.gzpostfix, a name server, the mail toolsservices/smtp.py
mqtt_trixie.tar.gzmosquitto and its clientsservices/mqtt.py
asterisk_trixie.tar.gzasterisk compiled for trixie, baresip, sipp, sngrep, kamailioservices/asterisk.py
nft_trixie.tar.gznftables, the conntrack toolssecurity/nftables.py cloonix/nat.py
suricata_trixie.tar.gzsuricatasecurity/suricata.py
ebpf_trixie.tar.gzthe bpf toolchainsecurity/ebpf.py
radius_trixie.tar.gzfreeradius and a supplicantsecurity/radius.py wifi/cntkvm_enterprise.py
vrrp_trixie.tar.gzkeepalivedavailability/vrrp.py
cluster_trixie.tar.gzcorosync and pacemakeravailability/cluster.py
perf_trixie.tar.gzthe measurement toolswatching/perf.py
flow_trixie.tar.gziperf3, trafgenthe flow tests of debug/

kvm_demo_bulk — the machines of the demos

python_trixie.qcow2.gz the trixie machine plus python3, for a guest that runs the cloonix client itselfcloonix/realnet.py cloonix/phy.py

Not here

win.qcow2a windows disk is prepared once by its owner; the chapter on windows guests of the documentation has the steps
c8000v.qcow2the c8000v image comes from cisco; the three steps of vm_create/cisco prepare it
freebsd.qcow2built from the internet by vm_create/cnt_kvm/kvm_freebsd.sh, there being no local mirror of it