Puoi eseguire vecchi programmi Linux su kernel più recenti. Linux mantiene la compatibilità con le versioni precedenti (almeno per tutte le interfacce documentate), a beneficio di coloro che eseguono vecchi binari per un motivo o per l'altro (perché non vogliono preoccuparsi di ricompilare, perché hanno perso il sorgente, perché questo è software commerciale di cui non hanno la fonte, ecc.).
Se vuoi avere un ambiente di compilazione con strumenti di sviluppo precedenti, o anche un ambiente di test per qualsiasi cosa che non si immerga profondamente nelle interfacce del kernel, allora non hai bisogno di eseguire un kernel precedente, solo un vecchio ambiente utente. Per questo, non hai bisogno di nulla di complesso:un chroot andrà bene. Qualcosa di più avanzato come LXC, Docker, ... può essere utile se vuoi che la distribuzione più vecchia (o più recente, se è per questo) abbia la propria configurazione di rete. Se non lo desideri, puoi usare ciò che Debian usa proprio per creare software in un ambiente noto (ad esempio creare software per Debian stable su una macchina con un'installazione di test):schroot. Vedi Come eseguo programmi a 32 bit su Debian/Ubuntu a 64 bit? per una guida su come configurare un'installazione alternativa di Debian o una derivata in un chroot.
Se vuoi eseguire il kernel della distribuzione precedente, avrai bisogno di una vera macchina virtuale per questo, come KVM o VirtualBox. La virtualizzazione Linux-on-Linux con LXC o simili esegue lo stesso kernel dappertutto.
➜ codetv_static# docker run ubuntu:10.04 /bin/echo 'Howdy!'
Unable to find image 'ubuntu:10.04' locally
10.04: Pulling from library/ubuntu
a3ed95caeb02: Pull complete
86b54f4b6a4e: Pull complete
Digest: sha256:f6695b2d24dd2e1da0a79fa72459e33505da79939c13ce50e90675c32988ab64
Status: Downloaded newer image for ubuntu:10.04
Howdy!