/ubuntu-museum

The museum holds ~~rare treasures~~ (vintage uuu images).

Primary LanguageRustMIT LicenseMIT

Ubuntu Museum

History

version codename created release eol
4.10 Warty Warthog 2004-03-05 2004-10-20 2006-04-30
5.04 Hoary Hedgehog 2004-10-20 2005-04-08 2006-10-31
5.10 Breezy Badger 2005-04-08 2005-10-12 2007-04-13

version codename created release eol eol-server
6.06 LTS Dapper Drake 2005-10-12 2006-06-01 2009-07-14 2011-06-01

version codename created release eol
6.10 Edgy Eft 2006-06-01 2006-10-26 2008-04-25
7.04 Feisty Fawn 2006-10-26 2007-04-19 2008-10-19
7.10 Gutsy Gibbon 2007-04-19 2007-10-18 2009-04-18

version codename created release eol eol-server
8.04 LTS Hardy Heron 2007-10-18 2008-04-24 2011-05-12 2013-05-09

version codename created release eol
8.10 Intrepid Ibex 2008-04-24 2008-10-30 2010-04-30
9.04 Jaunty Jackalope 2008-10-30 2009-04-23 2010-10-23
9.10 Karmic Koala 2009-04-23 2009-10-29 2011-04-30

version codename created release eol eol-server
10.04 LTS Lucid Lynx 2009-10-29 2010-04-29 2013-05-09 2015-04-30

version codename created release eol
10.10 Maverick Meerkat 2010-04-29 2010-10-10 2012-04-10
11.04 Natty Narwhal 2010-10-10 2011-04-28 2012-10-28
11.10 Oneiric Ocelot 2011-04-28 2011-10-13 2013-05-09

version codename created release eol eol-server eol-esm
12.04 LTS Precise Pangolin 2011-10-13 2012-04-26 2017-04-28 2017-04-28 2019-04-26

version codename created release eol
12.10 Quantal Quetzal 2012-04-26 2012-10-18 2014-05-16
13.04 Raring Ringtail 2012-10-18 2013-04-25 2014-01-27
13.10 Saucy Salamander 2013-04-25 2013-10-17 2014-07-17

version codename created release eol eol-server eol-esm
14.04 LTS Trusty Tahr 2013-10-17 2014-04-17 2019-04-25 2019-04-25 2024-04-25

version codename created release eol
14.10 Utopic Unicorn 2014-04-17 2014-10-23 2015-07-23
15.04 Vivid Vervet 2014-10-23 2015-04-23 2016-02-04
15.10 Wily Werewolf 2015-04-23 2015-10-22 2016-07-28

version codename created release eol eol-server eol-esm
16.04 LTS Xenial Xerus 2015-10-22 2016-04-21 2021-04-30 2021-04-30 2026-04-23

version codename created release eol
16.10 Yakkety Yak 2016-04-21 2016-10-13 2017-07-20
17.04 Zesty Zapus 2016-10-13 2017-04-13 2018-01-13
17.10 Artful Aardvark 2017-04-13 2017-10-19 2018-07-19

version codename created release eol eol-server eol-esm
18.04 LTS Bionic Beaver 2017-10-19 2018-04-26 2023-05-31 2023-05-31 2028-04-26

version codename created release eol
18.10 Cosmic Cuttlefish 2018-04-26 2018-10-18 2019-07-18
19.04 Disco Dingo 2018-10-18 2019-04-18 2020-01-23
19.10 Eoan Ermine 2019-04-18 2019-10-17 2020-07-17

version codename created release eol eol-server eol-esm
20.04 LTS Focal Fossa 2019-10-17 2020-04-23 2025-05-29 2025-05-29 2030-04-23

version codename created release eol
20.10 Groovy Gorilla 2020-04-23 2020-10-22 2021-07-22
21.04 Hirsute Hippo 2020-10-22 2021-04-22 2022-01-20
21.10 Impish Indri 2021-04-22 2021-10-14 2022-07-14

version codename created release eol eol-server eol-esm
22.04 LTS Jammy Jellyfish 2021-10-14 2022-04-21 2027-06-01 2027-06-01 2032-04-21

version codename created release eol
22.10 Kinetic Kudu 2022-04-21 2022-10-20 2023-07-20
23.04 Lunar Lobster 2022-10-20 2023-04-20 2024-01-25
23.10 Mantic Minotaur 2023-04-20 2023-10-12 2024-07-11

version codename created release eol eol-server eol-esm
24.04 LTS Noble Numbat 2023-10-12 2024-04-25 2029-05-31 2029-05-31 2034-04-25

See also:

Virtual Machine

PLEASE NOTE: THIS IS A WIP (WORK IN PORGESS)

Unlike container images, which offer almost all versions, the lowest version offered by VM images is 15.04, not 4.10.

Example 1 (jammy x64)

1.1 install qemu-x86 & zsh

