@@ -6,19 +6,29 @@ set -o pipefail
66machine=$( uname -m)
77
88case ${machine} in
9- aarch64 )
10- TOOLBOX_DOCKER_IMAGE=arm64v8/fedora
11- TOOLBOX_DOCKER_TAG=latest
9+ arm)
10+ PLATFORM=linux/arm/v7
1211 ;;
13- x86_64 )
14- TOOLBOX_DOCKER_IMAGE=fedora
15- TOOLBOX_DOCKER_TAG=latest
12+ aarch64)
13+ PLATFORM=linux/arm64/v8
1614 ;;
17- * )
15+ riscv64)
16+ PLATFORM=linux/riscv64
17+ ;;
18+ x86)
19+ PLATFORM=linux/386
20+ ;;
21+ x86_64)
22+ PLATFORM=linux/amd64
23+ ;;
24+ * )
1825 echo " Warning: Unknown machine type ${machine} " >&2
26+ exit 1
1927 ;;
2028esac
2129
30+ TOOLBOX_DOCKER_IMAGE=docker.io/library/debian
31+ TOOLBOX_DOCKER_TAG=unstable-slim
2232TOOLBOX_USER=root
2333TOOLBOX_DIRECTORY=" /var/lib/toolbox"
2434TOOLBOX_BIND=" --bind=/:/media/root --bind=/usr:/media/root/usr --bind=/run:/media/root/run --bind=/sys/fs/bpf:/sys/fs/bpf"
4858machinename=$( echo " ${USER} -${TOOLBOX_NAME} " | sed -r ' s/[^a-zA-Z0-9_.-]/_/g' )
4959machinepath=" ${TOOLBOX_DIRECTORY} /${machinename} "
5060osrelease=" ${machinepath} /etc/os-release"
61+
5162if [ ! -f " ${osrelease} " ] || systemctl is-failed -q " ${machinename} " ; then
5263 sudo mkdir -p " ${machinepath} "
5364 sudo chown " ${USER} :" " ${machinepath} "
5465
55- # Download and extract the image.
56- sudo --preserve-env docker pull " ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG} "
57- dcid=$( sudo --preserve-env docker create " ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG} " )
58- sudo --preserve-env docker export -o " ${machinepath} /${dcid} .tar" ${dcid}
59- sudo --preserve-env docker rm ${dcid}
60- sudo --preserve-env docker rmi " ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG} " || true
61- sudo tar xvf " ${machinepath} /${dcid} .tar" -C " ${machinepath} "
62- sudo rm -f " ${machinepath} /${dcid} .tar"
66+ if sudo -E ctr version & > /dev/null; then
67+ # Check iw we already got our image, do not overwrite
68+ if ! sudo -E ctr images check | grep " ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG} " ; then
69+ sudo -E ctr images pull --platform ${PLATFORM} ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG}
70+ fi
71+ sudo ctr images mount --rw --platform ${PLATFORM} ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG} ${machinepath}
72+ elif sudo -E docker stats --no-stream & > /dev/null; then
73+ # Download and extract the image.
74+ sudo --preserve-env docker pull " ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG} "
75+ dcid=$( sudo --preserve-env docker create " ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG} " )
76+ sudo --preserve-env docker export -o " ${machinepath} /${dcid} .tar" ${dcid}
77+ sudo --preserve-env docker rm ${dcid}
78+ sudo --preserve-env docker rmi " ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG} " || true
79+ sudo tar xvf " ${machinepath} /${dcid} .tar" -C " ${machinepath} "
80+ sudo rm -f " ${machinepath} /${dcid} .tar"
81+ else
82+ echo " No supported container runtime found." >&2
83+ exit 2
84+ fi
6385
6486 sudo touch " ${osrelease} "
6587fi
0 commit comments