On Ubuntu, Mint, Kali ...

# run apt as root (e.g., sudo apt update)
apt update
apt install qemu-system-x86 zsh zstd

1.2 download image

mkdir -p 22.04/x64
cd 22.04
url='https://github.com/2cd/ubuntu-museum/releases/download/22.04/vm-minimal_jammy_x64.tar.zst'
curl -LO "$url"
cd x64
tar -xvf ../vm-minimal_jammy_x64.tar.zst

1.3 expand disk

If you have enough disk space then +3G can be changed to +10G

qemu-img resize disk.img +3G

1.4 run

./run

Example 2 (jammy arm64)

2.1 install qemu-aarch64 & zsh

Android Termux

pkg i qemu-system-aarch64-headless zsh

Ubuntu

# Run apt as root (i.e., +sudo/+doas)
apt install qemu-system-arm zsh

2.2 download image

cd /sdcard/Download || cd ~/Downloads

mkdir -p 22.04/arm64
cd 22.04/arm64

url='https://github.com/2cd/ubuntu-museum/releases/download/22.04/vm-minimal_jammy_arm64.tar.zst'
aria2c -s5 -x5 --no-conf -o jammy-vm.tzst "$url" || curl -Lo jammy-vm.tzst "$url"

tar -xvf jammy-vm.tzst

2.3 expand disk

qemu-img resize disk.img +1G

2.4 run

zsh run

2.5 ssh

Open a new terminal session and run the following command.

zsh connect-to-ssh

Example 3 (Running jammy x64 VM via docker)

tag=jammy-minimal-x64
# tag=jammy-minimal-arm64
docker run -it --name jammy-kvm --device /dev/kvm ghcr.io/2cd/ubuntu-vm:$tag

Container

docker

preparations

Step1: install docker

# run apt as root (e.g., sudo apt update)
apt update
apt install docker.io apparmor

Step2: start docker

/etc/init.d/docker start
# OR: systemctl start docker

Step3 (Optional): add the current user to the docker user group

# run it on POSIX-compliant shell (e.g., zsh, ash, bash)
# run adduser as root (i.e., +sudo/+doas)
adduser $(id -un) docker

run

Take ubuntu 24.04 for example.

We can create a disposable container:

docker run -it --rm -e LANG=$LANG ghcr.io/2cd/ubuntu:24.04

We can also specify the architecture (platform) of the container, but we need to install qemu-user-static fisrst. It will automatically configure binfmt_misc for us.

# run apt as root (i.e., +sudo/doas)
apt install qemu-user-static

Try riscv64:

docker run -it --rm --platform linux/riscv64 ghcr.io/2cd/ubuntu:24.04
# OR: docker run -it --rm ghcr.io/2cd/ubuntu:24.04-rv64gc

Note: The above is only suitable for simple cases, in more cases we will use use it as a base container image and use it with other services.


Here's a snippet of the configuration:

name: Ubuntu
codename: Noble Numbat
series: noble
version: '24.04'
oci-platforms:
    - linux/386
    - linux/amd64
    - linux/arm/v7
    - linux/arm64
    - linux/ppc64le
    - linux/riscv64
    - linux/s390x

If you want more information, go to Github Releases.

nspawn

To use systemd-nspawn, we need to install it.

# run apt as root (i.e., +sudo/doas)
apt install systemd-container

Next, let's take 22.10 arm64 for example.

Note: This is a version that is already EOL. In most cases, you should use the ongoing maintenance version, not the EOL.

mkdir -p ./tmp/kinetic-arm64
cd tmp

# We need to download a file of size 26.15 MiB.
curl -LO 'https://github.com/2cd/ubuntu-museum/releases/download/22.10/22.10_kinetic_arm64.tar.zst'

# install bsdtar, run apt as root (i.e., +sudo/+doas)
apt install libarchive-tools

# run bsdtar or gnutar as root (i.e., +sudo/+doas)
# if using gnutar, then `bsdtar` -> `tar`
bsdtar -C kinetic-arm64 -xf "22.10_kinetic_arm64.tar.zst"

# run nspawn as root (i.e., +sudo/+doas)
# On pwsh, $LANG -> $env:LANG
systemd-nspawn -D kinetic-arm64 -E LANG=$LANG

Once inside the container, we can configure the language environment:

apt update
apt install locales
dpkg-reconfigure locales

Other notes

  1. Actually, compared to the official Ubuntu Docker image, it does not have any particularly great advantages. One significant difference compared to the official one is that it is not as streamlined. This can be seen as both an advantage and a disadvantage. In many cases, being streamlined can reduce the size it occupies. However, for certain purposes, like graphical user interfaces, being too streamlined may cause issues.

  2. On modern operating systems (Linux kernel: 6.x), running some ancient systems (in containers, not virtual machines) may cause issues.

For example, Warty (i386, 4.10):

Inconsistency detected by ld.so: rtld.c: 1192: dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed!